feat: Q.Arb is held; strike C.Med-Arb entirely; dissolve the paired disclosure
Build and deploy / build-and-deploy (push) Failing after 4s
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:
co-authored by
Claude Opus 5
parent
79b19a7bd0
commit
610edc24fd
@@ -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
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
|
||||
@@ -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
@@ -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
@@ -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
@@ -11,11 +11,19 @@
|
||||
* 1 Portrait, name, designation line → the hero
|
||||
* 2 Narrative biography, 400–600 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
@@ -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
@@ -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">→</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 —
|
||||
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 —
|
||||
<a href="/med-arb/">how med-arb works →</a>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
+28
-15
@@ -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
|
||||
|
||||
@@ -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`
|
||||
|
||||
Reference in New Issue
Block a user