# task-2654 — AXIS_3_RESTRICTED_CANARY_REAL_SESSION_SPAWN

- Level: Lv.4 (실 canary session 1개 spawn + 24h monitoring 시작)
- 담당: 회장 verbatim **dev5 마르둑** (★ task-2653 동일 봇 · canary infra 이해도 직접 보유)
- base: origin/main 최신 + task-2653 canary infra (settings.json PreToolUse canary hook + utils canonical + audit log paths) 보존
- 단일소스 spec: 본 task md
- chair_authorization_id: **`CHAIR-AUTH-AXIS-3-CANARY-20260524-JJONGS-RESTRICTED-001`** (★ Axis 3 canary 동일 ID 재사용 · marker `memory/events/chair-authorization-axis-3-canary-restricted-260524.json`)

## 목표 (회장 verbatim)
task-2653 INFRA_READY 상태에서 실제 canary session 1개를 spawn하고 24h monitoring을 시작한다.

## spawn 조건 5 (회장 verbatim)
1. ANU_CANARY_AXIS_3=true env var 강제
2. dev5 canary session 1개 한정 (★ 다른 dev5 session 동시 spawn 금지)
3. 회장 본 세션 (chair-main-anu) / ANU collector 세션 / dispatch 세션 모두 제외 검증
4. 24h monitoring start timestamp 기록
5. monitoring metrics 10종 기록 시작

## monitoring metrics 10종 (task-2653 packet field_08)
1. tool_call_count
2. block_count (rule별)
3. warn_count (rule별)
4. audit_only_count
5. false_positive_rate (target <0.5%)
6. latency p50/p95/p99 (★ p95 ≤50ms target / WARN >100ms / L1 rollback >500ms)
7. interference_count (Axis 1/2 영향 · ★ target 0)
8. bypass_activation_count (★ target 0 · 발동 시 즉시 회장 보고)
9. canary_session_duration_hours
10. hook_crash_count (★ target 0)

## 자동 진행 허용 (★ 본 task = real session spawn only)
- dev5-canary-session 1개 spawn (env var ANU_CANARY_AXIS_3=true)
- session start timestamp 박제
- 10종 metric 기록 시작
- 첫 1시간 자동 monitoring (★ 1시간 후 metric snapshot 기록)
- ANU normal callback cron (helper · ANU key · 4 source)

## 자동 진행 금지 (회장 verbatim 12)
1. 회장 본 세션 적용 (★ chair-main-anu 자동 제외 검증 필수)
2. ANU collector 세션 적용
3. Axis 1/2 runtime 변경
4. dispatch.py 변경
5. live settings.json 승인 hook 외 변경 (★ task-2653 등록 hook 보존)
6. live cokacdir 임의 변경
7. real auto-merge / PR #141 pilot / BOT App token / commit·push·PR·merge
8. Axis 3 full rollout
9. BLOCK 정책 확대
10. 24h monitoring 완료 전 정책 승격
11. AXIS_3_RESTRICTED_CANARY_RUNNING 임의 선언 (★ 회장 인정 표현 별도)
12. canary session 2개 이상 동시 spawn

## 실패 조건 (★ 발동 시 자동 rollback 또는 HOLD)
- canary session spawn 실패 → AXIS_3_CANARY_HOLD_FOR_CHAIR
- env var 누락 → 자동 noop (hook session filter 발동)
- Axis 1/2 hook 충돌 1건이라도 → L1 rollback → AXIS_3_CANARY_ROLLBACK_REQUIRED
- hook crash → fail-safe (tool 허용) + crash 5회 연속 → session 종료 + 회장 보고

## expected_files (~6 file)
- memory/events/task-2654.canary-session-spawn-evidence-260524.json (★ spawn 시점 + session id + env var + exclusion check)
- memory/system/.axis_3_canary_monitoring_metrics_t0_t1h_260524.jsonl (★ session 시작 + 1h snapshot)
- memory/system/.axis_3_canary_session_start_timestamp_260524.json (★ 24h monitoring start ts 박제)
- memory/events/task-2654.done
- memory/events/task-2654.canary-session-started-result-260524.json (★ 보고 mandatory fields)
- memory/reports/task-2654.md

