{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://causalyticsimpact.com/specifications/impact-passport/v0.1/impact-passport.schema.json",
  "title": "Impact Passport v0.1",
  "description": "Draft schema for a portable record of impact evidence and claim authority.",
  "type": "object",
  "required": ["specification", "passport", "subject", "measurement_contract", "question", "evidence", "design", "diagnostics", "estimates", "valuation", "claim", "lineage", "approvals"],
  "properties": {
    "specification": {
      "type": "object",
      "required": ["name", "version", "status"],
      "properties": {
        "name": {"const": "Impact Passport"},
        "version": {"const": "0.1.0"},
        "status": {"enum": ["draft"]},
        "schema": {"type": "string"},
        "license": {"type": "string"}
      },
      "additionalProperties": true
    },
    "passport": {
      "type": "object",
      "required": ["id", "version", "status"],
      "properties": {
        "id": {"type": "string", "minLength": 1},
        "version": {"type": "string", "minLength": 1},
        "status": {"enum": ["draft", "issued", "superseded", "withdrawn"]},
        "issued_at": {"type": ["string", "null"], "format": "date-time"},
        "supersedes": {"type": ["string", "null"]}
      }
    },
    "subject": {
      "type": "object",
      "required": ["instrument_id", "instrument_name", "instrument_version", "artifact_digest", "organization", "environment"],
      "properties": {
        "instrument_id": {"type": "string", "minLength": 1},
        "instrument_name": {"type": "string", "minLength": 1},
        "instrument_version": {"type": "string", "minLength": 1},
        "artifact_digest": {"type": "string", "pattern": "^sha256:.+"},
        "organization": {"type": "string", "minLength": 1},
        "environment": {"enum": ["test", "staging", "production"]}
      }
    },
    "measurement_contract": {
      "type": "object",
      "required": ["id", "version", "digest"],
      "properties": {
        "id": {"type": "string", "minLength": 1},
        "version": {"type": "string", "minLength": 1},
        "digest": {"type": "string", "pattern": "^sha256:.+"},
        "locked_at": {"type": ["string", "null"], "format": "date-time"}
      }
    },
    "question": {
      "type": "object",
      "required": ["statement", "population", "intervention", "comparison", "outcome", "estimand", "horizon"],
      "additionalProperties": true
    },
    "evidence": {"type": "object", "required": ["observation_period", "unit_of_analysis", "sources"], "additionalProperties": true},
    "design": {
      "type": "object",
      "required": ["type", "identification_strategy"],
      "properties": {
        "type": {"enum": ["randomized", "quasi-experimental", "observational", "descriptive"]},
        "identification_strategy": {"type": "string"},
        "dag": {"type": "object"},
        "adjustment_set": {"type": "array", "items": {"type": "string"}},
        "rollout_structure": {"type": ["string", "null"]},
        "deviations_from_contract": {"type": "array"}
      }
    },
    "diagnostics": {"type": "object", "additionalProperties": true},
    "estimates": {
      "type": "array",
      "minItems": 1,
      "items": {
        "type": "object",
        "required": ["id", "method", "estimate", "unit", "status"],
        "properties": {
          "id": {"type": "string"},
          "method": {"type": "string"},
          "estimate": {"type": ["number", "null"]},
          "unit": {"type": "string"},
          "confidence_level": {"type": "number", "minimum": 0, "maximum": 1},
          "interval": {"type": "object"},
          "p_value": {"type": ["number", "null"], "minimum": 0, "maximum": 1},
          "status": {"enum": ["estimated", "qualified", "failed", "not_estimated"]}
        }
      }
    },
    "equity": {"type": "object", "additionalProperties": true},
    "valuation": {"type": "object", "required": ["currency", "buyer_approved_inputs"], "additionalProperties": true},
    "claim": {
      "type": "object",
      "required": ["level", "statement", "permitted_uses", "prohibited_uses", "rationale"],
      "properties": {
        "level": {"enum": ["operational", "comparative", "causal", "withheld"]},
        "statement": {"type": "string", "minLength": 1},
        "permitted_uses": {"type": "array", "items": {"type": "string"}},
        "prohibited_uses": {"type": "array", "items": {"type": "string"}},
        "rationale": {"type": "string"}
      }
    },
    "limitations": {"type": "array", "items": {"type": "string"}},
    "lineage": {"type": "object", "required": ["data_digest", "code_commit", "execution_id", "generated_at"], "additionalProperties": true},
    "approvals": {"type": "object", "required": ["scientific_review", "operational_owner", "value_owner"], "additionalProperties": true},
    "history": {"type": "array"}
  },
  "additionalProperties": false
}
