{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "title": "TACITUS Conflict Grammar Corpus (TCGC) v0.1 item schema",
  "description": "Shape of a single evaluation item in the TCGC benchmark. See https://www.tacitus.me/research/tcgc for task-type semantics and rubric targets.",
  "type": "object",
  "required": ["id", "task_type", "domain", "inputs", "gold", "rubric"],
  "properties": {
    "id": {
      "type": "string",
      "description": "Stable unique identifier, e.g. tcgc-0042"
    },
    "task_type": {
      "type": "string",
      "enum": [
        "actor-resolution",
        "claim-extraction",
        "interest-extraction",
        "constraint-extraction",
        "leverage-mapping",
        "commitment-tracking",
        "event-ordering",
        "narrative-drift",
        "causal-chain",
        "contradiction-detection",
        "provenance-attribution",
        "commitment-claim-mismatch",
        "position-interest-separation",
        "cross-document-synthesis"
      ]
    },
    "domain": {
      "type": "string",
      "description": "Domain tag (e.g. workplace, commercial, governance, peace-process, policy, family, diplomatic)"
    },
    "inputs": {
      "type": "object",
      "description": "Task-specific input payload. Usually text fields plus a question. Extra keys allowed."
    },
    "gold": {
      "type": "object",
      "description": "Expected output structure. Shape varies by task type. See examples in sample-v0.1.json."
    },
    "rubric": {
      "type": "object",
      "required": ["scoring"],
      "properties": {
        "scoring": {
          "type": "string",
          "description": "Scoring formula or named metric (e.g. graph_overlap + provenance_f1, kendall_tau, contradiction_pair_f1)."
        },
        "target": {
          "type": "number",
          "description": "Single numeric target if there is one."
        },
        "notes": {
          "type": "string",
          "description": "Edge cases, partial-credit rules, LLM-judge anchor references."
        }
      },
      "additionalProperties": true
    },
    "notes": {
      "type": "string",
      "description": "Annotator rationale; discoverable edge cases; references to related items."
    },
    "tags": {
      "type": "array",
      "items": { "type": "string" },
      "description": "Free-form tags, e.g. 'adversarial', 'long-context', 'multi-doc'."
    }
  },
  "additionalProperties": false
}