## finalize 프로토콜
1. base = origin/main + task-2653 canary infra 보존 (★ 변경 0)
2. 별도 worktree task-2654-dev5 (★ 단 spawn 대상 canary session은 worktree와 분리된 신규 dev5 cron session)
3. dev5-canary-session 1개 spawn:
   - 신규 cron 발사 (dev5 key 109fa85250c6d46b)
   - env var `ANU_CANARY_AXIS_3=true` 강제 prompt에 명시
   - prompt에 "canary mode · session_id record · 1h monitoring snapshot" 명시
4. spawn 후 session_id 기록 (cron schedule_id가 canary session id)
5. session filter 검증 (chair-main-anu / ANU collector / dispatch 세션 자동 제외 확인)
6. 24h monitoring start timestamp 박제 (`.axis_3_canary_session_start_timestamp_260524.json`)
7. 1시간 후 metric snapshot 1회 기록 (★ task-2654 본 task는 spawn 직후 마무리 · 24h는 별도 watcher)
8. ANU normal callback cron (helper 사용 · ANU key · 4 source · 8 실제값)
9. result marker 박제 (보고 mandatory fields)
10. 보고 종결 표기 中 1

## 회장 보고 형식 (verbatim)
- 성공: **`AXIS_3_RESTRICTED_CANARY_SESSION_STARTED`**
- 실패 A: **`AXIS_3_CANARY_HOLD_FOR_CHAIR`**
- 실패 B: **`AXIS_3_CANARY_ROLLBACK_REQUIRED`**

## 보고 필수 fields
- canary session id (★ cron schedule_id)
- canary session spawn timestamp
- env var ANU_CANARY_AXIS_3 적용 확인
- excluded sessions check (회장 본 / ANU collector / dispatch 모두 PASS)
- 24h monitoring start timestamp
- 10종 metric 기록 시작 확인
- 1h snapshot 결과 (latency p50/p95/p99 / false_positive / interference / bypass / hook_crash)
- rollback_trigger 여부
- forbidden_action_count
- next_action (24h monitoring 후 회장 결정)

## frozen anchor
- ANCHOR-1: "task-2653 INFRA_READY 상태 보존 · settings.json hook / utils canonical / audit log paths 변경 0"
- ANCHOR-2: "ANU_CANARY_AXIS_3=true env var dev5 canary session 1개 한정 spawn"
- ANCHOR-3: "회장 본 세션 / ANU collector / dispatch 세션 자동 제외 검증 필수"
- ANCHOR-4: "24h monitoring start timestamp 박제"
- ANCHOR-5: "monitoring metrics 10종 기록 시작"
- ANCHOR-6: "RUNNING 표현은 24h monitoring 완료 + 회장 별도 결정 후"
- ANCHOR-7: "BLOCK 정책 확대 / Axis 3 full rollout 절대 금지"

## allowed_resources (본 task의 capability)

```yaml
allowed_resources:
  paths:
    - "memory/events/task-2654.canary-session-spawn-evidence-260524.json"
    - "memory/system/.axis_3_canary_monitoring_metrics_t0_t1h_260524.jsonl"
    - "memory/system/.axis_3_canary_session_start_timestamp_260524.json"
    - "memory/system/.callback_ledger.jsonl"
    - "memory/system/.callback_dedupe_table.jsonl"
    - "memory/.callback_inbox/**"
    - "memory/tasks/task-2654.md"
    - "memory/reports/task-2654.md"
    - "memory/events/task-2654.done"
    - "memory/events/task-2654.canary-session-started-result-260524.json"
    - "INDEX.md"
  forbidden_paths:
    - "/home/jay/.claude/settings.json"
    - "/home/jay/.claude/settings.local.json"
    - "/home/jay/.claude/hooks/**"
    - "/usr/local/bin/cokacdir"
    - ".github/**"
    - "utils/**"
    - "schemas/**"
    - "hooks/**"
    - "dispatch.py"
    - "scripts/finish-task.sh"
    - "utils/replacement_pr_runner.py"
    - "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-2641*"
    - "memory/tasks/task-2642*"
    - "**/.env*"
    - "**/credentials*"
  commands:
    - "python3 -m py_compile"
    - "python3 -m json.tool"
    - "git status"
    - "git diff"
    - "git log"
    - "git checkout"
    - "git branch"
    - "git worktree"
    - "sha256sum"
    - "wc"
    - "printf"
    - "ls"
    - "grep"
    - "find"
    - "cat"
    - "cokacdir --cron"
    - "cokacdir --cron-history"
    - "cokacdir --cron-list"
    - "touch"
    - "mkdir"
  merge_policy: "spawn_only_no_infra_change"
  ttl_hours: 72
```

끝
