Skip to content

inbox: eight field notes from an existing-app legacy-widget rebuild (exec.sh crash gap, restore-mpr usage, #228/#244 confirmations, durable-rebuild kit, learned widget entries) - #309

Closed
AlvinnYeo wants to merge 4 commits into
MendixMau:masterfrom
AlvinnYeo:inbox/legacy-widget-field-notes
Closed

AlvinnYeo wants to merge 4 commits into
MendixMau:masterfrom
AlvinnYeo:inbox/legacy-widget-field-notes

Conversation

@AlvinnYeo

@AlvinnYeo AlvinnYeo commented Oct 13, 2026 •

Copy link
Copy Markdown

@MendixMau — field notes for the inbox from an existing-app build; the related mxcli issues are mendixlabs/mxcli#1458–#1472.

What

Lane 1 (inbox) only. Five files under contrib/inbox/, no change to skills/, bin/,
project-bin/ or bug-logs/. Updated 2026-10-16: each note was checked against master (d1cbd41); three that master already fixes were dropped and two were marked as partly stale.

File Kind Status against master d1cbd41
2026-10-13-exec-keeps-write-when-mxbuild-cannot-run.md bug still valid: exec.sh exits 1 and clears the stamp, but keeps an MDL write when mxbuild crashes on it, and the next exec proceeds on "Baseline NOT measured" (the rollback is open in #311)
2026-10-13-test-endpoint-after-startup-left-after-signal.md bug partly stale, marked in the file: exec.sh now refuses on a leftover injected setting and prints the repair; still open are the upstream root cause behind #244 (closed 2026-10-14, toolkit refusal landed) and the missing signal-stop line in testing-shape.md
2026-10-13-patch-unit-row-delete-orphan.md learning valid: deleting a Unit row is refused by fix hashes --repair; rename-then-drop works
2026-10-13-durable-rebuild-kit-legacy-widgets.md process partly stale, marked in the file: STOP row 21 now covers restating a co-edited document; still open are the legacy-widget section and the role-lock scan
2026-10-13-learned-widgets-and-data-sources.md learning valid: six entries (File Uploader image mode CE0463, native-mapped radiobuttons/image, tab-page CaptionParams/Visible: dropped, BUG-39 on widget XPath, two-hop data source)

Dropped because master already fixes them: restore-mpr.sh accepts a bare timestamp (#313), build-plan-status.sh takes flags before the path (#313), and another project's mxcli test no longer blocks exec.sh (per-project lock, #304).

Why

A field project changed an existing Mendix app whose pages were full of old widget types mxcli
v0.25.0 cannot write (old data grids, reference selectors, drop-downs, the image uploader, widgets
visible only to listed module roles). The owner chose a durable rebuild: 34 pages and snippets were
restated whole from MDL. Along the way the toolkit's gates caught every build-level failure and rolled
back cleanly, with one exception (an mxbuild crash, first file). Several gaps were silent: settings
that check, exec and mxbuild all accepted and that were not written, or that DESCRIBE did not print.
These notes are what the toolkit could carry so the next existing-app project does not rediscover them.

Field context

Checks

  • No instrument, skill or routing change, so no fixture applies (inbox files are unrouted).
  • bin/check-no-client-data.sh with the local denylist: clean on the 2026-10-16 head.
  • bin/check-pr-discipline.sh: clean.
  • CHANGELOG line added under ## Unreleased (below).
  • Duplicate search done on issues and PRs (open and closed); related items are named in each file.

🤖 Generated with Claude Code

exec.sh keeps an MDL write when mxbuild crashes on it; restore-mpr.sh
usage text; build-plan-status.sh flag order; field confirmations of MendixMau#228
and MendixMau#244; Unit-row delete orphan; durable-rebuild kit with a "restate
from DESCRIBE" STOP row; learned widget and data-source entries.
Mendix 11.14.0 Beta, mxcli v0.25.0, toolkit c1efcb3. Lane 1 only.

Co-Authored-By: Claude <noreply@anthropic.com>
MendixMau added a commit that referenced this pull request Oct 13, 2026
… before run --local (#262), detection gaps (#299), test strength (#172) (#313)

* fix(project-bin): flag order in build-plan-status.sh, bare timestamp in restore-mpr.sh

build-plan-status.sh: parse flags and the project path in one loop, so a
leading flag is no longer shifted away and the path no longer reported as
"unknown arg"; a second path is an error. restore-mpr.sh: resolve the
argument before cd into the model dir — a directory as given, else a
folder of that name under .mpr-snapshots/, else exit 1 naming it and
listing the newest snapshots.

Field report by AlvinnYeo in the inbox PR. Refs #309

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VJgWP5vEoAsNsJYqCDMGNw

* learn(record-demo-video): port four demo-film defects into the skill

Applies the patch from #237 (0005), rebased over #303: spawnSync for
ffmpeg's stderr report, step number without a guessed total, skipped
beats counted and set a non-zero exit, rows found by the displayed key,
base URL checked before launch, record and post as separate steps, and
four failure-mode rows placed before the egress row.

Closes #237

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VJgWP5vEoAsNsJYqCDMGNw

* fix(app-restart, test-stack-up): name a port thief before run --local, exit 4

Before stopping anything, app-restart.sh checks the app and admin port;
a holder outside the recorded process tree exits 4 "instrument blocked"
with its name, pid and parent, and is never touched. After the stop the
same check is exact. test-stack-up.sh runs the check wherever it would
advise starting run --local. Holder lookup: lsof, ss, netstat+tasklist.

Closes #262

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VJgWP5vEoAsNsJYqCDMGNw

* learn(detection-gaps, module-review): lazy combo preset, pinned row heights

Two register rows (first oracle: the running app, before touching the
filter / at each width) and two LOOK checklist lines with denominators.

Closes #299

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VJgWP5vEoAsNsJYqCDMGNw

* learn(testing-shape, test-result-audit): server-side refusal probe, 4xx fails, clean final run

Three false-green rows in testing-shape.md §4 with report lines in §7,
each carrying a denominator, and check 2e in test-result-audit.md that
asks for them. The inbox note behind it keeps only its unpromoted items.

Closes #172

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VJgWP5vEoAsNsJYqCDMGNw

* learn(testing-shape, module-review): fit #172/#299 inside the baseline budget

The first cut put 491 words into two baseline skills; the baseline tier
went to 80,466 against its 80,000 ratchet. The reasons for the three
testing rules now live in test-result-audit.md 2e (on demand), the LOOK
lines are one line each, and two redundant sentences in testing-shape.md
§4's verdict paragraphs are folded. Baseline: 79,997.

Refs #172 #299

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VJgWP5vEoAsNsJYqCDMGNw

---------

Co-authored-by: Claude <noreply@anthropic.com>
MendixMau pushed a commit that referenced this pull request Oct 13, 2026
…er replay, STOP 29 command)

Review of #311 (held):
1. script-owners.sh orders and matches scripts with a leading done- removed: a raw sort put an
   executed done-05-x.mdl after 09-y.mdl and called the NEW 09 a replay; `-- supersedes: 05-x.mdl`
   stopped matching after the rename.
2. describe-baseline.sh record-applied <script> records each document's live hash after a write;
   verify reads SAME when the live body is the script's own recorded write (a re-run) or when a
   baselined document is absent (a rebuild onto a fresh model). exec.sh is not changed here: the
   one call it needs after a gate pass is proposed in the PR; the fixture runs that case only
   when exec.sh carries it (NOT RUN otherwise) and passes 67/67 with the patch applied.
3. Replaying older co-owned scripts in run order is quiet: the "replaying reverts O" verdicts
   ask the model first (document absent, or live body applied by this script or an older one).
   No ./mxcli to ask stays a conflict.
4. "Not found" matching follows recorded mxcli output (entity/constant not-found, rc 1) by shape:
   non-zero exit, no body, "not found: <Doc>"; "no describable document" and parse errors fail
   the call instead. No capture of a missing MICROFLOW/PAGE exists in the repo.
5. STOP 29 gives a pipe-free grep over mprcontents/ instead of the codec library.
6. Cut the Step 0 line that repeated STOP 22.

Fixture tests/wave2/test-restatement-guard.sh: 65 ok + 1 NOT RUN on this branch.

Refs #261
Refs #269
Refs #309

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VJgWP5vEoAsNsJYqCDMGNw
MendixMau and others added 3 commits October 16, 2026 10:14
…e, merge master

Dropped: restore-mpr usage, build-plan-status flag order, other-project guard
(fixed on master by MendixMau#313 and MendixMau#304). Kept five. CHANGELOG line rewritten for five notes.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
MendixMau added a commit that referenced this pull request Oct 16, 2026
…rom #309 by @AlvinnYeo) (#450)

Lands #309 by @AlvinnYeo. Independent review: APPROVE.

# PR 450 (lands #309 by @AlvinnYeo) review r1 (delta self-review)
Verdict: APPROVE
- w1 must-fix 1 done: every #244 status now says closed 2026-10-14 by #322, upstream root cause remains (gh issue view 244 confirms). No STOP-table wording left in the note.
- w1 must-fix 2 done: body drops the stale byte-identical claim.
- Inbox lane only (contrib/inbox + one CHANGELOG line, credit " — AlvinnYeo"); nothing loaded or routed; zero behaviour risk.
- Optional word limits not enforced (inbox notes, maintainer call).
@MendixMau

Copy link
Copy Markdown
Owner

Thank you @AlvinnYeo! Your five field notes are now in the toolkit via #450, which landed on the release branch for the upcoming v1.0. We brought them in through our own branch so we could sync them with the latest changes, and your name is credited in the CHANGELOG and the commit.

Closing this one in favour of #450. Really appreciate you writing these up from a real rebuild.

@MendixMau MendixMau closed this Oct 16, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants