feat: Q.Arb is held; strike C.Med-Arb entirely; dissolve the paired disclosure
Build and deploy / build-and-deploy (push) Failing after 4s

Pouya's ruling, 2026-08-29. Treated as D3-class and swept accordingly.

§4
  Q.Arb becomes a HELD designation. Obtained July 2026 — recorded in the
  register, deliberately not published. Public copy carries "Q.Arb (ADRIC /
  ADRIO)" beside Q.Med and nothing more. Every stage form is struck:
  "commenced", "in progress", "pathway", "not yet".

  C.Med-Arb as a stated goal is struck. This DEVIATES FROM THE STRATEGY BRIEF,
  which made it "the explicit long-term professional narrative"; the brief is
  not in this repository, so the deviation is recorded in four places so nobody
  reinstates it from a document no reader can open. The designation stays in
  §11 as a definition — what is struck is its status as a goal of his.

  The paired-disclosure condition dissolves. It existed only because Q.Arb was
  in progress; there is no stage left to disclose, and a condition with no
  subject cannot be half-kept.

Pages
  /about/'s credentialing arc is DELETED, not rewritten — two held designations
  are not a journey. /arbitration/ loses its stage section and its "Available
  now, and open about the stage" h1. /med-arb/'s endpoint section is rewritten.
  Deleting CREDENTIALS.goal/goalName rather than emptying them turned every
  consumer into a build error, which is how the last two surfaced.

  hasCredential now maps CREDENTIALS.designations instead of indexing [0];
  _DesignationRowParity pins the visible credential row to the same constant.

check:claims
  q-arb-as-a-stage (inverted from the predecessor, which barred Q.Arb reading
  as HELD) and c-med-arb-struck. Each page is now scanned twice — as published,
  and with inline tags collapsed — because [^<] cannot cross <strong>, which
  this site sets in prose.

Two open questions for Pouya, neither blocking:
  Q55 — the acquisition date. §4 says obtained July 2026; the Change Log of
  2026-08-26 records "commenced August 2026", both stamped [verified — Pouya].
  They cannot both be true. Nothing published turns on it.
  Q56 — is the mediation offering scoped commercial? §4 leaves it unscoped;
  four surfaces say "commercial mediation"; /practice/insurance/ offers
  mediation in insured-versus-insurer SABS matters.

Two review rounds, all findings applied or declined with a stated reason.
Round 2 found ten lines in docs/03 still instructing the struck form — the
2026-08-29 sweep missed them because `git grep 'Q.Arb'` is line-anchored and
the block never names it. Sweep the vocabulary, not only the subject.

