specs/197-continuous-co-review/contracts/review-thread.schema.json

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://specrew.local/contracts/continuous-co-review/review-thread.schema.json",
  "title": "ReviewThread",
  "type": "object",
  "additionalProperties": false,
  "required": ["schema_version", "thread_id", "run_id", "checkpoint_id", "findings", "dispositions", "created_at", "updated_at"],
  "properties": {
    "schema_version": { "const": "1.0" },
    "thread_id": { "type": "string", "minLength": 1 },
    "run_id": { "type": "string", "minLength": 1 },
    "checkpoint_id": { "type": "string", "minLength": 1 },
    "findings": { "type": "array", "items": { "type": "string" } },
    "dispositions": {
      "type": "array",
      "items": {
        "type": "object",
        "additionalProperties": false,
        "required": ["disposition_id", "finding_id", "state", "actor_role", "recorded_at"],
        "properties": {
          "disposition_id": { "type": "string", "minLength": 1 },
          "finding_id": { "type": "string", "minLength": 1 },
          "state": { "enum": ["open", "accepted_fix_pending", "resolved", "rejected_with_rationale", "escalated_to_human"] },
          "rationale": { "type": ["string", "null"] },
          "fix_evidence_ref": { "type": ["string", "null"] },
          "review_round": { "type": "integer", "minimum": 0 },
          "actor_role": { "type": "string", "minLength": 1 },
          "recorded_at": { "type": "string", "format": "date-time" }
        }
      }
    },
    "resolution_summary": { "type": "string" },
    "escalation_ref": { "type": ["string", "null"] },
    "created_at": { "type": "string", "format": "date-time" },
    "updated_at": { "type": "string", "format": "date-time" }
  }
}