{
  "fixture_id": "task-2553plus47-48.independent-anu.v1",
  "schema": "dispatch.callback_owner_enforcement.regression_fixture.v1",
  "purpose": "The correct, doctrine-compliant counterpart of task-2553plus47.self-chain-violation: the normal/fallback completion callback owner is the INDEPENDENT ANU key (c119085addb0f8b7, chat 6937032012), the collector runs as an independent ANU collector session (collector_role=ANU), executor_key != collector_key, the 4-tuple is owner-valid, and recovery/verification/Codex audit/adjudication/follow-up dispatch are performed by the independent ANU session (NOT the executor self session). task-2553+49 enforce_callback_owner MUST PASS and the self-action guards MUST PASS (independent ANU actor). This is the +47/+48 independent-ANU verification path (ref memory/events/task-2553+47+48.independent-verification.result.json).",
  "authority_ref": "memory/events/task-2553+47+48.independent-verification.result.json",
  "doctrine_ref": "feedback_callback_must_spawn_independent_anu_not_executor_self_260518",
  "chat_id": "6937032012",
  "anu_keys": ["c119085addb0f8b7"],
  "executor_self_key_dev6_perun": "1e41a2324a3ccdd0",
  "cases": {
    "normal_callback_anu_owned": {
      "enforce_input": {
        "task_id": "task-2553+49",
        "executor_key": "1e41a2324a3ccdd0",
        "collector_key": "c119085addb0f8b7",
        "collector_owner_key": "c119085addb0f8b7",
        "collector_role": "ANU",
        "normal_collector_cron_id": "NC-2553p49-ANU",
        "fallback_callback_cron_id": "FB-2553p49-ANU",
        "dispatch_cron_id": "DSP-2553p49",
        "chat_id": "6937032012",
        "prompt_claims_anu_collector": true,
        "entry_path": "cokacdir_cron_direct"
      },
      "expected_verdict": "PASS",
      "expected_classifications": [],
      "expected_owner_is_independent_anu": true,
      "note": "owner == independent ANU key, collector_role=ANU, executor != collector, 4-tuple valid → PASS (regression 1 + 10). 4-tuple records executor_key/collector_key/collector_owner_key/collector_role=ANU/normal_collector_cron_id/fallback_cron_id."
    },
    "anu_session_codex_audit_ok": {
      "guard": "assert_not_self_adjudication",
      "input": {
        "executor_key": "1e41a2324a3ccdd0",
        "actor_key": "c119085addb0f8b7",
        "is_codex_audit": true,
        "is_adjudication": true
      },
      "expected_verdict": "PASS",
      "expected_classification": null,
      "note": "the independent ANU collector session (not the executor self key) runs the Codex audit + adjudication → PASS."
    },
    "anu_session_followup_dispatch_ok": {
      "guard": "assert_not_self_dispatch",
      "input": {
        "executor_key": "1e41a2324a3ccdd0",
        "actor_key": "c119085addb0f8b7",
        "is_followup_dispatch": true
      },
      "expected_verdict": "PASS",
      "expected_classification": null,
      "note": "the independent ANU session performs any follow-up dispatch → PASS (ANU 단독 dispatch 권한)."
    },
    "owner_4tuple_record": {
      "schema": "dispatch.callback_owner_4tuple.v1",
      "task_id": "task-2553+49",
      "dispatch_cron_id": "DSP-2553p49",
      "normal_collector_cron_id": "NC-2553p49-ANU",
      "fallback_callback_cron_id": "FB-2553p49-ANU",
      "executor_key": "1e41a2324a3ccdd0",
      "collector_key": "c119085addb0f8b7",
      "collector_owner_key": "c119085addb0f8b7",
      "collector_role": "ANU",
      "chat_id": "6937032012",
      "normal_collector_cron_id_role": "ANU",
      "fallback_cron_id_role": "ANU",
      "no_fallback": false
    },
    "idempotency_role_fallback_conflict": {
      "audit": "audit_writeback_binding_conflict",
      "history": [
        {
          "status": "COMPLETED",
          "dispatch_id": "DSP-2553p49",
          "chat_id": "6937032012",
          "normal_collector_cron_id": "NC-2553p49-ANU",
          "role": "executor",
          "fallback_callback_cron_id": "FB-2553p49-ANU"
        }
      ],
      "candidate": {
        "task_id": "task-2553+49",
        "dispatch_id": "DSP-2553p49",
        "chat_id": "6937032012",
        "normal_collector_cron_id": "NC-2553p49-ANU",
        "candidate_role": "fallback",
        "candidate_fallback_cron_id": "FB-DIFFERENT"
      },
      "expected_classification": "WRITEBACK_BINDING_CONFLICT",
      "expected_verdict": "FAIL",
      "note": "same +47 idempotency key (dispatch_id+chat_id+normal_collector_cron_id) but role executor→fallback AND fallback FB-2553p49-ANU→FB-DIFFERENT → WRITEBACK_BINDING_CONFLICT recorded, NOT a silent idempotent skip (regression 11, §2 line 21)."
    },
    "idempotency_true_duplicate": {
      "audit": "audit_writeback_binding_conflict",
      "history": [
        {
          "status": "COMPLETED",
          "dispatch_id": "DSP-2553p49",
          "chat_id": "6937032012",
          "normal_collector_cron_id": "NC-2553p49-ANU",
          "role": "executor",
          "fallback_callback_cron_id": "FB-2553p49-ANU"
        }
      ],
      "candidate": {
        "task_id": "task-2553+49",
        "dispatch_id": "DSP-2553p49",
        "chat_id": "6937032012",
        "normal_collector_cron_id": "NC-2553p49-ANU",
        "candidate_role": "executor",
        "candidate_fallback_cron_id": "FB-2553p49-ANU"
      },
      "expected_classification": "WRITEBACK_IDEMPOTENT_SKIP",
      "expected_verdict": "PASS",
      "note": "same idempotency key AND identical role/fallback binding → true duplicate, idempotent SKIP (regression 12)."
    }
  },
  "no_actor_attribution_change": true
}
