feat: rule Q58 and close Q57; §4 lists all six areas; docs/03's checklist cites §4 instead of restating it
Build and deploy / build-and-deploy (push) Failing after 4s

Four rulings from Pouya, plus what implementing them turned up.

Q58 — RULED, and he attributed the ambiguity to his own document: "3.5 was meant
as the TOTAL time committed, of which 2 is preparation — leaving 1.5 hours in the
room. Your arithmetic caught it: if prep sat inside, 3.5 and 7 wouldn't be
exactly 2x, because preparation doesn't scale with session length." The card now
reads: half day up to 3 hours of session, fee includes up to 2 hours of
preparation, $2,000; full day up to 6 hours, up to 3 hours of preparation,
$4,000. docs/07's own research table corroborates 3 and 6 — Patey and Zuber both
publish those hours, and ADR Chambers' roster rate counts preparation separately
from "up to three hours of mediation". One provenance note under R14: he recalled
"all or part of 3 hours" as their wording; the committed extract carries the
hours but not the phrase, so docs/07 cites the hours and attributes the phrase to
nobody.

Two things fell out of the ruling that the instruction did not name, and both
were defects. docs/07 §All parameters confirmed was itself prescribing the flat
"including 2 hours of preparation" — the sentence /for-parties/ was built
against, so the spec was generating the defect. And the cap had to reach the
copy: "including up to 2 hours". FEES.mediation.*.hours is corrected 3.5 -> 3 and
7 -> 6; it had no consumer in src/ while the question was open, which is the only
reason no page was ever wrong. /fees/ is unblocked for step 9 on the question Q58
asked.

Q57 — CLOSED with no seventh undertaking. "A reader assumes the outcome, and the
obvious undertaking adds nothing a reader doesn't already infer." The TODO(pouya)
is replaced by the ruling where the question was; src/ now carries zero live
TODO(pouya) markers.

§4's mediation row lists all six published areas. Q56's ruling had named five,
which was four areas plus the word "commercial" — a scope descriptor, not a
seventh area. The hedge is struck on his instruction; the clause saying the six
are not the authorised subject-matter list is restored, because his ruling
supplied a correct value and did not close Q35(c)'s class. Split-stamped.

docs/03's compliance checklist now names what to look for on a page and which §4
row decides it, never the bar's own wording. 12 items before, 12 after — a
structural fix, not a coverage change.

Thirteen review findings across two rounds, all applied, none declined. Three
were mine to own. The capped-form rule was written and then applied to one
surface: /mediation/ shipped an uncapped form in words no barred-string grep
could reach, site.ts quoted a docs/07 sentence Q58 had just deleted, and §9's
Q15/Q16/Q17 row prescribed the flat form — which is what a later implementer
building /fees/ reads. A derived fee term was asserted as applied fact in the
document that is the authority on money: "overtime begins after 3 h and 6 h" is
in no ruling. Struck, and opened as Q59.

And round 2 caught the arithmetic in round 1's own fix. The full-day route is
flat $4,000 until hour 6, so generalising it as 500n+1000 for all n>=3 was valid
only from 6 h, and "cheaper by $500 at every length" was wrong across the whole
3-6 h band. The real spread is $2,000 at three hours narrowing to $500 from six
on — up to four times larger, and largest exactly where a half-day booking
overruns. Written into docs/07 §Recorded dissent and §12's R5 row, which is where
the 12-month fee review will read it. Round 1's fix for the missing consequence
also published the overtime rate on a page that now states an unambiguous cap,
defining the trigger by adjacency with no other quantity for it to attach to; the
rate came off the page.

R11 at the step 6 -> 7 boundary: 13 of 14 pins current. §7's TypeScript hold
named one gate and there are two — typescript-eslint requires <6.1.0, tighter
than @astrojs/check, so the recorded removal trigger was unreachable. Both are
now named.

