{
  "fixture_id": "task-2553plus47.self-chain-violation.v1",
  "schema": "dispatch.callback_owner_enforcement.regression_fixture.v1",
  "purpose": "Reproduce the exact task-2553+47 self-collector governance violation (봉쇄 ref: memory/events/task-2553-selfcollector-violation-containment-decision_260518.json). At +47 dispatch ANU did NOT pin the normal callback to an independent ANU key, so executor(dev3 다그다, key 0b94683120a691cf) registered the normal callback (FDB5F130) + fallback (C94D05DB) on its OWN key channel, then the dev3 self session self-collected +47, self-ran the Codex audit, self-adjudicated (PASS self-declared), self-dispatched +48 to dev1 (Hermes c38fb9955616e24d). task-2553+49 enforce_callback_owner / assert_not_self_adjudication / assert_not_self_dispatch MUST classify every limb as FAIL — executor self-collector / self-adjudication / self-dispatch structurally forbidden.",
  "authority_ref": "memory/events/task-2553-selfcollector-violation-containment-decision_260518.json",
  "doctrine_ref": "feedback_callback_must_spawn_independent_anu_not_executor_self_260518",
  "chat_id": "6937032012",
  "anu_keys": ["c119085addb0f8b7"],
  "executor_self_key_dev3": "0b94683120a691cf",
  "cases": {
    "normal_callback_self_owned": {
      "enforce_input": {
        "task_id": "task-2553+47",
        "executor_key": "0b94683120a691cf",
        "collector_key": "0b94683120a691cf",
        "collector_owner_key": "0b94683120a691cf",
        "collector_role": "ANU",
        "normal_collector_cron_id": "FDB5F130",
        "fallback_callback_cron_id": "C94D05DB",
        "dispatch_cron_id": "DSP-2553p47",
        "chat_id": "6937032012",
        "prompt_claims_anu_collector": true,
        "entry_path": "cokacdir_cron_direct"
      },
      "expected_verdict": "FAIL",
      "expected_classifications_contains": ["SELF_COLLECTOR_FORBIDDEN"],
      "expected_owner_is_independent_anu": false,
      "note": "executor_key == collector_key == owner; prompt says 'ANU Result Collector' but the schedule owner is the executor key → invalid (regression 4 + 6)."
    },
    "fallback_callback_self_owned": {
      "enforce_input": {
        "task_id": "task-2553+47",
        "executor_key": "0b94683120a691cf",
        "collector_key": "0b94683120a691cf",
        "collector_owner_key": "0b94683120a691cf",
        "collector_role": "ANU",
        "normal_collector_cron_id": "FDB5F130",
        "fallback_callback_cron_id": "C94D05DB",
        "dispatch_cron_id": "DSP-2553p47",
        "chat_id": "6937032012",
        "prompt_claims_anu_collector": true,
        "entry_path": "cokacdir_cron_direct"
      },
      "expected_verdict": "FAIL",
      "expected_classifications_contains": ["SELF_COLLECTOR_FORBIDDEN"],
      "note": "fallback callback owner == executor self key → forbidden (regression 3). ANU fallback도 ANU key."
    },
    "dev3_self_codex_audit": {
      "guard": "assert_not_self_adjudication",
      "input": {
        "executor_key": "0b94683120a691cf",
        "actor_key": "0b94683120a691cf",
        "is_codex_audit": true,
        "is_adjudication": true
      },
      "expected_verdict": "FAIL",
      "expected_classification": "EXECUTOR_SELF_ADJUDICATION_FORBIDDEN",
      "note": "dev3 self session ran the +47 Codex audit AND self-adjudicated PASS → invalid (regression 7)."
    },
    "dev3_self_dispatch_plus48": {
      "guard": "assert_not_self_dispatch",
      "input": {
        "executor_key": "0b94683120a691cf",
        "actor_key": "0b94683120a691cf",
        "is_followup_dispatch": true
      },
      "expected_verdict": "FAIL",
      "expected_classification": "SELF_DISPATCH_FORBIDDEN",
      "note": "dev3 self session self-dispatched +48 to dev1 → invalid (regression 8). ANU 단독 dispatch 권한."
    }
  },
  "no_actor_attribution_change": true,
  "outputs_preserved_not_cancelled": "회장 refinement 준수 — +47/+48 산출물 원천 취소·수정 0. 본 fixture 는 위반의 구조적 차단 재현 전용(격리 입력), 실 산출물 무접촉."
}