Gates, exit statuses read directly, never through a pipe:
  npm run check        exit=0  (0 errors, 0 warnings, 0 hints)
  npm run lint         exit=0
  npm run build        exit=0  (12 pages)
  npm run check:claims exit=0  (11 patterns, 26 approved strings)
  npm audit            exit=0

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-30 10:37:19 -04:00
co-authored by Claude Opus 5
parent 79b19a7bd0
commit 610edc24fd
20 changed files with 1063 additions and 606 deletions
+12 -8
View File
@@ -13,11 +13,10 @@
* slots come from src/data/site.ts, which mirrors §4; nothing is typed here.
*
* <dl> RATHER THAN A DIV GRID. Each pair is a term and its description, which
* is what a description list is. It also fixes the reading order: a screen
* reader gets "Q.Arb — Commenced August 2026" as one associated pair, which is
* §4's paired-disclosure condition surviving into assistive technology rather
* than being a visual arrangement only. Wrapping each dt/dd pair in a <div>
* inside <dl> is valid HTML and is what makes the grid tractable.
* is what a description list is, and it fixes the reading order: a screen
* reader gets "Q.Arb — ADRIC / ADRIO" as one associated pair rather than four
* values then four labels. Wrapping each dt/dd pair in a <div> inside <dl> is
* valid HTML and is what makes the grid tractable.
*/
interface Props {
slots: ReadonlyArray<{ value: string; label: string }>;
@@ -45,9 +44,14 @@ const { slots } = Astro.props;
This read `repeat(auto-fit, minmax(11rem, 1fr))` under a comment saying
"two up on a phone, four up where there is room". `adversarial-reviewer`
measured it: at 390px the resolved template was a SINGLE 342px track and
all four items stacked, running the band ~430px tall — with
`Q.Arb / Commenced August 2026`, which §4's paired-disclosure condition
puts on this page, at the bottom of it. The arithmetic is not subtle: two
all four items stacked, running the band ~430px tall. The longest label in
the row is and remains `Legal training and engineering practice` (Q37, 39
chars — see below), which is what drives the track; the fourth slot's
label went from `Commenced August 2026` (21) to `ADRIC / ADRIO
designation` (25), so it got slightly LONGER and is still well inside
that 39. *(A previous version of this comment said "shorter". It was not
measured; `claims-auditor` counted the characters.)* The arithmetic is not
subtle: two
tracks at an 11rem (176px) floor plus a 24px gap need 376px and the
container is 342px, so `auto-fit` correctly dropped to one. A
measured-sounding comment that was false is this project's own named
+5 -17
View File
@@ -81,23 +81,11 @@ void _props;
line-height: 1.4;
text-transform: uppercase;
color: var(--pill-fg, var(--text-meta));
/* `nowrap` UNTIL 2026-08-28, AND IT WAS FINE UNTIL A PILL HAD FOUR WORDS.
`/`'s six pills are one or two words (longest "Cross-cultural").
`/about/` ships `Commenced August 2026`, and at a 200% DEFAULT FONT SIZE
(root 32px — a real browser setting, not page zoom) that pill measured
382.6px wide with its right edge at 430.6 in a 390px viewport:
**41px of document overflow at 390, 111px at 320.** Injecting
`white-space: normal` took 390 to **0** and 320 to **63**, 63 being the
header residual docs/02 already accepts. WCAG 1.4.10 Reflow.
`normal` costs nothing at default size — a pill only wraps when it cannot
fit, which is exactly when wrapping is the right answer.
WHAT IT LOOKS LIKE AT THE EXTREME, recorded so it is not later read as a
new bug: at 320px with root at 32px, `Commenced August 2026` renders
**224 x 119px** inside `border-radius: 999px` — a three-line stadium. It
is ungainly and it is legible, in-viewport, and the alternative was
111px of document overflow. */
/* NEVER `nowrap`. `Pill` takes arbitrary children, and a four-word pill at a
200% default font size (root 32px) overflowed the document by 111px at
320px — WCAG 1.4.10 Reflow. Measured 2026-08-28; no pill on the site is
that long today, which is exactly why this is easy to delete and must not
be. `normal` costs nothing at default size. */
white-space: normal;
}
</style>
+5 -13
View File
@@ -33,8 +33,7 @@ const year = new Date().getFullYear();
// sitemap and lists /med-arb/ as deliberately out of the primary nav, "linked
// contextually" — so dropping it here left the page with no site-wide link at
// all, on a project whose entire premise is crawlability. (2) The label names a
// PAGE, and docs/01 frames that page around the C.Med-Arb arc rather than as a
// present offering, so listing it is not the §4 inference it looked like.
// PAGE, not an offering, so listing it is not the §4 inference it looked like.
// (3) It settled half of Q35 unilaterally while the other half — Energy and
// Shareholder — stayed in both nav and footer, and the record claimed no
// unilateral action had been taken. Both halves of Q35 go to Pouya together.
@@ -60,19 +59,12 @@ const aboutLinks = [
<span class="footer-brand-name">{SITE.name}</span>
</a>
{
/* The designation strip carries the credentialing STAGE, not just the
held designation, and that is a §4 Offerings condition rather than a
flourish. The masthead names arbitration on every page except `/`,
where SiteHeader suppresses the tagline by design. §4 permits the
arbitration half on the condition that the site "makes the first while
stating the second plainly", and "neither half may be dropped".
Before this line rendered
CREDENTIALS.inProgress, that condition was unmet on every page that
ships — the constant existed in site.ts and was rendered nowhere.
Q.Arb reads as commenced, never as held (§4). */
/* HELD DESIGNATIONS ONLY. §4's paired-disclosure condition made this
strip carry a credentialing stage too; that dissolved on 2026-08-29
when Q.Arb became held. */
}
<p class="footer-designation">
{[...CREDENTIALS.designations, ...CREDENTIALS.inProgress].join(' · ')}
{CREDENTIALS.designations.join(' · ')}
</p>
</div>
+5 -5
View File
@@ -47,9 +47,8 @@ const inSection = (href: string) => path === href || path.startsWith(href);
* is the placement Q33-orig objected to in the first place: a line under his
* name with nothing to qualify it, reading as a designation strip.
*
* This only ever REMOVES a claim from one page, so no §4 disclosure condition
* is touched — the footer's designation strip carries `Q.Arb — commenced
* August 2026` on every page including this one.
* This only ever REMOVES a claim from one page. The footer's designation strip
* carries the held designations on every page including this one.
*/
const isHome = path === '/';
---
@@ -156,8 +155,9 @@ const isHome = path === '/';
/* The tagline is BACK, and the reasoning is worth keeping rather than just
the outcome. It was removed on 2026-08-26 because `Arbitration` under
Pouya's name read as a held capability, and §4 records Q.Arb as merely
commenced. Q33 answered that the same day, and the premise was wrong:
Pouya's name read as a held capability, and §4 then recorded Q.Arb as
merely commenced. Q33 answered that the same day, and the premise was
wrong twice over — §4 now records Q.Arb as HELD, and even before it did:
ADR designations are voluntary credentials, not licences, and COMMERCIAL
arbitral appointment in Ontario is not gated behind a designation — so the
constraint was always positional, never legal, and Pouya accepts sole,