{
  "schema": "callback-prompt-byte-audit-candidate.v1",
  "ts_kst": "2026-05-20 21:50 KST",
  "kickoff_basis": "회장 2026-05-20 결정 (c) — '다음 dispatch부터 callback prompt UTF-8 byte 수를 기록하고 성공/실패 상관관계 관측'. doctrine + guide + byte-limit guard 후보 기록까지로 scope 제한.",
  "mode": "candidate-record-only · 자동 진행 0 · 구현 0 · 회장 명시 결정 대기",
  "high_confidence_hypothesis_adopted": {
    "source": "회장 직감 · 2026-05-20 채택(high-confidence 원인 후보)",
    "claim": "cokacdir 4096 limit 은 양방향. 봇→ANU normal/fallback callback cron prompt 도 UTF-8 4096 bytes 근처에서 silent drop · ≤3900 bytes (safe margin) 권장.",
    "evidence_pattern": [
      "outbound 동일 cokacdir 게이트 4096 limit 기실증(feedback_cron_prompt_4096_limit_260517)",
      "task-2612+3 callback miss(3h 갭·fallback 미등록 시) — 대형 deliverable task",
      "task-2621 callback miss(34min 갭·fallback 등록 후) — 대형 deliverable task(result.json 14KB·산출물 7건)",
      "성공 사례 (26E221CD task-2612+1 callback) response_len 2780 — 콤팩트한 callback prompt 추정",
      "두 callback miss 사례 모두 대형 deliverable → 봇이 풍부한 callback prompt 작성 시도 가정과 일치",
      "직접 반증 불가(실패 cron 은 schedule_history 미기록)이나 우회 증거 전부 일치"
    ],
    "anu_confidence": "~85% (회장 채택 high-confidence · 추가 측정 데이터로 정량화 필요)"
  },
  "chair_policy_verbatim_9_points": [
    "1. normal callback cron prompt 는 UTF-8 기준 3900 bytes 이하 hard limit",
    "2. 3500 bytes 초과 = warning",
    "3. 권장 target = 2800~3200 bytes",
    "4. callback prompt 에 긴 보고 금지",
    "5. callback prompt = envelope 만(task_id·result_path·decision_path·report_path·sha256·collector_role=ANU·owner_key·one-line summary)",
    "6. 상세 내용은 result.json/report.md 에만 기록(파일 위임)",
    "7. prompt 3900 bytes 초과 시 등록 시도하지 말고 CALLBACK_PROMPT_TOO_LARGE fail-closed 또는 file-envelope 방식 전환",
    "8. normal callback / fallback safety-net 모두 동일 byte guard 적용",
    "9. task-2612+3 / task-2621 callback miss 가설 대표 사례 박제"
  ],
  "measurement_unit_caveat": {
    "rule": "★ '3900자' 가 아니라 '3900 bytes (UTF-8)'",
    "reason": "한글/이모지/JSON-escape 로 자수 ≠ byte (예: 한글 1자 = UTF-8 3 bytes · 1300자 한글 ≈ 3900 bytes)",
    "correct_command": "printf '%s' \"$PROMPT\" | wc -c  (wc -c · NOT wc -m)"
  },
  "byte_audit_guard_candidate_design": {
    "step_1_dispatch_prompt_addition": "모든 future dev 위임 dispatch prompt 마지막에 1줄 명시: '★ normal/fallback callback cron prompt 는 UTF-8 ≤3900 bytes hard limit · 3500+ warning · 2800~3200 권장. envelope 만 · 상세는 result.json/report.md 위임 · printf 측정 · 초과 시 등록 시도 금지(CALLBACK_PROMPT_TOO_LARGE fail-closed 또는 file-envelope)'",
    "step_2_result_json_logging": "봇 result.json 에 callback_prompt_utf8_bytes 필드 의무 기록 — normal callback / fallback safety-net 각각 byte 수. 미기록 시 collector adjudication 시 표기.",
    "step_3_observation_dataset": "관측 누적: 매 dispatch 별 callback prompt UTF-8 byte 수 vs callback 발사 성공 여부 표본 수집. memory/events/callback-prompt-byte-audit-observations_NNNN.jsonl (append-only · 라인 1개 = 1 dispatch 관측).",
    "step_4_correlation_check_threshold": "10개 표본 누적 시 ANU 가 read-only 통계 분석 → 봇 callback prompt byte 분포 + 성공/실패 분기점 정량 추정 → 회장 보고",
    "step_5_guard_implementation_separate_task": "step_4 결과 회장 검토 후 별도 chair-authorized task 로 dispatch_callback_contract 또는 normal_fallback_callback_helper 에 byte guard 추가(현재 task 범위 아님 · 자동 진행 0)"
  },
  "scope_restrictions_verbatim": {
    "this_task_only_does": ["doctrine 박제(feedback_cron_prompt_4096_limit_260517 강화 절 추가 완료)", "CLAUDE.md 갱신(autoset:7번 항목 추가 완료)", "anu-guide.md 갱신(§3.9 inbound 한계 1줄 추가 완료)", "본 candidate-record 작성 (이 파일)"],
    "this_task_does_NOT_do": [
      "대형 dispatch path 수정 0",
      "새 시스템 확장 0",
      "dispatch_callback_contract.py byte guard 코드 추가 0(별도 chair-authorized task)",
      "normal_fallback_callback_helper.py byte guard 코드 추가 0",
      "기존 산출물 변조 0",
      "Track C task-2619 미접촉",
      "zombie cron 미접촉",
      "S03~S07 미접촉",
      "PR/merge/branch/main/credential 0",
      "새 dispatch 0",
      "새 cron 0",
      "ledger append 0(본 record 는 별도 ledger 아닌 memory/events/ 파일)"
    ]
  },
  "representative_callback_miss_cases_archived": {
    "task-2612+3": {
      "ts": "2026-05-19",
      "executor": "dev4 비슈누 (1923F01A)",
      "executor_complete_kst": "22:26:53",
      "callback_miss_duration": "~3h until live ANU manual recovery",
      "fallback_registered": false,
      "deliverable_size_hint": "산출물 6건 · result.json 약 5KB",
      "anu_collector_path": "live ANU manual collector (callback_4tuple_index.jsonl line 37~38 durable_success_writeback wbid dc62a812)"
    },
    "task-2621": {
      "ts": "2026-05-20",
      "executor": "dev6 페룬 (47B928B5)",
      "executor_complete_kst": "19:41:56",
      "callback_miss_duration": "34min until fallback safety-net F78E029B fire 20:15:54",
      "fallback_registered": true,
      "deliverable_size_hint": "산출물 7건 · result.json 14KB · before/after wiring matrix + production-path trace 등 대용량",
      "anu_collector_path": "fallback F78E029B spawned ANU session (callback_4tuple_index.jsonl line 49 durable_success_writeback wbid 151918ae)",
      "harm_reduction_evidence": "fallback safety-net 정책 효용 실증 — task-2612+3 (fallback 미등록) 3h vs task-2621 (fallback 등록) 34min · 5.3배 단축"
    }
  },
  "next_action": "회장 명시 결정 대기. step_2~step_5 진행 여부 = 별도 결정. 본 record 는 후보 박제까지.",
  "deliverables_now_complete": [
    "/home/jay/.claude/projects/-home-jay--cokacdir-workspace-autoset/memory/feedback_cron_prompt_4096_limit_260517.md (강화 절 추가)",
    "/home/jay/.cokacdir/workspace/autoset/CLAUDE.md (위임 절차 7번 항목 추가)",
    "/home/jay/workspace/memory/specs/anu-guide.md (§3.9 inbound 한계 1줄 추가)",
    "/home/jay/workspace/memory/events/callback-prompt-byte-audit-candidate_260520.json (이 파일 · candidate-record)"
  ],
  "audit_invariants": {
    "git_HEAD": "20456b5f83fc039f2fd6f50f4b94095c29b41bfb",
    "branch": "task/task-2553p1-f1-clean-replacement",
    "git_EQUAL": true,
    "commits_made": 0,
    "ANU_Layer_A_no_git": true,
    "PR_merge_branch_main_credential": 0,
    "ledger_append_for_this_task": 0,
    "new_cron_for_this_task": 0,
    "CLOSED_ALL_SETTLED_artifacts_byte0": true
  }
}
