Make the risk grade fail safe, and gate CI on absence
The mechanism behind RISK-F-0003 was sharper than the finding described. is_high_risk was risk == "high", but risk was never absent at the model layer: RouteEntry.risk carried a dataclass default of "standard". An omitted grade was not unhandled, it was actively resolved to the permissive value — fail-open by construction, which is why nothing ever warned. The default is now "ungraded" and is_high_risk returns true for anything outside an explicit low-risk vocabulary (standard / low / accepted). An omitted grade and an unrecognised grade from a newer catalog both resolve to high, so the boundary fails safe in both directions rather than reading an unknown value as permission. test_every_repo_catalog_lane_is_explicitly_graded is the CI gate that stops an ungraded lane being committed, per ADR-0007: absence is not a grade. "accepted" is in the low-risk vocabulary deliberately, ready for the maturity-derived default — an experimental-context lane may be explicitly accepted, which is a graded decision rather than an omission. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
parent
ac85259c20
commit
d0d4f9d8fc
4 changed files with 110 additions and 5 deletions
|
|
@ -119,5 +119,5 @@
|
|||
| task | WARDEN-WP-0032-T02 | wait | — | workplans/WARDEN-WP-0032-security-zones.md |
|
||||
| task | WARDEN-WP-0032-T03 | wait | — | workplans/WARDEN-WP-0032-security-zones.md |
|
||||
| task | WARDEN-WP-0032-T04 | wait | — | workplans/WARDEN-WP-0032-security-zones.md |
|
||||
| task | WARDEN-WP-0032-T05 | todo | — | workplans/WARDEN-WP-0032-security-zones.md |
|
||||
| task | WARDEN-WP-0032-T05 | done | — | workplans/WARDEN-WP-0032-security-zones.md |
|
||||
| task | WARDEN-WP-0032-T06 | wait | — | workplans/WARDEN-WP-0032-security-zones.md |
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue