Build and deploy / build-and-deploy (push) Failing after 4s
Pouya's rulings of 2026-09-03 (the last two D20 findings) and 2026-09-04 (the spam observation and four mitigations), in one change set. D20 finding 10 — med-arb is billed BY PHASE, each phase at the rates already published, so /fees/'s "Every figure is on this page" is true as written rather than narrowed. FEES.medArb is the single source; docs/07 §Med-arb carries the rule INTERIM against R5, and R5 now carries it back, because a derived price moves silently when a rate moves. D20 finding 13 — conduct undertaking (g), attested 2026-09-03, published as his wording verbatim on /legal/privacy/ and /contact/. The clause that raised the finding promised to DISCLOSE a conflicts check's outcome, which the attestation does not cover; it is struck. D20 now partitions 17 fixed / 2 refuted / 1 owed. Spam, 2026-09-04 — recorded in docs/05 §Observed abuse with the date and signature. A second honeypot (a decoy checkbox, own class, `hidden`, a label that tells a human not to tick it) and scoring that LABELS and never rejects: nothing is dropped, nothing new is stored, and only the operator notification changes. Q65 opens the WAF cost call. The timing floor could not be built: there is no timing check and never has been. docs/05 carries it struck, and every mechanism that would give a real per-visitor clock breaks zero-JS, handler-and-form-only, or D1. Q66. configure.mjs gains section 5 — a custom origin request policy forwarding CloudFront-Viewer-Address on /api/*. Written, dry-run against the live distribution, NOT applied. It reads the handler's own header reads and refuses to run if the whitelist omits one. And reading the live account to do it found four AGENTS.md §7 rows saying the intake backend was undeployed, two days after it went live — corrected against get-function-configuration, get-routes, get-stage, get-policy and the deployed zip, which was downloaded and read. Review: adversarial-reviewer only (claims-auditor is D20's cutover pass and has run). Round 1 five lenses, 56 findings, 7 blocking, 4 refuted by an independent refuter; round 2 four lenses, 36 findings, 33 of them defects in round 1's own repairs. Stopped at two per D19. Gates, exit status read for each: check 0 · build 0 (23 pages) · check:claims 0 · check:intake 0 · og:proof 0 · lint 0 · spam-score.test 39/39 with 6/6 mutations killed · router.test 30/30 · minifier grep 1 (clean) · lighthouse 0, no category below 95 · configure.mjs dry run 0, nothing written. Nothing deployed and nothing applied. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Md3GndFqWPzK78xAoebsg5
739 lines
41 KiB
Markdown
739 lines
41 KiB
Markdown
# 01 — Information architecture
|
||
|
||
Authority: `AGENTS.md` §3 D5 (full multi-page), §6, §5 (audience model).
|
||
Every claim in the copy outlines below must clear `AGENTS.md` §4.
|
||
|
||
---
|
||
|
||
## Why multi-page at all
|
||
|
||
The site being replaced is one scrolling page. One page can hold one title, one
|
||
meta description, one canonical URL, and one primary topic. It therefore gets
|
||
one shot at a search result.
|
||
|
||
The practice's target searches are not "Toronto mediator" — that term is owned by
|
||
retired judges with twenty years of name recognition, and the strategy brief is
|
||
explicit that competing there is the wrong game (§II). The winnable searches are
|
||
specific: *construction lien mediation Ontario*, *SaaS contract arbitration
|
||
Canada*, *SABS mediation Toronto*, *technology dispute neutral*, *Farsi-speaking
|
||
mediator*. Each of those wants its own page, its own title, its own copy, and its
|
||
own structured data.
|
||
|
||
That is the entire argument for the structure below. It is a discoverability
|
||
decision, not an aesthetic one.
|
||
|
||
---
|
||
|
||
## Sitemap
|
||
|
||
```
|
||
/ Home
|
||
/about/ Biography, credentials, the professional record
|
||
/mediation/ Mediation — the process, formats, rules
|
||
/arbitration/ Arbitration — the process, tracks, rules
|
||
/med-arb/ Med-Arb and hybrid processes
|
||
/practice/ Practice areas index
|
||
/practice/construction/ Construction and infrastructure disputes
|
||
/practice/technology/ Technology, AI, and data disputes
|
||
/practice/energy/ Energy, grid, and regulatory disputes
|
||
/practice/insurance/ Insurance, SABS, and accident benefits
|
||
/practice/shareholder/ Shareholder, partnership, and family business
|
||
/practice/cross-cultural/ Cross-border and diaspora disputes
|
||
/process/ What an engagement looks like, step by step
|
||
/fees/ Fee schedule and engagement terms
|
||
/for-parties/ Plain language: what mediation actually is
|
||
/insights/ Article index
|
||
/insights/[slug]/ Individual articles
|
||
/contact/ Intake form and booking
|
||
/legal/privacy/ Privacy policy — PIPEDA
|
||
/legal/terms/ Terms of use
|
||
```
|
||
|
||
Nineteen fixed URLs plus one per article — **and four more, all `noindex` and all
|
||
excluded from the sitemap in `astro.config.mjs`.** They are utilities rather than
|
||
pages in the IA above, which is why they are listed here rather than in it:
|
||
|
||
```
|
||
/contact/received/ The intake form's success landing page
|
||
/contact/could-not-send/ Its failure landing page
|
||
/bio/ Source of the one-page PDF (R16)
|
||
/404/ Emitted as dist/404.html — see below
|
||
```
|
||
|
||
The two `/contact/` pages exist because the site ships **zero JavaScript**, so
|
||
the form is a plain POST and the handler answers `303 See Other` to a real URL —
|
||
`docs/05` §Build step 8 has the reasoning. `/bio/` exists so the PDF circulated
|
||
with an appointment proposal is a *rendering of a reviewed page* rather than a
|
||
document outside this project's review apparatus.
|
||
|
||
⚠️ **`/404/` IS THE ONE ROUTE THAT BREAKS THIS DOCUMENT'S OWN URL RULES, AND IT
|
||
HAS TO.** The rules above are lower-case, hyphenated, trailing slash, no file
|
||
extensions. Astro emits `src/pages/404.astro` as **`dist/404.html`** — a file at
|
||
the root, outside `build.format: 'directory'` — because that is the object name a
|
||
CDN custom error response can point at. `SEO.astro` still sees the path as
|
||
`/404/`, which is why its `OG_CARDS` key is `/404/` while the URL a tool fetches
|
||
is `/404.html`. Added 2026-09-01; `docs/04` had asked for the page since before
|
||
build step 1 and it did not exist.
|
||
|
||
**So: 23 built pages plus one per published article.**
|
||
|
||
⚠️ **AND THIS SENTENCE USED TO END WITH A REASSURANCE THAT WAS DISPROVEN THE DAY
|
||
THE 404 PAGE WAS ADDED.** It read: *"`npm run lighthouse` enumerates them from
|
||
`dist/` rather than from this list, which is why this count being stale could never
|
||
make the gate miss a page."* Both `scripts/lighthouse.mjs` and
|
||
`scripts/og-proof.mjs` enumerated **`index.html` under `dist/`**, not every page —
|
||
so both missed `/404/`, and `og:proof` reported it backwards, as an orphaned card
|
||
rather than an unchecked page. The count being stale was not the failure mode; the
|
||
**definition of "a page"** was. Both now take any `.html` at the root as well, and
|
||
`check:claims` always did, which is why the new page's copy was inside the claim
|
||
register from its first build.
|
||
|
||
**The rule that replaces the reassurance:** a route that does not live at
|
||
`<dir>/index.html` is invisible to anything that looks for `index.html`. If a
|
||
future page is emitted outside the directory convention, grep the three scripts
|
||
for `index.html` before trusting any of them.
|
||
|
||
### URL rules
|
||
|
||
- Lowercase, hyphenated, trailing slash, no file extensions.
|
||
- `/practice/<area>/` is a stable namespace — new practice areas slot in without
|
||
touching anything else.
|
||
- `/insights/<slug>/` — no dates in the path. A dated URL makes a piece look
|
||
stale at 18 months, and this content is mostly evergreen.
|
||
- Never change a published URL. If one must move, ship a CloudFront Function
|
||
301 and record it in the Change Log.
|
||
|
||
### Navigation
|
||
|
||
**Primary (header).** About · Mediation · Arbitration · Practice · Fees ·
|
||
Insights · Contact
|
||
|
||
"Practice" is a dropdown to the six areas, with `/practice/` itself reachable.
|
||
Build it as a `<details>` element or a CSS-only disclosure — no JavaScript.
|
||
|
||
**Footer.** Full sitemap in three columns, plus contact block, professional
|
||
designations, LinkedIn, privacy, terms, and the SML Company Ltd. entity line.
|
||
|
||
**Deliberately not in primary nav:** `/process/`, `/for-parties/`, `/med-arb/`.
|
||
These are linked contextually from the pages that lead to them. Seven items is
|
||
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"*.
|
||
|
||
⚠️ **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:
|
||
|
||
The brief itself says the niche *"requires deliberate relationship work with
|
||
First Nations advisors, federal and provincial engagement staff, and corporate
|
||
proponents over a multi-year horizon."* A practice page is a claim of present
|
||
capability. Publishing one before that relationship work exists would be read as
|
||
exactly what it is by the audience best positioned to notice — and that audience
|
||
is small, well-connected, and unforgiving of practitioners who arrive claiming a
|
||
seat. The cost of getting this wrong is much higher than the cost of waiting.
|
||
|
||
Revisit at month 12–18, once there is relationship history to point to.
|
||
**This reasoning is Claude's, recorded for Pouya's decision — not yet his call.**
|
||
|
||
## Not a practice area yet: tax-adjacent disputes
|
||
|
||
**Canadian Tax Foundation membership is verified** (`AGENTS.md` §4 — read the stamp there; a second copy of a currency stamp goes stale where nobody re-reads it, and this one had)
|
||
and it is the one credential none of the six areas above touch. Tax-adjacent
|
||
disputes are genuinely ADR territory — valuation and purchase-price disputes on
|
||
a share sale, indemnity and earn-out fights that turn on a tax position,
|
||
shareholder splits where the assessment is the thing actually in dispute.
|
||
|
||
**There is no seventh practice page at launch,** for the same reason as the
|
||
section above and not a weaker one: a practice page is a claim of present
|
||
capability, and there is no track record to point at. A membership is a
|
||
credential, not a caseload.
|
||
|
||
It belongs on `/about/` with the other memberships. Revisit at the **month
|
||
12–18 review, alongside the Indigenous engagement decision** — one review, two
|
||
candidates. Tracked as `AGENTS.md` R3.
|
||
|
||
---
|
||
|
||
## Page specifications
|
||
|
||
Each page below gives its job, its primary audience, its target search intent,
|
||
and its section outline. Copy itself is in `03-content-spec.md`.
|
||
|
||
### `/` — Home
|
||
|
||
**Job:** establish the unusual stack in under ten seconds, and route each of the
|
||
four audiences to its surface.
|
||
**Audience:** all four; leans in-house counsel.
|
||
**Search intent:** brand and name searches; "Toronto ADR practice".
|
||
|
||
1. **Hero.** Eyebrow (`Mediation · Arbitration · Toronto`), display headline,
|
||
two-sentence positioning paragraph, two CTAs (*Request a consultation* /
|
||
*How I work*), portrait.
|
||
2. **Credential row.** Three slots: `Q.Med` · `JD + ML` · `EN · FA`. Never
|
||
matter counts — `AGENTS.md` §4.
|
||
3. **The approach.** The "two directions at once" argument — law and engineering
|
||
converging on the same dispute. ⚠️ **The noun pair "law and engineering" is
|
||
the construction Q37 struck and Q41(a) extended to prose. The argument
|
||
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, 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.
|
||
6. **Process preview.** Compressed five-step strip → `/process/`.
|
||
7. **Latest insights.** Three most recent → `/insights/`. **NOT BUILT AT STEP
|
||
2, and it arrives at STEP 7 with the collection it lists.** `ArticleCard` and
|
||
the drafted slate (D9) land in the same step; rendering the section against an
|
||
empty collection means shipping a component's scoped CSS to every visitor for
|
||
a block with nothing in it, plus a props surface with no call site.
|
||
`SiteHeader` already gates the Insights **nav** item on the same collection,
|
||
so the page section and the nav item appear together. Recorded here as well
|
||
as in the page source, because "eight sections specified, seven built" should
|
||
not be discoverable only by reading the file that deviates.
|
||
8. **Contact band.** Intake CTA and booking link.
|
||
|
||
### `/about/` — Biography and credentials
|
||
|
||
**Job:** be the page an appointing body or opposing counsel reads before agreeing
|
||
to an appointment. This page carries the verifiable record.
|
||
**Audience:** appointing bodies, ADR institutions, opposing counsel.
|
||
**Search intent:** `"Pouya Lajevardi"`, `Pouya Lajevardi mediator`.
|
||
|
||
1. Portrait, name, designation line.
|
||
2. **Narrative biography**, 400–600 words. The three-track story — law,
|
||
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.**~~ ⚠️ **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.
|
||
7. `Person` JSON-LD. Downloadable one-page PDF bio — brief §VIII lists this as
|
||
an asset for circulation with appointment proposals.
|
||
|
||
> ✅ **SHIPPED AT BUILD STEP 9, 2026-08-31. R16 / Q45 DISCHARGED.**
|
||
> `public/pouya-lajevardi-bio.pdf` exists, is committed, and this page links it
|
||
> between the biography and the credentials.
|
||
>
|
||
> **The two decisions R16 left open are both taken, and the second makes the
|
||
> first safe.** *(a)* Neither "generated at build" nor "authored once": the bio
|
||
> is a **page**, `src/pages/bio.astro`, so every line is reviewed by the same
|
||
> apparatus as every other page — and `npm run bio:pdf` renders the PDF from the
|
||
> built page through the Chrome that Lighthouse already requires, so it adds no
|
||
> dependency. It is **not** part of `astro build`, because CI has no Chrome.
|
||
> *(b)* It carries **nothing the site does not** — every line renders from
|
||
> `CREDENTIALS`, `ROLE`, `BOUTIQUE`, `PRACTICE_AREAS`, `FEES` and `CONTACT`. No
|
||
> matter list (which R16 correctly said would collide with §4 Forbidden), no
|
||
> referees, no figure that is not on `/fees/`.
|
||
>
|
||
> ⚠️ **`npm run bio:pdf` asserts ONE PAGE and writes nothing if the count is
|
||
> wrong.** And reading the rendered PDF caught a breach the source review had
|
||
> not: its opening clause scoped **mediation** commercial, which Q56 leaves
|
||
> unscoped deliberately. Nothing in the build regenerates the PDF — `docs/06`'s
|
||
> cutover checklist carries the re-render.
|
||
|
||
> *Original deferral note, kept because its reasoning is why this is R16 rather
|
||
> than a to-do.* **The PDF bio ships at BUILD STEP 9, alongside `/fees/` —
|
||
> deferred by Pouya 2026-08-28 (Q45), tracked as `AGENTS.md` §12 **R16**.** His reasoning: it is a
|
||
> derived artefact, so building it before `/about/` and `/fees/` are final means
|
||
> building it twice, and an appointment proposal needs the fee card as much as
|
||
> the bio. The two decisions below are **not** settled by the deferral and travel
|
||
> with R16. Original note follows, and its reasoning is why this is R16 rather
|
||
> than a to-do. **The PDF bio does NOT ship with build step 3, and the omission
|
||
> is stated rather than silent** — `AGENTS.md` Q45, opened 2026-08-28. No such file exists
|
||
> in the repo, and a link to one that does not exist is a broken link on the
|
||
> page an appointing body reads. It is also not a formatting job: a one-page bio
|
||
> is a **credential document** whose every line has to trace to §4 exactly as a
|
||
> web page does, and it will be circulated detached from the site, where no
|
||
> reviewer sees it again. Two decisions are Pouya's — whether it is generated at
|
||
> build (a dependency, against R11) or authored once as a designed artefact, and
|
||
> whether it carries anything the site does not. Everything else on this page
|
||
> ships.
|
||
|
||
### `/mediation/`
|
||
|
||
**Job:** convert counsel who have already decided on mediation and are choosing a
|
||
neutral.
|
||
**Search intent:** `commercial mediator Toronto`, `ADRIC mediation rules`,
|
||
`what happens at mediation Ontario`. **These are queries, not the page's scope —
|
||
Q56, 2026-08-30.** The mediation offering is **not** scoped commercial (§4's row
|
||
is unscoped; the arbitration scope is a legal gate and does not transfer). Do not
|
||
read the first query back into the `<title>` or the copy, which is where
|
||
*"Commercial Mediation"* came from in the first place.
|
||
|
||
1. What the service is; the neutral's role stated plainly.
|
||
2. **Formats:** full-day, half-day, shuttle, remote, hybrid.
|
||
3. **Rules:** the **ADRIC National Mediation Rules**, or a bespoke protocol
|
||
agreed by the parties.
|
||
⚠️ *This item read "ADRIC Model Mediation Rules" until 2026-08-28 and that is
|
||
not the name of anything ADRIC publishes* — **0 occurrences** across all four
|
||
of its rules pages, against **10** of "National Mediation Rules" on the
|
||
document's own page. "Model" belongs to the **Model Dispute Resolution
|
||
Clause**, a contract clause inside the rules. Sourced and reproducible:
|
||
`docs/reference/adric-rules.md` Finding 1. The spec would have put a wrong
|
||
institutional name on a public page, which is the `Chartered
|
||
Mediator-Arbitrator` shape a second time — caught here only because R14 sent
|
||
the fetch out before the copy was written.
|
||
4. **What parties should bring** — briefs, documents, authority to settle.
|
||
5. **Confidentiality and without-prejudice framing.**
|
||
6. Practice areas → `/practice/*`.
|
||
7. Fees → `/fees/`. Booking → `/contact/`.
|
||
|
||
⚠️ **This page carries no first-person conduct commitment, and that is
|
||
deliberate.** How Pouya handles caucus material, and what he undertakes about a
|
||
bespoke protocol, are claims about his practice with no §4 row. Two of them
|
||
shipped here for one pass and were removed. Drafted for his ruling as **Q54(d)**
|
||
and **(e)**; until he rules, the Confidentiality and Rules sections describe what
|
||
an *agreement* settles, not what he promises.
|
||
|
||
### `/arbitration/`
|
||
|
||
**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`.
|
||
|
||
1. What the service is; sole-arbitrator and party-appointed
|
||
appointments.
|
||
2. **Tracks:** documents-only, expedited, full hearing.
|
||
3. **Rules:** ADRIC, ad hoc. ✅ **Both are named on the page.**
|
||
⚠️ **ADR CHAMBERS WAS STRUCK FROM THIS ITEM AND FROM THE PAGE ON 2026-08-30
|
||
— Pouya's ruling, and do not reinstate it from an earlier reading of this
|
||
spec.** This item listed it as a third rule option for most of the project.
|
||
`docs/reference/adr-institution-names.md` sources what the firm *publishes*;
|
||
it does not source that an outside neutral can be appointed under those
|
||
rules, and the firm's own model clause reads *"at ADR Chambers"* — so naming
|
||
it here implied a relationship the repository does not establish. The ADRIC
|
||
edition date (1 March 2025) is published on the page because ADRIC publishes
|
||
one.
|
||
4. Awards — form, reasoning, timing.
|
||
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
|
||
same one: an edit that was not re-read against the register.)*
|
||
6. Fees, booking.
|
||
|
||
⚠️ **No first-person conduct commitment on this page either.** The Rules and
|
||
Awards sections say what a process and an award *should* settle and contain, not
|
||
what Pouya undertakes to do — **Q54(e)** and **(f)** are drafted and unruled, and
|
||
both shipped here in the first person for one pass. The `<title>` names a
|
||
**service**, never "Sole Arbitrator": §4 grants exactly one practised role and it
|
||
is "Mediator".
|
||
|
||
### `/med-arb/`
|
||
|
||
**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.
|
||
⚠️ *As built, the page flags the confusion and does **not define arb-med***.
|
||
No source for a definition of arb-med is committed, and this repository does
|
||
not publish a definition of a third party's process from recall (R14). The
|
||
page says only that the two are one syllable apart, that the processes are
|
||
not interchangeable, and that a reader should check which one their contract
|
||
names — against the rule set the contract adopts, not against this page. **It
|
||
states no differentia at all**, because on a page that defines med-arb as
|
||
mediation→arbitration, "the phases run in a different order" *is* a
|
||
definition of arb-med by inversion. That wording shipped for one pass and
|
||
`claims-auditor` caught it. Define arb-med when a source is committed, or add
|
||
an **Arb-Med** row to `AGENTS.md` §11 — not before.
|
||
2. The procedural fairness objection, addressed head-on rather than elided.
|
||
⚠️ *The page answers it at the level of **process design** — what a med-arb
|
||
agreement has to settle before the mediation phase begins. It does **not**
|
||
carry Pouya's own protocol commitments, which are claims about his practice
|
||
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.~~
|
||
⚠️ **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 IT NO LONGER RESTATES THE DESIGNATIONS EITHER —
|
||
2026-09-02, `claims-auditor` D20 pass, finding F.** §Why this practice held a
|
||
bare `DESIGNATIONS_HELD_LINE` sentence sitting directly beneath §Rules'
|
||
quotation of ADRIC requiring *"a high level of practitioner competence"*, so
|
||
the designations read as meeting a bar ADRIC answers with the Chartered
|
||
Med-Arb — struck from this site entirely. The section now makes **no
|
||
credential claim at all**; `/about/` publishes them and the JSON-LD carries
|
||
them. Do not reinstate one here.
|
||
5. **The ADRIC Med-Arb Rules**, which this spec did not mention and which exist:
|
||
~~a published rule set, presented to ADRIC's membership~~ — **CORRECTED
|
||
2026-09-02, `claims-auditor` D20 pass, finding 6.** The source says a
|
||
**discussion draft** was presented, not the rules; `adric-rules.md` Finding 2
|
||
records no adoption and no effective date, in deliberate contrast to the
|
||
Arbitration Rules ("effective March 1, 2025") and the Mediation Rules ("the
|
||
existing rules remain in effect"). The page was corrected on 2026-09-01 and
|
||
**this line still instructed the struck form for a day** — the Q.Arb lesson
|
||
exactly: page fixed, spec still telling the next implementer to write the
|
||
false version. Write it as **presented to the membership as a discussion
|
||
draft at ADRIC's 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 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
|
||
|
||
Six cards, one paragraph each, linking onward. Also the natural home for the
|
||
"also offered" strip: **early neutral evaluation, dispute-system design, and
|
||
pre-dispute technical advisory** — three, and each has an `AGENTS.md` §4
|
||
Offerings row.
|
||
|
||
> ✅ **THE STRIP MAY SHIP — Q46(a) closed 2026-08-28, on Pouya's second
|
||
> ruling.** All three §4 Offerings rows now read **PUBLISHABLE**. Read the ENE
|
||
> row before writing the strip: gate 1 (*is the activity gated?*) is closed as
|
||
> **`[Pouya's stated basis 2026-08-28]`** and **not** as `[verified]`, because no
|
||
> source for any of the three exists in `docs/reference/`. That is a deliberate,
|
||
> attributed position of the architect's, not a sourced fact — do not describe it
|
||
> on the page or in a comment as settled law.
|
||
>
|
||
> **Two framing constraints survive the ruling and are not discretionary:**
|
||
>
|
||
> 1. **ENE is an assessment delivered to BOTH parties**, never advice to one. It
|
||
> is the offering nearest §4's NOT-NEGOTIABLE boundary — a neutral assessment
|
||
> of the *merits* sits closest to *"providing legal services"*.
|
||
> 2. **Pre-dispute advisory carries a conflict caution**, and it is practice
|
||
> management rather than a publication gate: advisory work for one
|
||
> organisation can conflict against a later appointment in the same matter.
|
||
> **No copy may imply the offering is free of that tension** — this strip is
|
||
> where the temptation to imply it will arise.
|
||
|
||
> **`settlement counsel` IS STRUCK FROM THIS STRIP AND MUST NOT BE RESTORED.**
|
||
> `AGENTS.md` Q42, 2026-08-27. Pouya struck it as his own error in this document:
|
||
>
|
||
> > "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 which objection comes first. This is not primarily a compliance problem —
|
||
> it is a **positioning** problem, and it would have been wrong on a site with
|
||
> no licensure question at all. The compliance half is the aggravation, not the
|
||
> reason. Never priced, never offered, never listed: it is a struck row in §4
|
||
> Offerings so that a later reader finds the decision rather than the gap.
|
||
|
||
### `/practice/construction/`
|
||
|
||
**Search intent:** `construction lien mediation Ontario`, `delay claim mediation`,
|
||
`subcontract dispute arbitration Toronto`.
|
||
|
||
Dispute types (lien, delay, change orders, scheduling, subcontract, deficiency);
|
||
what active litigation exposure in the same matters brings to the room; the
|
||
Ontario megaproject pipeline as context — Darlington SMR, Bruce C, data centres,
|
||
transit; typical process shape. Strongest immediate fit per brief §III.1.
|
||
|
||
### `/practice/technology/`
|
||
|
||
**Search intent:** `SaaS dispute arbitration Canada`, `AI vendor dispute`,
|
||
`data residency dispute resolution`, `software contract mediator`.
|
||
|
||
The differentiator page. Dispute types: software contracts, SLA and MSA
|
||
breakdowns, data residency and processing, AI vendor diligence, cloud
|
||
sub-processor disputes, IP and licensing.
|
||
|
||
**Write this page in the register the brief demands:** a neutral who can read an
|
||
API trace, a model card, or a System Impact Assessment on the same page as the
|
||
contract. The brief warns explicitly against softening this to "technologically
|
||
literate" — the claim is engineering practice, so the copy says engineering
|
||
practice.
|
||
|
||
### `/practice/energy/`
|
||
|
||
**Search intent:** `Bill 40 dispute`, `IESO dispute resolution`,
|
||
`OEB leave to construct dispute`, `grid connection dispute Ontario`.
|
||
|
||
Connection assessment and approval, leave to construct, proponent–municipality
|
||
disputes, IESO market participation, and the large-load / data-centre connection
|
||
regime. Brief §III.2 frames this as a 24–36 month build. **Write it as a genuine
|
||
position, not a claim of existing volume.**
|
||
|
||
> ⚠️ **"CONNECTION ALLOCATION" WAS THIS SECTION'S WORDING AND IT IS NOT AN
|
||
> ONTARIO TERM. Corrected 2026-08-29**, against the IESO's own pages
|
||
> (`docs/reference/ontario-energy-regulatory.md`), which contain **zero**
|
||
> occurrences of "allocation" of any kind across the connection process. It also
|
||
> reached `src/data/site.ts` and shipped in the six-card grid on three pages.
|
||
>
|
||
> **Use the terms these bodies use:** the IESO's own words are *"the IESO's and
|
||
> transmitter's connection assessment and approval (CAA) process"*, within which
|
||
> the IESO performs a *System Impact Assessment (SIA)* and the transmitter a
|
||
> *Customer Impact Assessment (CIA)*. ⚠️ **This read "CAA is the umbrella" until
|
||
> 2026-09-03** — which is the extract's own COMMENTARY, not the IESO's, and
|
||
> `CLAUDE.md` is explicit that commentary around a quotation is this
|
||
> repository's voice. The pages took the attribution from here and gave the
|
||
> process to the IESO alone. **And it is the CONNECTION PROCESS that runs to
|
||
> *up to* six stages, not the CAA** — the source scopes the count by connection
|
||
> type, and CAA is stage 2 of that process rather than a name for it. Naming the
|
||
> wrong subject here is how the conflation reaches a page. **Ontario has no
|
||
> interconnection queue** — the IESO says so in terms and works from "committed
|
||
> projects" instead, so "our place in the queue" describes nothing. The
|
||
> genuinely adjacent term, the OEB's *Capacity Allocation Model* in the
|
||
> Distribution System Code, is about housing-development connections and is a
|
||
> different thing.
|
||
>
|
||
> **Bill 40 is identified**, and the identification was not safe to assume: it
|
||
> is Bill 40 of the **44th Parliament, 1st Session — the Protect Ontario by
|
||
> Securing Affordable Energy for Generations Act, 2025**, Royal Assent
|
||
> 11 December 2025. Bill numbers are reused every parliament and most Ontario
|
||
> Bill 40s are unrelated to energy (43-1 is a highway-traffic bill). Cite the
|
||
> parliament and session, never the bare number.
|
||
|
||
### `/practice/insurance/`
|
||
|
||
**Search intent:** `SABS mediation`, `LAT pre-hearing mediation`,
|
||
`accident benefits mediator Ontario`, `MIG dispute`.
|
||
|
||
> ⚠️ **`LAT pre-hearing mediation` IS A SEARCH INTENT AND NOTHING ELSE. It must
|
||
> never be published as an offering** — `AGENTS.md` Q41(c), closed 2026-08-27,
|
||
> verified 2026-08-28 against the Tribunal's own materials and extracted into
|
||
> **`docs/reference/lat-case-conference.md`**. It reached `src/data/site.ts` as a
|
||
> service blurb once already; this note exists because a search-intent list is
|
||
> where that lift starts.
|
||
>
|
||
> What the verification found, in one line each:
|
||
>
|
||
> - **LAT Rule 2.4:** *"'Case Conference' has the same meaning as 'Pre-Hearing
|
||
> Conference' as defined in the SPPA."* **"Pre-hearing" is the Tribunal's own
|
||
> label**, and what it labels is a case conference.
|
||
> - **Rule 14.3:** a **Member** presides and does not then sit on the hearing
|
||
> panel except with the consent of the parties; **Rule 14.6:** parties must
|
||
> attend. The neutral is the Tribunal's. A privately retained one is not
|
||
> appointed to it and cannot be.
|
||
> - The LAT Rules contain **zero** occurrences of `mediat` or `arbitrat` —
|
||
> 0 in 66,593 characters. The concept is not in them.
|
||
> - The LAT-AABS page itself, though, says: *"Before you apply to the LAT-AABS,
|
||
> you may want to consider negotiation or mediation services."*
|
||
> **That is the affirmative basis for the offering, in the Tribunal's words** —
|
||
> and it is the whole of it.
|
||
>
|
||
> ⚠️ **THE QUOTATION ABOVE WAS ELLIPSED, AND THE ELLIPSIS REMOVED THE WORD THAT
|
||
> SCOPED IT. Corrected 2026-08-29.** It read *"…consider negotiation or
|
||
> mediation services… including before filing at the LAT-AABS, and continuing…
|
||
> after a claim has been filed."* The Tribunal's second sentence is
|
||
> *"Parties are encouraged to attempt to **negotiate** the claim at all times,
|
||
> including before filing at the LAT-AABS, and continuing **negotiation**
|
||
> discussions after a claim has been filed."* — **negotiation, twice.** The
|
||
> second ellipsis deleted the second "negotiation" and made a sentence about
|
||
> negotiation read as one about mediation. The full passage is quoted verbatim
|
||
> in `docs/reference/lat-case-conference.md`, which now carries the correction
|
||
> and the reason it survived three checks.
|
||
>
|
||
> **The page must state that the mediation offered is PRIVATE, retained by the
|
||
> parties, and is not the Tribunal's case conference.** Published blurb:
|
||
> *"Accident benefits and SABS entitlement, MIG disputes, and private mediation
|
||
> retained by the parties, not the Tribunal's case conference."* **Do not
|
||
> restore the "before filing or after" form** — it rested on the elided half.
|
||
> The page may quote the Tribunal's actual sentence, which supports mediation
|
||
> **before an application**; it may not attribute the after-filing frame to the
|
||
> Tribunal. If Pouya holds a roster position that makes more than that true, it
|
||
> is a §4 addition — absent a row, it is not.
|
||
|
||
Highest realistic near-term volume — it flows directly from the existing
|
||
personal-injury and SABS work, and brief §IV.7 notes the segment is
|
||
underserved by senior mediators. Unglamorous and worth doing well.
|
||
|
||
### `/practice/shareholder/`
|
||
|
||
**Search intent:** `shareholder dispute mediation Ontario`,
|
||
`partnership dissolution mediator`, `family business succession dispute`.
|
||
|
||
Shareholder and partnership disputes, co-founder breakdowns, family-business
|
||
succession, SME exits. The operator angle — running SML Company Ltd. alongside
|
||
the practice — is the differentiator here.
|
||
|
||
**"Family Business" means COMMERCIAL disputes among family shareholders, and the
|
||
page must say so.** Pouya's ruling of 2026-08-27 (`AGENTS.md` Q39): the label
|
||
covers shareholder and partnership disputes, co-founder breakdowns and business
|
||
succession — **not** family law. **Family arbitration under the *Family Law Act*
|
||
is not offered**, and that activity is separately gated by prescribed training
|
||
(`docs/reference/ontario-family-arbitration-training.md`), so the exclusion has
|
||
to be legible rather than left to be inferred from the surrounding nouns.
|
||
|
||
**One sentence, not a section.** His instruction, and the reason is also the test
|
||
for whether it belongs at all: *"The page should say plainly that family law
|
||
matters are not accepted. One sentence, not a section: it saves a wasted intake
|
||
call, which is the only reason it earns its place."* A disclaimer that grows into
|
||
a paragraph reads as defensive, which is the opposite of the point.
|
||
|
||
### `/practice/cross-cultural/`
|
||
|
||
**Search intent:** `Farsi speaking mediator Toronto`,
|
||
`Iranian Canadian business dispute`, `diaspora shareholder dispute`.
|
||
|
||
Note that D4 makes the site English-only. This page describes Farsi-language
|
||
capability in English; it is not a Farsi page. Diaspora family-business
|
||
succession, dual-jurisdiction shareholder disputes, partnership disputes among
|
||
diaspora entrepreneurs, cross-cultural commercial matters.
|
||
|
||
### `/process/`
|
||
|
||
Five steps, from intake to conclusion: confidential intake (day 0) · engagement
|
||
and framing (1–7) · pre-session exchange (7–21) · the session (21–30) · binding
|
||
conclusion (30+). Also: conflicts checking, confidentiality, and what happens if
|
||
a matter does not settle.
|
||
|
||
**The timings are published as the TYPICAL shape of an engagement, explicitly
|
||
not a guarantee** — `AGENTS.md` Q43, Pouya 2026-08-27. Render `PROCESS_FRAMING`
|
||
(`src/data/site.ts`) **adjacent to the steps**, on this page and on `/`. The
|
||
numbers above are unchanged; what is required is that they never appear
|
||
unframed. *"Published as typical, they are honest and useful; published as
|
||
commitments, the first matter that slips makes the page false."*
|
||
|
||
### `/fees/`
|
||
|
||
**Unblocked — `AGENTS.md` Q4/Q14 answered (D14). Build from the confirmed card
|
||
in `docs/07-fees.md`; still do not invent numbers.**
|
||
|
||
Hourly rate; half-day and full-day mediation; **med-arb, billed by phase and
|
||
carrying no figure of its own** (added 2026-09-03, `docs/07` §Med-arb, INTERIM
|
||
against R5 — the page shipped it and this outline did not name it); preparation
|
||
time policy; cancellation terms; administrative fee; HST treatment; who pays and
|
||
how costs are shared between parties; payment terms. A real page with real numbers, or a
|
||
`TODO(pouya)` — nothing in between.
|
||
|
||
### `/for-parties/`
|
||
|
||
**Job:** serve the self-represented tier without diluting the counsel-facing
|
||
pages. Plain language, short sentences, no jargon.
|
||
|
||
What mediation is · what it is not · who the mediator is and is not —
|
||
**render `NEUTRAL_ROLE_LINE`, and read `docs/03` §For parties before writing a
|
||
word of it.** ⚠️ **THIS LINE READ *"(not your lawyer, not a judge)"* UNTIL
|
||
2026-08-30 AND IT INSTRUCTED A FORM STRUCK ON 2026-08-28.** *"Not your lawyer"*
|
||
**presupposes lawyer status**, which §4 Forbidden bars and D13 treats as hard as
|
||
assertion — a negation still carries the presupposition. `docs/03` struck it
|
||
with that reasoning two days earlier and the sweep never reached this file;
|
||
build step 6 is the step that consumes this line, and it was found here by
|
||
`adversarial-reviewer` while the page itself avoided the trap · what happens on the day · what it costs · what happens if
|
||
you do not settle · how to prepare.
|
||
|
||
### `/insights/` and `/insights/[slug]/`
|
||
|
||
Astro content collection, MDX. Index reverse-chronological with topic filtering
|
||
by practice area.
|
||
|
||
Article frontmatter: `title`, `seoTitle` (optional), `description`,
|
||
`publishDate`, `updatedDate`, `topics[]`, `practiceAreas[]`, `readingTime`,
|
||
`image` and `imageAlt` (both optional, but `imageAlt` is **required whenever
|
||
`image` is set**), `draft`, `reviewedByPouya`.
|
||
|
||
`title` is the headline and, for articles, the `<title>` — they carry no
|
||
` · Pouya Lajevardi` suffix; see `04-seo-spec.md` for why. `seoTitle` replaces
|
||
it when a headline that reads well falls outside 50–60. `src/content.config.ts`
|
||
enforces the rendered length and names the offending string in the error.
|
||
|
||
Dates are date-only ISO (`2026-08-01`), parsed as UTC and round-tripped, so a
|
||
typo fails the build rather than shipping as 1970 or as the wrong day.
|
||
|
||
`reviewedByPouya` carries D9: the schema refuses to build an entry with
|
||
`draft: false` and `reviewedByPouya: false`.
|
||
|
||
Content territories, from brief §VII: process explainers · regulatory commentary ·
|
||
industry-specific dispute commentary · anonymised reflections · technical
|
||
explainers for lawyers · credentialing and career-arc content.
|
||
|
||
`Article` JSON-LD with `author` pointing at the `Person` entity. Each article
|
||
links to the relevant practice-area page — this is what turns the blog into
|
||
ranking power for the pages that convert.
|
||
|
||
**The section stays out of primary navigation until at least two pieces are
|
||
live.** An empty blog signals abandonment more loudly than no blog signals
|
||
anything.
|
||
|
||
### `/contact/`
|
||
|
||
Intake form (`05-backend-spec.md`), booking embed, direct email
|
||
(Q3 — **there is no public phone number**; render `CONTACT.phoneFallback`,
|
||
"By scheduled call", wherever a number would go), Toronto by-appointment line, response-time expectation, and an explicit
|
||
note that submitting the form does not create a retainer or a mediator–party
|
||
relationship and does not itself create a conflict check.
|
||
|
||
### `/legal/privacy/` and `/legal/terms/`
|
||
|
||
Required, not optional — the intake form collects personal information about
|
||
identifiable third parties in live legal disputes. What is collected, why, where
|
||
it is stored (DynamoDB, region), retention period, who can access it, how to
|
||
request deletion, and the contact for privacy inquiries. Must match what the
|
||
backend actually does.
|
||
|
||
---
|
||
|
||
## Build order
|
||
|
||
Dependency-ordered, so nothing is blocked mid-stream:
|
||
|
||
1. Scaffold, tokens, base layout, header, footer, SEO component
|
||
2. `/` — proves the design system end to end
|
||
3. `/about/` — the credential spine everything else references
|
||
4. `/mediation/`, `/arbitration/`, `/med-arb/`
|
||
5. `/practice/` and the six area pages
|
||
6. `/process/`, `/for-parties/`
|
||
7. ✅ `/insights/` plumbing, then the drafted articles — **built 2026-08-31.**
|
||
Step 7a returned Lighthouse (`AGENTS.md` §7, R11); 7b built the OG card
|
||
generator (R15) and the Insights routes; 7c drafted the five launch articles.
|
||
**The section is not live and cannot be**: D9 and `src/content.config.ts`
|
||
between them mean an article publishes only when Pouya sets both flags, and
|
||
`SiteHeader` keeps Insights out of the nav until two are live
|
||
8. ✅ `/contact/` — **the page is built and the pipe behind it is LIVE as of
|
||
2026-09-02.** The handler is deployed and the CloudFront `/api/*` behaviour is
|
||
in place; `AGENTS.md` §7 holds the state and this list does not restate it.
|
||
`docs/05` §Build step 8 records three deliberate deviations from that spec, and
|
||
§Observed abuse records the first real spam and what was added for it.
|
||
⚠️ **This item read *"the pipe behind it is not"* until 2026-09-04** — written
|
||
under D11, true then, and left asserting an undeployed backend for two days
|
||
after cutover
|
||
9. ✅ `/fees/` — **built 2026-08-31 on Q59's ruling**, which settled where the
|
||
overtime hour starts (the session cap) and supplied the reservation point that
|
||
answers the rate card's arithmetic anomaly. The PDF bio shipped with it (R16)
|
||
10. ✅ `/legal/privacy/` and `/legal/terms/` — **built 2026-08-31, written to the
|
||
backend as actually built.** Three of the privacy policy's statements are
|
||
DERIVED — the collected-data list from `INTAKE_FIELDS`, the retention period
|
||
from the handler's own figure, the analytics paragraph from
|
||
`ANALYTICS.installed` — so they cannot drift from the implementation
|
||
11. Audit and cutover (`06-deployment.md`) — **not started. Nothing is deployed.**
|
||
`claims-auditor`'s single pass over the whole finished site (D20) is a blocking
|
||
item there and has not run
|