{
  "marker_version": "v1",
  "marker_type": "p2_contract_refinement_r6_r14_layer_separation_2_matrix_p2a_ready_conditions_260529",
  "recorded_at": "2026-05-29T15:30:00+09:00",
  "recorded_by": "ANU_chair_facing_session_p2_contract_refinement_design_only",
  "source_attribution": "RECEIVED_INBOUND_THIS_SESSION (★ 회장 verbatim '판정 P2-A_NEEDS_CONTRACT_REFINEMENT 로 고정한다 · P2-A 구현 금지 · 코드 수정 금지 · finish-task.sh 수정 금지 · dispatch 금지' + '다음 단계 P2 contract refinement spec 을 작성한다' + '이번 단계는 설계 refinement 만 한다' + 6 영역 verbatim 필수 포함 · 9 금지 verbatim · 보고 형식 6 항목 · '끝' sentinel 정합)",

  "scope": "DESIGN_REFINEMENT_ONLY",
  "anu_p2a_implementation_count": 0,
  "anu_code_modification_count": 0,
  "anu_finish_task_sh_modification_count": 0,
  "anu_helper_modification_count": 0,
  "anu_callback_cron_manual_registration_count": 0,
  "anu_done_creation_count": 0,
  "anu_task_2708_auto_dispatch_count": 0,
  "anu_pr_branch_push_merge_github_write_count": 0,
  "anu_dispatch_count": 0,

  "anu_mutating_action_count": 2,
  "anu_mutating_action_details": [
    "1. memory/specs/p2_contract_refinement_r6_r14_260529.md (★ refinement spec 작성 · 10 섹션 · 회장 verbatim 6 영역 1:1 박제)",
    "2. memory/events/p2_contract_refinement_decision_260529.json (★ 본 marker)"
  ],

  "STEP_1_R6_R14_RULE_DECISIONS_9": {
    "R6_cancellation_blocked_escalated_intent": {
      "current_wording": ".cancelled / BLOCKED / ESCALATED success exit 0 경로에서 callback registration 의도를 SKIP 명시 또는 register 강제 둘 중 하나로 명시",
      "affected_exit_paths": [67, 80, 470, 510, 526],
      "problem_solved": "intentional vs accidental skip 분리 0",
      "risk_if_accepted": "5 sub-case 결정 필요 (cancellation/BLOCKED/ESCALATED 의미 분리)",
      "risk_if_rejected": "5건 의도 모호 + 신규 path 추가 시 cascade",
      "dependency": "R9",
      "anu_recommended_decision": "MODIFY",
      "rationale": "rule ACCEPT 정합 · wording 광범위 → 3 sub-case 분리 필요"
    },
    "R7_python_helper_exit_exclusion": {
      "current_wording": "python helper 내부 sys.exit() 는 main control flow 외부로 spec 적용 대상 제외",
      "affected_exit_paths": [117, 132, 161, 192, 203, 208, 211, 222],
      "anu_recommended_decision": "ACCEPT",
      "rationale": "nested helper subprocess = main bash control flow 분리 명확 · spec scope 명확화 필수"
    },
    "R8_layer_1_validator_layer_2_registrar_separation": {
      "current_wording": "Layer 1 validator (bot self-register 검증) ↔ Layer 2 registrar (finish-task 직접 register) 분리 + enforcement 시점 spec",
      "affected_exit_paths": [282, 321, 531, 535, 571, 616, 717, 779, 804, 976, 1015, 1052, 1088, 1197, 1255, 1290, 1149],
      "anu_recommended_decision": "ACCEPT",
      "priority_flag": "★ CORE",
      "rationale": "task-2707 production evidence 직접 원인 · 두 layer 역할 분리는 P2 핵심 doctrine refinement"
    },
    "R9_exit_callback_kind_mapping": {
      "current_wording": "qc_fail/scope_guard_fail/taskctl_fail/dirty_workspace_fail/escalation_path/generic 각 분류 callback kind 매핑 명시",
      "affected_exit_paths": [359, 377, 451, 707, 483, 492, 505, 521, 1012, 1373, 1512],
      "anu_recommended_decision": "MODIFY",
      "rationale": "rule ACCEPT 정합 · 매핑 자체는 §3 matrix 9×7=63 cell 로 구체화"
    },
    "R10_layer_1_self_fail_recursion": {
      "current_wording": "Layer 1 validator self-fail 시 recursion 회피 + Layer 2 fallback 트리거 결정",
      "affected_exit_paths": [1149],
      "anu_recommended_decision": "ACCEPT",
      "priority_flag": "★ SAFETY",
      "rationale": "recursion 위험 회피는 안전성 doctrine 정합"
    },
    "R11_decisive_one_pass_definition": {
      "current_wording": "결정성 1회 통과 정의 = 시도 횟수 + 시간 한계 + idempotency key 패턴 3축",
      "affected_exit_paths": "ALL_41",
      "anu_recommended_decision": "ACCEPT",
      "priority_flag": "★ CORE",
      "rationale": "R3/R4 운용 정의 부재 시 implicit 결정 cascade · doctrine drift 위험"
    },
    "R12_task_type_exit_63_cell_matrix": {
      "current_wording": "task_type 7 × exit 9 = 63 cell matrix · P1-B 192-cell 패턴 정합",
      "affected_exit_paths": "ALL_41",
      "anu_recommended_decision": "MODIFY",
      "rationale": "rule ACCEPT · 매핑 자체는 §4 matrix 로 구체화 · 옵션 A (default + exception) 추천"
    },
    "R13_in_scope_out_of_scope_separation": {
      "current_wording": "spec 적용 범위 (in_scope) ↔ 명시적 적용 제외 (out_of_scope · python helper / nested subprocess / system task) 분리",
      "affected_exit_paths": [117, 132, 161, 192, 203, 208, 211, 222],
      "anu_recommended_decision": "ACCEPT",
      "rationale": "spec boundary 명확화 = doctrine drift 방지 핵심"
    },
    "R14_callback_escalation_marker_concurrent": {
      "current_wording": "동일 exit point 에서 callback marker / escalation marker 동시 발행 우선순위 + 가능 여부",
      "affected_exit_paths": [505, 521, 1012],
      "anu_recommended_decision": "ACCEPT",
      "rationale": "marker trail 분리 = audit trail 명확성"
    },
    "summary_anu_recommendations": {
      "ACCEPT_count": 6,
      "MODIFY_count": 3,
      "REJECT_count": 0,
      "core_rules_marked": ["R8", "R10", "R11"],
      "anu_self_decision_count": 0,
      "chair_decision_required_per_rule": true
    }
  },

  "STEP_2_LAYER_1_LAYER_2_SEPARATION": {
    "layer_1_validator_role": "L1106-1160 NORMAL-CALLBACK-ENFORCE · bot self-register 검증 · 4-source validator (schedule_id+schedule_history+ANU owner_key+inbound) · envelope 존재 시 trigger",
    "layer_2_registrar_role": "L1532-1558 callback runtime enforcement gate · finish-task 직접 ANU callback cron 등록 · helper launch · {task_id}.callback-launch.json 발행 · safety-net role",
    "self_fail_recursion_risk": "★ L1149 validator self-fail → exit 1 → L1532 미도달 → fallback 트리거 0 → recovery path 0 (★ task-2707 evidence)",
    "decision_areas_3_anu_recommendations": {
      "validator_failure_callback_registration": {
        "options": ["(a) emit marker 만 등록 0", "(b) emit marker + Layer 2 fallback 호출", "(c) chair_required marker"],
        "anu_recommended": "(b) fallback 호출",
        "rationale": "R3 정합"
      },
      "registrar_failure_marker_handling": {
        "options": ["(a) emit marker + safe-fail", "(b) emit marker + exit 1 cascade", "(c) emit marker + retry N회"],
        "anu_recommended": "(a) emit + safe-fail",
        "rationale": "R5 정합 + 안전성"
      },
      "enforcement_timing": {
        "options": ["(a) Layer 1 first / Layer 2 fallback only", "(b) Layer 2 first / Layer 1 verify after", "(c) Layer 1 + Layer 2 동시 enforce"],
        "anu_recommended": "(a) Layer 1 first / Layer 2 fallback",
        "rationale": "현재 코드 의도 추정 정합"
      }
    },
    "hypothesis_separated": "★ Layer 1 envelope check 의도 = bot self-register doctrine 강제일 수도 (★ 회장 결정 영역 · evidence 0)"
  },

  "STEP_3_EXIT_CALLBACK_KIND_9_X_7_MATRIX_SUMMARY": {
    "exit_categories_9": ["success_exit", "qc_fail", "scope_guard_fail", "taskctl_fail", "dirty_workspace_fail", "escalation_path", "callback_path", "fail_fast_generic", "cancellation_blocked_escalated"],
    "callback_kinds_7": ["normal", "fail_fast", "escalate", "hold_for_chair", "verifier_result", "fallback", "skip"],
    "anu_recommended_default_kind_per_exit": {
      "success_exit": "normal",
      "qc_fail": "escalate",
      "scope_guard_fail": "escalate",
      "taskctl_fail": "hold_for_chair",
      "dirty_workspace_fail": "hold_for_chair",
      "escalation_path": "escalate",
      "callback_path": "hold_for_chair",
      "fail_fast_generic": "fail_fast",
      "cancellation_blocked_escalated": "skip"
    },
    "total_cells": 63,
    "conditional_cells_count_pending_task_type_matrix": "63 cell 중 default 9 + conditional 매핑 = §4 task_type matrix 결정 후 cascade",
    "anu_self_decision_count": 0
  },

  "STEP_4_TASK_TYPE_EXIT_7_X_9_MATRIX_SUMMARY": {
    "task_types_7": ["code", "system_hook", "local_runtime", "formalization_commit_only", "read_only", "callback_only", "closeout_marker_only"],
    "exit_categories_9": "STEP_3 정합",
    "cell_attributes_4": ["should_register_callback", "callback_kind", "escalation_needed", "marker_required"],
    "total_cells": 63,
    "decision_options_3": {
      "OPTION_A_default_plus_exception": "9 task_type default + N exception cell (★ P1-B 192-cell 패턴) · ANU 추천",
      "OPTION_B_full_63_cell": "63 cell 전체 명시 · ambiguity 0 강제",
      "OPTION_C_minimal_9_core": "core 9 cell + default cascade · ambiguity 부분 잔존"
    },
    "anu_recommended": "OPTION_A (★ 결정 부담 최소화)",
    "core_cell_examples_9_anu_drafted": [
      "code × success_exit = YES/normal/NO/YES",
      "code × qc_fail = YES/escalate/YES/YES",
      "formalization_commit_only × qc_fail = YES/escalate+chair_required/YES/YES (★ task-2707 evidence 정합)",
      "formalization_commit_only × success_exit = YES/normal/NO/YES",
      "read_only × qc_fail = YES/escalate/YES/YES (★ Maat 정합)",
      "read_only × success_exit = YES/verifier_result/NO/YES",
      "callback_only × callback_path = NO/skip/NO/YES (★ recursion 회피)",
      "system_hook × scope_guard_fail = YES/hold_for_chair/YES/YES",
      "closeout_marker_only × success_exit = YES/normal/NO/YES"
    ],
    "anu_self_decision_count": 0
  },

  "STEP_5_P2A_READY_CONDITIONS_6_ANU_RECOMMENDED": [
    "1. ★ R8 + R10 + R11 ACCEPT 확정 (★ Layer 분리 + recursion 회피 + 결정성 정의 = 핵심 3축)",
    "2. ★ §3 matrix 9 default kind 결정 (★ §3.2 추천 default verbatim 확정)",
    "3. ★ §4 matrix 9 task_type default policy + N exception cell 결정 (★ §4.4 옵션 A 정합)",
    "4. ★ ambiguity 0 조건 — 41 exit × 7 task_type 모든 조합 callback 등록 의도 명확",
    "5. ★ self-fail recursion 방지 조건 — Layer 1 self-fail 시 recovery path 결정 (R10 ACCEPT 정합)",
    "6. ★ idempotency key 정의 조건 — task_id::callback_kind::executor_attempt_n 또는 등가 패턴 (R11 ACCEPT 정합)"
  ],
  "p2a_ready_minimum_viable": "R8 + R10 + R11 ACCEPT + §3.2 9 default + §4 옵션 A 7 default → P2-A_IMPLEMENTATION_READY 전환 충분 조건 (★ 회장 결정)",

  "STEP_6_TASK_2707_PROCESSING_3_OPTIONS": {
    "OPTION_alpha_p2a_implementation_then_finish_task_retry": "P2-A 구현 → task_type aware fail-fast → tdd_check 면제 → finish-task 통과 → .done + callback registration",
    "OPTION_beta_dev2_odin_readonly_verifier_dispatch": "★ ANU 추천 (★ P2-A timeline 독립 + Maat doctrine 정합)",
    "OPTION_gamma_hold_for_chair_until_p2a_completion": "보수적 · C1 closeout pending 유지",
    "anu_recommended": "OPTION_beta (★ p2 spec §9 + task-2706+1 Maat lineage 정합)",
    "chair_decision_pending": true
  },

  "CHAIR_DECISION_PENDING_8_VERBATIM_AREAS": [
    "1. R6~R14 9 candidate rule 각 ACCEPT / REJECT / MODIFY (★ §1 추천 정합 확인)",
    "2. Layer 1 ↔ Layer 2 분리 3 결정 영역 (★ §2.4 추천 정합 확인)",
    "3. §3 9 default kind 결정 (★ §3.2 추천 default verbatim 확정)",
    "4. §4 옵션 A/B/C 선택 (★ ANU 추천 = A)",
    "5. §4 9 task_type default policy + N exception cell 결정 (★ 옵션 A 정합)",
    "6. P2-A_READY minimum viable 조건 (★ §5.2 추천 정합 확인)",
    "7. task-2707 C1 closeout 옵션 α/β/γ 선택 (★ ANU 추천 = β)",
    "8. P2-A 구현 task ID 발급 시점 (★ 회장 별도 인가)"
  ],

  "HYPOTHESIS_SEPARATED_NOT_EVIDENCE": [
    "★ hypothesis 1: Layer 1 envelope check 의도 = bot self-register doctrine 강제 (★ 회장 결정 영역 · evidence 0)",
    "★ hypothesis 2: task-2683 lineage 가 Layer 1 NORMAL-CALLBACK-ENFORCE validator 도입 origin (★ git blame 검증 별도 영역)",
    "★ hypothesis 3: 9 candidate rule 중 R6~R14 모두 P2-A 전 결정 필요 vs 일부는 P2-A 이후 별도 round (★ §5.2 minimum viable 추천 · 회장 결정)"
  ],

  "anu_self_full_accept_judgment_count": 0,
  "anu_self_p2_classification_count": 0,
  "anu_self_rule_invention_count": 0,
  "anu_self_decision_authority_recognition": "★ 0 — 모든 R6~R14 추천 + Layer 결정 + matrix default + READY 조건 = ANU 추천 only · 회장 verbatim 결정 영역",

  "linked_markers": [
    "memory/specs/p2_contract_refinement_r6_r14_260529.md (★ 본 round refinement spec · 10 섹션)",
    "memory/specs/p2_exit_path_coverage_audit_260529.md (★ R1~R5 NEEDS_REFINEMENT evidence)",
    "memory/specs/p2_finish_task_callback_before_failfast_contract_draft_260529.md (★ R1~R5 verbatim 원본)",
    "memory/events/anu_p2_finish_task_routing_callback_registration_after_failfast_evidence_260529.json (★ STEP 1~4 evidence)",
    "memory/events/p2_exit_path_coverage_decision_260529.json (★ NEEDS_REFINEMENT 판정)",
    "memory/events/task-2707.implementation-pass-routing-fail-260529.json (★ 회장 verbatim 분류 고정)",
    "memory/events/task-2707.formalization-commit-260529.json (★ acceptance 7/7 PASS production evidence)",
    "memory/events/p1b_finish_task_profile_contract_accepted_with_known_caveats_260529.json (★ C2 caveat lineage)",
    "scripts/finish-task.sh L1106-1160 (★ Layer 1 NORMAL-CALLBACK-ENFORCE validator)",
    "scripts/finish-task.sh L1532-1558 (★ Layer 2 callback runtime enforcement gate)",
    "scripts/finish-task.sh 41 exit points (★ p2 audit §1.1 verbatim)"
  ]
}
