Skip to content

Commit 7dc279d

Browse files
authored
Add capability security failure taxonomy labels
Register four deterministic capability/security failure taxonomy labels for future fixture and artifact hardening. Scope remains taxonomy-focused: registry, docs, and taxonomy tests only; no fixtures, generated artifacts, README, workflows, runtime/orchestration behavior, or package files changed.
1 parent 2887f2c commit 7dc279d

3 files changed

Lines changed: 58 additions & 0 deletions

File tree

docs/failure_taxonomy.md

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,3 +30,22 @@ Each registered label includes:
3030
- `HIGH_CRITICAL_EVIDENCE_LOSS`
3131

3232
These preferred labels are operationally defined in the canonical registry, regardless of whether a given fixture family currently emits each one.
33+
34+
## Capability/security taxonomy expansion (registration-only)
35+
36+
The following labels are registered for future deterministic fixture/artifact hardening, with operational semantics anchored to explicit contracts and replay evidence:
37+
38+
- `CAPABILITY_BOUNDARY_LOSS`
39+
- deterministic focus: explicit boundary preservation loss in reconstructed replay state
40+
- expected evidence shape: missing boundary nodes/edges in capability-boundary contracts, fixtures, or artifacts
41+
- `UNAUTHORIZED_CAPABILITY_PATH`
42+
- deterministic focus: explicit new capability/resource/tool path introduced in reconstruction
43+
- expected evidence shape: added boundary edges or nodes that create a new path not present in allowed baseline
44+
- `APPROVAL_GATE_LOSS`
45+
- deterministic focus: required approval/validation/human-gate commitment missing before guarded action path
46+
- expected evidence shape: ordering/capability-boundary fixtures or artifacts showing absent gate precondition
47+
- `POLICY_ENFORCEMENT_GAP`
48+
- deterministic focus: policy enforcement condition dropped while related action/dependency path remains present
49+
- expected evidence shape: policy/guard contract evidence showing missing enforcement constraint with surviving action path
50+
51+
Registration in this taxonomy does not itself change fixture expectations or generated artifacts. Any future fixture use of these labels must be backed by deterministic contracts or artifact evidence.

src/validation/failure_taxonomy.py

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -140,6 +140,34 @@
140140
"severity_class": "critical",
141141
"non_goal": "Not a single-run runtime fault outside deterministic replay validation.",
142142
},
143+
"CAPABILITY_BOUNDARY_LOSS": {
144+
"operational_meaning": "Reconstructed replay state no longer preserves an explicit capability, resource, or tool boundary present in the original operational state.",
145+
"observable_trigger": "Capability-boundary replay contract, fixture expectation, or validator reports missing boundary nodes or boundary edges after reconstruction.",
146+
"contract_or_invariant_type": "capability_boundary",
147+
"severity_class": "safety",
148+
"non_goal": "Not a runtime exploitability claim, live access-control verdict, or external security-breach assertion.",
149+
},
150+
"UNAUTHORIZED_CAPABILITY_PATH": {
151+
"operational_meaning": "Reconstructed replay state introduces an explicit capability, tool, or resource path absent from the original allowed capability boundary.",
152+
"observable_trigger": "Capability-boundary replay contract, fixture expectation, or validator reports added boundary edges or capability nodes that create a new explicit path.",
153+
"contract_or_invariant_type": "capability_boundary",
154+
"severity_class": "safety",
155+
"non_goal": "Not an intent inference, exploitability judgment, or authorization conclusion derived from prose or unstated policy.",
156+
},
157+
"APPROVAL_GATE_LOSS": {
158+
"operational_meaning": "Replay reconstruction drops an explicit approval, validation, or human-gate commitment required before a guarded action.",
159+
"observable_trigger": "Fixture expectation, ordering artifact, capability-boundary artifact, or validator reports that a required approval or validation gate is missing before a guarded action path.",
160+
"contract_or_invariant_type": "governance_gate",
161+
"severity_class": "governance",
162+
"non_goal": "Not a requirement for live human-in-the-loop runtime behavior and not a clinical, legal, or production approval claim.",
163+
},
164+
"POLICY_ENFORCEMENT_GAP": {
165+
"operational_meaning": "Reconstructed replay state preserves an action or dependency while losing the explicit policy enforcement condition that constrained it.",
166+
"observable_trigger": "Fixture expectation, policy-order contract, capability-boundary artifact, or validator reports a missing policy or guard condition while the related action path remains present.",
167+
"contract_or_invariant_type": "policy_enforcement",
168+
"severity_class": "governance",
169+
"non_goal": "Not a live policy-engine bypass claim, external compliance assertion, or runtime exploitability determination.",
170+
},
143171
"CONSTRAINT_DRIFT": {
144172
"operational_meaning": "Constraint preservation falls below full deterministic survival.",
145173
"observable_trigger": "constraint_survival_rate < 1.0 in replay metrics.",

tests/test_failure_taxonomy.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,3 +76,14 @@ def test_registered_labels_do_not_use_banned_fuzzy_terms() -> None:
7676
normalized = label.lower()
7777
for banned in BANNED_FUZZY_TERMS:
7878
assert banned not in normalized, f"label '{label}' contains banned fuzzy term '{banned}'"
79+
80+
81+
def test_capability_security_expansion_labels_are_registered() -> None:
82+
expected_labels = {
83+
"CAPABILITY_BOUNDARY_LOSS",
84+
"UNAUTHORIZED_CAPABILITY_PATH",
85+
"APPROVAL_GATE_LOSS",
86+
"POLICY_ENFORCEMENT_GAP",
87+
}
88+
missing = sorted(label for label in expected_labels if label not in FAILURE_TAXONOMY)
89+
assert not missing, f"expected capability/security labels missing from taxonomy: {missing}"

0 commit comments

Comments
 (0)