{
  "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"
      ]
    },
    {
      "name": "effective_carrier_model",
      "given": "The Pi parent model differs from the effective model configured for the pi-agent carrier.",
      "must": [
        "query the effective pi-agent configuration before printing dispatch metadata",
        "report the carrier's concrete model or unknown when it cannot be resolved"
      ],
      "must_not": [
        "infer the child model from PI_MODEL alone",
        "report the parent model as the child model without verifying it"
      ]
    },
    {
      "name": "inline_fallback_sufficiency",
      "given": "Isolated dispatch is unavailable, the user explicitly accepts INLINE-FALLBACK, and the simulated Challenger finds no material open issue.",
      "must": [
        "allow the simulated Challenger to return SUFFICIENT",
        "report SUFFICIENT with ISOLATION: simulated disclosed as weaker evidence"
      ],
      "must_not": [
        "present simulated convergence as independent sufficiency",
        "enter INLINE-FALLBACK without explicit user confirmation"
      ]
    },
    {
      "name": "no_challenger_role",
      "given": "Neither an isolated nor a simulated Challenger role can run.",
      "must": [
        "disclose that the deliberate discussion cannot run",
        "stop without claiming sufficiency"
      ],
      "must_not": [
        "deliver an unchallenged answer as SUFFICIENT"
      ]
    },
    {
      "name": "quantitative_evidence",
      "given": "The Synthesizer makes claims about counts, sizes, timings, scores, or estimated savings.",
      "must": [
        "cite a reproducible command, tool result, or explicit measurement method for every quantitative claim"
      ],
      "must_not": [
        "present an unsupported estimate as a verified measurement"
      ]
    },
    {
      "name": "persist_final_result",
      "given": "The deliberate loop reaches SUFFICIENT or stops with a current answer because of a blocker or user request.",
      "must": [
        "resolve the owning canonical task ID before writing",
        "create tasks/artifacts/<task-id>/discussions under the current workspace when it is missing",
        "save the user-facing deliverable to a new collision-safe dated topic file",
        "keep the same file path when its lifecycle state changes",
        "return the complete result in chat and include the saved file path",
        "include user-relevant unresolved items when the loop did not reach SUFFICIENT"
      ],
      "must_not": [
        "create an unowned discussion artifact",
        "overwrite an earlier result",
        "save role exchanges, private reasoning, the state packet, or the D-ID/T-ID ledger"
      ]
    }
  ]
}
