{
  "handle": "FailClosed",
  "mechanism": "Safety Default. If an operation fails, times out, or returns an ambiguous result, the system MUST treat it as a Negative (Deny/Stop/Reject). Prevents 'bypass on error' vulnerabilities. It acts as the wrapper for input guarding, {{output_guard}}, and {{circuit_breaker}}, enforcing a default-deny policy on any error or ambiguity.",
  "gloss": "Default-deny policy for uncertain states",
  "failure_modes": [
    "Availability Hit: {{system}} shuts down during minor outages (False Positive Denial).",
    "Dependency Deadlock: a non-critical dependency fails and the system locks up; compounds along a chain of fail-closed dependencies."
  ],
  "invariants": [
    "Default Deny: Ambiguity == Rejection.",
    "Error Atomicity: Partial failure = Total failure (Transaction Rollback)."
  ],
  "preconditions": [
    "Fallible operation initiated"
  ],
  "postconditions": [
    "{{system}} state remains invariant (no side effects) OR Operation succeeds"
  ],
  "parameters": [
    {
      "name": "timeout_action",
      "type": "Enum",
      "range": "{Reject, BoundedRetry}",
      "description": "Default: Reject. BoundedRetry defers the denial, it does not replace it. A fallback route on error is excluded — that is bypass-on-error."
    },
    {
      "name": "retry_limit",
      "type": "PositiveInteger",
      "range": "[1, 10]",
      "description": "Attempts before Rejecting when timeout_action is BoundedRetry."
    }
  ],
  "_meta": {
    "tier": 1,
    "ring": 0,
    "supersedes": [
      "sema:FailClosed#mh:SHA-256:ae79e8e091ca9f68f749936a99d55a386fba49254f9e7e958806b16b860332a1",
      "sema:FailClosed#mh:SHA-256:eae70da02880916a695d85d3752a59e16201c9f81b8a9af238d31863b3b6b157",
      "sema:FailClosed#mh:SHA-256:408814ddae0d3fa2b4022f997c1feab5eef743a155cdedeba75bc42d26e467ac",
      "sema:FailClosed#mh:SHA-256:ac1b0e4a6452ffc852d32a25914ef7907a49428004765f92e68ac7d232530ad0",
      "sema:FailClosed#mh:SHA-256:d23bf6663e53ecbee5c12a120f4fe379c1dfe8bc05f0b9bf2250703d4131faaf"
    ],
    "path": [
      "Infrastructure",
      "Primitives"
    ],
    "related": [
      "ErrorCostAsymmetry"
    ]
  },
  "sema_id": "sema:FailClosed#mh:SHA-256:dfbcf50c68d036ae4f18719bf59f41eddd83b5510bd60ff1326f8854240d8066",
  "sema_ref": "FailClosed#dfbc",
  "sema_stub": "dfbc",
  "dependencies": {
    "references": {
      "circuit_breaker": "sema:CircuitBreaker#mh:SHA-256:3caa9c387c04bb2ac66ec35a6cfe2665e11339f0d47576b96d68229226580c76",
      "output_guard": "sema:OutputGuard#mh:SHA-256:3618ee4d6aa243c10c16af73e4a385a6fa0c60ee193edb0a67d23e2c8d57f93e",
      "system": "sema:System#mh:SHA-256:f8eb318a1113a10fead02fbf14ae433767ac1a69c9579cdb584cc622068e90b3"
    }
  },
  "sema_layer": "Infrastructure",
  "sema_category": "Primitives",
  "used_by": {
    "references": {
      "AgentProtocol": "sema:AgentProtocol#mh:SHA-256:86a3f129036a28bab76d60f15ac835dfe779536cf02fe916f7b21cb1369ebf6d",
      "Exception": "sema:Exception#mh:SHA-256:ae9485039008abed9587e74c05a8c31c37d9a8f70347a11c0630fe87673fb7bb",
      "GracefulDegradation": "sema:GracefulDegradation#mh:SHA-256:6633433b9b713c199d43b085ec6e07183544183c507e5c9673aafa0518135df9",
      "InputGuard": "sema:InputGuard#mh:SHA-256:0ba715e91627fa1f6759a739da0d4159cac6404c8b45b6e97910d98ef0e8a079",
      "ThreeLevelCollision": "sema:ThreeLevelCollision#mh:SHA-256:11d62af6f35377784694f7fc381b41369cd99da2b7480c3fe33ef8132a77f88f"
    },
    "composes_with": {
      "ToolDiscovery": "sema:ToolDiscovery#mh:SHA-256:b1659e870015d2d6e37842f31a0bc1cc2d2d2882aaf6d0bc3b6b1236885890d7"
    }
  }
}
