Files
Pouya LajevardiandClaude Opus 5 77a7b410b2 feat: apply six rulings; close Q22/Q44/Q45/Q46(b)/Q47; revert Q47's two graph fields
Pouya's rulings: Q44 (memberships current — ship the group), Q45 (PDF bio
deferred to step 9), Q46(a) (three offerings pass all gates), Q46(b) (§11
ratified as the source for definitional expansions, conditional on committing
the source), Q47 (set jobTitle and worksFor), the legal-advice formulation
ratified without change, and Q22 closed on his own execution evidence.

Q46(b): docs/reference/adrio-designations.md commits all five ADRIO expansions
with reproducible sha256 (four fetches each; both review agents independently
reproduced every digest). It immediately caught the error Pouya raised in the
same message — §11 had said "Chartered Mediator-Arbitrator" since the file was
created, ADRIO's term is "Chartered Med-Arbitrator", and the wrong form was in
dist/about/index.html. Four prior review passes read that string and checked
only whether it was sourced, not whether it was right.

Q47 REVERTED after both review agents struck it independently. jobTitle shipped
for one pass as "Mediator and Commercial Arbitrator" — the string claims-auditor
had removed from this same node's description the previous day, since §4 has no
row for a completed arbitration. The implementation flagged the wrong defect: it
argued about scoping and missed that the whole string was already struck. worksFor
was reverted because ProfessionalService.provider is this Person, so
provider -> Person -> worksFor asserts a same-entity claim transitively. Now
jobTitle: 'Mediator', no worksFor. Q49 asks for the two §4 rows.

Q44: memberships render with NO currency warranty (his condition), and R10 is
re-armed with an event trigger rather than a date since he declined renewal-date
tracking. Q22: §7 goes to PROVISIONED; R17 carries the first rotation date,
2026-11-26. New CLAUDE.md convention, his: never suppress stderr in a
verification script — suppression turns "it failed" into "it found nothing".

Two review rounds resolved 48 findings; the majority of the second round were
defects in the first round's fixes, including a re-widening of §4's renewal
period inside the comment that corrects that widening, a cited guard in
schema.ts that does not exist, and a struck §9 row describing a reverted state.
Three findings were one lift from a public page: docs/03's /for-parties/
directive breached D13 twice, docs/01 told an implementer an unpublishable strip
could ship, and docs/07 priced three ungated offerings with no gate note.

Also commits docs/reference/adrio-extract/ — the extraction script and its five
outputs, since the digests covered raw HTML and said nothing about the text the
term counts were run against. The equivalent gap for Q22's IAM verification is
NOT closed and is Q52.

Verified: astro check 0/0/0, eslint + prettier clean, build 2 pages, 0 .js
emitted, minifier guard silent, animation-timeline intact, no currency-warranty
phrasing in dist, JSON-LD correct on both pages.
NOT run: Lighthouse (tool unavailable until step 7, R11); HTML validator.

Opens Q48-Q53. Live reminders: R1, R10, R11, R13, R14, R15, R16, R17.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0148NztQskLKKApP5SzAA78e
2026-08-28 13:50:58 -04:00

35 lines
1.7 KiB
Markdown

# The extracted text behind `../adrio-designations.md`
**Why this directory exists.** `adversarial-reviewer` (2026-08-28, C10): the
`sha256` digests in that file cover the **raw HTML**, but Finding 4's term counts
were taken from **extracted text produced by an uncommitted script** — so the
counts were unverifiable by construction (R14) even though the digests were not.
`extract.mjs` is that script. `*.txt` are its outputs, which are what every
count in `../adrio-designations.md` was run against.
## Reproducing
```sh
curl -sSL -o <slug>.html "https://adr-ontario.ca/<slug>/"
node extract.mjs <slug>.html > <slug>.txt
```
The five slugs are listed in the provenance table of `../adrio-designations.md`,
which also carries each file's raw-HTML byte count and `sha256`.
**Expect small differences in the character totals if you re-implement the
extraction.** Both review agents reproduced every digest, every byte count and
every term count exactly; one got 1924 / 2806 / 4121 / 3510 / 2496 characters
against this script's 1932 / 2814 / 4151 / 3524 / 2504, because tag-stripping
inserts whitespace differently. **The term counts are the finding; the character
totals are only a size indicator.**
⚠️ **The digests are valid until ADRIO's next WordPress plugin update.** The
served HTML carries 17 `?ver=` strings that are static plugin versions today
(`?ver=1.3.12`, `?ver=2.3.2`, …) — which is *why* these pages hash reproducibly
where the LAT pages could not. Those strings will move when ADRIO updates a
plugin. **A future digest mismatch is most likely a plugin bump, not tampering
and not a changed designation name** — re-run the term counts before concluding
anything from a mismatch.