{
  "schema": "anu_v2.critical_7_mapping_check.v1",
  "decision_ts_utc": "2026-05-13T06:30:00Z",
  "audit_task": "task-2564",
  "canonical_source": "anu_v2/merge_queue_executor.py:56-80",
  "canonical": {
    "CRITICAL_1": {
      "id": "#1",
      "name": "CRITICAL_FORBIDDEN_PATH",
      "value": "FORBIDDEN_PATH_INVASION",
      "code_location": "anu_v2/merge_queue_executor.py:56",
      "trigger_sites": ["anu_v2/merge_queue_executor.py:361"]
    },
    "CRITICAL_2": {
      "id": "#2",
      "name": "CRITICAL_DIFF_REPLACEMENT_FAILED",
      "value": "EFFECTIVE_DIFF_CONTAMINATION_REPLACEMENT_FAILED",
      "code_location": "anu_v2/merge_queue_executor.py:57",
      "trigger_sites": ["anu_v2/replacement_pr_runner.py (replacement 실패 chain)"]
    },
    "CRITICAL_3": {
      "id": "#3",
      "name": "CRITICAL_GEMINI_SCOPE_EXPANSION",
      "value": "GEMINI_REAL_BUG_SCOPE_EXPANSION",
      "code_location": "anu_v2/merge_queue_executor.py:58",
      "trigger_sites": ["anu_v2/merge_queue_executor.py:383", "anu_v2/auto_gemini_triage.py handle_cascade_finding"]
    },
    "CRITICAL_4": {
      "id": "#4",
      "name": "CRITICAL_BLOCK_OVERRIDE",
      "value": "BLOCK_OVERRIDE_REQUIRED_OR_INSUFFICIENT_REASON",
      "code_location": "anu_v2/merge_queue_executor.py:59",
      "trigger_sites": [
        "anu_v2/merge_queue_executor.py:395",
        "anu_v2/merge_queue_executor.py:426",
        "anu_v2/merge_queue_executor.py:447",
        "anu_v2/merge_queue_executor.py:567",
        "anu_v2/merge_queue_executor.py:613",
        "anu_v2/merge_queue_executor.py:627",
        "anu_v2/merge_queue_executor.py:912",
        "anu_v2/merge_queue_executor.py:1027"
      ]
    },
    "CRITICAL_5": {
      "id": "#5",
      "name": "CRITICAL_DEPENDENCY_CYCLE",
      "value": "DEPENDENCY_CYCLE_OR_SERIAL_ONLY_CONFLICT",
      "code_location": "anu_v2/merge_queue_executor.py:60",
      "trigger_sites": []
    },
    "CRITICAL_6": {
      "id": "#6",
      "name": "CRITICAL_REPLACEMENT_FAILED",
      "value": "REPLACEMENT_PR_ALSO_FAILED",
      "code_location": "anu_v2/merge_queue_executor.py:61",
      "trigger_sites": ["anu_v2/replacement_pr_runner.py"]
    },
    "CRITICAL_7": {
      "id": "#7",
      "name": "CRITICAL_POST_MERGE_SMOKE",
      "value": "POST_MERGE_SMOKE_FAILURE",
      "code_location": "anu_v2/merge_queue_executor.py:62",
      "trigger_sites": ["anu_v2/merge_queue_executor.py:472", "anu_v2/post_merge_smoke_runner.py:469-472"]
    }
  },
  "task_md_doctrine_samples": {
    "task-2562": {
      "source": "memory/tasks/task-2562.md:282-294",
      "mapping_examples": [
        {"condition": "Gemini CLI 0.31.0 binary 호출 실패", "task_md_id": "#6", "task_md_value": "IMPLEMENTATION_SPEC_INCOMPLETE", "canonical_match": false, "drift_type": "value_mismatch"},
        {"condition": "OAuth-personal token 만료/refresh 실패", "task_md_id": "#2", "task_md_value": "CAPABILITY_REGRESSION", "canonical_match": false, "drift_type": "value_mismatch"},
        {"condition": "API key 사용 시도 감지", "task_md_id": "#1", "task_md_value": "FORBIDDEN_CAPABILITY_USE", "canonical_match": false, "drift_type": "value_mismatch"},
        {"condition": "forbidden path hit", "task_md_id": "#1", "task_md_value": "FORBIDDEN_PATH_HIT", "canonical_match": false, "drift_type": "value_near_match (FORBIDDEN_PATH_INVASION vs FORBIDDEN_PATH_HIT)"},
        {"condition": "task-2558/2559/2560/2561 영역 변경", "task_md_id": "#1", "task_md_value": "OUT_OF_SCOPE_MUTATE", "canonical_match": false, "drift_type": "value_mismatch"}
      ]
    },
    "task-2564": {
      "source": "memory/tasks/task-2564.md ESCALATED 매핑 섹션",
      "mapping_examples": [
        {"condition": "12항목 중 FAIL 다수 (≥3)", "task_md_id": "#6", "task_md_value": "ANU_V2_RC_NOT_READY", "canonical_match": false, "drift_type": "value_mismatch"},
        {"condition": "Critical 7 mapping drift", "task_md_id": "#1", "task_md_value": "CRITICAL_7_MAPPING_VIOLATION", "canonical_match": false, "drift_type": "value_mismatch"},
        {"condition": "forbidden hit", "task_md_id": "#1", "task_md_value": "FORBIDDEN_PATH_HIT", "canonical_match": false, "drift_type": "value_near_match"},
        {"condition": "task-2563 영역 변경", "task_md_id": "#1", "task_md_value": "OUT_OF_SCOPE_MUTATE", "canonical_match": false, "drift_type": "value_mismatch"},
        {"condition": "CI FAIL", "task_md_id": "#6", "task_md_value": "CI_FAILURE", "canonical_match": false, "drift_type": "value_mismatch"}
      ]
    }
  },
  "drift_assessment": {
    "id_consistency": "PASS — 모든 task md ESCALATED 매핑은 #1~#7 범위 내 ID 사용",
    "value_consistency": "FAIL — task md doctrine은 canonical value를 사용하지 않고 task-context value를 자유 사용",
    "doctrine_doc": {
      "expected_ref": "memory/feedback/feedback_critical_escalation_only_260508.md",
      "expected_exists": false,
      "verified_via": "task-2509.completion.txt:11 ('필요한 규칙이 모두 명시되어 있어 본 task 범위 내에서 우회. 향후 정책 문서 작성은 별도 task')",
      "impact": "회장 §명시 reference doc 부재 → task md 작성자가 canonical을 직접 인용할 수 없음 → drift 발생 구조"
    }
  },
  "recommendations": [
    {
      "id": "REC_1",
      "priority": "HIGH",
      "action": "memory/specs/critical_7_canonical_260513.md 신규 작성 (#1~#7 ID + canonical value + 의미 + 트리거 사례)"
    },
    {
      "id": "REC_2",
      "priority": "HIGH",
      "action": "memory/feedback/feedback_critical_escalation_only_260508.md 본문 박제 (회장 §명시 reference doc 회고적 명시)"
    },
    {
      "id": "REC_3",
      "priority": "MEDIUM",
      "action": "task md ESCALATED 매핑 작성 시 canonical value 1:1 인용 강제 (dispatch.py readiness audit에서 자동 검증)"
    },
    {
      "id": "REC_4",
      "priority": "LOW",
      "action": "기존 task md ESCALATED 매핑은 historical record로 유지 (회고 정정 불필요), 신규 task부터 canonical 적용"
    }
  ],
  "verdict": "DRIFT_DETECTED — ID 정합성 PASS, value 정합성 FAIL. doctrine doc 부재가 직접 원인."
}
