feat: D20 moves the claims pass to cutover; rule Q56 unscoped; close Q55; freeze check:claims

Four rulings from Pouya, 2026-08-30, and their sweep.

D20 — the review protocol. Per build step the review is `adversarial-reviewer`
alone. `claims-auditor` no longer runs per step; it runs ONCE, at cutover, over
the whole finished site, as a blocking item near the top of docs/06's checklist.
`check:claims` is unchanged and still runs on every build and both deploy paths.
The reasoning is recorded in full in AGENTS.md D20, as a calibration and not an
erosion: nothing has shipped, so every claims finding so far has been about a
page no visitor can reach, and one pass over twenty finished pages catches more
than nine passes over drafts because it sees the site as a reader does. The
/med-arb/ ADRIC gloss is the proof — no individual claim was false, the defect
was adjacency, and adjacency does not exist until the pages sit next to each
other. The code reviewer stays per step because what it catches compounds.
What this costs is recorded honestly beside it, not summarised away.

D17 and D19 amended to match. D19's two-round cap governs the per-step code
review only; the single cutover claims pass runs until its findings are
resolved, because there is no second pass behind it.

Q56 — mediation is NOT scoped commercial. Thirteen shipped strings corrected
across five files: page titles, meta descriptions, hero ledes, section ledes,
the `Service` node's name and description, and `ProfessionalService`'s. §4's
mediation row stays unscoped, and the reason now sits beside both rows so the
asymmetry reads as designed: arbitration is scoped commercial because of a
LEGAL GATE (Q39 — family arbitration in Ontario requires prescribed training);
mediation has no such gate. `adversarial-reviewer` then found three surfaces
the sweep had missed, the worst on /practice/ — "These describe the process the
parties are choosing between, in commercial matters" scoped mediation with the
two words never appearing in the same element, so no proximity grep reached it.

Q55 — CLOSED WITHOUT BEING RESOLVED, and the difference is the ruling. The
Q.Arb stamp is split: `[verified]` on the status, `[Pouya's stated basis]` on
the date. The 2026-08-26 record is marked UNRECONCILED, permanently and on
purpose. The date is not published and nothing depends on it.

check:claims — FROZEN. Round 2 found five defects in round 1's own fixes to
that script, two of which made it worse than before the pattern existed. A
pattern is added only after a real breach reaches dist/, never speculatively,
and each addition ships with a probe plus a negative fixture. No refactors, no
coverage improvements. It is a tripwire, not a program.

Two conventions into CLAUDE.md: sweep the VOCABULARY, not only the subject
(`git grep 'Q.Arb'` is line-anchored and could not find ten lines entirely
about Q.Arb that never name it); and agent definitions load at session start,
so an edit to .claude/agents/*.md does not reach the session that made it.

Verified: check 0 errors, lint 0, build 0 (12 pages), check:claims 0.
Lighthouse not run — tool unavailable until build step 7.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Md3GndFqWPzK78xAoebsg5
This commit is contained in:
Pouya Lajevardi
2026-08-31 07:33:06 -04:00
co-authored by Claude Opus 5
parent 610edc24fd
commit 2ea4c0f8ac
14 changed files with 520 additions and 125 deletions
+32
View File
@@ -92,6 +92,38 @@ detect padding instantly and discount everything after it.
scoped; found by `claims-auditor` on re-audit, one file over from the same
defect fixed in `docs/04` earlier the same day.
⚠️ **AND THE MEDIATION HALF IS THE OPPOSITE — Q56, ruled by Pouya 2026-08-30.
DO NOT MIRROR THIS SCOPE ONTO MEDIATION.** The scope above exists because of a
**legal gate**: family arbitration in Ontario requires prescribed training, so
"in commercial matters" is load-bearing there. **Mediation has no such gate,
§4's mediation row is unscoped on purpose.** Pouya's list of what he mediates
— *"commercial, construction, insurance/SABS, shareholder and cross-cultural
matters"* — is **illustrative of breadth, not a closed set**: the site
publishes **six** areas and every one of them offers mediation
(`src/data/practice-pages.ts`), technology and energy included. Do not read it
as the authorised subject-matter list; §4's Q35 gate governs that.
The site-wide *"Commercial Mediation"* framing was **under-describing the
offering**, and it was corrected rather than ratified as positioning. The
asymmetry between the two halves is designed; a later editor tidying them into
a matching pair would be reintroducing the defect.
⚠️ **AND DO NOT TREAT ANY LIST OF THE CORRECTED SURFACES AS COMPLETE.** Q56
named four. The sweep that implemented it changed **thirteen shipped strings
across five files**, and `adversarial-reviewer` then found **three more it had
missed** — the worst on `/practice/`, where *"These describe the process the
parties are choosing between, in commercial matters"* scoped mediation with
the two words never appearing in the same element, so no proximity grep could
reach it. The command, and its limit:
```
git grep -nEi 'commercial[^.]{0,60}mediat|mediat[^.]{0,60}commercial' -- src/
```
That finds the **adjacent** form only. For the split form there is no pattern —
read every occurrence of `commercial` in `src/` and in `dist/`, and ask what
each one is scoping.
⚠️ **TEN LINES WERE DELETED HERE ON 2026-08-30, AND THE DELETION IS THE
POINT.** They read *"'Pathway', never 'designation'"*, cited the **struck**
Forbidden row as live, instructed that *"the limit being named is the stage of