{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://sasquatchlabs.io/schemas/yeti-evidence-trace.v1.schema.json",
  "title": "Yeti public evidence trace",
  "description": "Public-safe semantic envelope for an illustrative or executed Yeti evidence lifecycle. It does not expose raw telemetry, prompts, credentials, or chain-of-thought.",
  "type": "object",
  "additionalProperties": false,
  "required": ["schema_id", "schema_version", "artifact_class", "executed_proof", "trace_id", "generated_at", "verification_boundary", "scope", "stages", "lineage", "state_legend"],
  "properties": {
    "schema_id": {"const": "sasquatch.yeti.evidence-trace"},
    "schema_version": {"const": "1.0.0"},
    "artifact_class": {"enum": ["illustrative_example", "executed_record"]},
    "executed_proof": {"type": "boolean"},
    "trace_id": {"$ref": "#/$defs/ref"},
    "generated_at": {"type": "string", "format": "date-time"},
    "verification_boundary": {"type": "string", "minLength": 20, "maxLength": 1000},
    "scope": {
      "type": "object", "additionalProperties": false,
      "required": ["tenant_ref", "case_ref", "entity_ref", "entity_kind", "time_window"],
      "properties": {"tenant_ref":{"$ref":"#/$defs/ref"},"case_ref":{"$ref":"#/$defs/ref"},"entity_ref":{"$ref":"#/$defs/ref"},"entity_kind":{"type":"string"},"time_window":{"type":"object","additionalProperties":false,"required":["start","end"],"properties":{"start":{"type":"string","format":"date-time"},"end":{"type":"string","format":"date-time"}}}}
    },
    "stages": {
      "type": "object", "additionalProperties": false,
      "required": ["event", "detection", "investigation", "proposal", "approval", "execution", "reconciliation"],
      "properties": {
        "event":{"$ref":"#/$defs/stage"},"detection":{"$ref":"#/$defs/stage"},"investigation":{"$ref":"#/$defs/stage"},"proposal":{"$ref":"#/$defs/stage"},"approval":{"$ref":"#/$defs/stage"},"execution":{"$ref":"#/$defs/execution"},"reconciliation":{"$ref":"#/$defs/reconciliation"}
      }
    },
    "lineage": {"type":"array","minItems":1,"items":{"type":"object","additionalProperties":false,"required":["from","to","relation"],"properties":{"from":{"$ref":"#/$defs/ref"},"to":{"$ref":"#/$defs/ref"},"relation":{"type":"string"}}}},
    "state_legend": {"type":"object","additionalProperties":false,"required":["evidence","authority"],"properties":{"evidence":{"type":"array","items":{"enum":["observed","inspected","inference","unknown"]}},"authority":{"type":"array","items":{"enum":["proposed","approved","executing","executed","simulated","refused","failed","reconciled"]}}}}
  },
  "allOf": [
    {"if":{"properties":{"artifact_class":{"const":"illustrative_example"}}},"then":{"properties":{"executed_proof":{"const":false}}}},
    {"if":{"properties":{"artifact_class":{"const":"executed_record"}}},"then":{"properties":{"stages":{"properties":{"execution":{"required":["audit_ref"]}}}}}}
  ],
  "$defs": {
    "ref": {"type":"string","pattern":"^[A-Za-z0-9_.:-]{3,128}$"},
    "hash": {"type":"string","pattern":"^sha256:[a-f0-9]{64}$"},
    "stage": {"type":"object","additionalProperties":false,"required":["ref","evidence_class","state","summary"],"properties":{"ref":{"$ref":"#/$defs/ref"},"evidence_class":{"enum":["illustrative","executed","inspected","inference","unknown"]},"state":{"type":"string"},"summary":{"type":"string","maxLength":1000},"input_hash":{"$ref":"#/$defs/hash"},"output_hash":{"$ref":"#/$defs/hash"},"version_ref":{"$ref":"#/$defs/ref"}}},
    "execution": {"type":"object","additionalProperties":false,"required":["ref","evidence_class","state","summary","executor_kind","estate_changed","action_results"],"properties":{"ref":{"$ref":"#/$defs/ref"},"evidence_class":{"enum":["illustrative","executed"]},"state":{"enum":["not_started","executing","executed","simulated","refused","failed"]},"summary":{"type":"string"},"executor_kind":{"const":"non_ai_playbook_executor"},"estate_changed":{"type":"boolean"},"action_results":{"type":"array","items":{"enum":["executed","sandboxed","refused","failed","skipped"]}},"audit_ref":{"$ref":"#/$defs/ref"}}},
    "reconciliation": {"type":"object","additionalProperties":false,"required":["ref","evidence_class","required","status","summary"],"properties":{"ref":{"$ref":"#/$defs/ref"},"evidence_class":{"enum":["illustrative","executed","unknown"]},"required":{"type":"boolean"},"status":{"enum":["not_required","pending","reconciled"]},"summary":{"type":"string"},"human_observer_ref":{"$ref":"#/$defs/ref"},"observed_at":{"type":"string","format":"date-time"}}}
  }
}
