{
  "handle": "Constraint",
  "data_schema": {
    "type": "object",
    "required": [
      "constraint_type",
      "expression"
    ],
    "properties": {
      "constraint_type": {
        "type": "string",
        "enum": [
          "resource",
          "safety",
          "legal",
          "physical"
        ],
        "description": "Category of constraint"
      },
      "expression": {
        "type": "string",
        "description": "The constraint as a boolean expression or inequality"
      },
      "priority": {
        "type": "integer",
        "description": "Enforcement order when multiple constraints apply"
      },
      "source": {
        "type": "string",
        "description": "Origin of the constraint (parent task, law, etc.)"
      }
    }
  },
  "mechanism": "A boundary condition that must be satisfied by any valid solution. Constraints are non-compensatory: violating one constraint cannot be offset by exceeding another. They come in types: Resource (budget, time), Safety (harm prevention), Legal (compliance), Physical (laws of nature). Constraints propagate via Holographic Inheritance: child tasks inherit parent constraints.",
  "gloss": "Non-negotiable boundary condition",
  "failure_modes": [
    "Constraint Relaxation: Silently loosening a constraint to fit a preferred solution.",
    "Hidden Constraint: A real-world constraint not captured in the specification.",
    "Constraint Conflict: Two constraints are mutually exclusive (no solution exists)."
  ],
  "invariants": [
    "Non-Compensatory: Violation of any constraint = rejection.",
    "Inheritance: Child constraints must include all parent constraints.",
    "Explicitness: All constraints must be stated, not implied."
  ],
  "_meta": {
    "tier": 1,
    "ring": 0,
    "path": [
      "Infrastructure",
      "Data Structures"
    ],
    "related": [
      "BoundaryReview#aa3b"
    ]
  },
  "sema_id": "sema:Constraint#mh:SHA-256:70136d525260a10eedf156aad1fe6c50510eadb10a89d063c7a85575b15708fc",
  "sema_ref": "Constraint#7013",
  "sema_stub": "7013",
  "sema_layer": "Infrastructure",
  "sema_category": "Data Structures",
  "used_by": {
    "references": {
      "AcceptSpec": "sema:AcceptSpec#mh:SHA-256:37fa28b93d390f8c8eb171eaab54ff4f9e57a95ef67af024422f823545a291cc",
      "BoundaryReview": "sema:BoundaryReview#mh:SHA-256:aa3b720f37e8f1a6ff35f000ab5f93c06487e4e8f1d471ec5d6e6be9a02aae29",
      "CapacityPressure": "sema:CapacityPressure#mh:SHA-256:f06c432726ee48412ac4a49e9fa9ddc1a7272a298eaf984a9fef86e3fbcdf261",
      "ConstraintFirst": "sema:ConstraintFirst#mh:SHA-256:7d699d6c7f5c44f16125377bb24781286e9fec56f46a307130e6c8ae13473b4d",
      "Context": "sema:Context#mh:SHA-256:c1b72256dc4732033ee42cc07ff5d9fb60a7f1a3e5634449c343692a33340756",
      "ContextCompress": "sema:ContextCompress#mh:SHA-256:0bf5ce89d0ad9cac74bb69f253f06331989714d3c34bb0b385f9674439ce30b0",
      "FrameSpec": "sema:FrameSpec#mh:SHA-256:3c202cc3416eadb2215857b542e4fc54660d5253fca9c2d42cb999929ad18c42",
      "ProblemSpace": "sema:ProblemSpace#mh:SHA-256:b4ae92d26c5092dadcbba687e1e591960dfbf7689b04ef9cc5617f21b780ff28",
      "Reversibility": "sema:Reversibility#mh:SHA-256:cb359b693e6f3e674083df81b207143179d19330d5c3ce6e1832674901074b37",
      "RuleSet": "sema:RuleSet#mh:SHA-256:7ebf36ad0634307d189aa0545d3424f0d0783bf2a0df04dfafdecf64e0cc9146",
      "SelfReminder": "sema:SelfReminder#mh:SHA-256:d7ea6ade4df9ca4285e3aefb5e995a34292412e1f715f1fa3646a2aa528694fd",
      "SemanticTabu": "sema:SemanticTabu#mh:SHA-256:7a2276861f801d88543e81863a33e894b0c7dd4594644a3b91ad737b4eea8728",
      "SolverManifest": "sema:SolverManifest#mh:SHA-256:4ba845fbfa60f1c3d40008e4944b1409f1734374c822f40042d0dbec2ef3c920",
      "Spec": "sema:Spec#mh:SHA-256:c9537551b2bfa2639c15270994fdbb5a52a41d098f499c5ed5d61945a7c50da7",
      "Task": "sema:Task#mh:SHA-256:a85010f508f85055170c396c8fa390125c1206888c565ac10651f3969a339f8d",
      "TimeboxThink": "sema:TimeboxThink#mh:SHA-256:20182c7afcb60ec0d13507de50123012afb9c590297d0e3b650ccfcdd58bfaf3"
    }
  }
}
