Files
adr-sml/docs/01-architecture.md
T
Pouya LajevardiandClaude Opus 5 165d259f5c feat: build step 2 — the home page; close Q35, Q37, Q39; Q39's answer corrected the register
Pouya's rulings and the page are one commit, not two, because they are not
separable: Q37 changed the credential label the page renders, Q39 scoped the
arbitration copy, and Q35 gave Med-Arb the row that lets the footer link stand.
Splitting them would produce a commit where the register says one thing and the
page says another.

RULINGS

Q39 — ANSWERED, and my assertion was FALSE as a universal. Pouya checked
rather than defended. Family arbitration in Ontario is gated: prescribed
training, 14h on screening for domestic violence and power imbalances, 30h of
Ontario family law for arbitrators outside the bar, 10h ongoing per two years.
claims-auditor produced that counter-example from inside the repo on 2026-08-26
and it was right. The source is now IN the repo per R14 —
docs/reference/ontario-family-arbitration-training.md, retrieved with its
provenance — and §4 states which half it establishes: the family gate directly,
the commercial half only by absence. So "commercial arbitration in Ontario
requires no licence and no designation" is recorded as Pouya's stated position,
unstamped. What disposes of the question is the scope exclusion: he does not do
family arbitration, so it is NOT OFFERED and the gate never bears on the
practice.

The false universal survived in three more live places, found by grep, not
recall: §4's NOT-NEGOTIABLE boundary bullet (the boundary paragraph breaching
its own boundary), §9's Q33 closure row, and a comment in SiteHeader.astro.

Q35 — ANSWERED, all four items, and the answer supplied a gate that was
missing. Med-Arb gets an Offerings row and stays in the footer sitemap. The six
subject-matter labels pass test 1. §4 gains "Subject-matter areas — the
publication gate": competence to accept an appointment, AND a page that frames
it as positioning without claiming history. Nothing in the nav or footer is
unrowed any more.

Q37 — ANSWERED. "Law and engineering" becomes "Legal training and engineering
practice". A degree is not a practice; the parallel was doing the implying.

Q38/R13 — the committed SVG does not close it; the walk-back went too far. It
renders faithfully BECAUSE it is the raster. R13 stays open.

R1 — surfaced and acknowledged; the interim licensure framing is now carried by
a shipped page rather than a spec, which raises the stakes.

BUILD STEP 2

Seven of docs/01's eight home sections, six new components, zero JavaScript.
Section 7 (Latest insights) ships at step 7 with the collection it lists —
recorded in docs/01 and in the page, not just here. Four credential slots, not
three: §4's paired-disclosure condition requires the Q.Arb stage on any page
that offers arbitration. No booking link (R6). The masthead tagline is
suppressed on / (it duplicated the hero eyebrow). The step-1 proof sheet is
deleted, and five live references to it were found by grep.

WHAT THE REVIEWS FOUND — 24 findings across the two passes

claims-auditor FAILED it on ten, every one implication or scope rather than
fabrication, which is where D13 says the risk lives. The four that mattered:
"I mediate and arbitrate" asserted a track record §4 does not hold for
arbitration; the JSON-LD asserted arbitration twice and stated the stage
nowhere (a crawler-only claim is still a claim); "at one published rate with
preparation time included" misdescribed money against docs/07's two day rates
and capped prep allowance; and "Law and engineering are not blended here" was
Q37's struck parallel relocated into prose one day after Pouya struck it.
It also found the Canadian Tax Foundation missing from §9 Q8 — a stale second
copy of a fact that would have bitten at step 3.

adversarial-reviewer found fourteen, three blocking. The first was
class="section-head" on <SectionHeading> never matching — the parent-cannot-
style-a-child defect for the FOURTH time, written into a diff where I had just
added fresh warnings about it to two other components. Measured: 0px margin,
0px gap, headings over the card edges, with astro check and eslint both clean.
I had looked at a screenshot of that section and passed over it. Fixed with a
page-owned wrapper (48px, measured) and the prop is deleted from six components
so it is now a build error. Also: the credential row was never "two up on a
phone" and its comment said it was; PROCESS was hardcoded in the page against
the reason written in site.ts; 83px of residual overflow at a 200% default font
size, now 3px.

