You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit dc840ee
Browse filesBrowse the repository at this point in the historyBrowse files
fix(exec): pause the project watcher during the gate and retry once on an infra exit (#451)
fix(exec): pause the project watcher during the gate and retry once on an infra exit
Verdict: APPROVE
r3 on head fd90628. The r2 must-fix is done (f4cc5ae): the -p value is no longer cut at the first space; the longest run of words that exists on disk is kept, so a duplicated "<proj> copy" watcher is not matched, and this project's own watcher under a path with a space is. The r2 nice-to-have 1 is also done: the pause record is written before the SIGSTOP loop. Test D now runs a "<proj> copy" sibling with its own .mpr; it fails on 0c14d17 (22/24) and passes with the fix (24/24). lock-watch 84/84, crash-rollback 13/13, check-scripts, check-portability and check-pr-discipline clean. Base release/v1.0 merged (CHANGELOG keep-both). Everything else in r2 stands.
Copy file name to clipboardExpand all lines: CHANGELOG.md
+1Lines changed: 1 addition & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -19,6 +19,7 @@ Sections dated before 2026-09-19 predate the cycle and stay as they are. Named m
19
19
20
20
## Unreleased
21
21
22
+
- fix(exec): **the gate pauses this project's `mxcli run --local --watch` while mxbuild runs and retries once on an infra exit.** The gate's mxbuild and a live watcher both write `deployment/`; in a field migration project (12 modules) 17 of 27 failed gates were "gate could not run" (mxbuild exit 1, no CE code), against 0 of 22 in watcher-free copies. The watcher is stopped (SIGSTOP) for the gate and resumed (SIGCONT, also in the EXIT trap); an exit 1 or 3 with no CE code and no errors file is retried once and the BUILD-LOG row says `retry after infra exit`; a final failure still takes the #424 rollback. The match is exact (the watcher's project dir must equal this project's root, so a sibling `-copy` or a nested worktree watcher is never paused), and the paused pids are recorded in `.mpr-snapshots/.watcher-paused` so the next exec.sh resumes a watcher left stopped by a SIGKILLed one and says so. Test: `tests/wave2/test-exec-gate-retry.sh` (Refs #441, #444, #171, #285, #424) — field migration project
22
23
- learn(load-test): **trap 9, an unlicensed local runtime caps concurrent sessions at 6 ("Maximum number of sessions exceeded!") and stops itself after a random 2 to 4 hours, both reading as the app failing under load; more than 6 users needs a licensed runtime or a cloud sandbox.** Text only, ondemand skill. Source: a personal licence-budget gate written after parallel journey runs hit both — MendixMau
23
24
- fix(progress-report): **the full plan tables (one table per phase plus views A and B) now sit in one closed `<details>` card below the phase cards, so a large plan no longer pushes the rest of the report off screen; the phase cards above stay the summary, and nothing is written when the project has no plan fragment.** Test: P6 in `test-progress-report-polish.sh` — MendixMau
24
25
- fix(build-plan-status): **every State the build-plan skill lists (built, partial, not built, blocked) and every spelling the phase card already counts (complete, verified, in progress, not needed and the like) is now read the same way by the plan header and the phase badge, so card, header and badge give one count; blocked counts as not built and is named in the header, genuinely unreadable values are still reported as unreadable; the later-stage placeholder FAIL is relabelled PENDING only while that stage is pending in PROJECT.md, with tests that a real FAIL stays FAIL and that FAIL stays when the current stage is unknown** — MendixMau
# mxtk_watcher_pids <project-root> - pids of `mxcli run --local --watch` that belong to this
595
+
# project. Exact match only: the watcher's project dir (the directory of its -p argument,
596
+
# resolved against its cwd, or its cwd when it has no -p) must equal the root after pwd -P. A
597
+
# substring test also hit a sibling `<App>-copy` and a nested `.claude/worktrees/x` watcher.
598
+
mxtk_watcher_pids() {
599
+
local _root _pid _cmd _cwd _p _dir
600
+
_root="$(cd "$1"2>/dev/null &&pwd -P)"||return 0
601
+
for_pidin$(pgrep -f 'run --local'2>/dev/null || true);do# portability-ok: pgrep -f ships with Linux procps and macOS; Windows has no watcher to pause here
0 commit comments