{
  "schema_version": "aipp-goal-completion-readiness-v1",
  "generated_at": "2026-05-15T07:25:49.502740+00:00",
  "objective_status": "publish_ready_inputs_complete",
  "publish_gate_status": "publish_poll_adjusted_snapshot",
  "publish_mode": "poll_adjusted",
  "real_data_blockers": [],
  "data_reliability_labels": [
    {
      "id": "official_population",
      "label": "공식 인구 기준",
      "reliability": "high",
      "basis": "MOIS/KOSIS official target coverage is active."
    },
    {
      "id": "candidate_roster",
      "label": "후보 명부",
      "reliability": "high",
      "basis": "Metropolitan, municipal, and byelection candidate coverage are ready."
    },
    {
      "id": "poll_results",
      "label": "여론조사",
      "reliability": "high",
      "basis": "12 accepted public poll rows; legal display gate is ok."
    },
    {
      "id": "news_metadata",
      "label": "뉴스 메타데이터",
      "reliability": "low",
      "basis": "News is used as metadata/digest signal only; article bodies are not public forecast facts."
    },
    {
      "id": "synthetic_persona",
      "label": "합성 페르소나",
      "reliability": "synthetic",
      "basis": "Synthetic personas are aggregate modeling inputs, not individual voter records."
    }
  ],
  "current_evidence": {
    "engine_version": "kangaroo-jump-engine-v1.0.5",
    "accepted_poll_rows": 12,
    "poll_review_queue_rows": 11,
    "legal_poll_gate_ok": true,
    "population_weighting_source": "official_csv",
    "population_target_status": "official_target_ready",
    "candidate_ready_offices": [
      "byelection",
      "metropolitan",
      "municipal"
    ],
    "candidate_missing_offices": []
  },
  "completion_rule": "The active goal is complete when real data blockers are empty and public-safe verification passes; data that needs more context receives a reliability label instead of becoming a person-wait blocker, and passing tests alone is not sufficient.",
  "verification_commands": [
    "npm run data:sync-jump",
    "npm run goal:verify",
    "git diff --check",
    "npm run scan:public-safe"
  ],
  "public_safety": "This report contains aggregate readiness and blocker metadata only. It must not include raw worksheet rows, local paths, secrets, raw HTML, attachments, or news full text."
}