Files
adr-sml/docs/01-architecture.md
Pouya LajevardiandClaude Opus 5 3c3ba5dc6e
Build and deploy / build-and-deploy (push) Failing after 4s
feat: price med-arb by phase, attest the conflicts undertaking, and answer the first real spam
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
2026-09-04 10:06:37 -04:00

41 KiB
Raw Permalink Blame History

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 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 — 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 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. ⚠️ 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, 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. ⚠️ 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 silentAGENTS.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 publishes0 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 membershipCORRECTED 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, proponentmunicipality disputes, IESO market participation, and the large-load / data-centre connection regime. Brief §III.2 frames this as a 2436 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 offeringAGENTS.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 (17) · pre-session exchange (721) · the session (2130) · 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 guaranteeAGENTS.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 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 — 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