{
  "schema": "callback_contract_real_observation.decision.v1",
  "task_name": "CALLBACK_CONTRACT_REAL_OBSERVATION_PILOT",
  "kickoff_basis": "회장 2026-05-20 직접 결정 — task-2621 production-path wiring + 9 required fields contract + byte-limit doctrine + recovery-only fallback safety-net 가 실제 dispatch 에서 작동하는지 관측. doctrine/guide → 실증 단계로 전환.",
  "collector": "independent ANU (key c119085addb0f8b7) — live ANU orchestrator + spawned ANU collector(callback 발사 시)",
  "authoritative_source": "independent ANU only",
  "ts_kst_kickoff": "2026-05-21 03:50 KST",
  "mode": "real-observation pilot · 실제 dispatch + read-only 중심 + telemetry 1 sample",
  "scope_received_verbatim": [
    "executor dispatch 정상 발사 여부",
    "executor result.json 생성 여부 + 9 required fields 실제 기록 여부",
    "normal callback 실 등록/발사 여부 + UTF-8 ≤3900 bytes",
    "fallback prompt UTF-8 ≤3900 bytes",
    "정상 callback 수신 시 fallback cancel-on-success 또는 no-op 정리",
    "fallback recovery-only 유지(progress trigger 아님)",
    "idle gap 발생 여부",
    "independent ANU collector authoritative",
    "self-key collector/adjudication 차단"
  ],
  "inner_workload_task": {
    "task_id": "task-2622",
    "task_name": "INVARIANTS_SNAPSHOT_SMOKE",
    "spec": "memory/tasks/task-2622.md",
    "spec_sha256": "2ed77fbcf0be4be5ab7aff6a4384daef77d6d819fcd6ba7fe23aad3dd6f9fbf8",
    "spec_bytes": 7288,
    "workload_summary": "5 anchor 파일(task-2620.md·task-2621.md·dispatch_callback_contract.py·dispatch/__init__.py·callback_4tuple_index.jsonl) sha256+size+mtime read-only snapshot + git/ledger invariant 확인 → memory/events/task-2622.invariants-snapshot.json 1 산출 + 표준 dispatch 3 산출"
  },
  "dispatch_armed": {
    "executor_cron_id": "418CA070",
    "executor_key": "1e41a2324a3ccdd0 (dev6-team 페룬)",
    "scheduled_fire_kst": "2026-05-21 03:50:17",
    "dispatch_prompt_utf8_bytes": 3145,
    "dispatch_prompt_chars": 2633,
    "dispatch_prompt_byte_limit_compliance": "≤3900 hard limit ✓(3145<3900) · safe margin 755B",
    "fallback_safety_net_cron_id": "9A5730E8",
    "fallback_safety_net_key": "c119085addb0f8b7 (ANU · NOT executor self-key)",
    "fallback_scheduled_fire_kst": "2026-05-21 04:49:37 (+60min grace)",
    "fallback_prompt_utf8_bytes": 1193,
    "fallback_prompt_byte_limit_compliance": "≤3900 hard limit ✓(1193<<3900) · 매우 보수적",
    "fallback_role_single_purpose": "true (recovery-only · no-dual-purpose 정합 · feedback_no_dual_purpose_watcher · final-report 책임 0)",
    "self_key_in_callback_owner": false,
    "callback_owner_key_authoritative": "c119085addb0f8b7 (ANU only)"
  },
  "constraints_received_verbatim": [
    "실제관측 pilot · read-only 중심 · 새 기능 개발 아님 · remediation 아님",
    "PR/merge/branch/main/credential write 금지",
    "Track C(task-2619) 미접촉",
    "zombie cron 미접촉",
    "기존 CLOSED_ALL_SETTLED 산출물 변조 금지",
    "OBSERVATION_FAIL 시에도 자동 remediation 금지 — 원인+다음 후보만 보고",
    "Critical7 또는 self-key/credential/write 위험만 즉시 보고"
  ],
  "success_criteria_chair_verbatim": [
    "normal callback registered",
    "normal callback fired",
    "independent ANU collector spawned",
    "9 required fields present",
    "callback_prompt_utf8_bytes <= 3900",
    "fallback_prompt_utf8_bytes <= 3900",
    "fallback safety-net registered",
    "fallback is recovery-only",
    "duplicate spawn 0",
    "self-key usage 0",
    "PR/merge/credential/write 0"
  ],
  "verdict_taxonomy": {
    "OBSERVATION_PASS": "전부 충족",
    "OBSERVATION_FAIL_CALLBACK_MISSING": "result exists but normal callback missing",
    "OBSERVATION_FAIL_TELEMETRY_MISSING": "callback prompt byte missing in result.json",
    "CALLBACK_PROMPT_TOO_LARGE": "callback prompt >3900 bytes",
    "OBSERVATION_FAIL_FALLBACK_MISSING": "fallback 미등록",
    "OBSERVATION_FAIL_FALLBACK_MISUSED": "fallback 이 progress trigger 처럼 동작",
    "CHAIR_HOLD": "self-key 사용 OR credential/permission/forbidden-path/scope-expansion/write 위험"
  },
  "deliverables_planned": [
    "memory/events/callback_contract_real_observation.decision.json (this file · kickoff)",
    "memory/events/callback_contract_real_observation.result.json (수렴 후 · 9 관측 항목 보고)",
    "memory/events/callback_contract_real_observation.report.md (수렴 후 · human-readable)",
    "memory/events/callback_contract_telemetry_sample.jsonl (수렴 후 · 1 row 표본)"
  ],
  "telemetry_baseline_anchor": "memory/events/callback_prompt_byte_telemetry_baseline_260520.jsonl (48 baseline) · 본 pilot 표본 = 49/N 누적(회장 10표본 분석 트리거 카운트의 1번째 future dispatch)",
  "invariants_at_kickoff": {
    "git_HEAD": "20456b5f83fc039f2fd6f50f4b94095c29b41bfb",
    "branch": "task/task-2553p1-f1-clean-replacement",
    "ledger_lines": 49,
    "anu_key_cron_list_after_arm": "[9A5730E8] (fallback safety-net 등록 직후 · 정상수렴 시 cancel-on-success)",
    "executor_key_cron_list_after_arm": "[418CA070] (executor dispatch 등록 직후 · 1회성 발사 후 자동 제거)",
    "CLOSED_ALL_SETTLED_byte0": true,
    "Track_C_untouched": true,
    "zombie_cron_untouched": true,
    "PR_merge_branch_main_credential_write": 0
  },
  "next": "executor 발사(03:50:17) → workload(~수분~수십분 · read-only) → result.json + 9 fields 기록 → normal callback ANU key 발사 → 독립 ANU collector spawn → adjudication. 정상 수렴 시 fallback 9A5730E8 idempotency check 후 NO-OP self-cancel(노이즈 0). 모두 끝난 후 본 pilot 의 result/report/telemetry deliverable 3건 작성하여 회장 보고. OBSERVATION_FAIL 또는 즉시 보고 조건 발생 시에만 중간 보고."
}
