Skip to content

Commit eec646e

Browse files
authored
Release 1.0: promote release/v1.0 to master (#466)
Promote release/v1.0 to master for the 1.0 release: 17 squash-merged PRs plus the release notes (#428). Each was independently reviewed and green against release/v1.0. Review: independent review MERGE-AFTER-FIX on the PR body only; the branch content was ready. - The commits match the PR table one for one. - Context cost reproduces with render-routing --check: baseline 73,558 -> 73,682 of 80,000. - The added-line client-name scan finds 0 hits; leak guard and docs numbering are clean. - The body fixes (tag name, count, Behaviour row, decomposition range) were applied before merge. - Known: #384 and #379 will conflict in project-bin/exec.sh and need a master merge before they land.
2 parents f7cb0c3 + fdf1485 commit eec646e

77 files changed

Lines changed: 6684 additions & 830 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

‎CHANGELOG.md‎

Lines changed: 23 additions & 0 deletions
Large diffs are not rendered by default.

‎README.md‎

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,8 @@ git clone https://github.com/MendixMau/mxcli-project-toolkit.git ~/Mendix/mxcli-
7171

7272
1. **`doctor.sh`** names any missing prerequisite (bash, Python 3, sqlite3, line endings, mxcli,
7373
mxbuild) and exits non-zero if a stage would break. `doctor.sh --install <project>` fetches
74-
mxcli and mxbuild after showing the plan and asking. Windows and Linux: read
74+
mxcli and mxbuild after showing the plan and asking (an agent or any shell with no terminal
75+
must add `--yes`, or nothing is downloaded). Windows and Linux: read
7576
[Platform support](#platform-support) first.
7677
2. **`init-project.sh`** scaffolds the project folder: `intake.md`, `PROJECT.md`,
7778
`CLAUDE.local.md` (the wiring every session reads), the six agent stubs, `bin/` instruments
@@ -251,7 +252,8 @@ they would have saved, restarted or reopened it. Everything either side of that
251252
> ```
252253
>
253254
> `bin/doctor.sh --install <project>` closes the gap without Studio Pro: it fetches a
254-
> version-matched mxbuild that `exec.sh` then finds on its own.
255+
> version-matched mxbuild that `exec.sh` then finds on its own. With no terminal to answer the
256+
> prompt (an agent, CI), add `--yes`: `bin/doctor.sh --install --yes <project>`.
255257
256258
**Existing clone from before 2026-08-18?** You predate `.gitattributes`, so if git checked the
257259
scripts out with CRLF they will not run. Fix once:
@@ -605,7 +607,8 @@ Every mxcli project has a `.ai-context/skills/` directory (bundled by `mxcli ini
605607
|---|---|
606608
| Dispatching a build step to a helper — generate its one-file pack (the brief's Build steps row, mxcli brain brief, live DESCRIBEs, example, folder) and hand over the path instead of a reading list. Measured: 25-38% fewer tool calls and 30-41% less time, same quality; the token saving is not proven | `project-bin/context-pack.sh` |
607609
| An exec.sh guard refused a write (not a permission prompt), or building a module with mxcli — verified, iterative, coverage-checklist gated; on a refusal: commit, wait or stop, never FORCE_EXEC | `skills/iterative-build-loop.md` |
608-
| After marking a module done, or any time "how much is built vs proven" is asked — renders build-plan.html from done- prefixes and verify-module.sh/improvement-register.md, kept as two honestly separate views; --json writes architecture/build-plan.json parsed from build-plan.md's Phase headings (a plan with no Phase headings gets no file) | `project-bin/build-plan-status.sh` |
610+
| Adding a second language, a language picker or a translation script — and the moment a language picker errors, shows a blank label or changes nothing: source language, enabled languages, the user's starting language, a switch a non-admin role can use | `skills/learned-multilingual-app.md` |
611+
| After marking a module done, or any time "how much is built vs proven" is asked — renders progress-report.html from done- prefixes and verify-module.sh/improvement-register.md, kept as two honestly separate views; --json writes architecture/build-plan.json parsed from build-plan.md's Phase headings (a plan with no Phase headings gets no file); --refresh keeps an existing build-plan.json current but never creates one | `project-bin/build-plan-status.sh` |
609612
| Turning a client-derived Mendix app into a clean, shareable demo with zero client fingerprint — branding, data, custom widgets | `skills/anonymize-client-app-for-demo.md` |
610613
| Handing a headless-built model to a person — opening it in Studio Pro, a free sandbox, or a colleague's machine: the model travels, the demo data and runtime config (keys, an agent's bound model) do not, and each needs its own re-establish step | `skills/handoff-to-studio-pro.md` |
611614
| Stage 5 start, before the first module of any entry mode — one entity, flow, page, nav, demo user, journey and screenshot proven in the running app, so build/run/look/test are known to work before a module depends on them | `skills/walking-skeleton.md` |

‎ROUTING.md‎

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -144,7 +144,8 @@ picks the row up. That is the whole procedure — there is no second list to rem
144144
| Before any mxcli exec / exec.sh / --mcp write — ask or run? the knob decides | `bin/exec-approval.sh` | mdl,gate | 5,6 | baseline |
145145
| Dispatching a build step to a helper — generate its one-file pack (the brief's Build steps row, mxcli brain brief, live DESCRIBEs, example, folder) and hand over the path instead of a reading list. Measured: 25-38% fewer tool calls and 30-41% less time, same quality; the token saving is not proven | `project-bin/context-pack.sh` | mdl | 5 | ondemand |
146146
| An exec.sh guard refused a write (not a permission prompt), or building a module with mxcli — verified, iterative, coverage-checklist gated; on a refusal: commit, wait or stop, never FORCE_EXEC | `skills/iterative-build-loop.md` | mdl,gate | 5 | ondemand |
147-
| After marking a module done, or any time "how much is built vs proven" is asked — renders build-plan.html from done- prefixes and verify-module.sh/improvement-register.md, kept as two honestly separate views; --json writes architecture/build-plan.json parsed from build-plan.md's Phase headings (a plan with no Phase headings gets no file) | `project-bin/build-plan-status.sh` | architect,gate,review | 4,5,6 | ondemand |
147+
| Adding a second language, a language picker or a translation script — and the moment a language picker errors, shows a blank label or changes nothing: source language, enabled languages, the user's starting language, a switch a non-admin role can use | `skills/learned-multilingual-app.md` | architect,mdl,review | 3,5,6 | ondemand |
148+
| After marking a module done, or any time "how much is built vs proven" is asked — renders progress-report.html from done- prefixes and verify-module.sh/improvement-register.md, kept as two honestly separate views; --json writes architecture/build-plan.json parsed from build-plan.md's Phase headings (a plan with no Phase headings gets no file); --refresh keeps an existing build-plan.json current but never creates one | `project-bin/build-plan-status.sh` | architect,gate,review | 4,5,6 | ondemand |
148149
| Turning a client-derived Mendix app into a clean, shareable demo with zero client fingerprint — branding, data, custom widgets | `skills/anonymize-client-app-for-demo.md` | mdl,review | 6 | ondemand |
149150
| Handing a headless-built model to a person — opening it in Studio Pro, a free sandbox, or a colleague's machine: the model travels, the demo data and runtime config (keys, an agent's bound model) do not, and each needs its own re-establish step | `skills/handoff-to-studio-pro.md` | test,review | 6,7 | ondemand |
150151
| Sharing the project with a colleague on Mendix Team Server while the build loop stays on GitHub — content-transplant snapshots between the two clones (status/push/pull); SUPERSEDED by platform-link.md §3 (adopt without rewriting history, field-proven) — only if that path fails; UNPROVEN against a real Team Server | `project-bin/ts-sync.sh` | mdl,gate | 6,7 | experimental |

‎agents/architect-agent.md‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,7 @@ This table is your whole list. The baseline table in the project's CLAUDE.local.
7373
| `skills/brd-to-build-plan.md` | Turning BRDs plus architecture into a numbered, dependency-ordered build plan |
7474
| `skills/coverage-ledger.md` | Building the Stage 4 coverage ledger |
7575
| `bin/coverage-check.sh` | Checking a coverage ledger against its BRD |
76+
| `skills/learned-multilingual-app.md` | Adding a second language, a language picker or a translation script |
7677
| `skills/mendix-agents.md` | Building a Mendix AI agent |
7778
| `skills/company-brain.md` | Setting up or wiring a COMPANY BRAIN |
7879
| `skills/close-the-loop.md` | Cutover and retrospective |

‎agents/ba-agent.md‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,7 @@ This table is your whole list. The baseline table in the project's CLAUDE.local.
105105
- Run the full interview protocol from `conversion-runbook.md` §1 at every gate: homework first, 2-4 options with evidence, assumptions stated out loud, user answers in the terminal, decision written to the stage HTML *and* `PROJECT.md`, unknowns default + `ASSUMED` + proceed.
106106
- Never invent legacy intent from code alone — that's what Path C (the SME interview) is for. Log it as an open question if no SME is available, don't guess.
107107
- **Logging an open question is half the job. Raising it is the other half** — see the Open-questions batch below. A question written to a BRD and never put in the chat is not "logged", it is buried.
108-
- **Read `interview-protocol.md` before raising anything.** Every question you hand over carries two named options and your recommendation; a bare question moves your analysis onto the user. Generate `docs/open-questions.html` with `bin/questions-report.sh` and give them the path.
108+
- **Read `interview-protocol.md` before raising anything.** Every question you hand over carries two named options and your recommendation; a bare question moves your analysis onto the user. Generate `analysis/brd-report.html` with `bin/brd-report.sh` and give them the path.
109109
- `✋` gates (Stages 0 and 7) do not resolve to `ASSUMED` — they need an explicit `CONFIRMED` answer before the run proceeds.
110110

111111
## Workflow

‎agents/mdl-agent.md‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,7 @@ This table is your whole list. The baseline table in the project's CLAUDE.local.
7777
| `skills/mdl-cookbook-microflows.md` | Writing MDL microflow scripts |
7878
| `skills/build/mdl/oneshot-mdl-method.md` | Writing a single MDL script that takes a project from nothing to a working vertical slice |
7979
| `skills/learned-page-patterns.md` | Building and auditing Mendix pages, or starting a UI fix round across many pages |
80+
| `skills/learned-multilingual-app.md` | Adding a second language, a language picker or a translation script |
8081
| `skills/oneshot-page-structure-patterns.md` | Generating a whole page tree in one script |
8182
| `skills/mendix-agents.md` | Building a Mendix AI agent |
8283
| `skills/mendix-agent-ui.md` | Embedding a copilot chat panel |

‎agents/review-agent.md‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,7 @@ This table is your whole list. The baseline table in the project's CLAUDE.local.
6565
| `skills/module-dependency-review.md` | Judging module tangles, bidirectional pairs, cohesion and hubs from analysis/app-facts/dependencies.json; stock graph_module_* views split names on the first dot and are not trusted |
6666
| `skills/microflow-loop-antipatterns.md` | Reading what loop bodies do (LOOP_TQ, deferred commit, nested loop, REST in loop, transaction control per item, scheduled-event reachability) from described MDL; the catalog holds top-level activities only and cannot see inside a loop |
6767
| `skills/process-map.md` | At Stage 2 close (draft, before the questions are raised) and again after the wireframes (Stage 3 re-render), when a reviewer cannot tell where the open questions and ASSUMED decisions fit: one swimlane map per process, each step on its wireframe, every question pinned to a step (project-bin/process-map.js validate, anchor, build) |
68+
| `skills/learned-multilingual-app.md` | Adding a second language, a language picker or a translation script |
6869
| `project-bin/conformance-check.sh` | Running the ledger rung alone |
6970
| `project-bin/graph-sweep.sh` | Running the wiring rung alone |
7071
| `skills/fixture-seeding.md` | Seed data, test data, demo data or fixtures are needed, or pages come up empty |

0 commit comments

Comments
 (0)