diff --git a/CHANGELOG.md b/CHANGELOG.md index 1f77af2..b8eee3e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,10 @@ Kinds: `new` · `fix` · `learn` (a skill/learning) · `process` (rules, templat Credit the person or project that surfaced the change — the credit line is the thank-you. ## 2026-09-08 +- fix(bug-logs): re-probed the two workflow blockers on mxcli **v0.21.0** (released 2026-09-06, Mendix 11.13.0) — **both still open**, and BUG-76's diagnosis in this log was wrong. BUG-121 (`PARALLEL SPLIT`): the same script executed through v0.20.0 and v0.21.0 on two throwaway copies produces a **byte-identical** workflow unit (zero diff from `bson dump` after blanking the `$ID` GUIDs), so the runtime behaviour cannot have changed — and the path contents *are* present in the stored BSON on both versions, so the entry's own title ("writes the paths but not their contents") names the symptom, not the mechanism, which is still unidentified. BUG-76 (`DECISION`): not unconditional storage corruption but a **pincer between two spellings** — a bare outcome passes `mxcli check` and makes the model unloadable (`StorageLoadException`, "not a valid EnumerationValueIdentifier"), while a qualified one is rejected by mxcli's own `MDL-WF03` and loads clean via `exec --no-check` with a single `CE0117` for the empty expression; mxcli mandates the spelling the loader rejects and rejects the one it accepts, which implies two independent fixes rather than one. The correction was made on the source project on 2026-09-02 and never promoted here; it is already filed upstream as mendixlabs/mxcli#1031, so it goes into the draft as a comment to post rather than a rewritten body — a topbar-titled portal project · at merge: the three "disputed" `DECISION` notes on master (`mxcli-bugs.md` v0.20.0 clearance table, `learned-workflow-patterns.md` §1 pointer, §8 version table, §21 verdict table) now cite the resolved pincer diagnosis and the v0.21.0 re-probe instead of "shape-dependent, not isolated" — the toolkit merge queue + +## 2026-09-07 +- new(bug-logs): seven mxcli defects harvested from a topbar-titled portal project's build (mxcli v0.20.0, Mendix 11.13.0), each with an upstream draft — BUG-120 (three write-path asymmetries; the serious one: `ALTER ENTITY … ADD ATTRIBUTE` reconciles only the widest access rule and silently skips narrower ones — a valid model with wrong security), BUG-121 (`PARALLEL SPLIT` writes its paths but drops their contents: loads, passes every gate, deadlocks at run time — `workflow-structure-rules.md` §11's *proven* row retracted, plus a new CE6681 forward-`JUMP TO` row and the `$WorkflowUserTask`-not-in-call-microflow limit), BUG-122 (`ALTER PAGE … SET PageSize` rejects what `CREATE` accepts on the same widget), BUG-123 (`SHOW CALLERS OF` indexes neither page-button actions nor `show page` targets), BUG-124 (`DESCRIBE MICROFLOW` omits `without events`, so a round-trip silently re-enables event handlers), BUG-125 (`check --references` cannot resolve any enumeration — four A/B probes), BUG-126 (`ALTER PAGE … SET Label` prints "Altered page" and discards the value while `SET Class` applies and `SET Caption` errors by name). Renumbered at merge from 113–119, all seven of which master had taken while the branch was open; `bug-submission-checklist.md` §0 now states the merge-queue rule (`BUG-DRAFT-` in PRs) instead of "grep the toolkit and take the next number", which this branch did and still collided — a topbar-titled portal project, merged by the toolkit queue - fix(gate-check): the stage Surface check now also looks in `/analysis/` — `source-sufficiency.sh report` and `triage-report.sh` write there by default, but the check only probed the project root and the knowledge-base parent, so every fresh project reported both Stage 0 surfaces MISSING while they existed (seen on the first Stage 0 gate of a MOC/PSSR rebuild POC, 2026-09-08; verified `Surface present` after the fix) — a MOC/PSSR rebuild POC ## 2026-09-04 @@ -24,7 +28,6 @@ Credit the person or project that surfaced the change — the credit line is the ## 2026-09-03 - new(bug-logs): `pending-github-issues/render-paste-ready.sh` renders every NOT-YET-FILED draft into `paste-ready/-.md` (line 1 = title, rest = body, local header stripped mechanically) plus an `INDEX.md` in worst-first filing order with labels and the duplicate check done per issue; eight new drafts from the ledger's unfiled entries — BUG-102 (DataGrid `SET DataSource` silent no-op), BUG-104 (quoted `"$Param"` keeps the sigil), BUG-106 (widget names burned after rollback), BUG-107 (workflow `WITH` unquoted value segfault), BUG-109 (`JUMP TO` in boundary event), BUG-112 (`mxcli new` hangs on over-length path), BUG-100 (`docker init` without `COMPOSE_PROJECT_NAME`), STOP row 22 as an `exec` partial-application issue — and one feature request, `mxcli doctor`, written from `bin/doctor.sh`'s probe table. 22 issues paste-ready, 0 filed from this session (no `mendixlabs/*` access) — toolkit field review 2026-09-03 -## 2026-09-08 - process(routing): the always-on word budget now counts what an agent READS — skill documents — not the scripts it runs by their usage line: the tier held 97,769 words of which 21,216 were `.sh` (verify-module, source-sufficiency, source-ledger, status …) and 3,527 a `.js`, none of which ever enter a context window. Documents-only total 73,026; ratchet set to 80,000 and the check is **strict again** (the same-day advisory detour existed only because the number was wrong); `MXTK_BASELINE_BUDGET_ADVISORY=1` for a deliberate re-ratcheting pass. Tier-membership questions (`learned-stylegallery`, `design-spacing`, `ui-loop` baseline for every mdl session?) are left for the maintainers — this PR fixes the metric, not the roster — the toolkit merge queue - fix(tests): both fixture suites green again — `run-tests.sh` 19/19 and all 30 wave2 fixtures. Bisected, not patched over: every failure was a fixture left behind by two deliberate 2026-08-20 exit-code changes (`40c63ac` PENDING → exit 3; `cec7a1e` Stage 0 advisory → exit 0) that updated only the fixtures their authors ran — `test-surface-column` now asserts the verdict word is *unchanged* rather than a literal FAIL, `test-bug04-subscripts` expects the documented codes and discriminates PASS/FAIL by the verdict word, `run-tests.sh`'s project now has an examined question file so the open-questions guard has something to examine, `test-triage-report` asserts `Stage 0 (Triage): FAIL` with exit 0 and the reworded reason. `test-bug05` T7 depended on a pre-fix gate copy that only existed on its author's Mac; it now materialises `778c3ff^:bin/gate-check.sh` from history. No gate behaviour changed. Also found by wiring them in: `init-project.sh` registers a scaffolded project's name in the *toolkit's* gitignored denylist, so fixtures scaffolding `t0`..`t10` had been appending `\bt0\b`… to the developer's real list on every run (and created one in CI, where the guard then flagged 200 files); `MXTK_LEAKGUARD_DENYFILE` now overrides the target, every scaffolding fixture points it at scratch, and `run-all.sh` refuses if a root denylist appears. **process(ci):** both suites now run in `checks.yml`, after the guard — they were red for nineteen days while every PR showed green because nothing ran them — the toolkit merge queue - fix(bin/sync-project.sh, bin/lib/triage-template.sh): **`sync-project.sh` overwrote a signed-off `triage.md`, destroying 73 lines of Stage 0 decisions** — recovered only because the project had committed it. Two independent defects in `mxtk_triage_is_pristine()`, either sufficient: (1) the completion marker a filler writes, `MXTK-TRIAGE-STUB-FILLED`, is a **substring** of the `grep -q 'MXTK-TRIAGE-STUB'` guard, so the suffix that exists to say "done" said nothing — now anchored, and `-FILLED` is checked first as an explicit *not pristine* signal; (2) the header-strip `awk` needed `