feat: Q.Arb is held; strike C.Med-Arb entirely; dissolve the paired disclosure
Build and deploy / build-and-deploy (push) Failing after 4s

Pouya's ruling, 2026-08-29. Treated as D3-class and swept accordingly.

§4
  Q.Arb becomes a HELD designation. Obtained July 2026 — recorded in the
  register, deliberately not published. Public copy carries "Q.Arb (ADRIC /
  ADRIO)" beside Q.Med and nothing more. Every stage form is struck:
  "commenced", "in progress", "pathway", "not yet".

  C.Med-Arb as a stated goal is struck. This DEVIATES FROM THE STRATEGY BRIEF,
  which made it "the explicit long-term professional narrative"; the brief is
  not in this repository, so the deviation is recorded in four places so nobody
  reinstates it from a document no reader can open. The designation stays in
  §11 as a definition — what is struck is its status as a goal of his.

  The paired-disclosure condition dissolves. It existed only because Q.Arb was
  in progress; there is no stage left to disclose, and a condition with no
  subject cannot be half-kept.

Pages
  /about/'s credentialing arc is DELETED, not rewritten — two held designations
  are not a journey. /arbitration/ loses its stage section and its "Available
  now, and open about the stage" h1. /med-arb/'s endpoint section is rewritten.
  Deleting CREDENTIALS.goal/goalName rather than emptying them turned every
  consumer into a build error, which is how the last two surfaced.

  hasCredential now maps CREDENTIALS.designations instead of indexing [0];
  _DesignationRowParity pins the visible credential row to the same constant.

check:claims
  q-arb-as-a-stage (inverted from the predecessor, which barred Q.Arb reading
  as HELD) and c-med-arb-struck. Each page is now scanned twice — as published,
  and with inline tags collapsed — because [^<] cannot cross <strong>, which
  this site sets in prose.

Two open questions for Pouya, neither blocking:
  Q55 — the acquisition date. §4 says obtained July 2026; the Change Log of
  2026-08-26 records "commenced August 2026", both stamped [verified — Pouya].
  They cannot both be true. Nothing published turns on it.
  Q56 — is the mediation offering scoped commercial? §4 leaves it unscoped;
  four surfaces say "commercial mediation"; /practice/insurance/ offers
  mediation in insured-versus-insurer SABS matters.

Two review rounds, all findings applied or declined with a stated reason.
Round 2 found ten lines in docs/03 still instructing the struck form — the
2026-08-29 sweep missed them because `git grep 'Q.Arb'` is line-anchored and
the block never names it. Sweep the vocabulary, not only the subject.

Gates, exit statuses read directly, never through a pipe:
  npm run check        exit=0  (0 errors, 0 warnings, 0 hints)
  npm run lint         exit=0
  npm run build        exit=0  (12 pages)
  npm run check:claims exit=0  (11 patterns, 26 approved strings)
  npm audit            exit=0

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-30 10:37:19 -04:00
co-authored by Claude Opus 5
parent 79b19a7bd0
commit 610edc24fd
20 changed files with 1063 additions and 606 deletions
+12 -8
View File
@@ -13,11 +13,10 @@
* slots come from src/data/site.ts, which mirrors §4; nothing is typed here.
*
* <dl> RATHER THAN A DIV GRID. Each pair is a term and its description, which
* is what a description list is. It also fixes the reading order: a screen
* reader gets "Q.Arb — Commenced August 2026" as one associated pair, which is
* §4's paired-disclosure condition surviving into assistive technology rather
* than being a visual arrangement only. Wrapping each dt/dd pair in a <div>
* inside <dl> is valid HTML and is what makes the grid tractable.
* is what a description list is, and it fixes the reading order: a screen
* reader gets "Q.Arb — ADRIC / ADRIO" as one associated pair rather than four
* values then four labels. Wrapping each dt/dd pair in a <div> inside <dl> is
* valid HTML and is what makes the grid tractable.
*/
interface Props {
slots: ReadonlyArray<{ value: string; label: string }>;
@@ -45,9 +44,14 @@ const { slots } = Astro.props;
This read `repeat(auto-fit, minmax(11rem, 1fr))` under a comment saying
"two up on a phone, four up where there is room". `adversarial-reviewer`
measured it: at 390px the resolved template was a SINGLE 342px track and
all four items stacked, running the band ~430px tall — with
`Q.Arb / Commenced August 2026`, which §4's paired-disclosure condition
puts on this page, at the bottom of it. The arithmetic is not subtle: two
all four items stacked, running the band ~430px tall. The longest label in
the row is and remains `Legal training and engineering practice` (Q37, 39
chars — see below), which is what drives the track; the fourth slot's
label went from `Commenced August 2026` (21) to `ADRIC / ADRIO
designation` (25), so it got slightly LONGER and is still well inside
that 39. *(A previous version of this comment said "shorter". It was not
measured; `claims-auditor` counted the characters.)* The arithmetic is not
subtle: two
tracks at an 11rem (176px) floor plus a 24px gap need 376px and the
container is 342px, so `auto-fit` correctly dropped to one. A
measured-sounding comment that was false is this project's own named
+5 -17
View File
@@ -81,23 +81,11 @@ void _props;
line-height: 1.4;
text-transform: uppercase;
color: var(--pill-fg, var(--text-meta));
/* `nowrap` UNTIL 2026-08-28, AND IT WAS FINE UNTIL A PILL HAD FOUR WORDS.
`/`'s six pills are one or two words (longest "Cross-cultural").
`/about/` ships `Commenced August 2026`, and at a 200% DEFAULT FONT SIZE
(root 32px — a real browser setting, not page zoom) that pill measured
382.6px wide with its right edge at 430.6 in a 390px viewport:
**41px of document overflow at 390, 111px at 320.** Injecting
`white-space: normal` took 390 to **0** and 320 to **63**, 63 being the
header residual docs/02 already accepts. WCAG 1.4.10 Reflow.
`normal` costs nothing at default size — a pill only wraps when it cannot
fit, which is exactly when wrapping is the right answer.
WHAT IT LOOKS LIKE AT THE EXTREME, recorded so it is not later read as a
new bug: at 320px with root at 32px, `Commenced August 2026` renders
**224 x 119px** inside `border-radius: 999px` — a three-line stadium. It
is ungainly and it is legible, in-viewport, and the alternative was
111px of document overflow. */
/* NEVER `nowrap`. `Pill` takes arbitrary children, and a four-word pill at a
200% default font size (root 32px) overflowed the document by 111px at
320px — WCAG 1.4.10 Reflow. Measured 2026-08-28; no pill on the site is
that long today, which is exactly why this is easy to delete and must not
be. `normal` costs nothing at default size. */
white-space: normal;
}
</style>
+5 -13
View File
@@ -33,8 +33,7 @@ const year = new Date().getFullYear();
// sitemap and lists /med-arb/ as deliberately out of the primary nav, "linked
// contextually" — so dropping it here left the page with no site-wide link at
// all, on a project whose entire premise is crawlability. (2) The label names a
// PAGE, and docs/01 frames that page around the C.Med-Arb arc rather than as a
// present offering, so listing it is not the §4 inference it looked like.
// PAGE, not an offering, so listing it is not the §4 inference it looked like.
// (3) It settled half of Q35 unilaterally while the other half — Energy and
// Shareholder — stayed in both nav and footer, and the record claimed no
// unilateral action had been taken. Both halves of Q35 go to Pouya together.
@@ -60,19 +59,12 @@ const aboutLinks = [
<span class="footer-brand-name">{SITE.name}</span>
</a>
{
/* The designation strip carries the credentialing STAGE, not just the
held designation, and that is a §4 Offerings condition rather than a
flourish. The masthead names arbitration on every page except `/`,
where SiteHeader suppresses the tagline by design. §4 permits the
arbitration half on the condition that the site "makes the first while
stating the second plainly", and "neither half may be dropped".
Before this line rendered
CREDENTIALS.inProgress, that condition was unmet on every page that
ships — the constant existed in site.ts and was rendered nowhere.
Q.Arb reads as commenced, never as held (§4). */
/* HELD DESIGNATIONS ONLY. §4's paired-disclosure condition made this
strip carry a credentialing stage too; that dissolved on 2026-08-29
when Q.Arb became held. */
}
<p class="footer-designation">
{[...CREDENTIALS.designations, ...CREDENTIALS.inProgress].join(' · ')}
{CREDENTIALS.designations.join(' · ')}
</p>
</div>
+5 -5
View File
@@ -47,9 +47,8 @@ const inSection = (href: string) => path === href || path.startsWith(href);
* is the placement Q33-orig objected to in the first place: a line under his
* name with nothing to qualify it, reading as a designation strip.
*
* This only ever REMOVES a claim from one page, so no §4 disclosure condition
* is touched — the footer's designation strip carries `Q.Arb — commenced
* August 2026` on every page including this one.
* This only ever REMOVES a claim from one page. The footer's designation strip
* carries the held designations on every page including this one.
*/
const isHome = path === '/';
---
@@ -156,8 +155,9 @@ const isHome = path === '/';
/* The tagline is BACK, and the reasoning is worth keeping rather than just
the outcome. It was removed on 2026-08-26 because `Arbitration` under
Pouya's name read as a held capability, and §4 records Q.Arb as merely
commenced. Q33 answered that the same day, and the premise was wrong:
Pouya's name read as a held capability, and §4 then recorded Q.Arb as
merely commenced. Q33 answered that the same day, and the premise was
wrong twice over — §4 now records Q.Arb as HELD, and even before it did:
ADR designations are voluntary credentials, not licences, and COMMERCIAL
arbitral appointment in Ontario is not gated behind a designation — so the
constraint was always positional, never legal, and Pouya accepts sole,
+19 -25
View File
@@ -29,8 +29,11 @@
* 3. `priceRange` — omitted until `/fees/` exists (build step 9). docs/04
* gates it on that page being real.
*
* AND Q.Arb IS NOT IN `hasCredential`. It commenced August 2026 and is not
* held. Q.Med is. That asymmetry is the whole point of the property.
* AND `hasCredential` NOW CARRIES BOTH DESIGNATIONS. It was Q.Med-only until
* 2026-08-29 because Q.Arb was a commenced pathway and the property means
* *holds*. Q.Arb is held (§4), so it belongs there — and the field is built by
* mapping `CREDENTIALS.designations` rather than indexing it, so a designation
* added to §4 and to that constant cannot be silently omitted here.
*/
import {
CONTACT,
@@ -55,21 +58,11 @@ export const SERVICE_ID = `${SITE.url}/#practice`;
* counterpart row for a completed arbitration**, so "arbitrator" as a practised
* role asserted something the register does not hold.
*
* AND IT CARRIES THE Q.Arb STAGE. Same finding, and it is the sharper half:
* §4 Offerings permits the arbitration offering only while the site states the
* stage of the arc plainly — "neither half may be dropped". The VISIBLE page
* satisfied that with the fourth credential slot; this graph asserted
* arbitration twice (here and in `serviceType`) and stated the stage nowhere.
* A machine-readable claim is still a claim.
*
* `hasCredential` stays Q.Med-only regardless — the stage belongs in prose, not
* in a field that means "holds".
*
* Every clause traces: Q.Med [verified], the JD [verified], engineering
* practice [verified], Toronto [verified], the Q.Arb pathway commenced August
* 2026 [verified]. It claims no licensure and implies none — D13 bars
* implication as hard as assertion, and a crawler summary is a place where an
* implication travels unedited.
* A MACHINE-READABLE CLAIM IS STILL A CLAIM, which is why this description is
* audited like visible copy. Every clause traces: Q.Med and Q.Arb [verified], the JD [verified],
* engineering practice [verified], Toronto [verified]. It claims no licensure
* and implies none — D13 bars implication as hard as assertion, and a crawler
* summary is a place where an implication travels unedited.
*/
export function personNode(
imageUrl?: string,
@@ -87,21 +80,22 @@ export function personNode(
jobTitle: PRACTICE_JOB_TITLE,
description:
'Mediator in Toronto, accepting commercial arbitration appointments. ' +
'Q.Med designation through ADRIC and ADRIO; the Q.Arb pathway commenced ' +
'in August 2026. JD, Bond University; practising machine-learning and ' +
'infrastructure engineer.',
'Q.Med and Q.Arb designations through ADRIC and ADRIO. JD, Bond ' +
'University; practising machine-learning and infrastructure engineer.',
knowsLanguage: ['en', 'fa'],
alumniOf: { '@type': 'CollegeOrUniversity', name: 'Bond University' },
// Q.Med only. See the header comment.
hasCredential: {
/* MAPPED, NOT INDEXED. This read `designations[0]` while Q.Arb was a
pathway; indexing is what would have left Q.Arb out of the graph
silently when §4 changed. */
hasCredential: CREDENTIALS.designations.map((name) => ({
'@type': 'EducationalOccupationalCredential',
name: CREDENTIALS.designations[0],
name,
credentialCategory: 'Professional designation',
recognizedBy: [
{ '@type': 'Organization', name: 'ADR Institute of Canada' },
{ '@type': 'Organization', name: 'ADR Institute of Ontario' },
],
},
})),
sameAs: [CONTACT.linkedin],
email: `mailto:${CONTACT.email}`,
/* `memberOf` — OPT-IN, AND ONLY `/about/` OPTS IN. Q53, ruled by Pouya
@@ -211,7 +205,7 @@ export function professionalServiceNode(imageUrl?: string) {
description:
'Commercial mediation and arbitration for construction, technology, ' +
'energy, insurance, shareholder and cross-border disputes. Toronto, ' +
'by appointment. Q.Med held; the Q.Arb pathway commenced August 2026.',
'by appointment. Q.Med and Q.Arb designations held.',
provider: { '@id': PERSON_ID },
areaServed: [
{ '@type': 'City', name: 'Toronto' },
+74 -28
View File
@@ -47,23 +47,21 @@ export const SITE = {
* licence — and do not imply it either. See AGENTS.md §4 Forbidden.
*/
export const CREDENTIALS = {
designations: ['Q.Med (ADRIC / ADRIO)'],
inProgress: ['Q.Arb — commenced August 2026'], // [verified 2026-08-26]
/**
* "Chartered Med-Arbitrator" — ADRIO's own term, and ADRIC's navigation label
* too (docs/reference/adrio-designations.md; docs/reference/adric-rules.md
* Finding 3, which corroborates it from a second body). Never
* "Mediator-Arbitrator".
* BOTH ARE HELD. Q.Arb joined this list on 2026-08-29 (AGENTS.md §4,
* `[verified 2026-08-29 — Pouya]`); it was `inProgress` before that.
*
* `GOAL_NAME` IS THE STRING TO RENDER. This designation's name was wrong on a
* public page for the life of the file, and the reason it survived four review
* passes is that it existed in several hand-typed copies rather than one
* constant. `/arbitration/` and `/med-arb/` (step 4) render `GOAL_NAME`;
* `/about/`'s arc still hand-types it, which is the remaining copy.
* ⚠️ NO ACQUISITION DATE IS PUBLISHED for either, and this file does not hold
* one. §4 is the only record of when Q.Arb was obtained — a second copy here
* is a copy that goes stale, and §4 currently carries an OPEN conflict on
* that date (Q55). Do not resolve it by writing a date into this file.
*
* There is NO `inProgress` KEY, and its absence is the mechanism. Nothing is
* in progress, and a key that exists is a key a page will eventually render —
* deleting it makes reaching for one a build error rather than a copy defect.
* Same pattern as the deleted `class` prop.
*/
goal: 'C.Med-Arb (Chartered Med-Arbitrator)',
/** Just the expansion, for prose. §11 Glossary is the authority for it. */
goalName: 'Chartered Med-Arbitrator',
designations: ['Q.Med (ADRIC / ADRIO)', 'Q.Arb (ADRIC / ADRIO)'],
education: ['JD, Bond University'],
certifications: [
'Kompass Arbitration Certificate Program',
@@ -365,6 +363,22 @@ export const CONDUCT_UNDERTAKINGS = {
'than left open.',
} as const; // [verified 2026-08-29 — Pouya, Q54]
/**
* THE HELD-DESIGNATIONS SENTENCE, RENDERED AND NEVER RETYPED.
*
* `/about/` and `/med-arb/` both make this claim in prose, and in the change
* set that introduced both they had ALREADY diverged — "the Q.Med and Q.Arb
* designations through" versus "Q.Med and Q.Arb through". Two hand-typed forms
* of the highest-stakes claim on the site is the shape `ASYMMETRY_LINE` exists
* to prevent. Found by `adversarial-reviewer` 2026-08-30.
*
* It is a CLAUSE, not a sentence, because the two pages continue it
* differently. Each supplies its own tail; neither restates the head.
*/
export const DESIGNATIONS_HELD_LINE =
'I hold Q.Med and Q.Arb through the ADR Institute of Canada and the ADR ' +
'Institute of Ontario';
/** The three credential slots. Never matter counts — AGENTS.md §4. */
export const CREDENTIAL_ROW = [
{ value: 'Q.Med', label: 'ADRIC / ADRIO designation' },
@@ -392,24 +406,22 @@ export const CREDENTIAL_ROW = [
* The FOURTH credential slot — separate on purpose, so a three-slot layout
* cannot be handed four by accident and a page has to opt in.
*
* docs/03: 'Fourth slot where the layout has one: Q.Arb — commenced August
* 2026. Use that wording, not "in progress"' — the weaker form drifts toward
* 'nearly complete', which §4 Forbidden bars outright.
* ⚠️ IT IS NO LONGER REQUIRED ANYWHERE. Until 2026-08-29 this slot carried
* `Q.Arb / Commenced August 2026` and §4's paired-disclosure condition made it
* mandatory on any page offering arbitration. Q.Arb is held, that condition is
* dissolved, and the slot reverts to what §4's substitution principle always
* wanted it for: a fourth credential where the layout has room.
*
* REQUIRED on any page that offers arbitration, not decorative. §4 Offerings
* carries a paired-disclosure condition: the site may make the offering only
* while 'stating the second plainly', and 'neither half may be dropped'. The
* footer's designation strip satisfies it site-wide; a page whose opening
* sentence says 'arbitrator' should not make the reader scroll to the footer
* for the stage.
*
* The em-dash in docs/03's string is carried by the layout (value over label),
* not by the text. Same wording, same pairing.
* The label is the ISSUING BODIES, matching `designations` above — not a date.
* §4 records July 2026 and keeps it off the site.
*/
export const CREDENTIAL_ROW_ARB = {
value: 'Q.Arb',
label: 'Commenced August 2026',
} as const; // [verified 2026-08-26 — Pouya]
/* IDENTICAL TO `CREDENTIAL_ROW[0].label`. These two render side by side on `/`
and `/arbitration/`; 'ADRIC / ADRIO' beside 'ADRIC / ADRIO designation'
reads as a distinction that is not being drawn. */
label: 'ADRIC / ADRIO designation',
} as const; // [verified 2026-08-29 — Pouya]
/** Analytics: privacy-first and cookieless (D15). No GA4, no consent banner. */
export const ANALYTICS = {
@@ -671,6 +683,40 @@ export type _MembershipParity = _AssertTrue<
: false
>;
/**
* ⚠️ THE VISIBLE CREDENTIAL ROW HAND-TYPES THE DESIGNATIONS, AND THIS PINS IT.
*
* `CREDENTIALS.designations` feeds the footer strip, `/about/`'s designation
* line, `/about/`'s Designations list and `hasCredential`. `CREDENTIAL_ROW[0]`
* and `CREDENTIAL_ROW_ARB` carry the same two facts decomposed into
* `value`/`label` for `/` and `/arbitration/`, and nothing connected them —
* so a third designation added to §4 and to `designations` would reach four
* surfaces and silently miss the credential row.
*
* That was survivable while the fourth slot held a STAGE (`Commenced August
* 2026`), which was an independent fact. On 2026-08-29 it became a duplicate of
* `designations[1]`, which is what made the two constants drift-capable.
* `adversarial-reviewer` caught that the map-not-index fix celebrated in
* `schema.ts` and `docs/04` left this copy untouched.
*
* A type-level assertion rather than a refactor: the row's `value`/`label`
* shape is a LAYOUT decision (value over label, two-up on a phone) and
* collapsing it into the prose strings would be the wrong fix. This fails
* `npm run check` with a named type the moment the two disagree.
*/
type _DesignationValue<S> = S extends `${infer V} (${string})` ? V : never;
export type _DesignationRowParity = _AssertTrue<
_DesignationValue<
(typeof CREDENTIALS.designations)[0]
> extends (typeof CREDENTIAL_ROW)[0]['value']
? _DesignationValue<
(typeof CREDENTIALS.designations)[1]
> extends (typeof CREDENTIAL_ROW_ARB)['value']
? true
: false
: false
>;
/**
* The five process steps. **HERE, NOT IN THE PAGE**, for the reason written
* against PRACTICE_AREAS above and applied by `adversarial-reviewer` 2026-08-27:
+85 -247
View File
@@ -11,11 +11,19 @@
* 1 Portrait, name, designation line → the hero
* 2 Narrative biography, 400600 words → §Background
* 3 Credentials, structured → §Credentials
* 4 The credentialing arc → §The arc
* 4 The credentialing arc → REMOVED 2026-08-29, see below
* 5 Languages and cross-cultural → §Language
* 6 Speaking and publications → OMITTED, per the spec itself
* 7 Person JSON-LD + PDF bio → JSON-LD ships; the PDF does not
*
* ⚠️ ITEM 4 IS GONE, AND IT WAS DELETED RATHER THAN REWRITTEN. Pouya, 2026-08-29:
* *"Two held designations, no journey… An arc invites 'where are you on it';
* two designations don't."* Q.Arb is held and C.Med-Arb is off the site
* entirely, so the section had no subject left — three pills reading Held,
* Held, and nothing. What it used to carry now sits in item 3, which is a list
* of held things and was always the right shape for it. **Do not restore it
* from docs/01's seven-item outline**; that item is struck there too.
*
* ITEM 6 IS OMITTED ON THE SPEC'S OWN INSTRUCTION, not by oversight: "Omit the
* section entirely until there is something in it. An empty 'Speaking' heading
* is worse than no heading." Nothing to list.
@@ -69,7 +77,6 @@ import { Picture, getImage } from 'astro:assets';
import BaseLayout from '../layouts/BaseLayout.astro';
import ContactBand from '../components/ContactBand.astro';
import Eyebrow from '../components/Eyebrow.astro';
import Pill from '../components/Pill.astro';
import SectionHeading from '../components/SectionHeading.astro';
import portrait from '../assets/pouya-lajevardi.jpg';
import ogDefault from '../assets/og-portrait.jpg';
@@ -77,7 +84,9 @@ import { aboutGraph } from '../data/schema';
import {
ASYMMETRY_LINE,
CREDENTIALS,
DESIGNATIONS_HELD_LINE,
PORTRAIT,
PRACTICE_AREAS,
ROLE,
SITE,
} from '../data/site';
@@ -129,141 +138,47 @@ const ldImage = await getImage({
});
const graph = aboutGraph(new URL(ldImage.src, Astro.site).href);
/* THE BIOGRAPHY ENUMERATES THE PRACTICE AREAS IN PROSE, which means it is the
one place on the site that names them without rendering `PRACTICE_AREAS`.
Card labels ("Insurance, SABS & LAT") do not read as prose, and a joined list
of them in a paragraph was worse than the duplication. So the count is
asserted instead: add a seventh area and this throws, which is the prompt to
rewrite the sentence. Same mechanism as the ground-alternation check in
`practice/[slug].astro`. */
/* `: number`, NOT the inferred literal. `PRACTICE_AREAS` is `as const`, so
`.length` is the literal type `6`; with `AREAS_NAMED_IN_BIO` also literal `6`,
adding a seventh area makes the comparison `7 !== 6` — non-overlapping
literals — and `astro check` fails first with `ts(2367) This comparison
appears to be unintentional`, which reads like lint noise. Both deploy paths
run `npm run check` BEFORE the build, so the implementer would never see the
message below, and the message is the whole point of the guard. Widening the
left side keeps the comparison live at runtime. Measured by
`adversarial-reviewer` 2026-08-30. */
const AREAS_NAMED_IN_BIO: number = 6;
if (PRACTICE_AREAS.length !== AREAS_NAMED_IN_BIO) {
throw new Error(
`/about/'s biography names ${AREAS_NAMED_IN_BIO} practice areas in prose, ` +
`but PRACTICE_AREAS now has ${PRACTICE_AREAS.length}. Rewrite the ` +
`"I accept appointments in six areas" paragraph, then update this count.`,
);
}
/**
* The designation line — docs/01 item 1. Assembled from constants so it cannot
* drift from §4, and ordered held-first.
* drift from §4.
*
* Q.Arb IS NOT IN IT, deliberately. It is not held (§4: "Describe as newly
* commenced, never as held or nearing completion"), and a designation line is
* precisely a list of things held. The arc section states the stage plainly,
* which is what §4's paired-disclosure condition requires — this page offers
* arbitration, so the stage appears on this page and not only in the footer.
* BOTH DESIGNATIONS, because a designation line is a list of things held and
* as of 2026-08-29 Q.Arb is one of them. It was excluded while it was a stage.
* The issuing bodies repeat across the two entries; that is what the strings in
* `CREDENTIALS.designations` say, and spelling them once across a joined pair
* would be this file re-typing §4 rather than rendering it.
*/
const designationLine = [
'Mediator',
CREDENTIALS.designations[0],
...CREDENTIALS.designations,
CREDENTIALS.education[0],
];
/**
* The credentialing arc — docs/01 item 4, and docs/03: "the credentialing
* pathway from Q.Med through Q.Arb to C.Med-Arb is stated openly, **with Q.Arb
* described as commenced August 2026** and never as 'in progress', which is
* looser than §4 and is barred by docs/06's cutover checklist. The brief treats
* that arc as part of the story rather than something to obscure."
*
* ⚠️ THAT QUOTATION WAS STALE AND THE STALE HALF WAS THE BARRED PHRASE. It
* quoted docs/03's pre-2026-08-28 text, which ended "...stated openly as in
* progress" — so THIS FILE cited docs/03 as REQUIRING the phrase six lines
* above citing it as BARRING the phrase. Found by `adversarial-reviewer`.
*
* **And the Q.Arb-wording sweep missed it because the phrase was line-wrapped**
* as `as in\n * progress`: a grep for "in progress" on one line returns
* nothing. Same defect CLAUDE.md already records for a docs/03 phrase that
* wrapped behind a blockquote marker. Sweep the wrapped form too.
*
* `state` is the load-bearing column. "Commenced August 2026" is §4's exact
* wording and the ONLY permitted wording — docs/03: not "in progress", because
* the weaker form drifts toward "nearly complete", which §4 Forbidden bars
* outright.
*/
/*
* FIVE CLAIMS CAME OUT OF THIS BLOCK, and the first was the worst thing in the
* step-3 diff. BOTH review agents found it independently, which is the strongest
* signal this loop produces.
*
* 1. ⚠️ "arbitral appointments are not gated behind it, which is why I accept
* them now" — **the false universal Q39 struck, on a public page.**
* Unscoped ("arbitral", not commercial), asserted as flat fact in the first
* person, and it publishes a proposition of Ontario law that §4 holds only
* in scoped form and deliberately does NOT stamp `[verified]`. Family
* arbitration is an arbitral appointment and it IS gated
* (`docs/reference/ontario-family-arbitration-training.md`). Q39 swept
* three instances of this universal on 2026-08-27; this was the fourth and
* the first outside a comment. §4 requires the STAGE be stated — never the
* register's gating rationale. Deleted rather than rescoped: this page has
* no business carrying the argument at all.
* 2. "on the same institutional pathway" and
* 3. "Three designations on one institutional pathway" (the section lede) —
* §4 attaches ADRIC / ADRIO to **Q.Med only**. Neither the Q.Arb row nor
* the C.Med-Arb row names a body.
* 4. "The senior hybrid designation" — a ranking claim about a third party's
* credential structure, with no row and no source.
* 5. The expansions — "Qualified Mediator", "Qualified Arbitrator",
* "Chartered Mediator-Arbitrator". Flagged as being in §11 Glossary but
* not in §4 Verified. **The third was also simply WRONG** — ADRIO's term
* is "Chartered Med-Arbitrator" — but that is not what this finding
* caught, and no review pass caught it either: four passes read the string
* and checked only whether it was *sourced*. Pouya caught it on
* 2026-08-28. The wrong form is quoted here because it is what was
* flagged; it is corrected in the arc below and swept from the repo.
*
* ⚠️ ITEM 5 WAS REMOVED AND IS NOW RESTORED, AND IT IS THE ONE PLACE THIS
* SESSION WENT AGAINST A REVIEW FINDING. The reason is a SECOND finding, from
* the next audit pass, and it is a consistency point rather than a claim point:
* this page also publishes "Provincial Offences Act", "Statutory Accident
* Benefits Schedule" (as SABS) and "the ADR Institute of Canada and the ADR
* Institute of Ontario" — every one of them a §11 Glossary expansion, on exactly
* the ground the designation names were struck. *"One standard or the other."*
*
* ✅ **RATIFIED BY POUYA 2026-08-28 (Q46(b)), AND NO LONGER RESTING ON §11
* ASSERTING ITS OWN CONTENT.** The standard: **§11 Glossary is the source for
* DEFINITIONAL expansions** — what an abbreviation stands for — while §4
* Verified remains the only source for claims ABOUT POUYA. Expanding `Q.Med`
* says nothing about him; "he holds it" is the claim, and that has a row. His
* words: *"the same line the Offerings ruling drew"*, and *"You were right that
* one standard or the other had to apply."*
*
* The alternative standard would have required stripping POA, SABS and the
* institute names from the prose and `recognizedBy` from the JSON-LD — making
* the page materially worse for a reader who does not already know the acronyms,
* in exchange for no reduction in risk.
*
* **R14 IS NOW SATISFIED, which it was not when this comment was first written.**
* Pouya's ruling attached a condition — fetch and commit the source — and
* `docs/reference/adrio-designations.md` is it: all five expansions in ADRIO's
* own words, four independent fetches, reproducible sha256. The earlier attempt
* had failed on the obvious URL (`adric.ca/designations/` redirects to
* `/designations-cee/` and serves **zero** occurrences of "Q.Med", "Qualified
* Mediator" or "Chartered Mediator" in 114,985 bytes — navigation only, body
* assembled client-side), and that failure is why this rested on §11 alone for
* one day. `adr-ontario.ca` serves them server-side. **The lesson is that one
* dead URL is not a sourcing dead end** — the national body's page was
* client-rendered and the provincial affiliate's was not.
*/
const ARC = [
{
name: 'Q.Med',
state: 'Held',
/* NOT "the designation I mediate under". That imported a PERMISSION framing
onto what §4 records as a voluntary credential, in a register that says
no designation is required to be appointed as a mediator — the
credential-as-licence slip §4 says produced a wrong answer twice. */
body:
'Qualified Mediator, held through the ADR Institute of Canada and the ' +
'ADR Institute of Ontario. The designation I hold as a mediator today.',
},
{
name: 'Q.Arb',
state: 'Commenced August 2026',
body:
'Qualified Arbitrator. Newly commenced — not held, and not nearing ' +
'completion.',
},
{
name: 'C.Med-Arb',
state: 'The endpoint',
/* "Chartered Med-Arbitrator", NOT "Chartered Mediator-Arbitrator". The
second form shipped in this string until 2026-08-28 and was in
dist/about/index.html; ADRIO's own term is the first
(docs/reference/adrio-designations.md, Finding 2). Pouya's correction,
and it was his own error carried from the strategy brief. */
body:
'Chartered Med-Arbitrator. The designation this practice is built ' +
'toward.',
},
];
/**
* The structured credentials — docs/01 item 3: "designations, education,
* certifications, memberships. Every line from AGENTS.md §4 Verified."
@@ -331,8 +246,8 @@ const CREDENTIAL_GROUPS = [
---
<BaseLayout
title="About · Pouya Lajevardi · Mediator, Q.Med · Toronto"
description="Pouya Lajevardi, JD, Q.Med — a Toronto mediator who also practises as a machine-learning and infrastructure engineer. Credentials, background, designations."
title="About · Pouya Lajevardi · Mediator, Q.Med, Q.Arb · Toronto"
description="Pouya Lajevardi, JD, Q.Med, Q.Arb — a Toronto mediator who also practises as a machine-learning and infrastructure engineer. Credentials and background."
ogType="profile"
imageAlt={PORTRAIT.alt}
jsonLd={graph}
@@ -387,15 +302,24 @@ const CREDENTIAL_GROUPS = [
EXPLICITLY INTERIM — AGENTS.md R1, surfaced again 2026-08-28
precisely because this page is where the framing now does its
heaviest work. */
heaviest work.
"I MEDIATE COMMERCIAL DISPUTES" STAYS, and a round-2 finding against
it was declined rather than missed. The objection: the same ground
that struck "The matters I take are commercial" from the biography
should reach this sentence too. It does not. **That one was a
universal** — it said nothing he takes is non-commercial, which is an
exclusion §4 has no row for. **This one is existential**: he mediates
commercial disputes, which §4 Offerings' mediation row supports and
which excludes nothing. A narrower claim than the row grants is
safe; a claim the row does not reach is not. */
}
<p class="hero-lede">
I am {ROLE.title} at {ROLE.at}, with {ROLE.litigationLine} across{' '}
{ROLE.litigationAreas.slice(0, -1).join(', ')} and{' '}
{ROLE.litigationAreas.at(-1)}. I mediate commercial disputes and I
accept arbitration appointments in commercial matters; the Q.Arb
pathway commenced in August 2026. I also work as a machine-learning
and infrastructure engineer.
accept arbitration appointments in commercial matters. I also work as
a machine-learning and infrastructure engineer.
</p>
</div>
@@ -519,9 +443,8 @@ const CREDENTIAL_GROUPS = [
EVERY CLAIM TRACES TO §4 Verified: the JD, the boutique role, active
litigation exposure and its four matter types, Q.Med, multiple
completed sole mediations, arbitration appointments (§4 Offerings,
scoped to commercial), the Q.Arb pathway commenced August 2026,
C.Med-Arb as the goal, engineering practice, SML Company Ltd, Farsi,
Iranian-Canadian. Nothing here asserts or implies licensure. */
scoped to commercial), Q.Arb, engineering practice, SML Company Ltd,
Farsi, Iranian-Canadian. Nothing here asserts or implies licensure. */
}
<div class="prose bio-prose">
<p>
@@ -554,21 +477,18 @@ const CREDENTIAL_GROUPS = [
drift. */
}
<p>{ASYMMETRY_LINE}</p>
{
/* A SECOND PARAGRAPH HERE WAS CANDOUR ABOUT AN INCOMPLETE CREDENTIAL
— "I would rather say where I am on the arc". Q.Arb is held; do not
write another. `check:claims` q-arb-as-a-stage catches the form. */
}
<p>
Mediation is where they meet. I hold the Q.Med designation through the
ADR Institute of Canada and the ADR Institute of Ontario, and I have
Mediation is where they meet. {DESIGNATIONS_HELD_LINE}, and I have
completed multiple sole mediations. I accept arbitration appointments
in commercial matters — as sole arbitrator, as a party-appointed
arbitrator, and in co-arbitration. Where a matter turns on a technical
question, I read the technical material myself.
</p>
<p>
My Q.Arb pathway commenced in August 2026, and C.Med-Arb is the
designation I am working toward. I state the stage openly because an
appointing body will establish it anyway, and because a reader can do
more with the fact than with a hedge. I would rather say where I am on
the arc than leave it to be inferred.
</p>
{
/* BOTH ADDITIONS TO THIS SENTENCE CAME BACK OUT. §4 verifies exactly
one relation — *"Operator of SML Company Ltd. alongside the
@@ -596,6 +516,25 @@ const CREDENTIAL_GROUPS = [
`worksFor` is withheld. */
}
<p>I run SML Company Ltd alongside the practice.</p>
{
/* ⚠️ NO SCOPE CLAIM AND NO COVERAGE CLAIM. §4 has no row for the
subject matter of his ADR work, and `/practice/insurance/` ships
"Disputes between an insured person and an insurer" — an
individual-versus-insurer SABS dispute is not commercial, so this
paragraph must not declare the six areas a commercial class.
What Q35 grants is the frame used here: an area may be named where
he can competently accept an appointment, framed as positioning
rather than claimed history. "I accept appointments in" is that
frame; "the subject matter runs across" is not, because §Background
is where a reader defaults to reading history. */
}
<p>
I accept appointments in six areas: construction and infrastructure;
technology, AI and data; energy and the grid; insurance and accident
benefits; shareholder and family-business disputes; and cross-border
matters. What those have in common is a record somebody has to read
closely, and a dispute that turns on what is actually in it.
</p>
<p>
I have also completed the Kompass Arbitration Certificate Program and
the Stitt Feld Handy negotiation and ADR workshop sequence. Neither is
@@ -652,62 +591,6 @@ const CREDENTIAL_GROUPS = [
</div>
</section>
{/* ---- 4. The credentialing arc -------------------------------------- */}
{
/* SECTION 4 BEFORE SECTION 3, and the reorder is deliberate. docs/01 lists
credentials (item 3) then the arc (item 4). The arc is the part a reader
is likely to have a question about — it is the thing this practice is
candid about that others are not — and burying it under a scannable list
of things already held reads as a footnote to them. §4's paired-disclosure
condition also wants the stage stated where the offering is made, and the
offering is made in the narrative directly above. The list follows. */
}
<section class="section section-inverse arc-section reveal">
<div class="wrap">
<div class="section-head">
<SectionHeading
eyebrow="The arc"
level={2}
lede="Three designations. Two of them are ahead of me, and saying so is the point."
>
<span slot="heading">Where the credentials sit.</span>
</SectionHeading>
</div>
{
/* `role="list"` RESTORED, AND THE REASON I REMOVED IT WAS WRONG ABOUT
ARIA. The comment here claimed that on an <ol> the role "re-announces
an ordered list as an unordered one". It does not: **both <ul> and <ol>
map to the `list` role**, so `role="list"` on an <ol> is a no-op for
ordering, not a downgrade. What it is actually for is the WebKit
heuristic that strips list semantics from a list with
`list-style-type: none` — and `.arc` sets exactly that.
It also left the two <ol>s on this two-page site DISAGREEING, with
`/`'s `.process-strip` keeping the role. That is the state that gets
copied seventeen times.
Not verified here: whether WebKit's heuristic covers <ol> as well as
<ul>. There is no Safari instrument in this environment, so the role
stays on the precautionary side, which costs nothing. Chrome's AX tree
exposes `.arc` as `list` with three `listitem` children either way. */
}
<ol class="arc" role="list">
{
ARC.map((stage) => (
<li class="arc-item">
<h3 class="arc-name">{stage.name}</h3>
<p class="arc-state">
<Pill>{stage.state}</Pill>
</p>
<p class="arc-body">{stage.body}</p>
</li>
))
}
</ol>
</div>
</section>
{/* ---- 3. Credentials, structured ------------------------------------ */}
<section class="section section-alt creds reveal">
<div class="wrap">
@@ -955,51 +838,6 @@ const CREDENTIAL_GROUPS = [
page. "Provincial Offences Act" is set in roman. If a statute name ever
needs italics here, load a face for it first. */
/* --- 4. The arc ------------------------------------------------------ */
.arc {
display: grid;
/* `min(18rem, 100%)` rather than a bare 18rem floor: a bare floor cannot
shrink below itself and overflows at a large default font size. The
credential row on `/` is the measured instance of that mistake. */
grid-template-columns: repeat(auto-fit, minmax(min(18rem, 100%), 1fr));
gap: var(--space-6);
/* NO `padding: 0` OR `list-style: none` HERE — `global.css`'s
`ul[role='list'], ol[role='list']` reset already supplies both, and this
block was re-implementing it by hand. Two rules for one job, and the
hand-written copy is the one that drifts. `margin: 0` also comes from the
global `* { margin: 0 }` reset. */
}
.arc-item {
display: flex;
flex-direction: column;
gap: var(--space-3);
padding-block-start: var(--space-4);
border-block-start: 1px solid var(--line-dark);
}
/* <h3>, not <p>. These are the headings of the three arc items and they set
at --text-2xl serif, so marking them up as paragraphs was the fake-heading
pattern: a screen-reader user got no heading navigation for the one section
on this page a reader is most likely to jump to. `ProcessStep` on `/` uses
<h3> for exactly this shape. Outline stays h1 -> h2 -> h3 with no skips. */
.arc-name {
font-family: var(--font-serif);
font-size: var(--text-2xl);
line-height: var(--leading-tight);
}
.arc-state {
margin: 0;
}
.arc-body {
margin: 0;
font-size: var(--text-base);
line-height: var(--leading-body);
/* NOT --text-secondary. On an inverse ground `--ink-soft` measures ~1.4:1
against `--ink` — the inherited `--text-inverse` (cream, 16.81:1) is what
carries body copy here, so the colour is deliberately left alone rather
than set to a token that is correct only on cream. */
}
/* --- 3. Credentials -------------------------------------------------- */
.cred-grid {
+30 -100
View File
@@ -2,25 +2,26 @@
/**
* `/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:
* ⚠️ THE PAIRED-DISCLOSURE CONDITION IS GONE, AND SO IS THE SECTION IT
* REQUIRED. Until 2026-08-29 this page was built around §4's condition that the
* arbitration offering ship beside the STAGE of the Q.Arb pathway — an h1
* reading "Available now, and open about the stage", and a whole section headed
* "Where I am in the arc". Q.Arb is held; the condition dissolved with its
* subject; the section was deleted rather than rewritten.
*
* 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 DO NOT REPRODUCE IT FROM MEMORY. The characteristic failure now is a
* page that offers arbitration and then reaches for something qualifying to
* say. There is nothing to qualify: §4 Offerings rows all three forms, the
* designations are held, and the hero's `CredentialRow` names them. What
* remains of the old framing is the commercial scope — which was never part of
* the condition and is Pouya's own choice (Q39).
*
* ⚠️ 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.
* page states what is offered. It makes no claim about what the law requires of
* anyone.
*/
import BaseLayout from '../layouts/BaseLayout.astro';
import Button from '../components/Button.astro';
@@ -28,7 +29,6 @@ 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 Undertaking from '../components/Undertaking.astro';
import { getImage } from 'astro:assets';
@@ -36,7 +36,6 @@ import ogDefault from '../assets/og-portrait.jpg';
import { serviceGraph } from '../data/schema';
import {
CONDUCT_UNDERTAKINGS,
CREDENTIALS,
CREDENTIAL_ROW,
CREDENTIAL_ROW_ARB,
} from '../data/site';
@@ -94,19 +93,18 @@ const TRACKS = [
<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."
description="Sole, party-appointed and co-arbitration appointments in commercial matters, Toronto. Tracks, rules, and how an award is written and when it is due."
jsonLd={graph}
>
{/* ---- 1. Hero — and the paired disclosure starts here ---------------- */}
{/* ---- 1. Hero -------------------------------------------------------- */}
<section class="section hero">
<div class="wrap">
<Eyebrow dot>Arbitration</Eyebrow>
<h1 class="display hero-h">Available now, and open about the stage.</h1>
<h1 class="display hero-h">Sole, party-appointed, co-arbitration.</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.
I accept all three in commercial matters. This page covers how much
process the dispute needs, whose rules it runs under, and how the award
gets written.
</p>
<div class="hero-creds">
<CredentialRow slots={[...CREDENTIAL_ROW, CREDENTIAL_ROW_ARB]} />
@@ -114,56 +112,15 @@ const TRACKS = [
</div>
</section>
{/* ---- 2. The credentialing stage, on its own ------------------------- */}
{/* ---- 2. Appointments ------------------------------------------------ */}
{
/* §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. */
/* INVERSE, and it inherited the ground rather than choosing it. The deleted
credentialing-stage section was this page's only `section-inverse`; left
cream, this section would have sat cream-on-cream against the hero and
rendered as one doubled block — the defect `/practice/[slug].astro` now
throws on. */
}
<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
@@ -178,7 +135,7 @@ const TRACKS = [
</div>
</section>
{/* ---- 4. Tracks ------------------------------------------------------ */}
{/* ---- 3. Tracks ------------------------------------------------------ */}
<section class="section section-alt reveal">
<div class="wrap">
<div class="section-head">
@@ -194,7 +151,7 @@ const TRACKS = [
</div>
</section>
{/* ---- 5. Rules ------------------------------------------------------- */}
{/* ---- 4. Rules ------------------------------------------------------- */}
<section class="section reveal">
<div class="wrap">
<div class="section-head">
@@ -236,7 +193,7 @@ const TRACKS = [
</div>
</section>
{/* ---- 6. Awards ------------------------------------------------------ */}
{/* ---- 5. Awards ------------------------------------------------------ */}
<section class="section section-alt reveal">
<div class="wrap">
<div class="section-head">
@@ -274,7 +231,7 @@ const TRACKS = [
</div>
</section>
{/* ---- 7. Fees --------------------------------------------------------- */}
{/* ---- 6. Fees --------------------------------------------------------- */}
<section class="section reveal">
<div class="wrap">
<div class="section-head">
@@ -317,33 +274,6 @@ const TRACKS = [
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);
}
+22 -25
View File
@@ -23,8 +23,8 @@
* EVERY FACTUAL CLAIM ON THIS PAGE TRACES TO AGENTS.md §4, and the ones that
* carry risk are constants from src/data/site.ts rather than typed here.
* Notably: arbitration is scoped to COMMERCIAL matters throughout (§4
* Offerings, Q39 2026-08-27), the Q.Arb stage is stated on the page and not
* only in the footer, and nothing claims or implies licensure (D13).
* Offerings, Q39 2026-08-27), the held designations come from `CREDENTIALS`,
* and nothing claims or implies licensure (D13).
*/
import { Picture, getImage } from 'astro:assets';
import BaseLayout from '../layouts/BaseLayout.astro';
@@ -51,16 +51,16 @@ import {
} from '../data/site';
/**
* FOUR SLOTS, NOT THREE, AND THE FOURTH IS NOT DECORATIVE.
* FOUR SLOTS, NOT THREE, and it is now a §4 substitution-principle choice
* rather than a condition.
*
* docs/01 §`/` item 2 says "Three slots". §4 Offerings is the higher authority
* on claims and attaches a PAIRED-DISCLOSURE CONDITION to offering arbitration
* at all: the site "makes the first while stating the second plainly", and
* "neither half may be dropped". This page says *arbitrator* in its second
* sentence, so the stage of the arc belongs on this page rather than only in
* the site footer. docs/03 authorises the fourth slot; docs/03 has been amended
* to record that on `/` it is required. Q.Arb reads as commenced — never as
* held or nearing completion (§4 Forbidden).
* docs/01 §`/` item 2 says "Three slots"; §4's substitution principle
* authorises `Q.Arb` as a fourth "where one exists", and this layout has one.
* It was MANDATORY here until 2026-08-29 under §4's paired-disclosure
* condition, because the page says *arbitrator* in its second sentence and the
* stage had to appear beside the offering. Q.Arb is held and that condition is
* dissolved; the slot stays because a fourth held credential earns its place,
* not because anything requires it.
*/
const credentials = [...CREDENTIAL_ROW, CREDENTIAL_ROW_ARB];
@@ -488,32 +488,29 @@ const graph = homeGraph(new URL(ldImage.src, Astro.site).href);
<a href="/arbitration/">Arbitration</a>
</h3>
{
/* docs/03's model sentence, and BOTH halves are required: §4
Offerings — "neither half may be dropped". Pouya's instruction:
being open about the stage is the differentiator, so it is not
hedged into vagueness and not dropped. Commercial matters only
(Q39): family arbitration is not offered. */
/* COMMERCIAL MATTERS ONLY (Q39) — family arbitration is not offered,
and that scope is Pouya's own choice, not a conclusion this record
draws about the law. */
}
<p class="feature-body">
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.
commercial matters, on a documents-only, expedited or full-hearing
track.
</p>
<span class="feature-arrow" aria-hidden="true">&rarr;</span>
</article>
</div>
{
/* docs/01 §`/` item 4: "Med-Arb named here as the long-term arc,
linking to /med-arb/." It has had its own §4 Offerings row since
2026-08-27 (Q35), so it is named as offered rather than only as an
aspiration — but the arc is what docs/01 asks this page to carry. */
/* Med-Arb has its own §4 Offerings row (Q35, 2026-08-27), so it is named
here as a present offering. docs/01 item 4 asked for it as "the
long-term arc"; there is no arc, and that item is amended. */
}
<p class="pair-note">
<strong>Med-Arb</strong> combines the two: one neutral mediates, then arbitrates
whatever has not settled. I accept those appointments, and C.Med-Arb is the
designation endpoint. The page on it meets the procedural-fairness objection
head on rather than around it &mdash;
whatever has not settled. I accept those appointments in commercial matters.
The page on it meets the procedural-fairness objection head on rather than
around it &mdash;
<a href="/med-arb/">how med-arb works &rarr;</a>
</p>
</div>
+28 -15
View File
@@ -4,9 +4,10 @@
* Arbitration / Med-Arb, docs/04 (FAQPage is specified for this page).
*
* docs/01 rates this the strongest candidate for the best-performing page on
* the site: real search demand, thin competition, and it maps to the practice's
* long-term arc. So it is written to be the page that actually explains the
* process, not a service blurb.
* the site: real search demand and thin competition. So it is written to be the
* page that actually explains the process, not a service blurb. (A third reason
* — "it maps to the practice's long-term arc" — went with C.Med-Arb on
* 2026-08-29. Do not restore arc framing on this page from an older reading.)
*
* THE PAGE NOW ANSWERS THE FAIRNESS OBJECTION TWICE, AND THE SECOND HALF IS THE
* ONE Q54 UNBLOCKED. The FAQ answers it at the level of PROCESS DESIGN — what a
@@ -24,7 +25,7 @@ import Undertaking from '../components/Undertaking.astro';
import { getImage } from 'astro:assets';
import ogDefault from '../assets/og-portrait.jpg';
import { medArbGraph } from '../data/schema';
import { CONDUCT_UNDERTAKINGS, CREDENTIALS } from '../data/site';
import { CONDUCT_UNDERTAKINGS, DESIGNATIONS_HELD_LINE } from '../data/site';
const ldImage = await getImage({
src: ogDefault,
@@ -212,8 +213,8 @@ const graph = medArbGraph({
<p>
The ADR Institute of Canada publishes <strong
>ADRIC Med-Arb Rules</strong
>, developed by a task force and put to the membership in 2019, and
designed, in ADRIC's words, to <q
>, developed by a task force and presented to the membership at
ADRIC's 2019 annual conference, and designed, in ADRIC's words, to <q
>work in tandem with ADRIC's existing Mediation Rules and
Arbitration Rules</q
>. They were drafted for domestic commercial disputes, and ADRIC notes
@@ -234,23 +235,35 @@ const graph = medArbGraph({
</div>
</section>
{/* ---- 6. The endpoint ------------------------------------------------- */}
{/* ---- 6. Why this practice -------------------------------------------- */}
{
/* ⚠️ THIS SECTION MUST NOT ANSWER THE ADRIC COMPETENCE QUOTATION ABOVE IT.
For one pass it did: the heading read "Med-arb asks one neutral to be
competent at both" — a restatement, in this site's voice, of ADRIC's
"requires a high level of practitioner competence" quoted in the section
immediately above — and the designations then answered it by adjacency.
**The source answers its own sentence with a DIFFERENT designation**: the
same ADRIC page points at the Chartered Med-Arb and a Med-Arb Foundational
Course, and `docs/reference/adrio-designations.md` Finding 3 calls the
Q-level designations "an intermediate step". So the page was borrowing a
third party's competence standard and supplying an answer that party does
not give. `claims-auditor`, round-2 audit, 2026-08-30 — the gloss lens.
The heading and lede now state what this practice holds and offers, with
no competence proposition and no bridge to the quotation above. */
}
<section class="section section-alt reveal">
<div class="wrap">
<div class="section-head">
<SectionHeading eyebrow="Why this practice" level={2}>
<span slot="heading"
>C.Med-Arb is the designation this practice is built toward.</span
>
<span slot="heading">Both halves, in one practice.</span>
</SectionHeading>
</div>
<div class="prose">
<p>
{CREDENTIALS.goalName}, the ADRIC and ADRIO designation for exactly
this hybrid, is the endpoint of the arc. Q.Med is held. The Q.Arb
pathway commenced in August 2026. C.Med-Arb comes after both, and it
is the reason the two halves of this practice are being built together
rather than one after the other.
{DESIGNATIONS_HELD_LINE}. Med-arb is not a third service bolted onto
mediation and arbitration; it is the two of them run under one
agreement, in the order the agreement sets.
</p>
<p>
I accept med-arb appointments now, in commercial matters. The section
+6 -4
View File
@@ -584,10 +584,12 @@ hr {
what a UA without that fudge renders. With `printBackground: true` the
pages are correct, which is what isolates the cause.
What vanished was the Q.Med / Q.Arb / C.Med-Arb progression on `/about/` —
§4's paired disclosure — plus the contact band. `!important` because the
rules being overridden are class-level and these must win regardless of
which section variant a future page uses. */
What vanished when it was measured was `/about/`'s inverse-ground arc block
plus the contact band. (That arc section was deleted on 2026-08-29; the
defect it exposed was never about that section — any `section-inverse`
reproduces it, and `/practice/*` and `/arbitration/` still carry one.)
`!important` because the rules being overridden are class-level and these
must win regardless of which section variant a future page uses. */
/* TOKENS FIRST, THEN CLASSES — and the token half is the part that works.
A class-by-class version of this block shipped first and MISSED TWO
ELEMENTS, both measured under print-media emulation: `.approach-metaphor`