feat: build step 4 — /mediation/, /arbitration/, /med-arb/; source ADRIC's rules
Build and deploy / build-and-deploy (push) Failing after 4s

Three pages, five in the build, zero JavaScript. /arbitration/ carries §4's
paired-disclosure condition on four surfaces and Q39's struck universal appears
in no form. /med-arb/ meets the procedural-fairness objection at the level of
process design and ships deliberately without Pouya's own protocol commitments,
which are Q54.

docs/01 directed the mediation page to name the "ADRIC Model Mediation Rules".
No such document exists — 0 occurrences across all four of ADRIC's rules pages
against 10 for "National Mediation Rules"; "Model" belongs to the Model Dispute
Resolution Clause inside the rules. Caught only because R14 requires the source
before the claim. docs/reference/adric-rules.md + adric-extract/ carry it, with
the digest drift measured rather than assumed: the HTML changes per request, the
text extracts are byte-stable, so the extracts are the artefact.

Four review passes, 21 defects, and the pattern was mine: I wrote the Q54 gate
into the page and then breached it four times, then round 2 found two survivors
of round 1's own fixes and one defect round 1's fix created. Also removed a
<title> naming a practised role §4 does not grant, a habitual presupposing awards
issued, and a claim about what ADRIC's rules permit that my own reference doc
says is unsupported.

Two instrument failures caught before they became conclusions: touch targets
measured over file:// with no CSS loaded (uniform 18px, including on a .btn with
a 44px floor), and a schema.org validator call that parsed nothing and returned
0 warnings for everything. Both re-run with the instrument validated first.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0148NztQskLKKApP5SzAA78e
This commit is contained in:
Pouya Lajevardi
2026-08-28 17:06:27 -04:00
co-authored by Claude Opus 5
parent 2282183b4b
commit f3138a0a79
18 changed files with 2496 additions and 18 deletions
+30 -3
View File
@@ -245,6 +245,28 @@ Not a polish pass. A build requirement.
| `/about/` as first built | 38 px | 68 px | 108 px |
| `.designation-part` `white-space: nowrap` removed (the separator is held by an NBSP instead) and `overflow-wrap: anywhere` on `.hero-h` | **0 px** | **23 px** | **63 px** |
**Step 4's three pages added 2026-08-28**, and they needed no fix of their own
— the guards this table produced were applied while writing them rather than
after measuring:
| Page | 390 px | 360 px | 320 px |
|---|---|---|---|
| `/mediation/` | 3 px | 23 px | 63 px |
| `/arbitration/` | 3 px | 23 px | 63 px |
| `/med-arb/` | **0 px** | 23 px | 63 px |
At the **default** root size all three are **0 px at every width measured**.
The element-level sweep at 320/root-32, predicate `right > clientWidth`,
names **three** `PracticeCard` chips on `/mediation/` — Construction,
Technology, Shareholder — plus the header and footer brand elements, which
appear on all five pages. *(This read "six" for one pass. Six is the count of
`article.card` with `scrollWidth > clientWidth`, a different predicate on a
different element; `adversarial-reviewer` re-ran it and no predicate yields
six chips. A number in this table has to be re-runnable, which is the whole
reason the table exists.)* All three are byte-identical to `/`'s — same
widths, same offsets, same text — so step 4 introduced no new element-level
overflow.
Two findings from that page specifically. The `nowrap` was **introduced as a
fix** for an orphaned `·` at the end of a wrapped line, and it made the whole
designation item unbreakable — a fix that created a reflow regression, caught
@@ -262,9 +284,14 @@ Not a polish pass. A build requirement.
Two things worth keeping. **`overflow-wrap: break-word` permits a break at
layout time but does not reduce min-content size** — `anywhere` does, and that
distinction was the whole of one of those fixes. And 1280 px stays **602 px**
over, from the header's deliberate `flex-wrap: nowrap` above 66 rem plus
`white-space: nowrap` on the brand name; the 320 px residual is the same header
distinction was the whole of one of those fixes. And 1280 px stays over, from the header's
deliberate `flex-wrap: nowrap` above 66 rem plus `white-space: nowrap` on the
brand name — **602 px on `/` and 944 px on every other page**, because
`SiteHeader` gates the tagline on `!isHome`, so the masthead is wider
everywhere except home. *(This read a flat "602 px" until 2026-08-28. That
figure was measured on `/` and generalised; `/about/` was already 944 when it
was added to this table, and step 4's three pages are 944 too. Found by
`adversarial-reviewer`.)* The 320 px residual is the same header
plus the display headline's 104 px floor. Undoing either re-opens the measured
step-1 header decision, so they stand. All of this is beyond what this floor
requires — page zoom is clean — so it is a robustness margin rather than a