# task-2663 — AXIS_3_RUNNING_GATE_SUPPLEMENT_EVALUATION

- Level: Lv.3 (★ Read-only audit · task-2657 guard 직접 호출 · production write 0 · commit/push/PR/merge 0)
- 담당: **dev6 페룬** (★ task-2657 scale-aware guard 직 작성자 · guard 코드 익숙 · task-2662 dev2 오딘과 분리)
- base: origin/main 최신 (HEAD `2752182a` · PR #148 merged)
- 단일소스 spec: 본 task md + `memory/events/task-2657.axis-3-canary-scale-aware-guard-implemented-chair-verified-260525.json`
- chair_authorization_id: **`CHAIR-AUTH-AXIS-3-RUNNING-GATE-SUPPLEMENT-20260525-JJONGS-EVAL-001`** (★ 회장 verbatim 1회성 발행 · 임의 생성 0)

## 배경

ANU 5조건 evaluation 결과: 3 MET / 1 PARTIAL / 1 NOT_MET (chair_signature). condition_2 safety + condition_4 coverage는 ANU 직접 audit log 조회 미수행으로 **PARTIAL_MET** 분류. 회장 verbatim "옵션 A 봇 위임" 결정 → task-2657 guard 직접 호출로 condition_2/condition_4 정확 평가.

## 회장 verbatim 결정 (1:1)

- 옵션 A 채택: 봇 위임
- executor = dev6 페룬 (★ 또는 dev5 마르둑 중 idle · 본 task-2663 dev6 권장 · guard 작성자)
- task-2662 dev2 오딘과 분리
- 목표 = task-2657 scale-aware guard 직접 호출하여 condition_2 / condition_4 정확 평가

## 평가 대상 (회장 verbatim)

### condition_2 safety (★ 필수 평가 8 항목)

1. trigger 7 모두 NO
2. rollback = false
3. hook_crash = 0
4. bypass = 0
5. false_positive = 0
6. interference = 0
7. **latency p95 ≤ 100ms**
8. **latency p99 ≤ 500ms**

### condition_4 coverage (★ 필수 평가 5 항목)

1. real_t0 (`2026-05-24T19:51:35+09:00`) 기준 24h wall-clock 도달
2. observer coverage 충분
3. **observer label drift는 task-2657 scale-aware guard 기준으로 보정** (★ raw_drift / queue_backlog / normalized_drift)
4. queue/backlog 설명 가능 지연과 실제 coverage gap 분리
5. Axis 1/2 interference 24h total = 0

## 허용 8 (회장 verbatim 1:1)

1. task-2657 guard 직접 호출 (★ utils/axis_3_canary_scale_aware_guard/* worktree 위치)
2. 24h audit logs read-only 확인 (★ 5 audit jsonl)
3. observer coverage 계산
4. trigger 7 최종값 계산
5. Axis 1/2 interference 0 확인
6. running 5조건 중 **condition_2 / condition_4만 보강 평가** (★ 다른 condition 평가 0)
7. result / report / done marker 작성
8. ANU normal callback 발사

## 금지 12 (회장 verbatim 1:1)

1. Axis 3 RUNNING 선언
2. full rollout
3. HARNESS_ENFORCED 전체 선언
4. policy 승격
5. BLOCK 정책 확대
6. PreToolUse runtime 변경
7. Axis 1/2 runtime 변경
8. live settings.json 변경
9. dispatch.py 변경
10. commit/push/PR/merge
11. task-2662와 혼합
12. ANU 자율 RUNNING promotion

## 완료 상태 (회장 verbatim)

- 성공: **`AXIS_3_RUNNING_GATE_SUPPLEMENT_EVALUATED`**
- 실패 또는 불충분: **`AXIS_3_CANARY_HOLD_FOR_CHAIR`**

## 보고 필수 10 (회장 verbatim 1:1)

1. **condition_2 verdict** (★ MET / NOT_MET · 8 항목 개별)
2. **condition_4 verdict** (★ MET / NOT_MET · 5 항목 개별)
3. **24h audit log summary** (★ 5 audit jsonl · line count + 분류)
4. **observer coverage summary** (★ window count · gap 분석)
5. **normalized drift / backlog 판단** (★ task-2657 scale-aware guard 기준)
6. **trigger 7 final values** (★ 24h 누적)
7. **Axis 1/2 interference count** (★ 24h total)
8. **running_eligible_without_chair_signature** (★ condition_5 chair_signature 제외 4 조건만 평가)
9. **forbidden_action_count** (★ target 0)
10. **recommended next action** (★ MERGE_READY · CHAIR_HOLD · ROLLBACK · 등 분류)

## 주의 (회장 verbatim)

★ **condition_2와 condition_4가 모두 MET이어도 chair_signature_condition이 없으면 RUNNING 승격 금지** · 최종 RUNNING 승격은 별도 회장 verbatim signature로만 진행.

★ task-2662 v3.1 dispatch는 독립 병행 유지 (★ 본 task와 무관).

## expected_files (~5)

- `memory/events/task-2663.done`
- `memory/events/task-2663.axis-3-running-gate-supplement-evaluation-result-260525.json` (★ 10 보고 필드)
- `memory/reports/task-2663.md`
- `memory/system/.axis_3_canary_running_gate_evaluation_audit.jsonl` (★ 신규 또는 append · read-only 평가 기록)

## allowed_resources

```yaml
allowed_resources:
  paths:
    - "memory/system/.axis_3_canary_running_gate_evaluation_audit.jsonl"
    - "memory/system/.callback_ledger.jsonl"
    - "memory/.callback_inbox/**"
    - "memory/tasks/task-2663.md"
    - "memory/reports/task-2663.md"
    - "memory/events/task-2663.done"
    - "memory/events/task-2663.axis-3-running-gate-supplement-evaluation-result-260525.json"
    - "INDEX.md"
  read_only_reference:
    - "/home/jay/workspace/.worktrees/task-2657-dev6/utils/axis_3_canary_scale_aware_guard/** (★ guard 모듈 호출)"
    - "/home/jay/workspace/.worktrees/task-2657-dev6/tests/axis_3_canary_scale_aware_guard/** (★ regression 참조)"
    - "memory/system/.axis_3_canary_latency_audit.jsonl"
    - "memory/system/.axis_3_canary_false_positive_audit.jsonl"
    - "memory/system/.axis_3_canary_interference_audit.jsonl"
    - "memory/system/.axis_3_emergency_bypass_audit.jsonl"
    - "memory/system/.axis_3_canary_hook_crash_audit.jsonl"
    - "memory/system/.axis_3_canary_observer_coalesce_audit.jsonl"
    - "memory/system/.axis_3_canary_drift_judgment_audit.jsonl"
    - "memory/system/.axis_3_canary_session_start_timestamp_260524.json"
    - "memory/events/task-2657.axis-3-canary-scale-aware-guard-implemented-chair-verified-260525.json"
    - "memory/events/task-2657.axis-3-canary-scale-aware-guard-result-260525.json"
    - "memory/events/task-2656.* (★ traffic_count=3 확인)"
    - "memory/events/task-2655.* (★ observer chain 19+ windows)"
  forbidden_paths:
    - "/home/jay/.claude/settings.json"
    - "/home/jay/.claude/settings.local.json"
    - "/home/jay/.claude/hooks/**"
    - "/usr/local/bin/cokacdir"
    - ".github/**"
    - "hooks/**"
    - "dispatch.py"
    - "dispatch/**"
    - "scripts/finish-task.sh"
    - "utils/**"
    - "utils/anu_callback_*.py"
    - "utils/axis_3_canary_scale_aware_guard/** (★ main repo 미존재 · worktree-only read-only)"
    - "utils/anu_spawn_visibility_guard/**"
    - "memory/tasks/task-2641*"
    - "memory/tasks/task-2642*"
    - "memory/tasks/task-2643*"
    - "memory/tasks/task-2644*"
    - "memory/tasks/task-2645*"
    - "memory/tasks/task-2646*"
    - "memory/tasks/task-2647*"
    - "memory/tasks/task-2648*"
    - "memory/tasks/task-2649*"
    - "memory/tasks/task-2650*"
    - "memory/tasks/task-2651*"
    - "memory/tasks/task-2652*"
    - "memory/tasks/task-2653*"
    - "memory/tasks/task-2654*"
    - "memory/tasks/task-2655*"
    - "memory/tasks/task-2656*"
    - "memory/tasks/task-2657*"
    - "memory/tasks/task-2658*"
    - "memory/tasks/task-2659*"
    - "memory/tasks/task-2660*"
    - "memory/tasks/task-2661*"
    - "memory/tasks/task-2662*"
    - "**/.env*"
    - "**/credentials*"
  commands:
    - "python3 -m py_compile"
    - "python3 -m json.tool"
    - "python3 -m pytest"
    - "python3 -c"
    - "ls"
    - "cat"
    - "stat"
    - "git status"
    - "git log"
    - "sha256sum"
    - "wc"
    - "printf"
    - "grep"
    - "find"
    - "tail"
    - "head"
    - "cokacdir --cron"
    - "cokacdir --cron-history"
    - "cokacdir --currenttime"
    - "touch"
    - "mkdir"
  merge_policy: "read_only_evaluation_no_runtime_change_no_pr"
  ttl_hours: 24
```

## frozen anchors

- ANCHOR-1: "Read-only audit only · production write 0 · commit/push/PR/merge 0"
- ANCHOR-2: "condition_2 + condition_4만 평가 · 다른 condition 평가 0"
- ANCHOR-3: "condition_2 + condition_4 모두 MET 이어도 RUNNING 승격 금지 · chair_signature_condition 별도 회장 verbatim 강제"
- ANCHOR-4: "task-2662 v3.1 dispatch (E9A8FBD2 / dev2 오딘) 독립 병행 · 본 task와 혼합 0"
- ANCHOR-5: "task-2657 guard worktree (/home/jay/workspace/.worktrees/task-2657-dev6/utils/axis_3_canary_scale_aware_guard/*) 호출만 · main repo 변경 0"
- ANCHOR-6: "Axis 1/2/3 runtime · dispatch.py · live settings.json · live cokacdir · hooks/* 변경 0"
- ANCHOR-7: "ANU 자율 RUNNING promotion 절대 0"

## finalize 프로토콜

1. base = origin/main 최신 (HEAD `2752182a`)
2. 별도 worktree task-2663-dev6
3. dev6 페룬 봇 작업 (read-only)
4. task-2657 guard worktree 직접 호출 (★ PYTHONPATH 또는 sys.path 추가)
5. 5 audit jsonl read + line count + 분류
6. observer chain window analysis (★ 60m → 1140m+ silent_continue + 24h target)
7. condition_2 + condition_4 각 8/5 항목 evaluation
8. result marker 박제 (10 보고 필드)
9. ANU normal callback cron (helper · ★ ANU key c119085addb0f8b7 · self-key 0 · UTF-8 ≤3900 bytes · envelope only · ★ PR #148 merge 후 absolute timestamp 30s 적용)
10. .done 발행

## 회장 보고 형식 (verbatim)

성공: **`AXIS_3_RUNNING_GATE_SUPPLEMENT_EVALUATED`**
실패 또는 불충분: **`AXIS_3_CANARY_HOLD_FOR_CHAIR`**

끝
