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
@@ -173,8 +173,8 @@ since May.
|
||||
| Q.Med designation through ADRIC / ADRIO | `[verified 2026-08-25 — strategy brief §I]` |
|
||||
| Has completed multiple sole mediations | `[verified 2026-08-25 — strategy brief §I]` — count deliberately not published, see below |
|
||||
| **Practised role — "Mediator"** | `[verified 2026-08-28 — Pouya, Q49]`. **The row `Person.jobTitle` stands on, and the ruling grants exactly one.** Pouya: *"one row: 'Mediator', supported by Q.Med plus completed sole mediations."* Both supports are rows immediately above. **"Arbitrator" as a practised role is still NOT a row** — §4 Offerings verifies that appointments are *accepted* and records no completed arbitration, which is why `claims-auditor` struck *"Mediator and Commercial Arbitrator"* from the same node's `description` on 2026-08-27. The arbitration **offering** is unaffected: `description` and `serviceType` both carry it. **Q49(b) is declined by the same ruling** — one row was granted and the corporate relation *"the entity the practice operates through"* was not it, so `worksFor` stays out of the graph. The row that does exist is *"Operator of SML Company Ltd. **alongside** the practice"*, a different structural relation |
|
||||
| Q.Arb credentialing pathway — **commenced August 2026** | `[verified 2026-08-26 — Pouya]`. Describe as newly commenced, never as held or nearing completion |
|
||||
| C.Med-Arb stated as long-term designation goal | `[verified 2026-08-25 — strategy brief §I, §IV]` |
|
||||
| **Q.Arb — HELD** | `[verified 2026-08-29 — Pouya]`. **Obtained July 2026 — RECORDED HERE, NOT PUBLISHED.** His instruction: public copy carries **`Q.Arb (ADRIC / ADRIO)`** beside Q.Med and **nothing more** — no date, no acquisition story. ⚠️ **EVERY STAGE FORM IS STRUCK: "commenced", "in progress", "pathway", "not yet", and the "once/when I hold it" constructions.** This row read *"credentialing pathway — commenced August 2026"* `[verified 2026-08-26 — Pouya]` from 2026-08-26 until 2026-08-29, and every one of those words is now false in the **opposite** direction from the one this register normally guards — the site would be **understating** a held credential. Both directions are misdescription. ⚠️ **THE TWO DATES CANNOT BOTH BE TRUE, AND THIS ROW DOES NOT RECONCILE THEM — OPEN AS Q55.** The Change Log of **2026-08-26 (a)** records *"Q.Arb dated. Old → new: `[assumed]`, stage unknown → **commenced August 2026** `[verified 2026-08-26]`"* — Pouya's own report, three days before this one. **A designation cannot have been obtained in July from a pathway that commenced in August.** One of the two self-reports is wrong and the register cannot say which. **NOTHING PUBLISHED TURNS ON IT:** the site says *held*, which is his ruling either way, and the date is not published — so this does not block. It is flagged because §4's whole function is that a stamped claim is checkable, and this one is contradicted on the face of the record. Found by `claims-auditor` 2026-08-30. **The Forbidden row against "held, imminent, nearly complete" is struck with it** |
|
||||
| ~~C.Med-Arb stated as long-term designation goal~~ | **STRUCK 2026-08-29 — Pouya. `C.MED-ARB IS OUT ENTIRELY`, and it must not be reinstated from the strategy brief**, which made it *"the explicit long-term professional narrative"*. **This is a deliberate deviation from the brief and it is recorded as one** — see the Change Log entry of 2026-08-30 (ad). His reasoning: *"Pouya holds Q.Med and Q.Arb, which is what med-arb requires. The page says he conducts med-arb and stops."* **The designation is still real and stays in §11 as a DEFINITION** — what is struck is its status as a published goal *of his*. Superseded `[verified 2026-08-25 — strategy brief §I, §IV]` |
|
||||
| Kompass Arbitration Certificate Program — completed | `[verified 2026-08-25 — strategy brief §I]` |
|
||||
| Stitt Feld Handy negotiation and ADR workshop sequence — completed | `[verified 2026-08-25 — strategy brief §I]` |
|
||||
| Practising machine-learning and DevOps / infrastructure engineer | `[verified 2026-08-25 — strategy brief §I, §V]` |
|
||||
@@ -201,8 +201,10 @@ an offering produced a wrong answer twice in one session.
|
||||
|
||||
**What went wrong, because it explains the rule — stated correctly on the second
|
||||
attempt.** `co-arbitration available now` was flagged across three specs on the
|
||||
reasoning that §4 records the Q.Arb pathway as merely *commenced* and therefore
|
||||
could not support an arbitration offering. **That** reasoning was wrong at the
|
||||
reasoning that §4 **then recorded** the Q.Arb pathway as merely *commenced* and
|
||||
therefore could not support an arbitration offering. *(Past tense throughout this
|
||||
paragraph: Q.Arb has been HELD in §4 since 2026-08-29. The error described here
|
||||
is a 2026-08-26 one, and it did not depend on the credential's state.)* **That** reasoning was wrong at the
|
||||
root: it silently treated a **designation** as though it were a **licence**.
|
||||
|
||||
*The masthead objection was a different one, and this paragraph originally
|
||||
@@ -385,10 +387,12 @@ never be read as one:
|
||||
**Licence status — NOT ESTABLISHED** row above), and **D13 bars the claim
|
||||
outright.** "I offer legal representation — that is competence, not
|
||||
permission" is exactly the misreading this paragraph exists to foreclose.
|
||||
- **The test never converts a credential into an offering.** Q.Arb is still
|
||||
*commenced August 2026* and must still never read as held. Offering
|
||||
arbitration and holding Q.Arb are two different statements, and the site makes
|
||||
the first while stating the second plainly.
|
||||
- **The test never converts a credential into an offering.** Offering
|
||||
arbitration and holding Q.Arb remain two different statements, and the site
|
||||
makes both. *This bullet read "Q.Arb is still commenced August 2026 and must
|
||||
still never read as held" until 2026-08-29; the designation is now held and
|
||||
the ruling that made the offering publishable never depended on it — the
|
||||
reasoning above is unchanged by the change in the credential.*
|
||||
|
||||
### Offered now — may be published
|
||||
|
||||
@@ -406,12 +410,33 @@ never be read as one:
|
||||
| ~~**Settlement counsel**~~ | **NOT OFFERED, AND IT IS STRUCK RATHER THAN UNROWED** `[verified 2026-08-27 — Pouya, Q42]`. Pouya removed it as **his own error in `docs/01`**: *"Settlement counsel acts **FOR a party** in negotiation. That is a partisan role, and putting it on a site that (a) sells neutrality and (b) asserts no licensure under D13 is **wrong twice over**: it undercuts the brand's central claim and it edges into acting for a client."* **Note the ordering — the positioning objection comes first.** It would still be wrong on a site with no licensure question at all, which is why this row does not read as a D13 consequence. Struck from `docs/01` §`/practice/`, from `docs/07-fees.md`'s hourly list, and from the §4 scope enumeration above. Never priced, never listed, never restored |
|
||||
| ~~Tribunal secretary~~ | **Not offered.** D14 removed the rate and bars offering it |
|
||||
|
||||
**How the arbitration page must read** (`docs/01` §`/arbitration/`, step 4):
|
||||
it offers all three today **and states plainly that the Q.Arb pathway commenced
|
||||
August 2026, with C.Med-Arb as the endpoint.** Pouya's instruction: *being open
|
||||
about the stage is the differentiator — do not hedge it into vagueness.* So
|
||||
neither half may be dropped. Naming the stage is not a disclaimer bolted onto an
|
||||
offering; it is the reason a sophisticated reader believes the offering.
|
||||
**~~How the arbitration page must read~~ — THE PAIRED-DISCLOSURE CONDITION IS
|
||||
DISSOLVED, 2026-08-29, Pouya.** His words: *"It existed only because Q.Arb was in
|
||||
progress. There is no stage left to disclose."*
|
||||
|
||||
> **What it required, so the dissolution is legible.** From 2026-08-26 it bound
|
||||
> every surface that offered arbitration to state the **stage** of the Q.Arb
|
||||
> pathway in the same breath — `/`, `/arbitration/`, `/about/`, `/med-arb/`, the
|
||||
> footer designation strip, and the `Person` and `ProfessionalService` graphs.
|
||||
> The reasoning was sound while it held: the objection it answered was
|
||||
> **placement** (Q33-orig — arbitration promoted to a masthead under Pouya's
|
||||
> name, where nothing qualified it), and naming the stage was what made the
|
||||
> offering credible rather than what made it permissible.
|
||||
>
|
||||
> **Why it does not survive.** The condition's subject was a stage. Q.Arb is
|
||||
> **held**, so there is no stage — and a condition with no subject cannot be
|
||||
> half-kept. **Do not leave a residue of it**: a page that offers arbitration and
|
||||
> then reaches for something qualifying to say is reproducing the condition from
|
||||
> memory. `Q.Arb (ADRIC / ADRIO)` beside `Q.Med` is the whole of it.
|
||||
>
|
||||
> **What is NOT dissolved with it.** The Q39 commercial scoping is untouched —
|
||||
> family arbitration remains **not offered**, on Pouya's choice, and that
|
||||
> exclusion never depended on the Q.Arb stage. Nor is the offering test, nor D13,
|
||||
> nor D16.
|
||||
|
||||
**How the arbitration page must read, as amended:** it offers all three forms —
|
||||
sole, party-appointed, co-arbitration — in **commercial** matters, and it names
|
||||
the designations held. There is nothing further to disclose.
|
||||
|
||||
### Subject-matter areas — the publication gate (Q35, 2026-08-27)
|
||||
|
||||
@@ -625,7 +650,8 @@ cannot vouch for.
|
||||
| Guarantees of outcome, or superlatives ("best", "leading", "top-rated") | Unverifiable as written, and they read as insecure to the audience this site is for. Marketing rules for regulated professions also treat them as suspect. *(Reason restated 2026-08-26: this row previously read "LSO marketing rules", which asserts the regulatory status the row above marks NOT ESTABLISHED. It was the last surviving instance, flagged in entries (o) and (q) and answered in Q26 as already fixed — it was not. **Restated by Claude Code; the rule itself is unchanged and the restatement needs Pouya's ratification.**)* |
|
||||
| The word **"lawyer"** used of Pouya; "called to the bar"; "licensed"; "my law practice"; "my litigation practice"; any post-nominal implying a licence | D13. The site asserts the JD and nothing further |
|
||||
| Any phrasing that *implies* entitlement to practise law without saying so — "acts for clients", "represents parties", "my clients", "legal advice" | Same rule. Implication is the risk, not just the word. Describe the role factually instead: *Director of Firm Operations at a Toronto litigation and ADR boutique*, and the matter types worked on |
|
||||
| Q.Arb described as held, imminent, or "nearly complete" | It commenced August 2026 |
|
||||
| **Q.Arb described as commenced, in progress, a pathway, or not yet held** | **It is HELD** `[verified 2026-08-29 — Pouya]`. Publish `Q.Arb (ADRIC / ADRIO)`. **The acquisition date is recorded in §4 and is NOT published** — and it is itself open (Q55). `npm run check:claims` `q-arb-as-a-stage` enforces the stage words and a date near the designation, on `dist/` |
|
||||
| ~~Q.Arb described as held, imminent, or "nearly complete"~~ | **STRUCK 2026-08-29 — Q.ARB IS HELD.** This row was correct from 2026-08-26 to 2026-08-29 and is now exactly backwards. **What replaces it is the opposite bar:** Q.Arb described as *commenced*, *in progress*, *a pathway*, or *not yet held* — see the Verified row. The publishable form is `Q.Arb (ADRIC / ADRIO)`; the acquisition date is recorded in §4 and is **not** published |
|
||||
|
||||
### The substitution principle
|
||||
|
||||
@@ -635,6 +661,12 @@ does not grow by closing files. The approved stat set is `Q.Med` /
|
||||
`JD + ML` / `EN · FA`, with `Q.Arb` as a fourth slot where one exists.
|
||||
`[verified 2026-08-25 — content brief]`
|
||||
|
||||
⚠️ **THE FOURTH SLOT IS UNCHANGED IN PLACEMENT AND CHANGED IN CONTENT (2026-08-29).**
|
||||
It carried `Q.Arb — commenced August 2026`, a **stage**; it now carries `Q.Arb`, a
|
||||
**designation**, on the same footing as `Q.Med`. The slot was never a disclaimer —
|
||||
it existed because the substitution principle wanted a fourth credential — so
|
||||
nothing about its placement follows from Q.Arb becoming held.
|
||||
|
||||
## 5. Audience model
|
||||
|
||||
All four tiers matter, but they are served by different surfaces rather than by
|
||||
@@ -738,8 +770,10 @@ Nothing below can be invented. Each needs an answer from Pouya.
|
||||
|
||||
| # | Question | Blocks |
|
||||
|---|---|---|
|
||||
| **Q56** | ⚠️ **IS THE MEDIATION OFFERING SCOPED COMMERCIAL, OR NOT? THE SITE SAYS BOTH.** §4 Offerings rows arbitration three times, each **scoped commercial**; the mediation row is `**Mediation** — sole mediator`, **unscoped**. Shipped output scopes it anyway: `/mediation/`'s `<title>` is *"Commercial Mediation"*, its `Service` node is `name: "Commercial mediation"`, and `/` and `/about/` both say *"I mediate commercial disputes"*. Meanwhile **`/practice/insurance/` offers mediation in matters that are not commercial on any ordinary reading** — *"Disputes between an insured person and an insurer under the Statutory Accident Benefits Schedule"*, with *"What I offer is private mediation"*. An individual claimant against their own insurer is not a commercial dispute. **Nothing here is a false claim** — scoping a page to commercial mediation asserts *less* than the unscoped §4 row grants, and narrower than the row is always safe. **The problem is that the two halves cannot both be the whole picture**: either the practice takes non-commercial mediations (and the site-wide "commercial" framing under-describes it, including on the page an appointing body reads), or it does not (and `/practice/insurance/` is offering something outside the offering). **What is needed:** either a §4 Offerings row scoping mediation, with `/practice/insurance/`'s SABS framing reconciled to it — or a decision that mediation is deliberately unscoped, in which case the site-wide "commercial" wording is a positioning choice and should be recorded as one rather than read as a limit. **Pre-existing, not created 2026-08-30** — but this change set newly wrote the claim onto `/med-arb/` and it has been removed again pending this answer. Raised by `adversarial-reviewer`, 2026-08-30 | **Nothing at present.** No page is wrong; the register is silent where the site is specific |
|
||||
| **Q55** | ⚠️ **WHEN WAS Q.Arb ACTUALLY OBTAINED? THE REGISTER HOLDS TWO DATES FROM THE SAME SOURCE AND THEY CANNOT BOTH BE TRUE.** (a) **2026-08-26 (a)**, Change Log, `[verified 2026-08-26]`: *"Q.Arb dated. Old → new: `[assumed]`, stage unknown → **commenced August 2026**"*. (b) **2026-08-29**, Pouya's amendment, now the §4 Verified row: *"Obtained July 2026"*. A designation cannot have been obtained in July from a pathway reported as commencing in August, and (a) was reported three days before (b). One self-report is wrong; the register cannot say which, and **inferring it would be exactly the guessed-explanation failure `CLAUDE.md` bars**. **THIS DOES NOT BLOCK, and that is the whole reason it is a question rather than a hold.** The published claim is *held* — **which is faithful to his most recent instruction, and that is a different thing from correct.** §4's premise is that `[verified — Pouya]` establishes *what he reported*, never the fact, and this is the one row where the register holds documented evidence that a self-report about this credential is wrong. The date is deliberately unpublished, so no page turns on the answer. What turns on it is whether §4 can vouch for its own highest-stakes new row. **What is needed:** one line from Pouya giving the correct date, and whether (a) was a misreport, a different milestone, or something else. Then re-stamp the §4 row and correct or annotate (a) — the Change Log is append-only, so (a) gets a pointer, never an edit. Raised by `claims-auditor`, 2026-08-30 | **Nothing.** The site states what Pouya most recently instructed; what is affected is §4's ability to vouch for its own row |
|
||||
| ~~Q1~~ | **ANSWERED 2026-08-26.** Licensure is left out entirely; the site asserts the JD only. See D13 | — |
|
||||
| ~~Q2~~ | **ANSWERED 2026-08-26.** Q.Arb commenced August 2026 | — |
|
||||
| ~~Q2~~ | **ANSWERED 2026-08-26, AND SUPERSEDED 2026-08-29.** The answer then was *"Q.Arb commenced August 2026"*. **Q.Arb is now HELD** — see the §4 Verified row. ⚠️ Corrected in place because §9 is Current Truth; the superseded answer is preserved above rather than deleted, and **the conflict between the two dates is open as Q55** | — |
|
||||
| ~~Q3~~ | **ANSWERED 2026-08-26.** Email `info@smlcompany.ca`. No public phone — "By scheduled call". Location: Toronto · Ontario · By appointment | — |
|
||||
| ~~Q4 / Q14~~ | **ANSWERED 2026-08-26.** Rate card confirmed by Pouya — see D14 and `docs/07-fees.md` | — |
|
||||
| ~~Q13~~ | **ANSWERED 2026-08-26.** Self-hosted Gitea with Gitea Actions | — |
|
||||
@@ -850,7 +884,7 @@ Nothing below can be invented. Each needs an answer from Pouya.
|
||||
| Q.Arb | **Qualified Arbitrator** — ADRIC / ADRIO designation |
|
||||
| C.Med | **Chartered Mediator** — ADRIC / ADRIO designation |
|
||||
| C.Arb | **Chartered Arbitrator** — ADRIC / ADRIO designation |
|
||||
| C.Med-Arb | **Chartered Med-Arbitrator** — ADRIC / ADRIO designation. *Do not write "Mediator-Arbitrator", and do not call it "senior" or "the senior hybrid designation": this row said that until 2026-08-28, and it is a ranking claim about a third party's credential structure with no source. ADRIO applies "most senior" to **C.Med**, not to this one — and §4 Forbidden bars superlatives on the site regardless of who said them first. That it is Pouya's long-term goal is a §4 row; that it ranks above anything is not.* |
|
||||
| C.Med-Arb | **Chartered Med-Arbitrator** — ADRIC / ADRIO designation. *Do not write "Mediator-Arbitrator", and do not call it "senior" or "the senior hybrid designation": this row said that until 2026-08-28, and it is a ranking claim about a third party's credential structure with no source. ADRIO applies "most senior" to **C.Med**, not to this one — and §4 Forbidden bars superlatives on the site regardless of who said them first.* ⚠️ **THIS ROW IS A DEFINITION AND NOTHING ELSE (2026-08-29).** It used to close *"that it is Pouya's long-term goal is a §4 row"*; that §4 row is struck and C.Med-Arb is off the site entirely. The designation exists; this project makes no claim about it and names it on no page. |
|
||||
| CTF | Canadian Tax Foundation |
|
||||
| Med-Arb | Hybrid process: mediation that converts to binding arbitration if unresolved |
|
||||
| SABS | Statutory Accident Benefits Schedule — Ontario auto insurance benefits |
|
||||
@@ -896,6 +930,361 @@ never being raised again.
|
||||
|
||||
# Change Log
|
||||
|
||||
## 2026-08-30 (ad) — Q.Arb is HELD; C.Med-Arb is struck entirely; the paired-disclosure condition dissolves with the stage it required — and this deviates from the strategy brief deliberately
|
||||
|
||||
**Type:** ruling + D3-class sweep. **20 files, +1064 / −607.** `src/` alone is
|
||||
net **−196** (+291 / −487), which is the shape of a credential becoming simpler rather than
|
||||
more qualified; the additions are concentrated in this record, the specs, and
|
||||
`check:claims`.
|
||||
|
||||
### Pouya's ruling, recorded verbatim because two files quote it
|
||||
|
||||
> "Q.ARB IS HELD. C.MED-ARB IS OUT ENTIRELY. Treat this as D3-class."
|
||||
>
|
||||
> "§4 — Q.Arb becomes a held designation, `[verified 2026-08-29 — Pouya]`.
|
||||
> Obtained July 2026; record internally, **DO NOT publish the date**. Public copy
|
||||
> carries `Q.Arb (ADRIC / ADRIO)` beside Q.Med and nothing more. Delete every
|
||||
> 'commenced', 'in progress', 'pathway', 'not yet' form."
|
||||
>
|
||||
> "**THE PAIRED-DISCLOSURE CONDITION DISSOLVES.** It existed only because Q.Arb
|
||||
> was in progress. There is no stage left to disclose… Do not leave half
|
||||
> standing."
|
||||
>
|
||||
> "**C.MED-ARB COMES OUT EVERYWHERE.** Pouya holds Q.Med and Q.Arb, which is
|
||||
> what med-arb requires. The page says he conducts med-arb and stops."
|
||||
>
|
||||
> "**`/about/`'s ARC SECTION LOSES ITS SUBJECT.** Two held designations, no
|
||||
> journey. Rewrite it as a plain credentials statement or delete it — do not
|
||||
> edit phrase by phrase. An arc invites 'where are you on it'; two designations
|
||||
> don't."
|
||||
>
|
||||
> "**REWRITE, DON'T EDIT**, anywhere copy earned credibility by being candid
|
||||
> about an incomplete credential."
|
||||
|
||||
### ⚠️ THIS DEVIATES FROM THE STRATEGY BRIEF, AND THE DEVIATION IS THE RECORD
|
||||
|
||||
Pouya's instruction: *"Record that this deviates from the strategy brief, which
|
||||
made C.Med-Arb 'the explicit long-term professional narrative'. Pouya has
|
||||
dispensed with it. Note the deviation so nobody reinstates it from the brief."*
|
||||
|
||||
**The brief is not in this repository.** It is cited by `AGENTS.md`, `docs/01`,
|
||||
`docs/03`, `docs/07` and `src/data/site.ts`, and no reader can open it — R14's
|
||||
shape, pre-existing and not created here. That is precisely why this paragraph
|
||||
matters: **the only defence against C.Med-Arb being reinstated from an
|
||||
unreachable document is a written record that its removal was deliberate.** It
|
||||
is now in four places — this entry, the struck §4 row, `docs/01` items 4 and 3
|
||||
of `/med-arb/`, and `check:claims`.
|
||||
|
||||
### What the ruling touched
|
||||
|
||||
**§4.** `Q.Arb` becomes **HELD** (July 2026, recorded and unpublished).
|
||||
`C.Med-Arb stated as long-term designation goal` is **struck**. The Forbidden
|
||||
row barring "held, imminent, nearly complete" is struck **and replaced by a live
|
||||
row barring the opposite** — a struck row whose surviving text does the opposite
|
||||
of the strike is the Q25 shape, and `adversarial-reviewer` caught it here.
|
||||
The paired-disclosure condition is dissolved with the reasoning kept, so the
|
||||
dissolution is legible rather than a deletion. §11's `C.Med-Arb` row stays as a
|
||||
**definition** and says so.
|
||||
|
||||
**`src/`.** `CREDENTIALS.inProgress`, `.goal` and `.goalName` are **deleted, not
|
||||
emptied** — which turned every consumer into a `ts(2339)` build error and is how
|
||||
`/arbitration/` and `/med-arb/` surfaced rather than being remembered. Pouya's
|
||||
own principle from 2026-08-29: *"the pattern that actually worked was
|
||||
mechanical."* `/about/`'s arc section, `/arbitration/`'s credentialing-stage
|
||||
section, and their styles are gone; `/arbitration/`'s Appointments section
|
||||
inherits the vacated `section-inverse` so the page keeps alternating.
|
||||
`hasCredential` now **maps** `CREDENTIALS.designations` instead of indexing
|
||||
`[0]` — indexing is what would have dropped Q.Arb from the graph silently.
|
||||
|
||||
**Specs.** `docs/01` items amended at `/`, `/about/`, `/arbitration/` and
|
||||
`/med-arb/`, each carrying the strike and its date **inside the item**, because
|
||||
the reinstatement risk is somebody reading the outline. `docs/03`, `docs/04`,
|
||||
`docs/06`, `docs/07` follow.
|
||||
|
||||
**`check:claims`** gains `c-med-arb-struck` and an **inverted** `q-arb-as-a-stage`
|
||||
— the predecessor barred Q.Arb reading as held.
|
||||
|
||||
### The sweeps, as commands — and one of them was run twice
|
||||
|
||||
```
|
||||
$ git grep -nE 'Q\.?Arb' -- src/ docs/ ':!docs/reference' | grep -icE 'commenc|in progress|pathway|not yet'
|
||||
10 # each one a strike notice or a check:claims fixture; none is live copy
|
||||
```
|
||||
|
||||
⚠️ **THE `dist/` SWEEP WAS RUN TWICE, AND THE FIRST INSTRUMENT WAS WRONG.**
|
||||
`grep -roh '.\{50\}Q\.Arb.\{50\}' dist/ | sort -u` returned **10 distinct
|
||||
contexts**, and this entry was drafted around that number. `grep -o` takes
|
||||
**non-overlapping** windows, so on minified HTML — where a page is a handful of
|
||||
very long lines — an early match consumes characters a later one needs. The
|
||||
visible symptom: *"I hold Q.Med and Q.Arb through…"* ships on two pages and
|
||||
**did not appear in the list at all.** A `grep -o` window count is not an
|
||||
enumeration. Re-run with an overlap-safe scan over every match:
|
||||
|
||||
```
|
||||
49 occurrences of "Q.Arb" across 12 pages, in 13 distinct contexts:
|
||||
x12 ...arbitration appointments. Q.Med and Q.Arb designations through ADRIC and ADRIO...
|
||||
x12 "name":"Q.Arb (ADRIC / ADRIO)","credentialCategory":"Professional designation"
|
||||
x12 Q.Med (ADRIC / ADRIO) · Q.Arb (ADRIC / ADRIO) footer, every page
|
||||
x3 ...JD, Q.Med, Q.Arb — a Toronto mediator... meta/og/twitter desc
|
||||
x2 <dt>Q.Arb</dt><dd>ADRIC / ADRIO designation</dd> credential row
|
||||
x1 <title>About · … · Mediator, Q.Med, Q.Arb · Toronto</title> (+ og, + twitter)
|
||||
x1 · Q.Arb (ADRIC / ADRIO) /about/ designation line
|
||||
x1 <li>Q.Arb (ADRIC / ADRIO)</li> /about/ Designations
|
||||
x1 Toronto, by appointment. Q.Med and Q.Arb designations held. ProfessionalService
|
||||
x1 Mediation is where they meet. I hold Q.Med and Q.Arb through… /about/
|
||||
x1 ...did not settle. I hold Q.Med and Q.Arb through… /med-arb/
|
||||
|
||||
Stage word within 60 chars of any of the 49: none
|
||||
```
|
||||
|
||||
**This is the fifth time on this project that a number turned out to be a claim
|
||||
about the instrument** — `CLAUDE.md` lists the other four. Same tell every time:
|
||||
the figure looked plausible and nobody asked what it was a number *of*.
|
||||
|
||||
```
|
||||
$ node scripts/check-claims.mjs → exit=0, c-med-arb-struck clean over 12 pages
|
||||
```
|
||||
|
||||
**And the gate was tested against the copy it replaces**, which is the check that
|
||||
matters: of the **nine** strings this change set removes, it now catches **eight**.
|
||||
The ninth is the h1 *"Available now, and open about the stage"*, which names no
|
||||
designation — recorded as a known limit in the pattern itself and assigned to
|
||||
`claims-auditor` rather than papered over.
|
||||
|
||||
### Two review rounds — 26 findings, and four of mine were defects in my own fixes
|
||||
|
||||
**`claims-auditor` (R1 is the one that matters).** It found the register
|
||||
contradicting itself on the acquisition date and would not let it pass:
|
||||
2026-08-26 (a) records *"commenced August 2026"*; this ruling says *"obtained
|
||||
July 2026"*; both `[verified — Pouya]`, three days apart. **Opened as Q55.**
|
||||
It does not block — the site says *held*, which is his ruling either way, and the
|
||||
date is unpublished — but §4's function is that a stamped claim is checkable, and
|
||||
this one is contradicted on the face of the record. Also caught: `/med-arb/`
|
||||
stating the arbitration offering **unscoped** (every §4 row is commercial); a
|
||||
**wrong acquisition date invented in a `SiteHeader` comment**; `site.ts` holding a
|
||||
second copy of a date §4 is the sole record for; `docs/04` contradicting itself
|
||||
seven lines apart on `hasCredential`.
|
||||
|
||||
**`adversarial-reviewer`.** Its blocking finding was **mine**: the `/about/`
|
||||
paragraph I wrote to restore the word count opened *"The matters I take are
|
||||
commercial"* — **no §4 row** (Offerings scopes *arbitration* commercial; the
|
||||
mediation row is unscoped) — and named the LAT inside its own commercial class
|
||||
while `/practice/insurance/` ships *"Disputes between an insured person and an
|
||||
insurer"*. Also: `q-arb-as-a-stage` firing on **compliant** copy, because bare
|
||||
`once|when` in a 50-character window matches *"I hold Q.Med and Q.Arb… when a
|
||||
party asks"*; `c-med-arb-struck` blind to `C.Med-Arbitrator` (a trailing `\b`
|
||||
after `Med-Arb`); the gate **defeated by `<strong>`**, since `[^<]` cannot cross
|
||||
inline markup and this site sets `<strong>` in prose; and a JSDoc detached from
|
||||
`designationLine` by a guard I inserted between them.
|
||||
|
||||
**Both agents reported the handed diff was stale** — the working tree had moved
|
||||
under it. Regenerate the diff at review time, or point reviewers at the tree.
|
||||
|
||||
⚠️ **AND `claims-auditor` DID NOT HAVE THE LENS ADDED IN ENTRY (ac).** Agent
|
||||
definitions load at session start, so the lens committed hours earlier was not
|
||||
in its brief; it reconstructed it from the Change Log and ran it anyway. **An
|
||||
edit to `.claude/agents/*.md` does not take effect until a new session.** That is
|
||||
the fifth stale-claim-inside-that-brief instance the brief itself predicts.
|
||||
|
||||
### Fixes to the fixes
|
||||
|
||||
The `once|when` repair, the two-view scan, and the `C.Med-Arbitrator` blend were
|
||||
all corrections to patterns written **in this change set**. The scanner now reads
|
||||
each page twice — as published, and with inline tags collapsed to a space and
|
||||
block tags to a full stop — which preserves the do-not-leap-a-paragraph property
|
||||
that made the `[^.<]` window worth having. Proved by injecting
|
||||
`<strong>Q.Arb</strong> — the pathway commenced` into a built page: **raw view
|
||||
missed, collapsed view caught.**
|
||||
|
||||
`DESIGNATIONS_HELD_LINE` now holds the one sentence `/about/` and `/med-arb/`
|
||||
had **already** typed two different ways in the change set that introduced both.
|
||||
|
||||
### Round 2 — and the worst finding was one the round-1 sweep could not reach
|
||||
|
||||
**`claims-auditor` found ten lines in `docs/03` that instructed the struck
|
||||
form, unstruck, imperative, eleven lines below this change set's own strike
|
||||
notice on the same bullet.** They read *"'Pathway', never 'designation'"*, cited
|
||||
the **struck** Forbidden row as live, told an implementer *"the limit being named
|
||||
is the stage of the arc, stated plainly"*, and closed *"Precision about what you
|
||||
cannot yet do makes the rest believable."*
|
||||
|
||||
**Why the 2026-08-29 sweep missed it, and this is the transferable part:
|
||||
`git grep -nE 'Q\.?Arb'` is LINE-ANCHORED, and not one of those ten lines
|
||||
contains the string.** The block is entirely about Q.Arb and never names it. A
|
||||
sweep anchored on a subject cannot find prose that discusses the subject by
|
||||
pronoun, by paraphrase, or across a line break — which is the same wrap defect
|
||||
`/about/` already recorded for `as in\n * progress`. **Sweep the vocabulary, not
|
||||
only the subject.** Re-run unanchored, on the stage words themselves:
|
||||
|
||||
```
|
||||
$ git grep -nIE 'commenced (in )?August 2026|in progress|the arc\b|long-term (arc|narrative)|endpoint|newly commenced|not yet held|nearing completion|built toward' \
|
||||
-- docs/ src/ scripts/ ':!docs/reference' | grep -v <strike-notice terms>
|
||||
→ every survivor is a strike notice or an unrelated sense of "endpoint" (API, S3)
|
||||
```
|
||||
|
||||
**And `docs/reference/adrio-designations.md` carried three claims asserting the
|
||||
struck §4 row** — *"the designation §4 records as the practice's stated goal"*,
|
||||
*"is Pouya's own stated goal and has a §4 row"*, *"not that he has **commenced**
|
||||
Q.Arb"* — in the file an implementer opens to write designation copy. The
|
||||
2026-08-29 sweep excluded `docs/reference/` on the reasoning that it holds
|
||||
sourced extracts. **That reasoning is half right:** the quotations are evidence
|
||||
and must not be touched; the *commentary around them* is this repo's own voice
|
||||
and goes stale like any other. Corrected without touching an extract.
|
||||
|
||||
**The gloss lens earned itself on `/med-arb/`.** The page quoted ADRIC
|
||||
accurately — *"requires a high level of practitioner competence to do
|
||||
successfully"* — headed the next section *"Med-arb asks one neutral to be
|
||||
competent at both"*, and answered it with the two held designations. **ADRIC
|
||||
answers its own sentence with a different designation**: the same 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 borrowed a third party's competence
|
||||
standard and supplied an answer that party does not give — **by adjacency, which
|
||||
is why no claim in it was individually false.** Heading and lede rewritten to
|
||||
state what the practice holds and offers, with no competence proposition.
|
||||
|
||||
**Two register corrections, both about what a stamp means.** (1) The Q.Arb row
|
||||
stamped `[verified 2026-08-29 — Pouya]` over the acquisition date **in the same
|
||||
cell that says the register cannot vouch for it**. The stamp is now split:
|
||||
status `[verified]`, date `[Pouya's stated basis 2026-08-29]` — the device §4
|
||||
already uses for the commercial-arbitration proposition. (2) Q55's disposition
|
||||
read *"the site is correct either way"*. It is not: it is **faithful to his most
|
||||
recent instruction**, which is a different thing, and §4's premise is that
|
||||
`[verified — Pouya]` establishes what he reported rather than the fact.
|
||||
|
||||
**`/about/`'s replacement paragraph was wrong a second time.** Round 1 struck
|
||||
*"The matters I take are commercial"* (no §4 row). The replacement opened *"The
|
||||
subject matter runs across…"*, which swaps a scope claim for a **coverage**
|
||||
claim — also unrowed, and a bare present-tense indicative in §Background, the
|
||||
one section where a reader defaults to reading history. It now reads *"I accept
|
||||
appointments in six areas"*, which is exactly what Q35 grants: an area may be
|
||||
named where he can competently accept an appointment **and the page frames it as
|
||||
positioning, not claimed history.**
|
||||
|
||||
**One finding declined, with the reason recorded in the file.** The audit held
|
||||
that the ground which struck the biography sentence should also reach
|
||||
`/about/`'s hero — *"I mediate commercial disputes"*. It does not: the struck
|
||||
sentence was a **universal** (nothing he takes is non-commercial — an exclusion
|
||||
§4 has no row for); this one is **existential** (he mediates commercial
|
||||
disputes — narrower than the §4 Offerings mediation row grants, and excluding
|
||||
nothing). A claim narrower than its row is safe; a claim the row does not reach
|
||||
is not.
|
||||
|
||||
**Smaller round-2 corrections:** *"put to ADRIC's membership"* → *"presented to
|
||||
the membership at ADRIC's 2019 annual conference"* (the extract says
|
||||
**presented**; *put to* connotes submission for decision); `docs/01`'s Indigenous
|
||||
paragraph, where *"for a Q.Med on the C.Med-Arb pathway"* sat **outside** the
|
||||
quotation marks in `docs/01`'s own voice while a parenthetical this change set
|
||||
added called it *"the brief's framing, quoted"* — a quotation boundary the marks
|
||||
do not draw, plus a struck stage form; two cutover-checklist bullets that ended
|
||||
mid-sentence; a build-guard message naming a paragraph that had been deleted;
|
||||
`CredentialRow`'s claim that the fourth slot *"got SHORTER"* (21 → 25
|
||||
characters — it got longer, and the conclusion survives on the other half of the
|
||||
sentence); and a `CREDENTIAL_ROW` JSDoc orphaned by the constant inserted above
|
||||
it — the second detached-JSDoc defect in this change set, both caused by
|
||||
inserting a declaration between a comment and its subject.
|
||||
|
||||
**`adversarial-reviewer`'s round-2 pass found five defects in the round-1 fixes
|
||||
to `check:claims`, and two of them made the gate worse than before:**
|
||||
|
||||
1. **The dedup dropped real breaches.** Keying a `Set` on the matched text meant
|
||||
`He is a lawyer.` twice on one page reported **once**, count 1. Before the
|
||||
two-view change it reported 2. **The check was truncating its own output** —
|
||||
the one thing `CLAUDE.md` says a check must never do — and the report is what
|
||||
an operator acts on. Now counted per occurrence, published view authoritative.
|
||||
2. **The collapsed view leapt paragraph boundaries**, and the comment claimed it
|
||||
could not. Block tags collapsed to `' . '`, but the windows are written
|
||||
`[^<]` and collapsed text contains no `<`, so they were bounded by nothing:
|
||||
an `<h2>Q.Arb</h2>` joined to a paragraph reading *"took effect on 1 March
|
||||
2025"* — approved copy that ships. Writing `[^.<]` instead would have
|
||||
reintroduced the sentence-crossing the collapsed view exists for. **A
|
||||
sentinel separates the two jobs**: block boundaries become `\uE000` (Private
|
||||
Use Area, not a control character — `no-control-regex` bars `\u0000`), and
|
||||
every window reads `[^<\uE000]`, bounded by `<` in one view and the sentinel
|
||||
in the other.
|
||||
3. **The self-test read only the published view**, so the entire false-positive
|
||||
surface of the new view was untested *by construction* — the loosening
|
||||
happened precisely where the instrument check could not look.
|
||||
4. **Both patterns advertised coverage they lacked.** The `rule` line printed on
|
||||
failure named *pending*, which the regex had never matched; `working toward`
|
||||
— the exact phrase struck from `/med-arb/` — was missed; and
|
||||
`c-med-arb-struck`'s trailing `\b` still blocked `C.Med-Arbitrators` and
|
||||
`C.Med-Arbitration` after the round-1 repair moved it. The `once|when` repair
|
||||
**narrowed rather than closed**: it still fired on *"when I hold a
|
||||
preliminary conference"*, because `hold` takes any object. The hold-verb must
|
||||
now take the designation, and that alternative had to move to the top level —
|
||||
as a member of the stage group it swallowed the anchor and the self-test
|
||||
caught it.
|
||||
5. **`publishedText`'s JSDoc was detached** by the block inserted above it —
|
||||
**the same defect this entry records catching on `designationLine`**, in the
|
||||
same change set, by the same mechanism.
|
||||
|
||||
**Proved rather than asserted.** Three probe pages injected into a real `dist/`:
|
||||
duplicates reported as **2 with both line numbers**; the paragraph-split approved
|
||||
copy **silent**; `<strong>Q.Arb</strong> — the pathway commenced` **caught**.
|
||||
|
||||
**Two more structural findings, both about drift the change set created:**
|
||||
|
||||
- **`AREAS_NAMED_IN_BIO`'s message was unreachable.** `PRACTICE_AREAS` is
|
||||
`as const`, so `.length` is the literal `6`; with the constant also literal
|
||||
`6`, a seventh area makes `7 !== 6` non-overlapping literals and `astro check`
|
||||
fails with **`ts(2367)`, which reads like lint noise** — and both deploy paths
|
||||
run `check` before the build, so the message never renders. One token
|
||||
(`: number`) fixes it. Probed: with a seventh area, zero `ts(2367)` and the
|
||||
build throws the intended sentence.
|
||||
- **`CREDENTIAL_ROW` hand-types the designations.** Harmless while the fourth
|
||||
slot held a *stage* (an independent fact); on 2026-08-29 it became a duplicate
|
||||
of `designations[1]`, and nothing connected them — so a third designation
|
||||
would reach four surfaces and silently miss the credential row. The
|
||||
map-not-index fix celebrated in `schema.ts` and `docs/04` had left this copy
|
||||
alone. Now pinned by `_DesignationRowParity`, a type-level assertion in
|
||||
`_MembershipParity`'s shape; probed by renaming one value, which fails
|
||||
`npm run check` with `ts(2344)`.
|
||||
|
||||
**And a scope question that is Pouya's, opened as Q56.** §4 rows arbitration
|
||||
scoped commercial three times and leaves the mediation row unscoped, while the
|
||||
site says *"Commercial Mediation"*, *"I mediate commercial disputes"* and
|
||||
`Service.name: "Commercial mediation"` — and `/practice/insurance/` offers
|
||||
mediation in insured-versus-insurer SABS matters, which are not commercial.
|
||||
Nothing is false (narrower than a row is safe), but the two halves cannot both
|
||||
be the whole picture. **This change set had newly written the claim onto
|
||||
`/med-arb/`; that sentence is removed pending his answer**, and the page's own
|
||||
med-arb scoping — which §4 does row — is untouched.
|
||||
|
||||
**D19 trim applied to this change set's own comments:** `Pill.astro` 16 lines →
|
||||
5, `about.astro`'s paragraph note 26 → 10, the `q-arb-as-a-stage` comment 24 →
|
||||
16. Each kept its live constraint and dropped the narrative of its own drafts.
|
||||
|
||||
⚠️ **THE LOOP STOPS HERE — D19.** Round 1 reviewed the change; round 2 reviewed
|
||||
the fixes, and again a majority of its findings were defects *in* round 1's
|
||||
fixes. That is why round 2 exists and it is also why round 3 does not.
|
||||
|
||||
### Verification — 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, 25 approved strings)
|
||||
```
|
||||
|
||||
12/12 pages: one `<h1>`, no skipped heading level, no adjacent duplicate ground.
|
||||
`/about/` biography **404 words** — back inside `docs/01`'s 400–600 after the
|
||||
deleted paragraph took it to 355. The `AREAS_NAMED_IN_BIO` guard was probed by
|
||||
setting it to 5: build fails with the intended message.
|
||||
|
||||
### Open after this entry
|
||||
|
||||
1. **Q55 — the Q.Arb acquisition date.** Needs one line from Pouya. Does not
|
||||
block; nothing published turns on it.
|
||||
2. **`/about/` has no dark band.** The arc section was its only `section-inverse`;
|
||||
the accent contact band still closes the page. Making the credentials section
|
||||
inverse would restore the rhythm and needs a contrast pass — **not done, because
|
||||
it is a design decision the ruling did not reach.**
|
||||
3. **R1 (licensure framing)** — unchanged and unaffected by anything here.
|
||||
|
||||
---
|
||||
|
||||
## 2026-08-30 (ac) — Pouya ratifies build step 5; ADR Chambers struck from the page and from the spec; and the pattern behind three shipped defects gets a named lens in `claims-auditor`
|
||||
|
||||
**Type:** ruling + correction. **Files:** `src/pages/arbitration.astro`,
|
||||
|
||||
@@ -282,7 +282,7 @@ an operator to delete the three records that authenticate outbound mail —
|
||||
under the heading "Never delete".
|
||||
|
||||
**A measurement is a claim about your instrument until you check the
|
||||
instrument.** This has now cost five times, and the shape is identical every
|
||||
instrument.** This has now cost six times, and the shape is identical every
|
||||
time: a number that looks like a finding, from a probe nobody validated.
|
||||
|
||||
- `timeout 60 ls "$DRIVE"` — **the command never ran.** `timeout` is not
|
||||
@@ -303,6 +303,13 @@ time: a number that looks like a finding, from a probe nobody validated.
|
||||
ladder is not being generated at all*, a shipped defect on every page. It is
|
||||
**density-corrected by spec**: a 192px file selected at `3x` correctly reports
|
||||
64. The files on disk were 64 / 128 / 192 all along.
|
||||
- **"10 distinct contexts" from `grep -roh '.\{50\}X.\{50\}' dist/ | sort -u`**
|
||||
— **`grep -o` takes NON-OVERLAPPING matches.** On minified HTML a page is a
|
||||
handful of very long lines, so an early window eats the characters a later one
|
||||
needs and occurrences vanish silently. A whole shipped sentence was missing
|
||||
from the list. **A `grep -o` window count is not an enumeration** — to count
|
||||
occurrences of a string, iterate every match position, or `grep -o` the bare
|
||||
string with no context window.
|
||||
|
||||
So before acting on a number: say what it is a number *of*; confirm the command
|
||||
actually ran and read its exit status; and check it against a second method that
|
||||
|
||||
+50
-25
@@ -81,8 +81,15 @@ the ceiling before a nav stops being scannable.
|
||||
## Deliberate omission: Indigenous engagement
|
||||
|
||||
The strategy brief (§III.4) rates Indigenous engagement, IBA, and consultation-
|
||||
breakdown mediation as *"strategically the most valuable single niche"* for a
|
||||
Q.Med on the C.Med-Arb pathway.
|
||||
breakdown mediation as *"strategically the most valuable single niche"*.
|
||||
|
||||
⚠️ **THAT SENTENCE USED TO CONTINUE "for a Q.Med on the C.Med-Arb pathway", AND
|
||||
BOTH HALVES WERE DEFECTIVE.** *"pathway"* is a struck stage form (§4, 2026-08-29),
|
||||
and the clause sat **outside** the quotation marks in `docs/01`'s own voice while
|
||||
a parenthetical called the whole thing *"the brief's framing, quoted"* — a
|
||||
quotation boundary the marks do not draw, which is the gloss defect inverted.
|
||||
Only the four quoted words come from the brief, and the brief is not in this
|
||||
repository (R14). The reasoning below never turned on either half.
|
||||
|
||||
There is no page for it at launch, on the following reasoning:
|
||||
|
||||
@@ -139,7 +146,11 @@ four audiences to its surface.
|
||||
stands; do not lift the phrase into copy** — it reached `/` once already.
|
||||
State the asymmetry instead: `docs/03` §The credential row. Infinity mark as the visual anchor.
|
||||
4. **Two practices.** Mediation and Arbitration cards → `/mediation/`, `/arbitration/`.
|
||||
Med-Arb named here as the long-term arc, linking to `/med-arb/`.
|
||||
Med-Arb named here, linking to `/med-arb/`. ⚠️ **This item read "named here as
|
||||
the long-term arc" until 2026-08-29.** There is no arc — C.Med-Arb is struck
|
||||
(§4) — and Med-Arb has had its own §4 Offerings row since 2026-08-27 (Q35),
|
||||
so it is named as a **present offering**. `index.astro` cited this item as
|
||||
amended before it was; both are correct now.
|
||||
5. **Practice areas.** Six-card grid → `/practice/*`. This is the most important
|
||||
block on the page for search, because it distributes authority to the pages
|
||||
that can actually rank.
|
||||
@@ -167,10 +178,13 @@ to an appointment. This page carries the verifiable record.
|
||||
engineering, operating a company — told as one arc rather than three lists.
|
||||
3. **Credentials**, structured and scannable: designations, education,
|
||||
certifications, memberships. Every line from `AGENTS.md` §4 Verified.
|
||||
4. **The credentialing arc.** Q.Med held → Q.Arb **commenced August 2026** →
|
||||
C.Med-Arb as the
|
||||
endpoint. The brief (§V) treats the arc itself as part of the story; say so
|
||||
openly rather than implying a finished state.
|
||||
4. ~~**The credentialing arc.**~~ ⚠️ **STRUCK 2026-08-29 — Pouya, and the
|
||||
section is deleted from the page, not rewritten.** *"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 item had no
|
||||
subject. **Do not restore it from this outline or from the brief (§V), which
|
||||
treated the arc as part of the story.** What it carried belongs in item 3,
|
||||
which is a list of held things.
|
||||
5. **Languages and cross-cultural practice.**
|
||||
6. **Speaking and publications.** Omit the section entirely until there is
|
||||
something in it. An empty "Speaking" heading is worse than no heading.
|
||||
@@ -228,7 +242,9 @@ an *agreement* settles, not what he promises.
|
||||
|
||||
### `/arbitration/`
|
||||
|
||||
**Job:** the same, for arbitration — and to state the Q.Arb position honestly.
|
||||
**Job:** the same, for arbitration. *(This read "and to state the Q.Arb
|
||||
position honestly" until 2026-08-29; Q.Arb is held and there is no position to
|
||||
state.)*
|
||||
**Search intent:** `sole arbitrator Ontario`, `expedited arbitration Canada`,
|
||||
`documents-only arbitration`.
|
||||
|
||||
@@ -246,17 +262,17 @@ an *agreement* settles, not what he promises.
|
||||
edition date (1 March 2025) is published on the page because ADRIC publishes
|
||||
one.
|
||||
4. Awards — form, reasoning, timing.
|
||||
5. **Credentialing status, stated plainly.** The Q.Arb pathway **commenced
|
||||
August 2026**; the page says so in those words. *"In progress" was the
|
||||
wording here until 2026-08-28 and it is barred — `docs/06`'s own cutover
|
||||
checklist says "§4's wording, not the looser 'in progress'", and this is the
|
||||
spec for the page that has to get it right.* **What is available now is all three forms — sole,
|
||||
party-appointed and co-arbitration** — and `AGENTS.md` §4 Offerings carries a
|
||||
row for each `[verified 2026-08-26 — Pouya]`. The page states that alongside
|
||||
the credentialing stage: Q.Arb commenced August 2026, C.Med-Arb is the
|
||||
endpoint. §4 Offerings: **neither half may be dropped.** Honesty here is a
|
||||
differentiator, not a weakness — and misstating it in either direction is a
|
||||
conduct problem.
|
||||
5. ~~**Credentialing status, stated plainly.**~~ ⚠️ **STRUCK 2026-08-29 —
|
||||
Pouya. Q.Arb is HELD, and §4's paired-disclosure condition dissolved with the
|
||||
stage it required.** *"It existed only because Q.Arb was in progress. There
|
||||
is no stage left to disclose."* The page's whole credentialing-stage section
|
||||
is deleted, its `<h1>` no longer reads *"Available now, and open about the
|
||||
stage"*, and **no residue of the condition may be reintroduced** — a page
|
||||
that offers arbitration and then reaches for something qualifying to say is
|
||||
reproducing it from memory. **What survives:** all three forms — sole,
|
||||
party-appointed and co-arbitration — are offered now, with an `AGENTS.md` §4
|
||||
Offerings row for each `[verified 2026-08-26 — Pouya]`, and the scope is
|
||||
**commercial** (Q39, Pouya's own choice, never part of this condition).
|
||||
*(This paragraph read "(co-arbitration, co-arbitration)" until 2026-08-26 —
|
||||
edited without being re-read — and then carried a caveat against Q36 for
|
||||
several hours after Q36 closed. Both are recorded because the pattern is the
|
||||
@@ -272,8 +288,8 @@ is "Mediator".
|
||||
|
||||
### `/med-arb/`
|
||||
|
||||
**Job:** own a term few Canadian neutrals explain well, and frame the C.Med-Arb
|
||||
endpoint.
|
||||
**Job:** own a term few Canadian neutrals explain well. *(This read "and frame
|
||||
the C.Med-Arb endpoint" until 2026-08-29; C.Med-Arb is off the site.)*
|
||||
**Search intent:** `med-arb Canada`, `what is med-arb`, `arb-med`.
|
||||
|
||||
1. What Med-Arb is; how it differs from Arb-Med.
|
||||
@@ -295,17 +311,26 @@ endpoint.
|
||||
with no §4 row.* Three are drafted for his approval in **Q54**; the section is
|
||||
incomplete until he rules.
|
||||
3. When it fits and when it does not.
|
||||
4. The C.Med-Arb designation and why it is the practice's stated endpoint.
|
||||
4. ~~The C.Med-Arb designation and why it is the practice's stated endpoint.~~
|
||||
⚠️ **STRUCK 2026-08-29 — Pouya. C.Med-Arb is out entirely, and this is a
|
||||
deliberate deviation from the strategy brief**, which made it *"the explicit
|
||||
long-term professional narrative"*. His reasoning: *"Pouya holds Q.Med and
|
||||
Q.Arb, which is what med-arb requires. The page says he conducts med-arb and
|
||||
stops."* The section is **rewritten, not edited** — it earned its credibility
|
||||
from an incomplete credential and now says what med-arb demands of one
|
||||
neutral and that he holds both designations.
|
||||
5. **The ADRIC Med-Arb Rules**, which this spec did not mention and which exist:
|
||||
a published rule set, put to ADRIC's membership in 2019, drafted for domestic
|
||||
a published rule set, presented to ADRIC's membership at its 2019 annual conference, drafted for domestic
|
||||
commercial disputes and designed to work with its Mediation and Arbitration
|
||||
Rules. Sourced: `docs/reference/adric-rules.md` Finding 2. Quote ADRIC's own
|
||||
framing rather than paraphrasing it, and **keep its superlatives inside the
|
||||
quotation marks** — Finding 5 lists the two not to lift.
|
||||
|
||||
This page is a strong candidate for the best-performing page on the site.
|
||||
Search demand exists, competition is thin, and it maps exactly to the brand's
|
||||
long-term narrative.
|
||||
Search demand exists and competition is thin. *(This closed "and it maps exactly
|
||||
to the brand's long-term narrative" — the C.Med-Arb narrative struck thirteen
|
||||
lines above on 2026-08-29. The two reasons that survive are the two that were
|
||||
ever measurable.)*
|
||||
|
||||
### `/practice/` — index
|
||||
|
||||
|
||||
+57
-33
@@ -79,23 +79,31 @@ detect padding instantly and discount everything after it.
|
||||
|
||||
The shape of the bullet still stands, so here is a sentence that fits it and
|
||||
clears the register: *"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."* **"in commercial matters" is not
|
||||
appointments **in commercial matters**."* ⚠️ **THE SECOND SENTENCE IS STRUCK
|
||||
(2026-08-29).** It read *"The Q.Arb **pathway** commenced in August 2026;
|
||||
C.Med-Arb is the endpoint"*; Q.Arb is held, C.Med-Arb is off the site, and §4's
|
||||
paired-disclosure condition that required a second sentence at all is
|
||||
dissolved. **The limit this bullet names is now the SCOPE, not the stage** —
|
||||
which is the durable half. **"in commercial matters" is not
|
||||
optional** — every §4 Offerings arbitration row is scoped commercial, family
|
||||
arbitration has its own NOT OFFERED row, and §4's NOT-NEGOTIABLE boundary
|
||||
records the unscoped class form as the struck universal (Q39). This model
|
||||
sentence was unscoped until 2026-08-28 while the shipped page it feeds was
|
||||
scoped; found by `claims-auditor` on re-audit, one file over from the same
|
||||
defect fixed in `docs/04` earlier the same day. **"Pathway", never "designation"** — a *designation* that
|
||||
"commenced in August 2026" reads as in force since then, i.e. **held**, which
|
||||
§4 Forbidden bars outright. This model sentence said "designation" until
|
||||
2026-08-28 and it is copy an implementer is told to lift; found by
|
||||
`claims-auditor`. The limit being named is the **stage of the arc**, stated plainly —
|
||||
Pouya's instruction is that being open about it is the differentiator, so do
|
||||
not hedge it into vagueness and do not drop it. (**No tribunal-secretary
|
||||
work** — D14
|
||||
removed the rate and bars offering it; see `docs/07-fees.md`.) Precision about
|
||||
what you cannot yet do makes the rest believable.
|
||||
defect fixed in `docs/04` earlier the same day.
|
||||
|
||||
⚠️ **TEN LINES WERE DELETED HERE ON 2026-08-30, AND THE DELETION IS THE
|
||||
POINT.** They read *"'Pathway', never 'designation'"*, cited the **struck**
|
||||
Forbidden row as live, instructed that *"the limit being named is the stage of
|
||||
the arc, stated plainly"*, and closed *"Precision about what you cannot yet do
|
||||
makes the rest believable."* Every one of those directs an implementer to
|
||||
write the form §4 now bars — **eleven lines below this bullet's own strike
|
||||
notice**, so one bullet said both things. The Q25 shape, in the copy deck an
|
||||
implementer is told to lift verbatim. **The 2026-08-29 sweep missed it because
|
||||
`git grep -nE 'Q\.?Arb'` is line-anchored and not one of those ten lines
|
||||
contained the string.** Found by `claims-auditor` on the round-2 audit.
|
||||
(**No tribunal-secretary work** — D14 removed the rate and bars offering it;
|
||||
see `docs/07-fees.md`.)
|
||||
- Plain words over Latin. "Without prejudice" survives because it is a term of
|
||||
art; *inter alia* does not.
|
||||
|
||||
@@ -229,17 +237,18 @@ session that wrote them. Consume the constant on any page that needs the
|
||||
sentence. Do not retype it, do not paraphrase it, and do not quote a variant of
|
||||
it in a spec.
|
||||
|
||||
Fourth slot where the layout has one: **Q.Arb — commenced August 2026.** Use
|
||||
that wording, not "in progress": §4 pins it, and the weaker form drifts toward
|
||||
"nearly complete", which §4 Forbidden bars outright.
|
||||
Fourth slot where the layout has one: **`Q.Arb` over `ADRIC / ADRIO designation`**
|
||||
— the label is byte-identical to the Q.Med slot's, because the two render side by
|
||||
side and any difference reads as a distinction being drawn. ⚠️ **AMENDED 2026-08-29.** It read *"Q.Arb — commenced August
|
||||
2026"*, and every stage form — "commenced", "in progress", "pathway", "not yet" —
|
||||
is now barred: Q.Arb is **held** (`AGENTS.md` §4), so a stage word understates a
|
||||
held credential. **The acquisition date is recorded in §4 and is not published.**
|
||||
|
||||
**On the home page the fourth slot IS used, and it is not optional there.**
|
||||
`docs/01` §`/` says "Three slots"; §4's paired-disclosure condition is the higher
|
||||
authority and requires that wherever the site offers arbitration it "states
|
||||
plainly" the stage of the arc. `/` says *arbitrator* in its opening sentence, so
|
||||
the stage belongs on the same page rather than only in the footer. Rendered as
|
||||
value `Q.Arb` over label `Commenced August 2026` — the same wording, with the
|
||||
em-dash carried by the layout instead of by the string.
|
||||
**The fourth slot is no longer MANDATORY anywhere.** It was, on `/`, under §4's
|
||||
paired-disclosure condition — that page says *arbitrator* in its opening
|
||||
sentence and the stage had to appear beside the offering. The condition is
|
||||
dissolved. `/` keeps the slot because §4's substitution principle wants a fourth
|
||||
credential where the layout has one, not because anything requires it.
|
||||
|
||||
The substitution principle (`AGENTS.md` §4): wherever the design wants a "how
|
||||
many", substitute a longer-arc credential. These are all true at launch and stay
|
||||
@@ -269,23 +278,31 @@ redrawing the loop into a line.* First person: "my mark", not "our mark".
|
||||
as one arc, not three lists: a JD and active litigation exposure; a parallel
|
||||
career in machine learning and infrastructure engineering; a company run
|
||||
alongside the practice — §4's wording; "alongside both" was a concurrency claim
|
||||
the register does not make. The arc is the point — 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.
|
||||
the register does not make.
|
||||
|
||||
The designation names expand as **Qualified Mediator**, **Qualified Arbitrator**
|
||||
and **Chartered Med-Arbitrator** — ADRIO's own forms, sourced in
|
||||
`docs/reference/adrio-designations.md`. Never "Chartered Mediator-Arbitrator".
|
||||
⚠️ **THE CREDENTIALING ARC IS STRUCK (2026-08-29, Pouya), AND SO IS `/about/`'s
|
||||
ARC SECTION.** This paragraph required *"the credentialing pathway from Q.Med
|
||||
through Q.Arb to C.Med-Arb… stated openly, with Q.Arb described as commenced
|
||||
August 2026"*. Q.Arb is held; C.Med-Arb is off the site; there is no pathway.
|
||||
**The three-track story stays** — law, engineering, a company — because that arc
|
||||
is about his working life, not about a credential. Only the credentialing arc
|
||||
goes.
|
||||
|
||||
The designation names expand as **Qualified Mediator** and **Qualified
|
||||
Arbitrator** — ADRIO's own forms, sourced in
|
||||
`docs/reference/adrio-designations.md`. *(**Chartered Med-Arbitrator** was here
|
||||
too; the designation is real and stays in `AGENTS.md` §11 as a definition, but
|
||||
nothing on the site names it.)* Never "Chartered Mediator-Arbitrator".
|
||||
|
||||
Omit any section that would be empty. No "Speaking" heading until there is a
|
||||
talk to list.
|
||||
|
||||
### Mediation / Arbitration / Med-Arb
|
||||
Procedural, specific, unembellished. Name the rules. Describe the formats. State
|
||||
what a party should expect to do and when. On `/arbitration/`, state the Q.Arb
|
||||
position in plain terms — what is available now versus what follows designation.
|
||||
what a party should expect to do and when. *(This closed with "On
|
||||
`/arbitration/`, state the Q.Arb position in plain terms — what is available now
|
||||
versus what follows designation." Struck 2026-08-29: Q.Arb is held, and nothing
|
||||
follows designation.)*
|
||||
|
||||
`/med-arb/` addresses the procedural-fairness objection directly: the same
|
||||
neutral who heard a party's confidential caucus later decides the matter. Do not
|
||||
@@ -424,7 +441,14 @@ Drafted by Claude, **every word reviewed by Pouya before publication**:
|
||||
grepped. **Keep the source's superlatives inside the quotation marks**
|
||||
- [ ] No superlatives and no guarantee language
|
||||
- [ ] No claim or implication of legal licensure anywhere (D13)
|
||||
- [ ] Q.Arb described as commenced August 2026, never as held or nearly complete
|
||||
- [ ] Q.Arb described as **held** — `Q.Arb (ADRIC / ADRIO)`, no acquisition
|
||||
date, and never as "commenced", "in progress", "a pathway" or "not yet"
|
||||
(amended 2026-08-29). `npm run check:claims` enforces the **stage words**
|
||||
and a **date near `Q.Arb`** on `dist/`. It cannot catch a stage expressed
|
||||
without naming the designation — the struck h1 "Available now, and open
|
||||
about the stage" matches nothing — and that gap is `claims-auditor`'s to
|
||||
close, not this checklist's
|
||||
- [ ] **C.Med-Arb appears nowhere** — struck entirely 2026-08-29
|
||||
- [ ] Nothing implies a firm, a team, or offices that do not exist
|
||||
- [ ] Contact page states that an inquiry creates no retainer and no
|
||||
mediator–party relationship
|
||||
|
||||
+12
-4
@@ -105,16 +105,24 @@ JSON-LD only. Validate against Google's Rich Results Test before cutover.
|
||||
|
||||
| Type | Where | Notes |
|
||||
|---|---|---|
|
||||
| `Person` | `/about/`, referenced site-wide | **Emitted:** `name`, `url`, `jobTitle`, `description`, `alumniOf` (Bond University), `knowsLanguage` (en, fa), `hasCredential` (Q.Med), `sameAs` (LinkedIn), `email`, `image`. **Emitted on `/about/` only:** `memberOf` — the four §4 memberships as `Organization` nodes (Q53, ruled 2026-08-28). `/` shows no memberships, so its Person node omits it: structured data represents the page it sits on. **Withheld:** `worksFor` — Q49(b) declined the row 2026-08-28 and Pouya confirmed the reading 2026-08-29, so it is settled rather than pending; `provider → Person → worksFor` would assert a same-entity claim §4 does not row. *(This enumeration listed `worksFor` as emitted while the same cell said it was withheld, and omitted `url` and `email`, which are — wrong in both directions. The enumeration is the part an implementer copies. Found by `adversarial-reviewer`.)* **CHANGED 2026-08-28 — Q47.** This row read *"`jobTitle` = 'Director of Firm Operations'; omit `worksFor`"*, which put the boutique title on a node whose `url` is this ADR practice's `/about/` — so a consumer could attach it to this entity. Pouya's ruling reframes the field: `jobTitle` describes **this practice**, not the boutique role, which D16 keeps unnamed. The visible role line is unchanged and still reads "Director of Firm Operations at a Toronto litigation and ADR boutique". **THE VALUE IS `PRACTICE_JOB_TITLE` IN `src/data/site.ts` AND THIS ROW DOES NOT RESTATE IT** — §7's rule, applied to a string with a live revert trigger on it: this row carried the literal text for one pass, and `adversarial-reviewer` noted it would go stale the moment the constant moved. Cite, do not copy. **`worksFor` IS WITHHELD** — set for one pass under Q47, then reverted: `ProfessionalService.provider` is this Person, so `provider → Person → worksFor` asserts the same-entity claim `schema.ts` explicitly declines, and §4 says "alongside the practice" where the ruling says "operates through". **`memberOf` is emitted** — see the sentence above; Q53 closed 2026-08-28. *(This cell asserted `memberOf` was both emitted and withheld for one pass, which is the defect it already records itself being caught for on `worksFor`, in the opposite direction. The enumeration is the part an implementer copies.)* See `src/data/schema.ts` |
|
||||
| `Person` | `/about/`, referenced site-wide | **Emitted:** `name`, `url`, `jobTitle`, `description`, `alumniOf` (Bond University), `knowsLanguage` (en, fa), `hasCredential` (**Q.Med, Q.Arb** — both, since 2026-08-29), `sameAs` (LinkedIn), `email`, `image`. **Emitted on `/about/` only:** `memberOf` — the four §4 memberships as `Organization` nodes (Q53, ruled 2026-08-28). `/` shows no memberships, so its Person node omits it: structured data represents the page it sits on. **Withheld:** `worksFor` — Q49(b) declined the row 2026-08-28 and Pouya confirmed the reading 2026-08-29, so it is settled rather than pending; `provider → Person → worksFor` would assert a same-entity claim §4 does not row. *(This enumeration listed `worksFor` as emitted while the same cell said it was withheld, and omitted `url` and `email`, which are — wrong in both directions. The enumeration is the part an implementer copies. Found by `adversarial-reviewer`.)* **CHANGED 2026-08-28 — Q47.** This row read *"`jobTitle` = 'Director of Firm Operations'; omit `worksFor`"*, which put the boutique title on a node whose `url` is this ADR practice's `/about/` — so a consumer could attach it to this entity. Pouya's ruling reframes the field: `jobTitle` describes **this practice**, not the boutique role, which D16 keeps unnamed. The visible role line is unchanged and still reads "Director of Firm Operations at a Toronto litigation and ADR boutique". **THE VALUE IS `PRACTICE_JOB_TITLE` IN `src/data/site.ts` AND THIS ROW DOES NOT RESTATE IT** — §7's rule, applied to a string with a live revert trigger on it: this row carried the literal text for one pass, and `adversarial-reviewer` noted it would go stale the moment the constant moved. Cite, do not copy. **`worksFor` IS WITHHELD** — set for one pass under Q47, then reverted: `ProfessionalService.provider` is this Person, so `provider → Person → worksFor` asserts the same-entity claim `schema.ts` explicitly declines, and §4 says "alongside the practice" where the ruling says "operates through". **`memberOf` is emitted** — see the sentence above; Q53 closed 2026-08-28. *(This cell asserted `memberOf` was both emitted and withheld for one pass, which is the defect it already records itself being caught for on `worksFor`, in the opposite direction. The enumeration is the part an implementer copies.)* See `src/data/schema.ts` |
|
||||
| `ProfessionalService` | Home | `areaServed` Toronto/Ontario, `serviceType` **Mediation / Commercial arbitration / Mediation-arbitration (med-arb)** — *scoped 2026-08-28 on `claims-auditor`'s finding; this row instructed the unscoped class form "Mediation/Arbitration" that Q39 struck and that `schema.ts` deliberately does not follow. Family arbitration carries prescribed training and has its own NOT OFFERED row, so unscoped "Arbitration" is the struck universal in a field nobody reads. Do not widen these strings without a §4 row to widen them from* — `provider` → Person, `priceRange` once `/fees/` is real. **Never `LegalService`** — schema.org defines it as a business providing legal advice and *representation*, which asserts in machine-readable form exactly what D13 bars and §4 Forbidden calls out |
|
||||
| `Service` | **`/mediation/`, `/arbitration/`, `/med-arb/`** and each practice page | `serviceType`, `provider` → Person, `areaServed`. **The Person node travels in the same `@graph`** so `provider: {'@id'}` resolves in one document rather than relying on a crawler joining two — `homeGraph`'s reasoning, applied. `serviceType` is scoped where §4 scopes it: *Commercial arbitration*, never a bare "Arbitration". No `BreadcrumbList` on the three — one hop from the root, no visible breadcrumb, and this spec requires the markup to match the visible one |
|
||||
| `Article` | Each article | `headline`, `description`, `datePublished`, `dateModified`, `author` → Person, `image` |
|
||||
| `BreadcrumbList` | All nested pages | Matches visible breadcrumbs |
|
||||
| `FAQPage` | `/for-parties/`, `/med-arb/` | Only where the visible page genuinely is Q&A. Never fabricate questions to farm a rich result |
|
||||
|
||||
**`hasCredential` must reflect reality.** Q.Med is held. Q.Arb is not. Marking an
|
||||
unheld credential as held in structured data is a misrepresentation that happens
|
||||
to be machine-readable.
|
||||
**`hasCredential` must reflect reality.** ⚠️ **Q.Med AND Q.Arb are both held as
|
||||
of 2026-08-29** (`AGENTS.md` §4) and the field carries both — it was Q.Med-only
|
||||
while Q.Arb was a commenced pathway. The rule is unchanged and cuts both ways:
|
||||
marking an unheld credential as held is a misrepresentation that happens to be
|
||||
machine-readable, and **omitting a held one understates the record in a field
|
||||
whose whole meaning is "holds"**. `personNode` maps `CREDENTIALS.designations`
|
||||
rather than indexing it, so a designation added to that constant reaches the
|
||||
graph automatically. **That links the CONSTANT to the graph, not §4 to the
|
||||
graph** — a designation added to §4 and not to `src/data/site.ts` still drifts
|
||||
silently, and no mechanism catches it. `src/data/schema.ts` states the condition
|
||||
in full; this sentence overstated it for one pass.
|
||||
|
||||
## Crawlability
|
||||
|
||||
|
||||
@@ -374,8 +374,14 @@ Then invalidate `/*`.
|
||||
question
|
||||
- [ ] No `TODO(pouya)` remains in any shipped page
|
||||
- [ ] No matter counts, rates, dollar figures, or testimonials anywhere
|
||||
- [ ] Q.Arb described as **commenced August 2026** everywhere it appears — §4's
|
||||
wording, not the looser "in progress"
|
||||
- [ ] Q.Arb described as **held** everywhere it appears — `Q.Arb (ADRIC /
|
||||
ADRIO)`, no acquisition date. **Every stage form is barred**: "commenced",
|
||||
"in progress", "pathway", "not yet" (amended 2026-08-29). `npm run
|
||||
check:claims` enforces the **stage words** and a **date near the
|
||||
designation**, on `dist/`, in both deploy paths. It cannot catch a stage
|
||||
expressed without naming the designation; that gap is `claims-auditor`'s to
|
||||
close, and it is stated in the pattern itself
|
||||
- [ ] **C.Med-Arb appears nowhere in `dist/`** — struck entirely 2026-08-29
|
||||
- [ ] `/fees/` carries the rates confirmed in D14 and `docs/07-fees.md`, or the page does not ship
|
||||
- [ ] Privacy policy matches the backend as actually built
|
||||
|
||||
|
||||
+11
-7
@@ -70,7 +70,7 @@ Three observations that drive the recommendation.
|
||||
## Where this practice should sit
|
||||
|
||||
**Not at the floor.** Pouya's stack — JD, an operating role inside a litigation
|
||||
and ADR boutique, Q.Med held, Q.Arb commenced, and a working engineering career —
|
||||
and ADR boutique, Q.Med and Q.Arb held, and a working engineering career —
|
||||
is not a junior generalist profile. Entering at roster rates would anchor him
|
||||
into SABS volume work and make the commercial rate very hard to raise later.
|
||||
Published rates are close to unrecoverable once set: raising them looks
|
||||
@@ -111,12 +111,16 @@ line was unscoped, and every §4 arbitration row is scoped commercial with famil
|
||||
arbitration separately NOT OFFERED — Q39's struck universal.)*
|
||||
*(This line previously read "sole appointments follow the Q.Arb designation",
|
||||
which understated the offering, and carried a caveat against a since-closed
|
||||
Q36.)* Whatever `/fees/` says about arbitration must state the Q.Arb stage
|
||||
plainly alongside it — §4 Offerings, "neither half may be dropped": the Q.Arb
|
||||
**pathway** commenced August 2026, with C.Med-Arb as the endpoint. *("pathway",
|
||||
not "designation" — a designation that commenced reads as held, which §4
|
||||
Forbidden bars. Corrected 2026-08-28 on `claims-auditor`'s finding.)* See
|
||||
`03-content-spec.md` for the wording.
|
||||
Q36.)*
|
||||
|
||||
⚠️ **`/fees/` HAS NO CREDENTIALING DISCLOSURE TO MAKE (amended 2026-08-29).**
|
||||
This paragraph required that whatever the page says about arbitration *"must
|
||||
state the Q.Arb stage plainly alongside it — §4 Offerings, 'neither half may be
|
||||
dropped'"*. **Q.Arb is held and that condition is dissolved.** `/fees/` is
|
||||
unbuilt (step 9), so this is the one place the amendment lands before the page
|
||||
exists rather than after — do not build the page against the struck form. `03-content-spec.md`'s
|
||||
model sentence is now the scope half only — the stage half was struck with the
|
||||
paragraph this one used to point at.
|
||||
|
||||
| Item | Fee |
|
||||
|---|---|
|
||||
|
||||
@@ -166,9 +166,11 @@ designation structure, not about Pouya.
|
||||
> FALSIFIED IT WAS ONE THIS FILE HAD ALREADY FETCHED.** It was headed *"the two
|
||||
> Chartered pages state a retention condition; the Q page does not"* and argued a
|
||||
> **Qualified-vs-Chartered** asymmetry. There are **three** Chartered pages. The
|
||||
> count was never run on `chartered-med-arbitrator-c-med-arb/` — the designation
|
||||
> §4 records as the practice's stated goal, and therefore the one most
|
||||
> load-bearing for Q48. Found by `claims-auditor`, 2026-08-28.
|
||||
> count was never run on `chartered-med-arbitrator-c-med-arb/` — at the time,
|
||||
> the designation §4 recorded as the practice's stated goal, and therefore the
|
||||
> one most load-bearing for Q48. Found by `claims-auditor`, 2026-08-28.
|
||||
> *(That §4 row was **struck 2026-08-29** — C.Med-Arb is off the site entirely.
|
||||
> The counting defect this paragraph records is unaffected.)*
|
||||
|
||||
Counted on the extracted text of **all four** designation pages:
|
||||
|
||||
@@ -220,8 +222,11 @@ both are quotable in principle.
|
||||
(*"best", "leading", "top-rated"*), and the reason given there is not only
|
||||
verifiability — it is that *"they read as insecure to the audience this site is
|
||||
for"*. A superlative does not stop being one because a third party said it first,
|
||||
and the credential arc does not need it: **"the designation this practice is built
|
||||
toward"** is Pouya's own stated goal and has a §4 row.
|
||||
and the copy did not need it. *(This sentence justified the superlative's
|
||||
removal by pointing at **"the designation this practice is built toward"** as
|
||||
"Pouya's own stated goal" with "a §4 row". **That row was struck 2026-08-29** and
|
||||
the phrase is off the site. The reason superlatives stay inside quotation marks
|
||||
is unchanged and never depended on it.)*
|
||||
|
||||
---
|
||||
|
||||
@@ -239,8 +244,10 @@ toward"** is Pouya's own stated goal and has a §4 row.
|
||||
|
||||
**Does not establish:**
|
||||
|
||||
- **Anything about Pouya.** Not that he holds Q.Med, not that he has commenced
|
||||
Q.Arb, not that he is a member of ADRIO. Those are §4 Verified rows and this
|
||||
- **Anything about Pouya.** Not that he holds Q.Med, not that he holds Q.Arb,
|
||||
not that he is a member of ADRIO. *(This read "not that he has **commenced**
|
||||
Q.Arb" until 2026-08-30 — a struck stage form surviving in the file an
|
||||
implementer opens to write designation copy.)* Those are §4 Verified rows and this
|
||||
file is not a substitute for one. The standard Pouya ratified is exactly this
|
||||
split: *"§11 Glossary is the source for DEFINITIONAL expansions; §4 remains
|
||||
the only source for claims about Pouya."*
|
||||
|
||||
+199
-16
@@ -177,14 +177,72 @@ const PATTERNS = [
|
||||
re: /\bS\.?\s?M\.?\s+Lawrence\b|\b07452218\b/gi,
|
||||
},
|
||||
{
|
||||
id: 'q-arb-as-held',
|
||||
rule: '§4 Forbidden — Q.Arb must never read as held, imminent, or nearly complete.',
|
||||
id: 'q-arb-as-a-stage',
|
||||
rule: '§4 — Q.Arb is HELD. It must never read as a stage, a pathway, or pending.',
|
||||
incident:
|
||||
'It commenced August 2026. The recurring drift is one word: docs/03 said ' +
|
||||
'the Q.Arb "designation commenced in August 2026" — which reads as in ' +
|
||||
'force since then, i.e. HELD — in copy an implementer is told to lift ' +
|
||||
'verbatim. Found by claims-auditor 2026-08-28. §4 requires "pathway".',
|
||||
re: /Q\.?\s?Arb\s+designation\b|\b(holds?|holding|awarded|conferred|earned|achieved)\s+(the\s+|a\s+)?Q\.?\s?Arb\b|Q\.?\s?Arb[^.<]{0,60}\b(nearly|almost) complete\b|Q\.?\s?Arb[^.<]{0,60}\bin progress\b/gi,
|
||||
'THIS PATTERN WAS INVERTED ON 2026-08-29 AND ITS PREDECESSOR IS GONE. It ' +
|
||||
'used to bar Q.Arb reading as HELD, because §4 recorded it as "commenced ' +
|
||||
'August 2026"; Pouya ruled it held (obtained July 2026, date NOT ' +
|
||||
'published), so every stage word now understates a real credential. The ' +
|
||||
'site carried the struck forms on six surfaces — an h1 reading "Available ' +
|
||||
'now, and open about the stage", a whole /arbitration/ section headed ' +
|
||||
'"Where I am in the arc", /about/\'s arc section, the footer strip, and ' +
|
||||
'both JSON-LD nodes. Publish "Q.Arb (ADRIC / ADRIO)" and nothing more.',
|
||||
/* ~50 characters either side, per Pouya's specification. The window stops at
|
||||
the next TAG boundary so it cannot leap a paragraph. It stopped at a
|
||||
sentence boundary too (`[^.<]`) until the fixture below proved that too
|
||||
tight: "Qualified Arbitrator. Newly commenced" splits the anchor from the
|
||||
stage word across a full stop, 22 characters apart, and that is precisely
|
||||
the copy this pattern exists for. The self-test caught the regression.
|
||||
|
||||
⚠️ THE ANCHOR MATCHES THE EXPANSION TOO, and it did not on the first
|
||||
draft. Tested against the nine strings this change set removed: it caught
|
||||
seven and MISSED "Qualified Arbitrator. Newly commenced — not held, and
|
||||
not nearing completion." — /about/'s own arc body, which never wrote the
|
||||
abbreviation. An abbreviation-only anchor cannot see copy that spells the
|
||||
designation out, and prose is exactly where it gets spelled out.
|
||||
|
||||
KNOWN LIMIT, stated rather than papered over: this cannot catch a stage
|
||||
expressed without naming the designation at all. The h1 it replaced —
|
||||
"Available now, and open about the stage" — matches nothing here and no
|
||||
regex over shipped HTML would catch it without firing on ordinary copy.
|
||||
That one is `claims-auditor`'s. */
|
||||
/* WHAT EACH ALTERNATIVE IS FOR, because none is obvious from the regex:
|
||||
(1) stage word after the designation, (2) before it, (3) an acquisition
|
||||
DATE near it — §4 records July 2026 and bars publishing it, and docs/03
|
||||
cited this script as enforcing that before it did (the Q22 shape) —
|
||||
(4) "once/when I hold it", which must take the designation as its object
|
||||
or it fires on "when I hold a preliminary conference".
|
||||
|
||||
THE ANCHOR MATCHES THE EXPANSION because `docs/03` authorises "Qualified
|
||||
Arbitrator" as publishable prose, and prose is where it gets spelled out.
|
||||
|
||||
KNOWN LIMIT, stated rather than papered over: this cannot catch a stage
|
||||
expressed without naming the designation. The h1 it replaced — "Available
|
||||
now, and open about the stage" — matches nothing here, and no regex over
|
||||
shipped HTML would catch it without firing on ordinary copy. That one is
|
||||
`claims-auditor`'s. */
|
||||
re: /(?:Q\.?\s?Arb|Qualified Arbitrator)\b[^<\uE000]{0,50}?\b(commenc\w*|in progress|pathway|not yet|not held|nearing completion|pending|working toward|under ?way)\b|\b(commenc\w*|in progress|pathway|not yet|not held|nearing completion|pending|working toward|under ?way)\b[^<\uE000]{0,50}?\b(?:Q\.?\s?Arb|Qualified Arbitrator)\b|(?:Q\.?\s?Arb|Qualified Arbitrator)\b[^<\uE000]{0,50}?\b(?:January|February|March|April|May|June|July|August|September|October|November|December)\s+20\d\d\b|\b(?:January|February|March|April|May|June|July|August|September|October|November|December)\s+20\d\d\b[^<\uE000]{0,50}?\b(?:Q\.?\s?Arb|Qualified Arbitrator)\b|\b(?:once|when)\s+(?:I|he)\s+(?:holds?|obtains?|receives?|completes?)\s+(?:it\b|the\s+)?(?:Q\.?\s?Arb|designation)\b/gi,
|
||||
},
|
||||
{
|
||||
id: 'c-med-arb-struck',
|
||||
rule: 'C.Med-Arb is out entirely — it appears on no page (Pouya, 2026-08-29).',
|
||||
incident:
|
||||
'It was the strategy brief\'s "explicit long-term professional narrative" ' +
|
||||
'and it shipped on /, /about/, /arbitration/ and /med-arb/ as the endpoint ' +
|
||||
'of a credentialing arc. Pouya dispensed with it: he holds Q.Med and ' +
|
||||
'Q.Arb, which is what med-arb requires. THE DESIGNATION IS STILL REAL and ' +
|
||||
'stays in AGENTS.md §11 as a definition — this bars naming it in shipped ' +
|
||||
'output, not knowing what it is. Barred in every spelling both ' +
|
||||
'institutions use, because the reinstatement risk is a well-meaning ' +
|
||||
'implementer reading the brief, not a typo.',
|
||||
/* ⚠️ THE LEADING \b AND THE MANDATORY DOT ARE BOTH LOAD-BEARING, and this
|
||||
pattern shipped without them for one run. `C\.?\s?Med-Arb` matched
|
||||
"ADRIC Med-Arb Rules" as "C Med-Arb" — the C of ADRIC, a space, then the
|
||||
real rule-set name — and failed the build on approved copy on /med-arb/.
|
||||
The abbreviation always carries the dot; "C Med-Arb" is not a form either
|
||||
institution uses. The fixture below pins it. */
|
||||
re: /\bC\.\s?Med-Arb(?:itrat(?:or|ion))?s?\b|\bChartered Med-Arb(?:itrat(?:or|ion))?s?\b/gi,
|
||||
},
|
||||
{
|
||||
id: 'struck-universal-q39',
|
||||
@@ -252,11 +310,36 @@ const FIXTURES = {
|
||||
'the best mediator',
|
||||
],
|
||||
'fabricated-founder': ['S. M. Lawrence', 'Co. № 07452218'],
|
||||
'q-arb-as-held': [
|
||||
'the Q.Arb designation',
|
||||
'holds Q.Arb',
|
||||
'Q.Arb is nearly complete',
|
||||
'Q.Arb, in progress',
|
||||
'q-arb-as-a-stage': [
|
||||
'The Q.Arb pathway commenced in August 2026',
|
||||
'Q.Arb is in progress',
|
||||
'Q.Arb — not yet held',
|
||||
'once I hold Q.Arb',
|
||||
'my Q.Arb pathway',
|
||||
/* The expansion, which the first draft of this pattern missed. */
|
||||
'Qualified Arbitrator. Newly commenced — not held, and not nearing completion.',
|
||||
/* The acquisition date, which no stage word caught. */
|
||||
'Q.Arb, obtained July 2026',
|
||||
'Q.Arb (ADRIC / ADRIO), held since July 2026',
|
||||
/* The `rule` line above named these and the regex never matched them —
|
||||
a documented control not covering what it is cited for (Q22's shape). */
|
||||
'Q.Arb is pending',
|
||||
'Q.Arb — the designation I am working toward',
|
||||
'the Q.Arb process is under way',
|
||||
],
|
||||
'c-med-arb-struck': [
|
||||
'C.Med-Arb is the endpoint',
|
||||
'Chartered Med-Arbitrator',
|
||||
'the ADRIC Chartered Med-Arb designation',
|
||||
/* The blend §11's own expansion invites, which the trailing \b in the
|
||||
first draft made invisible: `C\.Med-Arb\b` cannot match when the next
|
||||
character is a word char. */
|
||||
'the C.Med-Arbitrator designation',
|
||||
'Chartered Med-Arbitration',
|
||||
/* Plurals: the trailing \b survived the first repair and blocked these. */
|
||||
'Chartered Med-Arbitrators',
|
||||
'C.Med-Arbitrators',
|
||||
'C.Med-Arbitration',
|
||||
],
|
||||
'struck-universal-q39': [
|
||||
'Anyone may be appointed an arbitrator in Ontario',
|
||||
@@ -286,8 +369,26 @@ const FIXTURES = {
|
||||
inside <style>. */
|
||||
'<style>.hero-lede{line-height:var(--leading-body);color:var(--text-secondary)}</style>',
|
||||
'Software contracts, SLA and MSA breakdowns, data residency and processing, AI vendor diligence, IP and licensing.',
|
||||
'The Q.Arb pathway commenced in August 2026; C.Med-Arb is the endpoint.',
|
||||
'Chartered Med-Arbitrator',
|
||||
/* The approved replacements for the two negatives struck on 2026-08-29,
|
||||
which were 'The Q.Arb pathway commenced in August 2026; C.Med-Arb is
|
||||
the endpoint.' and a bare 'Chartered Med-Arbitrator'. Both are now
|
||||
breaches, and both moved to mustMatch. */
|
||||
'Q.Med (ADRIC / ADRIO) · Q.Arb (ADRIC / ADRIO)',
|
||||
/* The expansion in approved use — §11 definitional, no stage word. */
|
||||
'Q.Arb stands for Qualified Arbitrator, an ADRIC and ADRIO designation.',
|
||||
/* `once` and `when` were BARE stage words for one run, and all four of these
|
||||
compliant sentences failed the build. They now require a hold-verb. */
|
||||
'I hold Q.Med and Q.Arb, and I say so when a party asks',
|
||||
'Q.Arb (ADRIC / ADRIO), which is what parties look at when they appoint',
|
||||
'Once appointed, I hold Q.Arb and act as sole arbitrator',
|
||||
'Q.Arb, and when the parties agree the process runs on that basis',
|
||||
/* `hold` is a common verb on an arbitration page with a different object;
|
||||
the repair narrowed `once|when` rather than closing it, and this shipped
|
||||
past it for one run. The hold-verb must now take the designation. */
|
||||
'I hold Q.Arb, and when I hold a preliminary conference the parties attend',
|
||||
'I hold the Q.Med and Q.Arb designations through the ADR Institute of Canada and the ADR Institute of Ontario.',
|
||||
/* The false positive the first form of `c-med-arb-struck` produced. */
|
||||
'The ADR Institute of Canada publishes ADRIC Med-Arb Rules, developed by a task force.',
|
||||
'The ADRIC National Mediation Rules.',
|
||||
'adopted a new edition effective 1 March 2025',
|
||||
'Commercial arbitration in Ontario. I do not accept family arbitration.',
|
||||
@@ -364,6 +465,53 @@ function publishedText(html) {
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* THE SECOND VIEW, AND IT EXISTS BECAUSE `<strong>` DEFEATED THE GATE.
|
||||
*
|
||||
* `publishedText` leaves tags in place, and several patterns use `[^<]` as a
|
||||
* window boundary so they cannot leap a paragraph. That boundary also stops
|
||||
* them crossing INLINE markup: `<strong>Q.Arb</strong> — the pathway commenced
|
||||
* in August 2026` matched nothing, and this site sets `<strong>` in prose on
|
||||
* `/arbitration/` and `/`. Found by `adversarial-reviewer` 2026-08-30.
|
||||
*
|
||||
* So every page is scanned TWICE — once as published, once with inline tags
|
||||
* collapsed to a single space. Block-level tags collapse to a full stop
|
||||
* instead, which preserves the "do not leap a paragraph" property that made the
|
||||
* `[^.<]` window worth having in the first place. Matches are deduplicated by
|
||||
* the matched text, so a hit visible in both views is reported once.
|
||||
*/
|
||||
const BLOCK_TAGS =
|
||||
/<\/?(?:p|div|section|article|header|footer|nav|main|aside|h[1-6]|li|ul|ol|dl|dt|dd|table|tr|td|th|blockquote|figure|figcaption|br|hr)\b[^>]*>/gi;
|
||||
|
||||
/**
|
||||
* ⚠️ THE BLOCK BOUNDARY IS A SENTINEL (`\uE000`), NOT A FULL STOP, AND THAT IS
|
||||
* WHAT LETS ONE REGEX SERVE BOTH VIEWS.
|
||||
*
|
||||
* First attempt substituted `' . '` and the windows were written `[^<]` — but
|
||||
* collapsed text contains no `<` at all, so the window was bounded by nothing
|
||||
* and leapt three block boundaries to join an `<h2>Q.Arb</h2>` to a paragraph
|
||||
* reading "took effect on 1 March 2025" — approved copy that ships. Measured by
|
||||
* `adversarial-reviewer`.
|
||||
*
|
||||
* Writing the windows `[^.<]` instead would fix that and reintroduce the defect
|
||||
* the collapsed view exists for: a real sentence period inside one paragraph
|
||||
* ("Qualified Arbitrator. Newly commenced") must still be crossable.
|
||||
*
|
||||
* A sentinel separates the two jobs. `[^<\uE000]` is bounded by `<` in the
|
||||
* published view and by `\uE000` in the collapsed one; neither character occurs
|
||||
* in the other view, and a full stop bounds neither. Every window in PATTERNS
|
||||
* uses that class.
|
||||
*/
|
||||
const BLOCK_BOUNDARY = '\uE000'; // Private Use Area: never occurs in real content,
|
||||
// and unlike \u0000 it is not a control character, which `no-control-regex` bars.
|
||||
|
||||
function collapsedText(html) {
|
||||
return publishedText(html)
|
||||
.replace(BLOCK_TAGS, BLOCK_BOUNDARY)
|
||||
.replace(/<[^>]+>/g, ' ')
|
||||
.replace(/[ \t]+/g, ' ');
|
||||
}
|
||||
|
||||
function contextAt(text, index, length) {
|
||||
const from = Math.max(0, index - 55);
|
||||
const to = Math.min(text.length, index + length + 55);
|
||||
@@ -404,7 +552,15 @@ function selfTest() {
|
||||
);
|
||||
}
|
||||
for (const negative of FIXTURES.mustNotMatch) {
|
||||
const hits = scan(publishedText(negative), p.re);
|
||||
/* ⚠️ BOTH VIEWS. This read `publishedText` only, which left the entire
|
||||
false-positive surface of `collapsedText` untested — and that is
|
||||
exactly where the loosening happened: the collapsed view leapt three
|
||||
block boundaries onto approved copy and the instrument check could not
|
||||
see it. Found by `adversarial-reviewer`. */
|
||||
const hits = [
|
||||
...scan(publishedText(negative), p.re),
|
||||
...scan(collapsedText(negative), p.re),
|
||||
];
|
||||
if (hits.length > 0) {
|
||||
failures.push(
|
||||
`${p.id}: matched APPROVED copy — ${JSON.stringify(hits[0].match)} in ${JSON.stringify(negative)}`,
|
||||
@@ -483,8 +639,34 @@ console.log(` pages: ${pages.length}\n`);
|
||||
for (const p of PATTERNS) {
|
||||
const hits = [];
|
||||
for (const page of pages) {
|
||||
const text = publishedText(readFileSync(page, 'utf8'));
|
||||
const raw = readFileSync(page, 'utf8');
|
||||
/* ⚠️ DEDUPE BY OCCURRENCE COUNT, NEVER BY TEXT. The first version keyed a
|
||||
Set on the matched string, so `He is a lawyer.` twice on one page was
|
||||
reported ONCE and the count said 1 — the check truncating its own
|
||||
output, which is the one thing CLAUDE.md says a check must never do.
|
||||
Measured by `adversarial-reviewer` on a two-line fixture.
|
||||
|
||||
The published view is authoritative; the collapsed view only ever ADDS
|
||||
occurrences the tags hid, so a collapsed hit counts only where it exceeds
|
||||
what the published view already found for that same text. */
|
||||
const counted = new Map();
|
||||
const bump = (key) => {
|
||||
const n = (counted.get(key) ?? 0) + 1;
|
||||
counted.set(key, n);
|
||||
return n;
|
||||
};
|
||||
const publishedCounts = new Map();
|
||||
for (const [viewIndex, text] of [
|
||||
publishedText(raw),
|
||||
collapsedText(raw),
|
||||
].entries()) {
|
||||
for (const hit of scan(text, p.re)) {
|
||||
const key = hit.match.replace(/\s+/g, ' ').trim().toLowerCase();
|
||||
if (viewIndex === 0) {
|
||||
publishedCounts.set(key, (publishedCounts.get(key) ?? 0) + 1);
|
||||
} else if (bump(key) <= (publishedCounts.get(key) ?? 0)) {
|
||||
continue;
|
||||
}
|
||||
hits.push({
|
||||
page: rel(page),
|
||||
line: lineOf(text, hit.index),
|
||||
@@ -493,6 +675,7 @@ for (const p of PATTERNS) {
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (hits.length === 0) {
|
||||
console.log(` ok ${p.id}`);
|
||||
|
||||
@@ -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