Skip to content

fix: follow-ups to #290 and #292 (subject-set wording, re-run contradictions, baseline cost) - #320

Closed
MendixMau wants to merge 8 commits into
masterfrom
fix/followup-290-292
Closed

MendixMau wants to merge 8 commits into
masterfrom
fix/followup-290-292

Conversation

@MendixMau

@MendixMau MendixMau commented Oct 13, 2026 •

Copy link
Copy Markdown
Owner

Depends on #315. This branch is built on chore/baseline-word-trim and contains its commits, so merge #315 first. Land this PR together with the exec.sh follow-up PR (fix/exec-followups). That PR changes project-bin/exec.sh's change_lane UI-only text to the same subject-set wording used here.

An independent review of the merged #290 (squash 3a54675) and #292 (squash c1efcb3) found four defects. Refs #274 #288.

1. UI-only lane ignored pages in other modules (#290)

Problem: the UI-only lane in testing-shape.md §3 said "No regression journeys of other modules". A snippet or layout change reaches pages in other modules, and the subject-set table in the same section already said "a page that embeds the snippet".
Fix: both tables now say the journeys of every page the change reaches, including pages that embed a changed snippet or use a changed layout, in any module. The "what does not re-run" column is now "No journeys of pages the change does not reach". The matching text in exec.sh is in the companion PR.

2. "Re-run after any change" contradicted "reviewers never re-run" (#290)

Fix: two places in module-review.md.

  • The "nothing grandfathers" line now says the change's subject set is re-run once, by the implementer.
  • The Prove (3) "Acceptable" cell now says the implementer re-runs the subject set once and the reviewer verifies that artifact (testing-shape.md §3). "A reviewer re-running what the implementer already ran and recorded" is added to "Not acceptable".

The stage-4 LOOK expiry rule ("re-run stage 4") is left alone: that is the reviewer redoing its own LOOK, not repeating the implementer's tests.

3. testing-shape.md cost (#290)

Fix:

Word count: 6,888 → 6,740.

4. agent-roles.md had become baseline at stages 1/2/3/6 (#292)

Fix: the Dispatching section moves to a new skills/dispatching.md (981 words). The new file adds a harness note: forks, resumes, task notices and naming a model per call are Claude Code concepts. On other harnesses the equivalent is a fresh session per task with a written brief.

Routing changes:

5. PROOF-OF-LOOK text matching #321

module-review.md stage 5 now states the addenda rule. Each re-look adds its own VALID AT: and PROOF-OF-LOOK: lines. Each citation is checked against the nearest stamp above it. A report is stale only when the model has been built past its newest stamp (by commit time).

§ "The final LOOK" now requires:

  • a VALID AT: stamp (an unstamped final LOOK is FAULT);
  • one PROOF-OF-LOOK: line per page;
  • it is not owed until gate-check's derived ## Current stage readout reaches 6, and a hand-written stage line keeps it owed.

This text matches the checker in PR #321 (obligation-check.sh).

Numbers (bin/render-routing.sh --check)

before (#315 head) after
Baseline tier 76,259 76,326
lead, stage 1 29,275 27,216
lead, stages 2, 3, 6 31,079 29,020
lead, stages P, 4, 5 27,367 / 31,079 / 29,171 27,452 / 31,164 / 29,256

The baseline rose by 67 words. Most of that is the #321 PROOF-OF-LOOK text added to module-review.md (+89) and the restored failure examples. Before those two additions, this PR alone came to 76,191.

Checks run

  • tests/wave2/test-render-routing.sh bin/render-routing.sh: 5/5 on most runs, with 1 intermittent failure (see the flake below).
  • tests/wave2/test-baseline-pack.sh bin/render-routing.sh: 16 ok.
  • tests/wave2/test-exec-change-class.sh project-bin/exec.sh: 20/20.
  • tests/wave2/test-ritual-slim.sh bin/sync-project.sh: 17/17.
  • tests/wave2/test-bug12-sync.sh bin/sync-project.sh: 61/61.
  • Passed: check-scripts, check-portability, check-no-private-citations, check-no-client-data, check-pr-discipline origin/master, render-routing --check (in sync, under budget).

A flake that was already there, not caused by this PR: under heavy machine load, render-routing.sh --check sometimes reports a random routed skill as UNROUTED, and a rerun passes. It is being fixed separately in fix/render-routing-pipefail-flake.

Field run

None owed for an instrument: this is skill text, routing, and one intake text body. No instrument logic changed.

🤖 Generated with Claude Code

https://claude.ai/code/session_01VJgWP5vEoAsNsJYqCDMGNw

The always-on baseline tier counted by bin/render-routing.sh --check was
at 79,735 of its 80,000-word cap. This frees 3,772 words (now 75,964)
by moving narrative and setup-only text out of baseline files, keeping
every rule, STOP, denominator and gate cell in place, each rule still
paired with a one-line failure example plus a pointer to the full text.

- conversion-runbook.md, source-triage.md, interview-protocol.md: long
  incident narratives -> one line + pointer; originals verbatim in new
  on-demand process/baseline-incident-history.md (R1-R20, AR1, ST1-ST4,
  IP1-IP3). Runbook's duplicate open-questions status table now defers
  to interview-protocol.md section 4.
- agent-roles.md: the six template shapes (setup-only) moved to
  agents/README.md, which installers never copy (explicit MXTK_AGENTS).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VJgWP5vEoAsNsJYqCDMGNw
…low", ST1 id

Independent review of #315: obligations.tsv still pointed at agent-roles.md for
step 8a, which moved to agents/README.md; agent-roles.md said the example bodies
are "below"; the history header cited a non-existent section id.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VJgWP5vEoAsNsJYqCDMGNw
Measured with LC_ALL=C on the branch after master (#313) was merged in:
79,997 -> 76,259 (-3,738); the old line used pre-#313 figures.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VJgWP5vEoAsNsJYqCDMGNw
…ictions, baseline cost)

An independent review of the merged #290 and #292 found four defects.

- testing-shape.md §3: the UI-only lane said "no regression journeys of
  other modules", but a snippet or layout change reaches pages in other
  modules (the subject-set table already said "a page that embeds the
  snippet"). Both tables now say: the journeys of every page the change
  reaches, embedders of a changed snippet/layout included, in any module.
- module-review.md: the Prove row said "re-run after any change" and the
  "nothing grandfathers" line implied a fresh re-run, contradicting
  "reviewers never re-run". Both now say the implementer re-runs the
  subject set once and the reviewer verifies that artifact (testing-shape §3).
- testing-shape.md is a baseline file: the #274 cost anecdote was told in
  §2 and again in a §3 box. Kept once, as one line in §3; §2 points there;
  the full-suite paragraph defers to the event table it repeated. 6,888 ->
  6,702 words. Rules, denominators and one failure example per rule stay.
- agent-roles.md's Dispatching section moves to skills/dispatching.md
  (981 words, adds a harness note: forks, resumes, notices and per-call
  model naming are Claude Code concepts; elsewhere the equivalent is a
  fresh session per task). dispatching.md is the lead's baseline at
  P-6; agent-roles.md goes back to its pre-#292 setup row (lead, P,4,5).
  A stub heading in agent-roles.md keeps old "-> Dispatching" pointers
  resolving; the runbook §1c pointer now names dispatching.md.

render-routing --check (on top of #315): baseline 76,259 -> 76,191 words.
Lead load per stage: 1: 29,275 -> 27,216; 2, 3, 6: 31,079 -> 29,020;
P: 27,367 -> 27,452; 4: 31,079 -> 31,164; 5: 29,171 -> 29,256 (setup file
plus the dispatch file at those three stages); 0 and 7: +17 (the extra
runbook routing row).

Depends on #315. Refs #274 #288

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VJgWP5vEoAsNsJYqCDMGNw
…, PROOF-OF-LOOK addenda

- testing-shape.md: the #274 box keeps its failure examples (other
  modules' journeys, reviewer re-runs, full mxcli test at batch close; a
  caption change owes one journey and one look) and names the unset Unit
  default, so §2's pointer lands on it; module close again names "the
  module's whole journey set".
- intake Q13 (bin/lib/intake-template.sh): the anecdote is one clause
  pointing at #274. --repair-intake matches the question by its heading,
  unchanged; test-bug12-sync.sh passes.
- skills/ui-loop.md: the restart pointer names dispatching.md.
- module-review.md: PROOF-OF-LOOK addenda rule (nearest stamp above, stale
  only past the newest stamp by commit time) and the final LOOK's
  VALID AT / per-page proof / derived-stage-6 requirements, matching
  PR #321's obligation-check.sh.

Refs #274 #288

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VJgWP5vEoAsNsJYqCDMGNw
MendixMau pushed a commit that referenced this pull request Oct 13, 2026
…tradictions, Dispatching split into its own skill (refs #274 #288)

Review: MERGE (review + fix round + confirmation) — lead load at stages 1/2/3/6 down ~2,059 words; failure examples restored; PROOF-OF-LOOK text matches #321. Conflict in gate-check.sh's generated stage map resolved by re-rendering.
MendixMau pushed a commit that referenced this pull request Oct 13, 2026
…al, shared stale-lock takeover, SEC014 note echo

Conflict: skills/agent-roles.md — the Dispatching section moved to
skills/dispatching.md in #320; kept integration's agent-roles.md and
re-applied #324's restart-paragraph wording in dispatching.md.

Review: independent joint review (agent a1e0b45) of head 90a6957 — MERGE.
Contention harness 0 double holders on dead lock; follow-up owed for a
takeover race after a mid-takeover crash (2/160 rounds; re-check own line
before compare-and-rm). Fixtures: exec-lock-watch 84/0, exec-change-class
21/0, bug07-08 43/0, shared-lock-takeover 6/0.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VJgWP5vEoAsNsJYqCDMGNw
MendixMau added a commit that referenced this pull request Oct 14, 2026
)

Every constituent PR was reviewed by a fresh agent that did not write it (CLAUDE.md "Merging a PR"); only MERGE verdicts joined. CI green on each constituent head and on this head (40814fc); full suites run on the branch.

Review lines (per merged PR):
- #315 context trim — MERGE; 360/385 removed lines found verbatim in their new homes, rest read by hand; baseline 79,997 -> 76,259.
- #316 independent-review + word-budget rules — MERGE-AFTER-FIX (3 rounds), fixes applied as specified.
- #318 page-fidelity displayed text — MERGE after fix round + confirmation.
- #317 interaction-model skill (#291 part 1) — MERGE after fix round + confirmation; no client names leaked.
- #321 PROOF-OF-LOOK per section; final-look not due before derived Stage 6 — MERGE after fix round + confirmation.
- #307 graph-sweep guard; per-BRD conformance ledgers — MERGE after two fix rounds + confirmation.
- #325 extraction-quality section; token-burn fixes — MERGE after fix round + confirmation.
- #310 e2e OQL by alias, negative-span liveness, APP-DOWN, #302 credential regression fix — MERGE after fix round + 3 confirmations.
- #323 inbox promotions — MERGE after fix round + confirmation.
- #308 lint gate BLIND on reverted stock rules — MERGE (FIRST-SEEN reverted) after two fix rounds + confirmation.
- #328 pipefail + grep -q flake — MERGE; 0/30 flakes vs 15/100 on master. Follow-up: run-all resolves bin/lib/ subjects (reviewed, MERGE).
- #319 test-stack-up command-line ownership proof — MERGE after fix round + 2 confirmations.
- #327 change-intake core + on-demand detail; CRLF-safe change log — MERGE after fix round + confirmation.
- #320 follow-ups to #290/#292; Dispatching split out — MERGE after fix round + confirmation.
- #326 status delivery rounds (existing-app mode) — MERGE after fix round + confirmation.
- #312 lint batch 4: SEC014, toolkit CONV009 — MERGE after review + 2 fix rounds + confirmation; field run on mxcli 0.26.
- #324 exec.sh change classes, shared stale-lock takeover, SEC014 note echo — MERGE (joint review); follow-up owed for a takeover race after a mid-takeover crash.
- #322 MxTest after-startup guard, mxcli-run pid check — MERGE (joint review).
- #314 doctor property-set exit code; sync announces its bound — MERGE (joint review).
- #330 review follow-ups (exit 4/5 docs, pipefail, NUL strip) — MERGE-AFTER-FIX, fixes applied; takeover re-check dropped.

Field runs are still owed for most instruments in this batch (stated in each PR).

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

Copy link
Copy Markdown
Owner Author

Landed on master as part of the integration squash #329 (commit 31e90ae), after independent review — its Review: line is in that commit message. Closing as superseded.


Generated by Claude Code

@MendixMau MendixMau closed this Oct 14, 2026
@MendixMau
MendixMau deleted the fix/followup-290-292 branch October 15, 2026 10:46
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