diff --git a/CHANGELOG.md b/CHANGELOG.md index 43762d1d..6ab32d97 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -19,6 +19,7 @@ Sections dated before 2026-09-19 predate the cycle and stay as they are. Named m ## Unreleased +- fix(script-owners): **the restatement guard now parses under macOS's default bash 3.2, so `exec.sh` no longer skips it silently** (guard added in #498). `exec.sh` runs `bash script-owners.sh check … 2>/dev/null || true`; under /bin/bash 3.2.57 the file failed to parse (an apostrophe in a comment inside `$(...)`, then `case` patterns without a leading `(`), so the call (and the ledger `record` call) printed nothing and warned nothing. Fixture `test-restatement-guard.sh` under /bin/bash 3.2.57: 16 of 58 pass before, 58 of 58 after; `bin/check-scripts.sh` now also parses every script with /bin/bash when the bash on PATH is a different one. — saingge - fix(facts-lock): **`check` no longer reports "N BRD(s) agree with all 0 frozen fact(s)" when nothing was compared** (#519). A corpus whose BRDs carry identifiers only under keys the harvest does not read (`domainEntities[].name`, `pages[].name`) froze an empty lock, and `check` printed what reads as a pass. With 0 frozen facts, `check` now prints `PENDING facts-lock: 0 identifiers found under any known key in N BRD(s): the lock is empty and check proves nothing (keys read: ...)`, or, when identifiers exist but no lock was built, `PENDING ... run build first; check compared nothing`; `build` prints the same empty-lock line when it froze 0 facts and found no conflicts. Exit codes are unchanged (an exit-3 "nothing measured" and harvesting `name` keys are left for a separate change). Fixture: `test-facts-lock.sh` (the issue's repro: 3 fail on master; 19/19). — AlvinnYeo (#519) - fix(journey-runner): **the RUNG 1 landing guard now waits up to its 12 s for `ui.ready`** (#536). It called `locator.isVisible({ timeout: 12000 })`, and Playwright ignores that timeout and answers at once, so a page that rendered more than 300 ms after the per-action settle (a progress bar, a microflow before the page opens, a step ending in a fixed `settleMs`) read `reached: FAIL` and every later rung of the step INVALID. It now uses `waitFor({ state: 'visible', timeout: 12000 })`, and the NOT-REACHED screenshot is taken after that wait. Only the landing guard changes; the same no-wait call in `act()` (`click`, lines 184/210/222), the named-control probe and `helpers.js`/`monkey.js`/`full-app-walkthrough.js` are left for a separate change. **Behaviour change to check in your project:** a journey whose ready selector never appears now spends 12 s per such step before it reports NOT-REACHED. Verified by inspection and a Playwright probe (hidden element shown after 2 s: `isVisible` false in 74 ms, `waitFor` true in 2.3 s); no fixture drives the runner's step loop. — AlvinnYeo (#536) - fix(build loop, exec): **the commit guidance stages `javasource/` and `javascriptsource/`, and `exec.sh` prints a staging hint when they changed** (#540). `create java action ... as $$` writes `javasource//actions/*.java` beside the model; the skill's example (`git add App.mpr mprcontents/ mdlsource/