feat: build steps 7a-10 — the site is complete and reviewable at 22 pages

Steps 7a through 10 as one authorised run. Nothing deployed (D11).

7a  Lighthouse returns as `lighthouse@13.4.1` + `chrome-launcher`, NOT
    `@lhci/cli`. AGENTS.md §7's advisory attribution was wrong: the carriers
    were @lhci/cli's own `tmp` and @puppeteer/browsers' `extract-zip`, not
    Lighthouse, which audits clean. A deliberate deviation from R11's literal
    trigger, recorded with what it costs. Local gate; CI has no Chrome.

7b  OG card generator (satori + sharp) discharges R15 — 20 typed cards plus
    per-article cards; the portrait stays on / and /about/ by Q40. Insights
    plumbing: ArticleCard, Prose, the index, the article route, articleGraph,
    and /'s section 7. Card copy is constrained structurally because text in a
    JPEG cannot be grepped by check:claims: every headline IS its page's <h1>,
    enforced by `npm run og:proof`.

7c  Five drafted launch articles, draft: true / reviewedByPouya: false. An
    independent compliance audit returned 76 findings and 57 unsourced
    assertions; all blocking and should-fix applied.

8   /contact/, the intake form, and backend/intake/ (undeployed). Plain HTML
    POST to a same-origin /api/intake with a 303 redirect, so the form works
    with zero JavaScript. docs/05 records three deliberate deviations.

9   /fees/ on Q59's ruling — overtime runs from the session cap, and the
    reservation point ships adjacent to the rate. One-page PDF bio discharges
    R16; /bio/ is its source, so the circulated artefact stays inside the
    review apparatus.

10  /legal/privacy/ and /legal/terms/, written to the backend as built. Three
    of the policy's statements are derived and cannot drift.

Also: /about/'s inverse credentials band (approved at step 6); Q59 closed;
R15 and R16 discharged; and a fix to shipped copy — /practice/energy/ asserted
the absence of a regulation the source extract says must not be asserted.

Review: adversarial-reviewer, two rounds (D20/D19). Round 1 returned 16
findings including two blocking — an invisible ghost button on /fees/ at
1.00:1 that Lighthouse scored 100, and a privacy policy that named one data
processor when there are two. All 16 acted on.

Lighthouse, 22 pages, mobile: performance 99-100, accessibility 100,
best practices 100, SEO 100 on every indexable page, CLS 0.000.

AGENTS.md entry (ah) has the detail, including four of my own verification
commands that were wrong and what each of them nearly caused.

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 10:56:54 -04:00
co-authored by Claude Opus 5
parent 6cfe69033f
commit 210bc25a26
53 changed files with 8589 additions and 177 deletions
+43 -10
View File
@@ -141,13 +141,37 @@ sells an uncapped one. See §All parameters confirmed below.
`src/data/site.ts` means the **session** and is corrected 3.5 → 3 and 7 → 6, and
**`/fees/` is unblocked for build step 9** on the question Q58 asked.
⚠️ **BUT WHERE OVERTIME BEGINS IS STILL NOT STATED, AND IT IS NOT SAFE TO INFER
— §9 Q59, OPEN.** A first pass at this paragraph asserted that *"the overtime
rate begins after 3 h and 6 h of session respectively"*. **That is a derived fee
term, not part of the ruling**, and `adversarial-reviewer` was right to strike
it: this file is the authority on money and `/fees/` is now cleared to publish
from it. Nothing in the card, in Q58's ruling, or in Q15Q17's answer says when
the hourly rate starts.
**WHERE OVERTIME BEGINS — RULED. Q59, Pouya, 2026-08-31. IT RUNS FROM THE
SESSION CAP**: the fourth hour of a half day, the seventh of a full day. Not the
billed envelope. The two candidates were the session cap (3 h / 6 h) and the
envelope (5 h / 9 h), and this file could not choose between them — a fee term is
a fact we do not have, not an inference. A first pass at this paragraph asserted
the session cap as applied fact and `adversarial-reviewer` struck it in the same
change set that wrote it; the strike was right, and the ruling has now supplied
the value the strike was waiting for.
⚠️ **AND THE RULING'S SECOND HALF IS THE PART THAT MATTERS MOST, BECAUSE IT
ANSWERS THE ARITHMETIC ANOMALY BELOW RATHER THAN RESTATING IT.** His words:
> "a full day reserves the day; half-day overtime is subject to availability"
**The full-day fee buys the DAY, not six hours of it.** That is what a reader
doing the arithmetic in the table below is missing: `2000 + 500 × 3 = 3500`
against `4000` looks like a $500 penalty for booking properly, and it is not —
the two are different products. Half-day overtime depends on the time after the
session still being free, and on a booked day it is not.
**So the reservation sentence is published ADJACENT TO THE OVERTIME ROW on
`/fees/`, not in a footnote**, and it is rendered from
`FEES.mediation.reservation` rather than retyped. Structurally the same rule as
`PROCESS_FRAMING` beside the five timings under Q43: a reader who takes the
number and skips the framing has read a different offer.
⚠️ **THE ANOMALY IS NOT CLOSED BY THIS.** The gap is still in D14's own figures —
the half-to-full step is $2,000 and three hours of overtime is $1,500 — and the
reservation point explains what the gap buys without removing it. It stays on
**§12 R5**'s 12-month review, and §Recorded dissent below carries the table for
that review to test against.
**And the reason it cannot be quietly chosen is that the choice is visible in the
arithmetic.** Take the trigger as the session cap. The half-day route costs
@@ -182,9 +206,18 @@ not uniformly better either** — the gap stays at $2,000 through five hours and
$1,500 at six, worse than the session-cap trigger there, but it closes to **zero**
from nine hours on, where the session-cap trigger holds a permanent $500. So the
two triggers trade one band against another and neither removes the anomaly. **It
is not a defect this file can fix by picking a trigger, which is why the trigger
goes to Pouya and the step goes to R5** — see §Recorded dissent below, where it is
written out for the 12-month review rather than left in this footnote.
was never a defect this file could fix by picking a trigger** — which is why the
trigger went to Pouya and the step went to R5.
**Both halves came back. He ruled the session cap AND supplied the reservation
point**, which is the answer the arithmetic alone cannot give: the table compares
prices for two things that are not the same product. Read the table as a price
comparison and the full-day rate looks strictly worse; read it knowing a full day
reserves the day and half-day overtime is subject to availability, and the
$2,000-to-$500 spread is the price of certainty rather than a mistake. The
anomaly stays on R5 because the *size* of that spread is still a judgement about
D14's figures, and it is largest at three to five hours — the band a half-day
booking actually overruns into.
### Arbitration