Seven more I found myself first, including <Picture widths> declaring the
untouched 1600px master as the <img src> fallback (254,626 B for a 476px slot,
and the build log said "before: 349kB" either way), and a prop named `as`
silently turning off type-checking for a whole component.

VERIFICATION — run, not asserted. Full figures in AGENTS.md entry (w).

npx tsc 6.0.3 · check 0/0/0 · lint clean · build clean · audit 0
1 <script> and it is JSON-LD; non-JSON-LD scripts 0; no JS bundle; identical
page with script execution disabled (444 nodes, 6,578 chars)
Phase 5 minifier check: no `animation` shorthand beside animation-timeline
overflow 0 at 14 widths, AND every mark measured at 1.5654-1.5657 vs 1.5657
one h1, no heading skips, focus order == DOM order across 44 focusables
31 painted contrast pairs at 3 widths, 0 failures
72/72 hit-test points across 8 cards resolve to the card's link
print 0 hidden, reduced-motion 0 hidden
Lighthouse NOT RUN — tool unavailable until step 7 (R11)
HTML validator NOT RUN, and 4 of 12 srcsets carry a duplicate 1x descriptor

Opened for Pouya: Q40 (one OG image for nineteen pages), Q41 (does Q37 reach
prose; may the comparative be restored; what LAT pre-hearing mediation means),
Q42 (the four "also offered" processes have no row), Q43 (the process timings
are published commitments with no row).

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0148NztQskLKKApP5SzAA78e
2026-08-27 16:31:56 -04:00

407 lines
19 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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.
### 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"* for a
Q.Med on the C.Med-Arb pathway.
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 1218, 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, 2026-08-26)
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
1218 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. 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/`.
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**, 400600 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.** Q.Med held → Q.Arb in progress → 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.
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.
### `/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`.
1. What the service is; the neutral's role stated plainly.
2. **Formats:** full-day, half-day, shuttle, remote, hybrid.
3. **Rules:** ADRIC Model Mediation Rules, or a bespoke protocol agreed by the
parties.
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/`.
### `/arbitration/`
**Job:** the same, for arbitration — and to state the Q.Arb position honestly.
**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, ADR Chambers, ad hoc.
4. Awards — form, reasoning, timing.
5. **Credentialing status, stated plainly.** The Q.Arb pathway is in progress;
the page says so. **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.
*(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.
### `/med-arb/`
**Job:** own a term few Canadian neutrals explain well, and frame the C.Med-Arb
endpoint.
**Search intent:** `med-arb Canada`, `what is med-arb`, `arb-med`.
1. What Med-Arb is; how it differs from Arb-Med.
2. The procedural fairness objection, addressed head-on rather than elided.
3. When it fits and when it does not.
4. The C.Med-Arb designation and why it is the practice's stated endpoint.
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.
### `/practice/` — index
Six cards, one paragraph each, linking onward. Also the natural home for the
"also offered" strip: early neutral evaluation, settlement counsel, dispute-
system design, and pre-dispute technical advisory.
### `/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`.
Grid connection and allocation, leave-to-construct, proponentmunicipality
disputes, IESO market participation, data-centre connection allocation. Brief
§III.2 frames this as a 2436 month build. **Write it as a genuine position, not
a claim of existing volume.**
### `/practice/insurance/`
**Search intent:** `SABS mediation`, `LAT pre-hearing mediation`,
`accident benefits mediator Ontario`, `MIG dispute`.
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 (17) · pre-session exchange (721) · the session (2130) · binding
conclusion (30+). Also: conflicts checking, confidentiality, and what happens if
a matter does not settle.
### `/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; 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 (not your
lawyer, not a judge) · 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 5060. `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 mediatorparty
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
8. `/contact/` and the intake backend
9. `/fees/` — last, though no longer blocked: D14 confirmed the card
10. `/legal/*` — written to match the backend as actually built
11. Audit and cutover (`06-deployment.md`)