feat: build step 5 — /practice/ and six area pages; check:claims gates §4 in dist
Build and deploy / build-and-deploy (push) Failing after 5s

Step 5 ships /practice/ and the six practice-area pages (construction,
technology, energy, insurance, shareholder, cross-border) from one route, and
adds the mechanical §4 gate Pouya ruled for.

check:claims — §4 Forbidden becomes a build error
  scripts/check-claims.mjs greps dist/**/*.html for 10 patterns, each carrying
  the incident that put it there. It strips <style> and non-JSON-LD <script>
  first (a bare sweep for "leading" returned 26 hits, 25 of them
  var(--leading-body)), self-tests every pattern against fixtures before
  sweeping, and refuses a missing, empty or stale dist/. Wired into /build
  Phase 5 and both deploy paths.

Q54 — six conduct undertakings publish, and §4 gains a third class
  Conduct undertakings sit apart from credentials and offerings: the gate is
  that Pouya said it in terms. The strings live in CONDUCT_UNDERTAKINGS so a
  softening is one visible diff. (e) and (f) replace the third-person sentences
  already on /arbitration/ rather than joining them.

Q49, Q50 recorded as rulings. §7 records the SES us-east-1 stray identity's
deletion. R11 holds typescript at its current major, with the peer-range
reason recorded.

Three facts corrected, two of them already shipped
  - The LAT gloss said mediation "before filing and continuing after filing";
    the Tribunal names mediation for "Before you apply" only and its second
    sentence is about negotiation. An ellipsis in docs/01 had deleted it.
  - "Connection allocation" is not an Ontario term.
  - "The 2026 privacy statute" does not exist — Bill C-27 died without royal
    assent. Struck from docs/03 rather than corrected in place.

ADR Chambers struck from /arbitration/ and from docs/01 item 3 (Pouya,
2026-08-30): the source establishes what the firm publishes, not that an
outside neutral can be appointed under its rules.

claims-auditor gains a second lens — for every quoted source, whether the
sentence beneath stays inside what the quotation establishes. Four shipped
defects had that shape and none of them is greppable.

CLAUDE.md gains a convention: never truncate the output of a check you intend
to believe. `npm run check | tail -3` returns warnings, hints and a blank line
and drops the errors line; it was reported as passing four times while
astro check was exiting 1 with 10 type errors.

Gates, exit status read directly, not through a pipe:
  npm run check        exit=0
  npm run lint         exit=0
  npm run build        exit=0
  npm run check:claims exit=0

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Md3GndFqWPzK78xAoebsg5
This commit is contained in:
Pouya Lajevardi
2026-08-30 09:35:26 -04:00
co-authored by Claude Opus 5
parent f3138a0a79
commit 79b19a7bd0
32 changed files with 6715 additions and 116 deletions
+34 -11
View File
@@ -30,10 +30,16 @@ import CredentialRow from '../components/CredentialRow.astro';
import Eyebrow from '../components/Eyebrow.astro';
import Pill from '../components/Pill.astro';
import SectionHeading from '../components/SectionHeading.astro';
import Undertaking from '../components/Undertaking.astro';
import { getImage } from 'astro:assets';
import ogDefault from '../assets/og-portrait.jpg';
import { serviceGraph } from '../data/schema';
import { CREDENTIALS, CREDENTIAL_ROW, CREDENTIAL_ROW_ARB } from '../data/site';
import {
CONDUCT_UNDERTAKINGS,
CREDENTIALS,
CREDENTIAL_ROW,
CREDENTIAL_ROW_ARB,
} from '../data/site';
const ldImage = await getImage({
src: ogDefault,
@@ -198,11 +204,15 @@ const TRACKS = [
</div>
<div class="prose">
{
/* Sourced: docs/reference/adric-rules.md. ADR CHAMBERS IS DELIBERATELY
NOT NAMED — docs/01 item 3 lists it, and nothing in this repository
sources what rules it publishes. docs/07 cites it for published FEE
ranges, which is a different claim. Name it here once it is sourced;
do not name it from recall (R14). */
/* Sourced: docs/reference/adric-rules.md.
⚠️ ADR CHAMBERS IS NOT NAMED HERE, AND MUST NOT BE ADDED BACK.
Struck by Pouya 2026-08-30 from this page and from `docs/01` item 3
in the same ruling. `docs/reference/adr-institution-names.md`
establishes what the firm publishes — it does not establish that an
outside neutral can be appointed under its rules, and its own model
clause reads "at ADR Chambers". Naming it implies a relationship
this repository does not source. ADRIC and ad hoc are enough. */
}
<p>
<strong>The ADRIC Arbitration Rules.</strong> The ADR Institute of Canada
@@ -214,8 +224,14 @@ const TRACKS = [
<p>
<strong>Or ad hoc, or whatever the contract names.</strong> Where a contract
names a rule set, a seat and a language and leaves the rest to the tribunal,
that works. What does not is a process whose shape nobody agreed to in advance.
that works.
</p>
{
/* Q54(e), rowed in §4 as a conduct undertaking. It REPLACED the
third-person sentence that made the same point as an observation;
do not restore that sentence beside it. */
}
<Undertaking>{CONDUCT_UNDERTAKINGS.arbitrationProcedure}</Undertaking>
</div>
</div>
</section>
@@ -241,11 +257,18 @@ const TRACKS = [
§4 Forbidden bars a time-to-award statistic outright; no figure
appears here and none may be added. */
}
{
/* Q54(f), answered by Pouya 2026-08-29 and rowed in §4 as a conduct
undertaking. Same replacement as in the Rules section above: this
paragraph opened "The date an award is due belongs in the first
procedural order", the observation form of the same commitment. The
sentence that follows it is unchanged and is the one doing the §4
Forbidden work. */
}
<Undertaking>{CONDUCT_UNDERTAKINGS.arbitrationAwardDate}</Undertaking>
<p>
The date an award is due belongs in the first procedural order, along
with everything else, rather than being left open. No number is
published here: a turnaround time advertised in advance of a record is
a guess dressed as a commitment.
No number is published here: a turnaround time advertised in advance
of a record is a guess dressed as a commitment.
</p>
</div>
</div>