D19 into §3 and swept to all six destinations Pouya named: both agent briefs
(scope + severity filter), /build Phases 2–4 (non-gating questions, scope, stop
signal, two-round cap), /wrap, and CLAUDE.md (comments record decisions, not
history). Sweep verified by command, not recalled.
Rulings applied:
Q46(a) PUBLISHABLE — three §4 Offerings rows flipped; gate 1 records
[Pouya's stated basis], never [verified]. Step 5 unblocked.
Q48 closed, not site-relevant.
Q49 one §4 row, "Mediator"; read as declining Q49(b), so worksFor stays out.
Q50 DEVIATES — ships as name + slogan, not the concatenation. Flagged.
Q51 OBA sections stay; the regulator/voluntary distinction recorded.
Q52 docs/reference/deploy-credential-verification.md — 18 read-only AWS
calls, re-run rather than transcribed, access key ID redacted.
Q53 memberOf emitted on /about/'s Person node.
Two review rounds. The headline finding was this session's own: the Q53 sweep
was asserted and never run, leaving six in-scope records saying memberOf was
withheld — including §12 R10, which is read aloud every session. Round 2 then
found that round 1's simplification had put memberOf on / as well; the per-page
opt-in is restored, because Pouya's ruling turns on /about/'s visible HTML.
Also fixed: MEMBERSHIP_ORGS had orphaned BOUTIQUE's D16 JSDoc; /'s title now
derives from the constants; §7's deploy row stated and retracted three facts.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0148NztQskLKKApP5SzAA78e
6.8 KiB
description, argument-hint
| description | argument-hint |
|---|---|
| The standing execution loop for this repo — plan, implement, adversarial review, resolve, verify, record. Use for every substantive change. | <what to build, e.g. "the /med-arb/ page" or "step 4 of the build order"> |
ultrathink
Task: $ARGUMENTS
Execute the six-phase loop below. Do not skip a phase because the task looks small — the loop is the quality mechanism, not ceremony. If a phase genuinely does not apply, say which and why before moving on.
Phase 1 — Plan (think hard before writing anything)
- Read
AGENTS.mdin full if you have not this session. Read §12 Standing Reminders and surface anything live to Pouya before you start. - Read the specs in
docs/that bear on this task. - Restate the task in your own words, and name:
- which locked decisions (D1–D19) it touches
- which specs govern it
- which facts it needs from the §4 Verified register
- Stop and ask if you find a conflict — between the task and a locked decision, between two specs, or between the task and a fact you do not have. A blocked build is a correct build. Never resolve a conflict by guessing, and never soften a claim to make it defensible.
- State your plan before implementing.
Phase 2 — Implement
Follow CLAUDE.md conventions. Zero JavaScript by default. Tokens only, no raw
hex, no magic numbers. Semantic HTML. Every page gets its metadata.
Where you need a fact you do not have: TODO(pouya): <the exact question> in the
source and a new numbered question in AGENTS.md §9. Do not invent it.
But do not open a numbered question for something that gates nothing — D19.
The Q-series is past 50 and most recent additions gate nothing. If an observation
does not block a page, a deploy or a claim, it is a Change Log note, not a
numbered question — and retire the non-gating ones you find. A TODO(pouya) in
source is not this case: it blocks the page it sits on, so it still gets a
number.
Phase 3 — Adversarial review (this is not optional)
Invoke both review agents on the change, in parallel:
adversarial-reviewer— correctness, accessibility, crawlability, performance, security, simplicityclaims-auditor— every factual assertion traced toAGENTS.md§4
Give them the diff and the specs. Do not give them your reasoning for why the work is correct. Your rationale anchors the reviewer and produces agreement instead of review. They form their own view from the artefact; that independence is the whole point of the phase.
Scope — D19
Review is bounded. In scope: dist/, src/, the specs that direct copy
(docs/01, 03, 04, 07), and AGENTS.md §3, §4, §7, §9, §12. Out of
scope: the Change Log, the agents' own briefs, AGENTS.md prose outside those
sections, and the historical accuracy of code comments. Both briefs carry the
same boundary — do not widen it in the prompt.
The stop signal
If a round's findings are predominantly about the record rather than the output, stop the round and say so. That is the symptom of the loop feeding on itself, and noticing it is part of the job — not a licence to skip the phase. The shape to watch for, from the session that produced D19: a Change Log sweep that could not reproduce because writing it changed the file it counted.
If the change touches no user-facing copy, claims-auditor may be skipped — say
so explicitly.
Phase 4 — Resolve
For every finding: fix it, or decline it with a stated reason. Silence is not a response. A declined finding is recorded in the Change Log with the reasoning, so a later reader can see the judgement was made rather than missed.
If you fix anything material, re-run Phase 3 on the fix. A patch written under review pressure is exactly where the second defect lives.
This is not ceremony, and here is the measurement. On the Astro 5 → 7 upgrade (
AGENTS.mdentry (t), 2026-08-26) the second review pass returned six findings. Four of the six were defects in the first round's own fixes — including a date validator whose replacement silently rolled2026-02-30forward to2026-03-02, and a title rule whose fix rejected all five planned launch articles. None of the four existed before the review started. Skip the re-review and you ship the repair, not the bug.
Two rounds is the cap — D19
Round 1 reviews the change. Round 2 reviews the material fixes. There is no round 3: fix what round 2 finds, and ship.
The measurement above is why round 2 exists. The measurement below is why round 3 does not. On 2026-08-28 two rounds produced 48 findings, and most of round two's were defects in round one's own fixes — so each further round both finds and manufactures defects, and past two the manufacture rate exceeds the value of the marginal finding. Pouya's ruling. State this reasoning when you stop at two, so a later reader does not read the cap as laxness.
Phase 5 — Verify — run it, do not assert it
npm run check
npm run build
Then, as applicable to what changed:
-
Serve
dist/and confirm the page renders its full content with JavaScript disabled — the failure this whole project exists to fix -
curlthe built HTML and confirm real content, not a shell -
Lighthouse mobile ≥ 95 on all four categories— UNAVAILABLE.@lhci/cliwas removed on 2026-08-26 and is not re-added until build step 7 (AGENTS.mdR11, §7). Report it as not run, tool unavailable. Do not substitute a manual DevTools run and describe it as the same check -
Every internal link resolves
-
Metadata present: unique title, description, canonical, OG, JSON-LD
-
No scroll-driven animation was eaten by the minifier. This must return nothing:
grep -rE 'animation:[^;}]*(scroll\(\)|view\(\))' dist --include='*.css'A hit means an
animationshorthand was written besideanimation-timelineand Lightning CSS folded them into an invalid declaration, which the parser then discards. The effect works innpm run devand is dead in the build.
Never report a check as passing that you did not run. "Should pass" is not a result. If you could not run something, say which and why.
Phase 6 — Record
Append a AGENTS.md Change Log entry, newest first: what changed, old → new,
why, and any decision or plan — including declined findings and anything
deferred. Update Current Truth in place where the change made a section stale.
Re-stamp facts you re-checked with today's date.
If the entry claims a change was applied across files, cite the command and paste its output. Write that claim only after reading the output. Recall is not evidence — three entries on this project asserted a completed sweep and instances survived all three.
Then report to Pouya: what shipped, what the review found, what you declined and why, and what remains open.