Verified: check 0 errors, lint 0, build 0 (14 pages), check:claims 0, npm audit
0, minifier tripwire clean, zero JS shipped, all copy present with JavaScript
disabled. Lighthouse not run — tool unavailable until 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 08:17:59 -04:00
co-authored by Claude Opus 5
parent 13b97841b9
commit 6cfe69033f
9 changed files with 594 additions and 132 deletions
+17 -20
View File
@@ -28,25 +28,22 @@
* page genuinely is Q&A" — so a question cannot reach the structured data
* without appearing on the page, and the two cannot drift.
*
* ⚠️ THE FEE FIGURES ARE INTERPOLATED FROM `FEES`, NOT TYPED. D14's card is one
* source; a second hand-typed copy on the page a party reads is the copy that
* goes stale, and it goes stale silently.
* ⚠️ EVERY FEE FIGURE AND EVERY DURATION IS INTERPOLATED FROM `FEES`, NEVER
* TYPED — a second hand-typed copy on the page a party reads is the one that
* goes stale, silently. The two allowances are different things: `hours` is the
* session, `prepIncluded` is preparation, and `docs/07` requires each published
* as a cap with its own noun. **The unit here is "hours of mediation", not
* "of session"** — `docs/01` bars jargon on this page and this page defines its
* other term of art; the plainer noun is ADR Chambers' own, quoted in `docs/07`.
*
* ⚠️ AND THE BUNDLED PREPARATION IS STATED IN HOURS, NEVER AS "PREPARATION
* INCLUDED". `docs/07` §All parameters confirmed is explicit: *"Preparation time
* is bundled and MUST be stated on the page — 'including 2 hours of
* preparation'… Do not quietly fold it into the hours figure."* The allowance is
* CAPPED, so the unqualified form sells an uncapped one. This page shipped
* "with preparation included" for one pass; `adversarial-reviewer` found it, and
* `prepIncluded` had been declared in `site.ts` with no consumer anywhere.
*
* ⚠️ AND THIS PAGE DOES NOT STATE HOW LONG A MEDIATION DAY IS — see §9 Q58.
* `docs/07`'s card reads *"Half day — up to 3.5 h, INCLUDING 2 h preparation"*,
* which makes 3.5 the billed envelope and the room time 1.5 h. `FEES.mediation
* .halfDay.hours` documents neither reading. A draft answered "what happens on
* the day" with "about 3.5 hours", which is the envelope presented as the day,
* to the reader least able to check it. Do not restore a duration here until
* Q58 is answered.
* ⚠️ AND NO OVERTIME FIGURE ON THIS PAGE UNTIL §9 Q59 IS ANSWERED. The rate is
* publishable (D14, `docs/07` — **not** §4, which has no row reaching the rate
* card). **The point at which overtime STARTS is not settled**, and $500 an hour
* printed two answers below an unambiguous "up to 3 hours" defines it by
* adjacency: there is no other quantity on the page for it to attach to. Under
* the envelope reading a fourth hour carries nothing, so the inference
* over-states a party's own exposure — and it also travels alone into the
* `FAQPage` node. So the charge is named without its rate or its trigger.
*/
import BaseLayout from '../layouts/BaseLayout.astro';
import Button from '../components/Button.astro';
@@ -88,7 +85,7 @@ const FAQ = [
},
{
q: 'What happens on the day?',
a: 'I usually start with everyone in one room. After that the parties often sit separately and I move between them. Some matters run that way from the beginning, with the parties never in the same room. You book either a half day or a full day, and which one you need is settled before the date is fixed.',
a: `I usually start with everyone in one room. After that the parties often sit separately and I move between them. Some matters run that way from the beginning, with the parties never in the same room. You book either a half day or a full day. A half day is up to ${FEES.mediation.halfDay.hours} hours of mediation, a full day up to ${FEES.mediation.fullDay.hours} hours. Which one you need is settled before the date is fixed.`,
},
{
q: 'Does what I say stay private?',
@@ -100,7 +97,7 @@ const FAQ = [
},
{
q: 'What does it cost, and who pays?',
a: `${money(FEES.mediation.halfDay.amount)} for a half day, including ${FEES.mediation.halfDay.prepIncluded} hours of preparation, and ${money(FEES.mediation.fullDay.amount)} for a full day, including ${FEES.mediation.fullDay.prepIncluded} hours. ${FEES.taxNote} ${FEES.terms[0]}`,
a: `${money(FEES.mediation.halfDay.amount)} for a half day, including up to ${FEES.mediation.halfDay.prepIncluded} hours of preparation, and ${money(FEES.mediation.fullDay.amount)} for a full day, including up to ${FEES.mediation.fullDay.prepIncluded} hours of preparation. Each party beyond two is ${money(FEES.mediation.additionalParty)}, and if a mediation runs beyond the time the fee covers there is an hourly charge as well. ${FEES.taxNote} ${FEES.terms[0]}`,
},
{
q: 'What if we do not settle?',