Repository navigation
Integration 2026-10-20: six reviewed bug fixes (#486 #480 #482 #481 #484 #485) - #490
Merged
Merged
Conversation
…s them (#470) probe() matched both absence markers anywhere in mxcli's answer, so a built microflow whose documentation said "(0 = …)" and every navigation describe with a not-found page scored ABSENT and went STALE. An error is now a line starting "Error:", an empty set is a last non-blank line of the "(0 …)" summary form; CRLF stripped. New fixture replays verbatim captures already in the repo on both layouts. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VJgWP5vEoAsNsJYqCDMGNw
…r project (#469) SIGN_OUT matched English captions only, so a Dutch app's "Afmelden" was clicked, the monkey landed on login.html and scored a false CRASH. The default now covers nl/de/fr/es/pt/it captions, a project adds its own via project.config.js signOutPattern or SIGN_OUT_PATTERN, and rapidTab steps past a focused sign-out control instead of pressing Enter on it. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VJgWP5vEoAsNsJYqCDMGNw
…#467) In a single-byte locale (and on macOS bash 3.2 even under en_US.UTF-8) bash reads the first byte of a multibyte character as part of a bare variable name, so "$LAST_FAIL— fix" expands LAST_FAIL<byte> and set -u aborts status.sh before it prints NEXT. - bin/status.sh: ${LAST_FAIL} and ${NOT_DONE_PASS} on the two NEXT lines. - project-bin/constants-audit.sh, tests/wave2/test-runbook-slice.sh: the same idiom (an ellipsis, and a case pattern), braced. - bin/check-portability.sh: flag any bare $NAME followed by a non-ASCII byte, in every scanned file, matched with LC_ALL=C. - tests/wave2/test-status-bare-var.sh: the lint cases on any machine, and both NEXT rules under an ISO-8859-1 locale where one exists. Reproduced on bash 5.2 with a compiled en_US.ISO-8859-1 locale: both NEXT rules aborted on master and print after the fix. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VJgWP5vEoAsNsJYqCDMGNw
…hind it (#471) contentOf() tried div.main before anything else, and a popup wireframe's .shell-behind carries the caller's div.main, so the popup was scored against the caller's page. A wireframe with a .dialog now scores the dialog; a .popup-stage without one scores the stage minus .shell-behind. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VJgWP5vEoAsNsJYqCDMGNw
… t (#468) BSD/macOS sed reads [ \t] in a bracket expression as "space, backslash or t"; only GNU sed expands \t there, and grep never does. Every trim built on it also ate a leading or trailing letter t and left real tabs. - project-bin/context-pack.sh: names() trimmed Mod.ENUM_Product to Mod.ENUM_Produc, then reported it "not in the folder plan". - bin/lib/closeout.sh: _co_trim and the Stage prefix strip. - bin/lib/entry-mode.sh: the answer-prefix strip and the value trim (a tab-separated "answered:<TAB>migration" read as no entry mode). - bin/gate-check.sh: the intake section count grep. - tests/wave2/test-progress-report-field-fixes.sh: [^\t] -> a real tab. - bin/check-portability.sh: flag \t inside a bracket that follows sed/grep on the line (awk is fine; $'...' strings are skipped). - tests: a BSD-sed (sed --posix shim) pass in test-context-pack.sh over its captured golden brief, and test-sed-tab-bracket.sh for closeout, entry-mode and the lint. Both fail on master and pass here. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VJgWP5vEoAsNsJYqCDMGNw
… note (#479 items 1-3) - Top bar: drop the Stage P 0..6 chips and their outline observer; the bar is one group of section links (Stages, Build, Pages, Tips) with Stages jumping to the stage rail (id=stages). Sticky and phone rules kept, #stage-N card anchors kept, and the header line now states the current stage. - id=stamp: only the "Last updated" span keeps it. The session-log span, the build/score/plan notes and the footer note get unique ids plus a data-stamp marker. build-plan-status.sh --refresh now ignores lines matching id=stamp|data-stamp, so its no-rewrite rule is unchanged and pages written before this still compare. - Header: "replaces the former build-plan.html" removed. Fixtures: polish P7 (nav, anchors, current stage, unique ids, stamp count, volatile-line markers, --refresh byte-identical); field-fixes F11 flipped, F14 asserts the autoreload's live controls ride on the one id=stamp line. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VJgWP5vEoAsNsJYqCDMGNw
mxcli prints enumeration, scheduled-event and image-collection docs raw, so a doc line can start "Error:"; the any-line check scored those ABSENT. Only the first non-blank line is read now (an -c error also exits 1, which the rc test already scores). The summary regex drops its trailing-space class so the CRLF cases test the CR strip itself. Fixture gains a raw enum-doc case and separate CRLF cases (24/24; 6 FAIL on master; 4 FAIL on the previous head). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VJgWP5vEoAsNsJYqCDMGNw
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VJgWP5vEoAsNsJYqCDMGNw
…ct flags (#469 review) The non-English words are ordinary verbs, so a word match left "Ziek afmelden", "Afmelden nieuwsbrief", "Vom Kurs abmelden" and "Disconnetti dispositivo" unfuzzed; they now match only as the whole caption, and the focus check tests text, aria-label and title one by one. A project RegExp keeps its flags (g/y dropped). The rapidTab static guard is scoped to that branch: the old one passed a blind-Enter mutation, the new one fails it. Fixture 22/22; 8 FAIL on master, 3 on the previous head. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VJgWP5vEoAsNsJYqCDMGNw
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VJgWP5vEoAsNsJYqCDMGNw
…dence (#471 review) .dialog is the design system's own component, so any class-word .dialog turned a full-page wireframe with an inline confirm into that confirm (39% on master, 5% on the first cut). The dialog boundary now needs a .popup-stage or .dialog-scrim in the wireframe, or a popup layout in the page MDL; otherwise the old boundary list applies unchanged. Fixture 78/78: 8 FAIL on master, 1 (the inline-confirm regression) on the previous head. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VJgWP5vEoAsNsJYqCDMGNw
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VJgWP5vEoAsNsJYqCDMGNw
…tage, dead rule, sync note)
- #stages and #build-detail get the 56px scroll margin, so the nav targets
no longer land under the sticky bar; asserted in polish P7.
- An unreadable current stage renders plain "Current stage: unknown"
instead of a link to #stage-P; asserted in polish P7.
- Drop the dead .snav b{flex:0 0 auto} phone rule.
- CHANGELOG: a project with a locally edited bin/build-plan-status.sh keeps
the old id=stamp filter after sync and rewrites the page on every
refresh; it needs sync-project.sh --only-bin build-plan-status.sh
--upgrade-bin build-plan-status.sh alongside this.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VJgWP5vEoAsNsJYqCDMGNw
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VJgWP5vEoAsNsJYqCDMGNw
review) The lint matched "sed" inside words such as "closed", "parsed" or "used", so an awk regex after one of them would turn CI red. Anchored as (^|[^[:alnum:]_])(sed|grep)([[:space:]]|$); verified it still flags the true sed/grep sites and not the two awk probes. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VJgWP5vEoAsNsJYqCDMGNw
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Integrates six bug-fix PRs from the 2026-10-20 backlog run. Each one was independently reviewed (all MERGE after one fix round) and was green on its own head. Merge with a merge commit, not a squash: each PR's own commits then land on master, and GitHub marks every PR below as merged.
(0 …)summary$VARbefore a non-ASCII byte braced (status.sh and 2 more); portability lint for it\tin sed/grep brackets replaced by[[:blank:]]at 7 sites; portability lint, anchored to the command wordAll six merged into master
efd4e9awith no conflicts.Verified on the integrated tree
check-scripts,check-portability,render-routing --check,check-pr-discipline origin/masterand the leak guard: clean.Impact
build-plan-status.shandprogress-report.pyship together (#486). A locally editedbuild-plan-status.shneeds--only-bin build-plan-status.sh --upgrade-bin build-plan-status.sh.check-portability.shgains two lints (#484, #485).Field runs on real projects are owed by the maintainer, as each PR states.
Follow-ups filed during review: #488 (BSD sed
\toutside brackets) and #489 (installed vs toolkit_common.shroot inside an app folder).Generated by Claude Code