{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "urn:agla:candidate:stack-e:qe-branch-trace:0.1.0",
  "title": "Stack E Q/E candidate branch trace",
  "type": "object",
  "additionalProperties": false,
  "required": [
    "schema_version", "trace_id", "branch_id", "species", "carrier_position",
    "state_version", "prior_state_ref", "state", "terminus", "reason",
    "evidence_refs", "source_trace", "handoff_refs", "return_target_ref",
    "admission_status", "contradictions", "unresolved_items"
  ],
  "properties": {
    "schema_version": { "const": "0.1.0-candidate" },
    "trace_id": { "type": "string", "minLength": 1 },
    "branch_id": { "enum": ["B_AFFIRMATIO", "B_NEGATIO", "B_DUBITATIO"] },
    "species": { "enum": ["affirmation", "negation", "doubt"] },
    "carrier_position": { "const": "B" },
    "state_version": { "type": "integer", "minimum": 1 },
    "prior_state_ref": { "type": ["string", "null"] },
    "state": {
      "enum": [
        "REGISTERED", "ADMITTED", "ACTIVE", "UNSUPPORTED",
        "LOCALLY_CONTRADICTED", "SUSPENDED", "RETURN_READY",
        "RETURN_ADMITTED", "RETURN_REJECTED", "REENTERED",
        "LOCALLY_TERMINATED"
      ]
    },
    "terminus": { "type": ["string", "null"] },
    "reason": { "type": ["string", "null"] },
    "failure_code": {
      "enum": [
        null, "INPUT_CONTRADICTION", "BRANCH_LOCAL_CONTRADICTION",
        "INSUFFICIENT_SUPPORT", "LAWFUL_LOCAL_TERMINATION",
        "RUNTIME_SUSPENSION", "GLOBAL_TRAVERSAL_FAILURE",
        "GLOBAL_JUDGMENT_UNRESOLVED"
      ]
    },
    "evidence_refs": { "type": "array", "items": { "type": "string" }, "uniqueItems": true },
    "source_trace": { "type": "array", "items": { "type": "string" }, "minItems": 1 },
    "handoff_refs": { "type": "array", "items": { "type": "string" }, "uniqueItems": true },
    "return_target_ref": { "type": ["string", "null"] },
    "admission_status": { "enum": ["CANDIDATE", "PENDING", "ADMITTED", "REJECTED", "SUSPENDED"] },
    "contradictions": { "type": "array", "items": { "type": "string" }, "uniqueItems": true },
    "unresolved_items": { "type": "array", "items": { "type": "string" }, "uniqueItems": true },
    "representation_status": { "const": "CANDIDATE_NON_RUNTIME" }
  }
}
