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 -18
View File
@@ -481,20 +481,19 @@ export const FEES = {
currency: 'CAD',
taxNote: 'All fees are plus HST.',
mediation: {
/** Prep is bundled AND stated IN HOURS on the page — [verified 2026-08-26].
* `docs/07`: *"'including 2 hours of preparation'… Do not quietly fold it
* into the hours figure."* The allowance is CAPPED, so the unqualified
* "preparation included" sells an uncapped one. `/for-parties/` shipped
* that form for one pass and `prepIncluded` had no consumer anywhere.
/**
* TWO SEPARATE ALLOWANCES, AND BOTH PUBLISH AS A CAP — Q58, 2026-08-31.
* `hours` is the **session**; `prepIncluded` is preparation, bundled but
* capped. `docs/07` requires each published as a cap and with its noun:
* *"up to 3 hours of session"*, *"including up to 2 hours of preparation"*.
* A flat "including 2 hours" sells an entitlement and a bare "preparation
* included" sells an uncapped allowance.
*
* ⚠️ `hours` IS NOT DOCUMENTED AS THE LENGTH OF THE DAY — §9 Q58, OPEN.
* `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. Against that: 3.5 and 7 are exactly 2×, which they would not be
* if prep sat inside them. One of the two is wrong. **Do not publish this
* number as a duration until Q58 is answered.** */
halfDay: { amount: 2000, hours: 3.5, prepIncluded: 2 },
fullDay: { amount: 4000, hours: 7, prepIncluded: 3 },
* ⚠️ WHERE OVERTIME STARTS IS NOT SETTLED — §9 Q59, OPEN. `overtimePerHour`
* may be published; the trigger may not.
*/
halfDay: { amount: 2000, hours: 3, prepIncluded: 2 },
fullDay: { amount: 4000, hours: 6, prepIncluded: 3 },
additionalParty: 500, // each party beyond two
overtimePerHour: 500, // [verified 2026-08-26]
},
@@ -763,11 +762,11 @@ export type _DesignationRowParity = _AssertTrue<
* "Binding conclusion" alone would read as though a mediation binds, which it
* does not until the parties sign.
*
* NO FEE CLAIM IN ANY BODY. `docs/07` bundles a CAPPED preparation allowance
* (2 h in the half day, 3 h in the full day) and says in terms that it "must be
* stated on the page... Do not quietly fold it into the hours figure." A
* five-word strip cannot state it properly, and stating it improperly
* misdescribes money. `/fees/` at step 9.
* NO FEE CLAIM IN ANY BODY. `docs/07` §All parameters confirmed requires the
* bundled preparation allowance published **in hours and as a cap**, and a
* five-word strip cannot do that. Stating it improperly misdescribes money.
* `/fees/` at step 9. (Cited, not quoted — the quotation that stood here went
* stale when Q58 corrected the section it came from.)
*/
export const PROCESS = [
{