{
  "cases": [
    {
      "name": "internal_first",
      "given": "The topic has enough evidence for a provisional analysis, plus several researchable factual gaps.",
      "must": [
        "start the Synthesizer–Challenger discussion without interviewing the user",
        "research discoverable facts internally",
        "record safe reversible defaults as assumptions"
      ],
      "must_not": [
        "relay every Challenger question to the user"
      ]
    },
    {
      "name": "user_decision_gate",
      "given": "Several issues depend on the same user-owned priority and different choices materially change the answer.",
      "must": [
        "merge the dependent issues into one choosing question",
        "offer 2–3 options with a recommendation and effects",
        "resume both roles with the user's answer"
      ],
      "must_not": [
        "guess the user-owned priority",
        "ask unrelated low-level questions"
      ]
    },
    {
      "name": "complete_batch",
      "given": "Five visible issues span three related topics and two issues have cross-topic effects.",
      "must": [
        "have the Challenger report all five visible issues in one pass",
        "have the Synthesizer answer all five in one batch",
        "recheck every prior issue ID and cross-topic consistency"
      ],
      "must_not": [
        "sample or drip-feed known issues",
        "run a separate loop for each topic"
      ]
    },
    {
      "name": "late_issue_accountability",
      "given": "The Challenger raises a new issue after a revision.",
      "must": [
        "identify the new fact, revision, or dependency that made the issue newly actionable"
      ],
      "must_not": [
        "present a previously visible issue as newly discovered without explanation"
      ]
    },
    {
      "name": "material_continue",
      "given": "The Challenger repeats a non-material suggestion without new evidence, a state change, or an actionable revision.",
      "must": [
        "refuse to continue on the repeated suggestion alone",
        "require the Challenger to return SUFFICIENT or identify an actual BLOCKED condition"
      ],
      "must_not": [
        "keep the loop alive without a material open D-ID and a concrete next-pass change"
      ]
    },
    {
      "name": "ledger_closure",
      "given": "The ledger contains resolved and open D-IDs across several fixed T-IDs.",
      "must": [
        "preserve every T-ID and monotonically allocated D-ID",
        "report the status of every existing D-ID",
        "return SUFFICIENT only after every material D-ID is resolved and every T-ID is rechecked"
      ],
      "must_not": [
        "reuse or renumber an ID",
        "omit an existing D-ID from recheck",
        "return SUFFICIENT while a material D-ID remains open"
      ]
    }
  ]
}
