feat: build step 4 — /mediation/, /arbitration/, /med-arb/; source ADRIC's rules
Build and deploy / build-and-deploy (push) Failing after 4s

Three pages, five in the build, zero JavaScript. /arbitration/ carries §4's
paired-disclosure condition on four surfaces and Q39's struck universal appears
in no form. /med-arb/ meets the procedural-fairness objection at the level of
process design and ships deliberately without Pouya's own protocol commitments,
which are Q54.

docs/01 directed the mediation page to name the "ADRIC Model Mediation Rules".
No such document exists — 0 occurrences across all four of ADRIC's rules pages
against 10 for "National Mediation Rules"; "Model" belongs to the Model Dispute
Resolution Clause inside the rules. Caught only because R14 requires the source
before the claim. docs/reference/adric-rules.md + adric-extract/ carry it, with
the digest drift measured rather than assumed: the HTML changes per request, the
text extracts are byte-stable, so the extracts are the artefact.

Four review passes, 21 defects, and the pattern was mine: I wrote the Q54 gate
into the page and then breached it four times, then round 2 found two survivors
of round 1's own fixes and one defect round 1's fix created. Also removed a
<title> naming a practised role §4 does not grant, a habitual presupposing awards
issued, and a claim about what ADRIC's rules permit that my own reference doc
says is unsupported.

