Repository navigation
Conversation
…int record status
DR-0027 to DR-0031 and DR-0034 carried `status: accepted`, which is not one
of the values governance/decisions/README.md allows (proposed | recorded |
ratified | superseded). Each was ratified by the WG, so the correct value is
`ratified`. This is an error fix under the README's amendment rule ("Records
are amended only to fix errors or mark supersession").
- DR-0027, DR-0028, DR-0029, DR-0030: WG Session C consent, objections closed
2026-10-30 (#8606). Status only.
- DR-0034: WG Session C, 2026-10-26 (#8410). Status only.
- DR-0031: WG Session B, 2026-10-19 (#8142 decision comment). Status, plus
`decided: 2026-10-19` and `decided_by: WG Session B`.
Adds scripts/lint-decision-record-status.cjs, which reads the allowed values
from the README's format block and fails on any record whose frontmatter
status is missing, repeated, or not listed. It runs as
`npm run test:decision-record-status` in the Build Check static-checks job.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
There was a problem hiding this comment.
Ladon verdict: Escalate to human review
Escalate — gated path requires human/CODEOWNERS approval.
This PR modifies .github/workflows/build-check.yml, which matches the gated-path glob .github/workflows/**. Per the hard approval gate (decision rule row 2), gated_paths: true AND review_decision: REVIEW_REQUIRED (not APPROVED), so the gate is not satisfied and this cannot auto-approve.
The diff itself is clean: it adds a decision-record status lint (script + test) wired into build-check.yml and normalizes six governance records from the non-conformant status: accepted to ratified. The reviewer surfaced no critical/high/medium findings, and governance records are outside the published protocol surface so no changeset is required.
Escalation reasons
.github/workflows/build-check.yml(modified) is under the hard approval gate (.github/workflows/**); human/CODEOWNERS review is required becausereview_decisionisREVIEW_REQUIRED, notAPPROVED.
Note for the human reviewer: the status changes to governance/decisions/** records (accepted → ratified) are a human-ratification matter and should be confirmed on the thread.
Why human review
- .github/workflows/build-check.yml (modified) is under the hard approval gate (.github/workflows/**); requires human/CODEOWNERS approval because review_decision is REVIEW_REQUIRED, not APPROVED.
- This PR touches a path under a hard, non-overridable approval gate (.github/workflows/build-check.yml (modified) matches
.github/workflows/**) and the current GitHub review decision is 'REVIEW_REQUIRED', not APPROVED. This is a hard gate enforced in code — Ladon cannot auto-approve until a human/CODEOWNERS approval is recorded, regardless of how clean the diff is.
Six decision records said
status: accepted.acceptedis not a status the governance README allows (proposed | recorded | ratified | superseded). The WG ratified all six, so the correct value isratified.Amendment rule.
governance/decisions/README.md, Lifecycle: "Records are amended only to fix errors or mark supersession." This is an error fix. The rulings, dates and authorities are unchanged; only the status value is corrected (and, for DR-0031, the missing provenance is filled in from its own rationale).decided/decided_by; #8606statusonlydecided/decided_by; #8410statusonlystatus, plusdecided: 2026-10-19anddecided_by: WG Session BLint.
scripts/lint-decision-record-status.cjsreads the allowed values from the README's format block and fails on any record whose frontmatterstatusis missing, repeated, or not in that list. A README with nostatus:line fails the lint instead of passing every record. It runs asnpm run test:decision-record-statusin the Build Check "Build and static checks" job, which runs on every PR. Before the record fix it flagged exactly these six records.No changeset: no protocol release surface is touched (
check-changeset-protocol-scope.cjs --has-protocol-scoped-changesreports none).Not changed: DR-0034 partially supersedes DR-0024 (one paragraph), and DR-0024 stays
ratifiedwith nosuperseded_by. That is a separate question.Changes under
governance/need human review. Please don't auto-merge.🤖 Generated with Claude Code