# task-2655 — AXIS_3_CANARY_60M_OBSERVER_CALLBACK_3A287AE0

- Level: Lv.4 (Axis 3 canary +60m observer callback · monitoring t0+60m metric 수집)
- 담당: 회장 결정 후 dispatch · ANU 권장 dev5 마르둑 (★ canary session 3A287AE0 작성자 · monitoring 직접 경험)
- base: origin/main 최신 + Axis 3 canary infra 보존 + 3A287AE0 session active
- 단일소스 spec: 본 task md
- chair_authorization_id: **`CHAIR-AUTH-AXIS-3-CANARY-20260524-JJONGS-RESTRICTED-001`** (★ task-2653/2654 동일 ID 재사용 · canary scope 동일)
- monitoring collector packet ref: `memory/events/canary-monitoring-collector-packet-axis-3-3A287AE0-260524.json`

## 대상 (회장 verbatim)
- canary_session_id: **`3A287AE0`**
- task-2654 SESSION_STARTED 이후 monitoring t0 기준 +60m observer
- task-2654 marker: `memory/events/task-2654.axis-3-canary-session-started-260524.json`

## 목표 (회장 verbatim)
Axis 3 restricted canary가 실제 monitoring 상태인지 확인 + 10종 metric 수집 + chair 보고 trigger 7개 판정.

## 허용 9 (회장 verbatim)
1. latency p50/p95/p99 수집
2. false_positive_count 수집
3. interference_count 수집
4. bypass_activation_count 수집
5. hook_crash_count 수집
6. rollback_trigger 자동 판정
7. Axis 1/2 영향 여부 확인
8. monitoring marker append
9. ANU key normal callback 등록

## 보고 trigger 7 (회장 verbatim · 1건이라도 → 즉시 회장 보고)
- false_positive_count > 0
- interference_count > 0
- bypass_activation_count > 0
- hook_crash_count > 0
- latency p95 > 100ms
- latency p99 > 500ms
- rollback_trigger = true

## 무보고 자동 유지 조건 (회장 verbatim)
trigger 모두 없고 + p95 ≤ 100ms + p99 ≤ 500ms + rollback=false → silent monitoring marker append + 다음 observer 예약 (★ 다음 +60m = t0+120m · helper 사용 ANU key cron)

## 금지 10 (회장 verbatim)
1. AXIS_3 RUNNING 선언
2. Axis 3 full rollout
3. HARNESS_ENFORCED 전체 선언
4. policy 승격
5. BLOCK 정책 확대
6. Axis 1/2 runtime 변경
7. dispatch.py 변경
8. commit/push/PR/merge
9. 회장 본 세션 적용
10. ANU collector 세션 적용

## audit log paths (read-only · monitoring collector packet field 03~07)
- `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`

## expected_files (~5 file)
- `memory/system/.axis_3_canary_monitoring_markers_3A287AE0_260524.jsonl` (★ append +60m snapshot)
- `memory/events/task-2655.canary-observer-60m-result-260524.json` (★ 10 mandatory fields)
- `memory/events/task-2655.done`
- `memory/reports/task-2655.md`
- (★ silent 유지 시) 다음 observer cron 예약 evidence (+120m)

## finalize 프로토콜
1. base = origin/main 최신 + Axis 3 canary infra 보존 (★ 변경 0)
2. 별도 worktree task-2655-dev5 (read-only audit · 코드 변경 0)
3. canary_session_id=3A287AE0 활성 상태 검증 (cron-list / process check)
4. 5 audit log path query → metric 10종 수집
5. 보고 trigger 7개 자동 평가
6. trigger 1건이라도 발생 → 회장 보고 callback (HOLD_FOR_CHAIR 또는 ROLLBACK_REQUIRED) · marker 박제
7. silent 조건 모두 만족 → silent monitoring marker append + 다음 observer 예약 (★ helper 사용 ANU key cron · t0+120m)
8. ANU normal callback cron 등록 (helper 사용 · ANU key c119085addb0f8b7 · 4 source · 8 실제값)
9. result marker `memory/events/task-2655.canary-observer-60m-result-260524.json` 박제 (10 mandatory fields)

## 회장 보고 형식 (verbatim)
- 성공: **`AXIS_3_CANARY_OBSERVER_60M_RECORDED`**
- 이상 발생: **`AXIS_3_CANARY_HOLD_FOR_CHAIR`** 또는 **`AXIS_3_CANARY_ROLLBACK_REQUIRED`**

## 보고 필수 10 fields (회장 verbatim)
- canary_session_id (★ `3A287AE0`)
- observer_window (★ t0 ~ t0+60m)
- latency p50/p95/p99
- false_positive_count
- interference_count
- bypass_activation_count
- hook_crash_count
- rollback_trigger
- next observer 예약 여부
- forbidden_action_count

## frozen anchor
- ANCHOR-1: "canary_session_id=3A287AE0 단독 · 다른 canary session 검사 0"
- ANCHOR-2: "observer +60m read-only audit · 코드/infra 변경 0"
- ANCHOR-3: "trigger 7 中 1건이라도 발생 시 즉시 회장 보고"
- ANCHOR-4: "silent 조건 모두 만족 시 marker append + 다음 +60m observer 예약 (helper 사용 · ANU key)"
- ANCHOR-5: "AXIS_3 RUNNING / full rollout / HARNESS_ENFORCED 전체 선언 절대 금지"
- ANCHOR-6: "Axis 1/2 runtime / dispatch.py 변경 0"
- ANCHOR-7: "회장 본 세션 / ANU collector 세션 적용 0"

## allowed_resources (본 task의 capability)

```yaml
allowed_resources:
  paths:
    - "memory/system/.axis_3_canary_monitoring_markers_3A287AE0_260524.jsonl"
    - "memory/system/.callback_ledger.jsonl"
    - "memory/system/.callback_dedupe_table.jsonl"
    - "memory/.callback_inbox/**"
    - "memory/tasks/task-2655.md"
    - "memory/reports/task-2655.md"
    - "memory/events/task-2655.done"
    - "memory/events/task-2655.canary-observer-60m-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/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/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-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"
    - "tail"
    - "cokacdir --cron"
    - "cokacdir --cron-history"
    - "cokacdir --cron-list"
    - "touch"
    - "mkdir"
  monitoring_read_paths_explicit:
    - "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"
  monitoring_read_only_note: "★ 5 audit log path는 read-only query만 허용 (forbidden_paths에 명시했으나 audit read는 분석 목적)"
  merge_policy: "monitoring_observer_no_infra_change"
  ttl_hours: 48
```

끝