Two instrument failures caught before they became conclusions: touch targets
measured over file:// with no CSS loaded (uniform 18px, including on a .btn with
a 44px floor), and a schema.org validator call that parsed nothing and returned
0 warnings for everything. Both re-run with the instrument validated first.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0148NztQskLKKApP5SzAA78e
This commit is contained in:
Pouya Lajevardi
2026-08-28 17:06:27 -04:00
co-authored by Claude Opus 5
parent 2282183b4b
commit f3138a0a79
18 changed files with 2496 additions and 18 deletions
+327
View File
@@ -0,0 +1,327 @@
---
/**
* `/arbitration/` — build step 4. Spec: docs/01 §`/arbitration/`, docs/03.
*
* ⚠️ THIS PAGE CARRIES §4's PAIRED-DISCLOSURE CONDITION, AND IT IS A CONDITION
* ON THE OFFERING ITSELF, NOT A DISCLAIMER BOLTED TO IT. Both halves ship or
* neither does:
*
* 1. All three forms are offered NOW — sole, party-appointed, co-arbitration
* — in commercial matters. §4 Offerings rows all three.
* 2. The Q.Arb PATHWAY commenced August 2026, with C.Med-Arb as the endpoint.
*
* "Pathway", never "designation": a designation that "commenced in August 2026"
* reads as held since then, which §4 Forbidden bars. Pouya's instruction is that
* being open about the stage is the differentiator — so it is stated plainly and
* high on the page, not hedged and not buried.
*
* ⚠️ AND NOTHING HERE MAY SAY OR IMPLY THAT ARBITRATION IS UNGATED IN ONTARIO.
* Q39's struck universal — "anyone may be appointed an arbitrator in Ontario;
* nothing in law gates the role behind a designation" — was FALSE as a
* universal, has been swept four times, and reached a public page once. The
* page states what is offered and where the credentialing stands. It makes no
* claim about what the law requires of anyone.
*/
import BaseLayout from '../layouts/BaseLayout.astro';
import Button from '../components/Button.astro';
import ContactBand from '../components/ContactBand.astro';
import DefinitionGrid from '../components/DefinitionGrid.astro';
import CredentialRow from '../components/CredentialRow.astro';
import Eyebrow from '../components/Eyebrow.astro';
import Pill from '../components/Pill.astro';
import SectionHeading from '../components/SectionHeading.astro';
import { getImage } from 'astro:assets';
import ogDefault from '../assets/og-portrait.jpg';
import { serviceGraph } from '../data/schema';
import { CREDENTIALS, CREDENTIAL_ROW, CREDENTIAL_ROW_ARB } from '../data/site';
const ldImage = await getImage({
src: ogDefault,
format: 'jpeg',
width: 1200,
height: 630,
});
const graph = serviceGraph({
path: '/arbitration/',
name: 'Commercial arbitration',
serviceType: 'Commercial arbitration',
description:
'Sole-arbitrator, party-appointed and co-arbitration appointments in ' +
'commercial matters. Documents-only, expedited and full hearing tracks.',
imageUrl: new URL(ldImage.src, Astro.site).href,
});
/* §4 Offerings rows all three, each `[verified 2026-08-26 — Pouya, Q33/Q36]`,
each scoped commercial. Do not add a fourth without a row. */
const APPOINTMENTS = [
{
name: 'Sole arbitrator',
body: 'One arbitrator, appointed by agreement or by the mechanism the contract names.',
},
{
name: 'Party-appointed',
body: 'Appointed by one side to a three-member tribunal, deciding with the other two.',
},
{
name: 'Co-arbitration',
body: 'Sitting with co-arbitrators, usually where the matter spans more than one discipline.',
},
];
/* Tracks are docs/01 §`/arbitration/` item 2. The flat fees behind the first
two are D14's card and live on `/fees/`; no figure appears here. */
const TRACKS = [
{
name: 'Documents only',
body: 'No hearing. Written submissions, the documentary record, and an award. The right track where the dispute is about what the contract says rather than about what happened.',
},
{
name: 'Expedited',
body: 'A compressed timetable fixed at the outset, with page limits and a short hearing. Chosen when the commercial cost of the dispute staying open exceeds the value of a full process.',
},
{
name: 'Full hearing',
body: 'Pleadings, disclosure, witnesses, experts, oral argument. Where the facts are genuinely contested and someone has to hear them tested.',
},
];
---
<BaseLayout
title="Commercial Arbitration · Pouya Lajevardi · Toronto"
description="Sole, party-appointed and co-arbitration appointments in commercial matters, Toronto. Tracks, rules and awards — and where the Q.Arb pathway stands."
jsonLd={graph}
>
{/* ---- 1. Hero — and the paired disclosure starts here ---------------- */}
<section class="section hero">
<div class="wrap">
<Eyebrow dot>Arbitration</Eyebrow>
<h1 class="display hero-h">Available now, and open about the stage.</h1>
<p class="hero-lede">
I accept sole, party-appointed and co-arbitration appointments in
commercial matters. The Q.Arb pathway commenced in August 2026;
C.Med-Arb is the endpoint. Both are true at once, and they belong
together rather than one of them surfacing later.
</p>
<div class="hero-creds">
<CredentialRow slots={[...CREDENTIAL_ROW, CREDENTIAL_ROW_ARB]} />
</div>
</div>
</section>
{/* ---- 2. The credentialing stage, on its own ------------------------- */}
{
/* §4 Offerings: "neither half may be dropped". The offering is in the hero;
this is the other half, given its own section rather than a footnote,
because Pouya's instruction is that the openness IS the differentiator. */
}
<section class="section section-inverse reveal">
<div class="wrap">
<div class="section-head">
<SectionHeading eyebrow="Where I am in the arc" level={2}>
<span slot="heading"
>Stated plainly rather than discovered later.</span
>
</SectionHeading>
</div>
<ol class="grid-autofit stage" role="list">
<li>
<Pill>Held</Pill>
<h3 class="stage-name">Q.Med</h3>
<p class="stage-body">
Qualified Mediator, through the ADR Institute of Canada and the ADR
Institute of Ontario.
</p>
</li>
<li>
<Pill>Commenced August 2026</Pill>
<h3 class="stage-name">Q.Arb</h3>
<p class="stage-body">
Qualified Arbitrator. Newly commenced — not held, and not nearing
completion.
</p>
</li>
<li>
<Pill>The endpoint</Pill>
<h3 class="stage-name">C.Med-Arb</h3>
<p class="stage-body">
{CREDENTIALS.goalName}. The designation this practice is built
toward.
</p>
</li>
</ol>
<p class="stage-note">
If the stage of the arc bears on an appointment decision, it should bear
on it before the appointment and not after.
</p>
</div>
</section>
{/* ---- 3. Appointments ------------------------------------------------ */}
<section class="section reveal">
<div class="wrap">
<div class="section-head">
<SectionHeading
eyebrow="Appointments"
level={2}
lede="Commercial matters. I do not accept family arbitration."
>
<span slot="heading">Three forms.</span>
</SectionHeading>
</div>
<DefinitionGrid items={APPOINTMENTS} />
</div>
</section>
{/* ---- 4. Tracks ------------------------------------------------------ */}
<section class="section section-alt reveal">
<div class="wrap">
<div class="section-head">
<SectionHeading
eyebrow="Tracks"
level={2}
lede="Settled with the parties before the first procedural order, not defaulted to."
>
<span slot="heading">How much process the dispute needs.</span>
</SectionHeading>
</div>
<DefinitionGrid items={TRACKS} />
</div>
</section>
{/* ---- 5. Rules ------------------------------------------------------- */}
<section class="section reveal">
<div class="wrap">
<div class="section-head">
<SectionHeading eyebrow="Rules" level={2}>
<span slot="heading">Under whose rules.</span>
</SectionHeading>
</div>
<div class="prose">
{
/* Sourced: docs/reference/adric-rules.md. ADR CHAMBERS IS DELIBERATELY
NOT NAMED — docs/01 item 3 lists it, and nothing in this repository
sources what rules it publishes. docs/07 cites it for published FEE
ranges, which is a different claim. Name it here once it is sourced;
do not name it from recall (R14). */
}
<p>
<strong>The ADRIC Arbitration Rules.</strong> The ADR Institute of Canada
adopted a new edition effective 1 March 2025, alongside an arbitrator appointment
protocol and a set of forms — notice to arbitrate, request to administer,
request for the appointment of an arbitrator, urgent interim measures, challenge
to an arbitrator, notice of appeal.
</p>
<p>
<strong>Or ad hoc, or whatever the contract names.</strong> Where a contract
names a rule set, a seat and a language and leaves the rest to the tribunal,
that works. What does not is a process whose shape nobody agreed to in advance.
</p>
</div>
</div>
</section>
{/* ---- 6. Awards ------------------------------------------------------ */}
<section class="section section-alt reveal">
<div class="wrap">
<div class="section-head">
<SectionHeading eyebrow="Awards" level={2}>
<span slot="heading">In writing, with reasons.</span>
</SectionHeading>
</div>
<div class="prose">
<p>
An award should be in writing and give reasons — what was in dispute,
what the record showed, and why the conclusion follows. An award that
announces a result without the reasoning is not much use to the party
that lost, and it is no use at all to the relationship that has to
survive it.
</p>
{
/* THE DATE IS A COMMITMENT ABOUT PROCESS, NOT A PUBLISHED TURNAROUND.
§4 Forbidden bars a time-to-award statistic outright; no figure
appears here and none may be added. */
}
<p>
The date an award is due belongs in the first procedural order, along
with everything else, rather than being left open. No number is
published here: a turnaround time advertised in advance of a record is
a guess dressed as a commitment.
</p>
</div>
</div>
</section>
{/* ---- 7. Fees --------------------------------------------------------- */}
<section class="section reveal">
<div class="wrap">
<div class="section-head">
<SectionHeading eyebrow="Fees" level={2}>
<span slot="heading">Published in full.</span>
</SectionHeading>
</div>
<div class="prose">
<p>
Hourly, hearing day, and flat fees for documents-only and expedited
matters at two levels of complexity. The cancellation schedule is on
the same page.
</p>
</div>
<div class="cta">
<Button href="/fees/" variant="ghost">The rate card &rarr;</Button>
</div>
</div>
</section>
<ContactBand />
</BaseLayout>
<style>
.hero {
padding-block-start: var(--space-9);
}
.hero-h {
margin-block: var(--space-4) var(--space-5);
font-size: var(--text-5xl);
max-inline-size: 20ch;
}
.hero-lede {
max-inline-size: 58ch;
font-size: var(--text-lg);
line-height: var(--leading-body);
color: var(--text-secondary);
}
.hero-creds {
margin-block-start: var(--space-8);
}
/* `.stage`, NOT `.arc`. `/about/` has an `.arc` block of its own with the
same class names and different rendering — serif at --text-2xl there, mono
at --text-lg here — and Astro's scoping means neither reaches the other. Two
meanings for one name across two pages is a rename waiting to go wrong.
`role="list"` on the <ol> and no local `list-style: none`: global.css does
both for `ol[role='list']`, and WebKit drops list semantics when the marker
goes, which is why the role is there. Columns come from `.grid-autofit`. */
.stage {
--grid-min: 17rem;
gap: var(--space-7);
}
.stage-name {
margin-block: var(--space-4) var(--space-2);
font-family: var(--font-mono);
font-size: var(--text-lg);
font-weight: var(--weight-medium);
}
.stage-body {
max-inline-size: 40ch;
line-height: var(--leading-body);
}
.stage-note {
margin-block-start: var(--space-8);
max-inline-size: 54ch;
line-height: var(--leading-body);
color: var(--text-inverse-2);
}
.cta {
margin-block-start: var(--space-6);
}
</style>