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
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:
co-authored by
Claude Opus 5
parent
13b97841b9
commit
6cfe69033f
+17
-18
@@ -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 = [
|
||||
{
|
||||
|
||||
+17
-20
@@ -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?',
|
||||
|
||||
+7
-14
@@ -438,20 +438,13 @@ const graph = homeGraph(new URL(ldImage.src, Astro.site).href);
|
||||
<a href="/mediation/">Mediation</a>
|
||||
</h3>
|
||||
{
|
||||
/* THE FEE CLAIM IS GONE, and it was wrong on two counts —
|
||||
`claims-auditor`, 2026-08-27, checked against `docs/07-fees.md`.
|
||||
"at one published rate" reads as ONE PRICE for half and full day;
|
||||
D14's card sets TWO ($2,000 half, $4,000 full). And "preparation
|
||||
time included" was unqualified where `docs/07` bundles a CAPPED
|
||||
allowance and says in terms: *"must be stated on the page —
|
||||
'including 2 hours of preparation' ... Do not quietly fold it into
|
||||
the hours figure. At these rates, saying preparation is included
|
||||
is the selling point, not a footnote."*
|
||||
|
||||
A home card is the wrong place to state it properly, and stating
|
||||
it improperly misdescribes money. `/mediation/` (step 4) and
|
||||
`/fees/` (step 9) carry the card. "Published" was also
|
||||
forward-looking: `/fees/` does not exist yet. */
|
||||
/* NO FEE CLAIM ON THIS CARD — a constraint, not an omission.
|
||||
There are two ways to get it wrong in one line and both have
|
||||
shipped once: "at one published rate" reads as ONE price where
|
||||
D14's card sets two, and an unqualified "preparation included"
|
||||
sells an uncapped allowance where `docs/07` caps it at stated
|
||||
hours. A card this size cannot state either properly.
|
||||
`/mediation/` and `/fees/` carry the card. */
|
||||
}
|
||||
<p class="feature-body">
|
||||
Sole mediator, Q.Med through ADRIC and ADRIO, with multiple
|
||||
|
||||
@@ -21,6 +21,7 @@ import { serviceGraph } from '../data/schema';
|
||||
import {
|
||||
CONDUCT_UNDERTAKINGS,
|
||||
CREDENTIAL_ROW,
|
||||
FEES,
|
||||
NEUTRAL_ROLE_LINE,
|
||||
PRACTICE_AREAS,
|
||||
} from '../data/site';
|
||||
@@ -272,9 +273,12 @@ const FORMATS = [
|
||||
</div>
|
||||
<div class="prose">
|
||||
<p>
|
||||
Half day and full day, with the preparation time bundled into each one
|
||||
stated rather than folded into the hours. Additional parties, overtime
|
||||
and the cancellation schedule are on the same page.
|
||||
Half day and full day, including up to {
|
||||
FEES.mediation.halfDay.prepIncluded
|
||||
} hours of preparation in a half day and up to {
|
||||
FEES.mediation.fullDay.prepIncluded
|
||||
} in a full day. Additional parties, overtime and the cancellation schedule
|
||||
are on the rate card.
|
||||
</p>
|
||||
</div>
|
||||
<div class="cta">
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
* ⚠️ AND NOTHING ON THIS PAGE MAY ADD A SEVENTH. §4's gate: an undertaking is
|
||||
* publishable only where Pouya has made it **in terms** — not "would obviously
|
||||
* agree to", not "follows from the process". That is why §Conflicts says when
|
||||
* the check happens and what it needs, and then stops. See the TODO below.
|
||||
* the check happens and what it needs, and then stops — Q57, closed 2026-08-31.
|
||||
*/
|
||||
import BaseLayout from '../layouts/BaseLayout.astro';
|
||||
import Button from '../components/Button.astro';
|
||||
@@ -94,10 +94,10 @@ const graph = pageGraph(new URL(ldImage.src, Astro.site).href);
|
||||
|
||||
{/* ---- 3. Conflicts --------------------------------------------------- */}
|
||||
{
|
||||
/* TODO(pouya): what happens when a conflicts check turns something up? Any
|
||||
sentence naming the outcome is a SEVENTH conduct undertaking, and §4's
|
||||
gate requires that you have made it in terms — so it is not written here.
|
||||
AGENTS.md §9 Q57. */
|
||||
/* THE SECTION STOPS AT WHAT THE CHECK NEEDS, AND THE STOP IS THE ANSWER —
|
||||
Q57, closed 2026-08-31. A sentence naming the outcome would be a seventh
|
||||
conduct undertaking, which §4's gate does not permit this repository to
|
||||
infer. Do not add one. */
|
||||
}
|
||||
<section class="section reveal">
|
||||
<div class="wrap">
|
||||
|
||||
Reference in New Issue
Block a user