Found while repairing ADR-0082 line 99 for #10808 (PR #11912). That card's scope was deliberately narrowed by the PM to line 99 only, with adjacent citations to be filed rather than fixed — so this is filed, not fixed.
The site
docs/adr/0082-react-component-contract-governance.md, decision 6's chain diagram (the last box, four lines above the line #10808 repairs):
prop gate (os validate — decision 5)
(hard: missing-required / typo)
The label puts missing-required and typo on the same side of one word, hard.
Why it is wrong
The same ADR says otherwise, fifteen lines earlier. Decision 5's own body splits the two by severity and is correct:
- missing a required binding (e.g.
ObjectForm with no objectName) → error (fails os build). - a near-miss of a known prop (edit distance ≤ 2, e.g.
onSucces → onSuccess) → warning.
And the CLI agrees with decision 5, not with the diagram. Measured on origin/main at fd50e59e7, CLI and the showcase app's dependency closure built in a worktree, mistakes injected into examples/app-showcase/src/ui/pages/renewals-pipeline.page.ts under a trap restore (the same runs written up in PR #11912, whose report carries the full output):
| injected | exit | verdict line |
|---|
missing required objectName | 1 | ✗ Author-time rules failed (1 issue) |
the onSucces typo alone | 0 | ✓ Validation passed plus one ⚠ advisory |
A typo alone exits 0. Nothing about it is hard.
Why it is worth an edit
The diagram is the compressed form a reader takes away — it is what gets quoted into a skill, a doc page or a PR description, and it is the half of decision 6 a reader reaches first. Read as it stands, it advertises a gate that fails a build on a near-miss prop name, which the platform does not deliver (declared ≠ enforced, Prime Directive #10 — pointed the other way: the doc claims more enforcement than exists).
Note the near-miss tolerance is a deliberate, load-bearing design choice, not an accident: decision 5 records that arbitrary unknown props are not flagged at all because the contract's data props are a curated subset. A diagram that flattens the split erases the reasoning.
Suggested fix
One line in the diagram box, e.g. (missing-required: error / near-miss prop: advisory). Governed file (docs/adr/**), human-merge-only, so the edit is a draft PR with review requested — but no pre-ruling looks necessary here either: decision 5 already records the correct severities, so this is a factual repair of an illustration, not a decision change.
Generated by Claude Code
Found while repairing ADR-0082 line 99 for #10808 (PR #11912). That card's scope was deliberately narrowed by the PM to line 99 only, with adjacent citations to be filed rather than fixed — so this is filed, not fixed.
The site
docs/adr/0082-react-component-contract-governance.md, decision 6's chain diagram (the last box, four lines above the line #10808 repairs):The label puts
missing-requiredandtypoon the same side of one word,hard.Why it is wrong
The same ADR says otherwise, fifteen lines earlier. Decision 5's own body splits the two by severity and is correct:
ObjectFormwith noobjectName) → error (failsos build).onSucces→onSuccess) → warning.And the CLI agrees with decision 5, not with the diagram. Measured on
origin/mainatfd50e59e7, CLI and the showcase app's dependency closure built in a worktree, mistakes injected intoexamples/app-showcase/src/ui/pages/renewals-pipeline.page.tsunder atraprestore (the same runs written up in PR #11912, whose report carries the full output):objectName✗ Author-time rules failed (1 issue)onSuccestypo alone✓ Validation passedplus one⚠advisoryA typo alone exits 0. Nothing about it is hard.
Why it is worth an edit
The diagram is the compressed form a reader takes away — it is what gets quoted into a skill, a doc page or a PR description, and it is the half of decision 6 a reader reaches first. Read as it stands, it advertises a gate that fails a build on a near-miss prop name, which the platform does not deliver (declared ≠ enforced, Prime Directive #10 — pointed the other way: the doc claims more enforcement than exists).
Note the near-miss tolerance is a deliberate, load-bearing design choice, not an accident: decision 5 records that arbitrary unknown props are not flagged at all because the contract's data props are a curated subset. A diagram that flattens the split erases the reasoning.
Suggested fix
One line in the diagram box, e.g.
(missing-required: error / near-miss prop: advisory). Governed file (docs/adr/**), human-merge-only, so the edit is a draft PR with review requested — but no pre-ruling looks necessary here either: decision 5 already records the correct severities, so this is a factual repair of an illustration, not a decision change.Generated by Claude Code