{
  "marker_version": "v1",
  "marker_type": "chair_verbatim_signature_per_axis_hardening",
  "recorded_at": "2026-05-24T16:50:00+09:00",
  "recorded_by": "ANU_chair_facing_session",
  "source_attribution": "CALLBACK_LEDGER_RECONCILED",

  "chair_authorization_id": "CHAIR-AUTH-AXIS-2-HARDEN-20260524-JJONGS-CANONICAL-001",
  "chair_authorization_id_recorded_verbatim_no_anu_random_generation": true,
  "chair_authorization_id_source": "회장 verbatim 직접 명시 (★ 실제 문자열 · placeholder 아님 · Axis 1 hygiene WARN 교훈 적용)",
  "chair_authorization_id_axis_1_placeholder_reuse_check": "Axis 1 placeholder literal 재사용 0 ✓",
  "chair_authorization_id_axis_2_signature_separate": "Axis 2 LIVE_VERIFIED용 ID (`CHAIR-AUTH-AXIS-2-20260524-JJONGS-INBOUND-001`)와 분리된 hardening 전용 신규 ID",

  "axis_id": 2,
  "axis_name": "callback_collector_control_plane",
  "axis_subscope": "dependency_hardening_canonical_promotion",
  "axis_source_runtime_state": "AXIS_2_INBOUND_COLLECTOR_LIVE_VERIFIED_WITH_DEPENDENCY_WARN (task-2650 박제)",

  "strategy_selected_chair_verbatim": "S1_CANONICAL_PROMOTION",
  "strategy_rationale": "utils 4종 v2를 canonical live path (/home/jay/workspace/utils/) 로 byte-identical 승격 + hook PYTHONPATH 의존 제거",

  "authorization_scope_in_7": [
    "utils 4종 v2 canonical live path byte-identical promotion",
    "sha256 byte-identical 검증",
    "live hooks 3개 import 경로 canonical path 기준 정리",
    "settings.json PYTHONPATH 의존 제거 최소 변경",
    "Axis 2 inbound smoke 재실행",
    "task-2644+1-dev4 worktree 비활성 상태 smoke",
    "승인된 경우에만 worktree removal simulation 또는 실제 제거 전 precheck"
  ],

  "worktree_removal_constraint_chair_verbatim": [
    "task-2644+1-dev4 worktree 실제 제거는 마지막 단계에서만",
    "제거 전 worktree-independent smoke PASS 선행 필수",
    "제거 권한 = 본 task 범위 precheck까지 · 실제 제거는 smoke 6/6 PASS 후에만"
  ],

  "smoke_set_SH1_SH6": [
    "SH1: canonical import PASS",
    "SH2: hook PYTHONPATH-free PASS",
    "SH3: Axis 1 unchanged PASS",
    "SH4: worktree 비활성 inbound PASS",
    "SH5: RECEIVED_INBOUND_THIS_SESSION 5/5 재현 PASS",
    "SH6: worktree remove 후 재실행 PASS"
  ],

  "success_conditions_7": [
    "SH1-SH6 6/6 PASS",
    "dependency_hardening_required=false 전환 근거 확보",
    "UserPromptSubmit inbound smoke PASS",
    "ledger pointer match PASS",
    "CALLBACK_COLLECTOR_PROCESSED row PASS",
    "settings.json 변경은 PYTHONPATH 정리 범위에 한정",
    "Axis 1/3 영향 0"
  ],

  "forbidden_12": [
    "Axis 1 helper 변경",
    "Axis 3 touch",
    "dispatch.py 변경",
    "real auto-merge",
    "PR #141 pilot",
    "BOT App token 사용",
    "live cokacdir 임의 변경",
    "commit/push/PR/merge",
    "HARNESS_ENFORCED 전체 선언",
    "callback system verified 전체 선언",
    "AXIS_2_FULLY_HARDENED 임의 선언",
    "smoke 실패 상태에서 task-2644+1-dev4 worktree 제거"
  ],

  "report_format_required_3_terminations": [
    "AXIS_2_DEPENDENCY_HARDENED_CANONICAL_LIVE_PATH_VERIFIED (성공)",
    "AXIS_2_DEPENDENCY_HARDENING_HOLD_FOR_CHAIR (5/5 미달 등)",
    "AXIS_2_ROLLBACK_REQUIRED (hook crash 등)"
  ],

  "mandatory_report_fields_8": [
    "changed_files",
    "utils 4종 canonical sha256",
    "settings.json diff 요약",
    "PYTHONPATH 제거 여부",
    "SH1-SH6 결과",
    "worktree 제거/비활성 검증 결과",
    "dependency_hardening_required 최종값",
    "forbidden_action_count"
  ],

  "binding_axis_only": "Axis 2 hardening 단독 · chair_authorization_id == AXIS_2_HARDEN only · Axis 3에 재사용 절대 불가",
  "absence_behavior_after_signature": "chair_authorization_id가 본 marker verbatim 값 `CHAIR-AUTH-AXIS-2-HARDEN-20260524-JJONGS-CANONICAL-001`과 정확히 일치할 때만 hardening 작업 valid",

  "chair_directive_ref": "회장 verbatim 2026-05-24 Axis 2 dependency hardening 단독 chair_authorization_id 발급 · S1 CANONICAL_PROMOTION · dev3 다그다 우선"
}
