Skip to content

Commit b0fcf3c

Browse files
docs(vrs): define fail-closed once, where subsystems can cite it
Three subsystems state a fail-closed rule independently and none references the others, so for a safety property the drift risk is the failure mode that matters. Definition and obligation are split along the existing doc-class line: the ontology says what fail-closed means, and each subsystem's requirements say which of its surfaces must be. The obligation stays where it can be argued with; the definition stops being restated. Records the asymmetry that makes the term operationally useful — widening what counts as proven needs evidence, widening what counts as unproven is always safe — and that fail-closed is a property of a mechanism's unknown path, not a wish about it. Names fail-open too, since it is usually reached by removing a check that was accidentally load-bearing rather than by writing a permissive one. agent-session-id: e5217740-eef6-48eb-a794-3e5e11939e4d agent-tool: Claude Code agent-tool-version: 2.1.220 agent-model: claude-opus-5 agent-runtime-profile: /nix/store/i8y8b542cyqi385ywcjw5fvsq24f75v4-coding-agent-runtime-profile/share/coding-agents/profile.json agent-skills-manifest: /nix/store/i81qxhzlrzcxrrdwpp6i8hagka2gby8y-agent-skills-corpus/share/agent-skills/manifest.json tooling-profile: dotfiles@unknown-dirty
1 parent 8722aa7 commit b0fcf3c

1 file changed

Lines changed: 23 additions & 0 deletions

File tree

docs/vrs/ontology.md

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -161,6 +161,29 @@ These terms are refined per harness; see the DING subsystem's nodes.
161161
- **Resource** — a durable, listable record of high-value output an agent
162162
produced, so a peer can find it.
163163

164+
### Dispositions
165+
166+
Words for how a mechanism behaves when it does not know. They are defined here
167+
once because several subsystems depend on them and each would otherwise state
168+
its own version.
169+
170+
- **Fail-closed** — when a mechanism cannot prove the condition it needs, it
171+
resolves toward refusal rather than toward action. Absence of evidence that
172+
something is unsafe is not evidence that it is safe. The consequence worth
173+
stating plainly: widening what counts as *proven* requires evidence, while
174+
widening what counts as *unproven* is always safe. This is a property of a
175+
mechanism, not a wish about one — a mechanism is fail-closed only if its
176+
unknown path is the refusing path.
177+
- **Fail-open** — the opposite, and always a defect where it is not a stated
178+
choice: an unproven condition resolving toward action. Naming it matters
179+
because it is usually reached by removing a check that was accidentally
180+
load-bearing, not by writing a permissive one.
181+
182+
This document defines the terms; it does not impose them. Which surfaces are
183+
obliged to be fail-closed is stated in those subsystems' own requirements, so
184+
the obligation stays where it can be argued with and the definition does not
185+
drift across restatements.
186+
164187
### Health and evidence
165188

166189
- **Doctor** — the on-demand health check for one catalog as seen from one host.

0 commit comments

Comments
 (0)