{
  "schema": "memory.specs.telegram_chair_report_packet.v1",
  "_description": "task-2644 회장 verbatim 보강-2 — chair-required branch 4 enum (REQUEST_CHAIR_MERGE_APPROVAL / REPORT_CRITICAL7 / REPORT_PERMISSION_OR_CREDENTIAL_EXPANSION / HOLD_FOR_CHAIR) 에서만 발사하는 Telegram chair report packet 의 정본 템플릿. auto-executable / terminal_noop branch 에서 발사 시 invariant violation.",
  "_spec": "memory/specs/system_anu_callback_collector_control_plane_spec_260524.md (sha256: b27da557d4245bce476cd63f4ab174aefc8a25d2da07ec2c8d2c83b01ee96153)",
  "_anchors": ["ANCHOR-12", "ANCHOR-13", "ANCHOR-15"],
  "_envelope_byte_limit": 3900,
  "_envelope_byte_warn_lower": 3500,
  "version": "v1",
  "packet": {
    "chat_id": "{{CHAIR_CHAT_ID}}",
    "next_action_decided": "{{ONE_OF: REQUEST_CHAIR_MERGE_APPROVAL | REPORT_CRITICAL7 | REPORT_PERMISSION_OR_CREDENTIAL_EXPANSION | HOLD_FOR_CHAIR}}",
    "next_action_branch": "chair-required",
    "next_action_result_intended": "TELEGRAM_SENT",
    "callback_id": "{{CALLBACK_ID}}",
    "task_id": "{{TASK_ID}}",
    "pr_number": "{{PR_NUMBER_OR_NULL}}",
    "schedule_id": "{{SCHEDULE_ID_OR_NULL}}",
    "collector_session_id": "{{COLLECTOR_SESSION_ID}}",
    "terminal_state": "{{TERMINAL_STATE}}",
    "policy_class": "{{POLICY_CLASS}}",
    "critical7_hit": "{{BOOL}}",
    "chair_report_trigger": "{{ONE_OF_6_TRIGGERS_OR_NULL}}",
    "state_freshness_status": "{{FRESH|STALE|MISMATCH|MISSING}}",
    "control_plane_compliant": "{{BOOL}}",
    "evidence": {
      "ledger_entry_path": "{{ABS_PATH_TO_LEDGER_JSONL}}",
      "next_action_evidence_path": "{{ABS_PATH_TO_EVIDENCE}}",
      "task_md_sha256": "{{SHA256}}",
      "spec_md_sha256": "b27da557d4245bce476cd63f4ab174aefc8a25d2da07ec2c8d2c83b01ee96153"
    },
    "message_markdown": "## ⚠ {{NEXT_ACTION_DECIDED}}\n\n- callback_id: `{{CALLBACK_ID}}`\n- task: `{{TASK_ID}}` · PR `#{{PR_NUMBER_OR_NULL}}` · schedule `{{SCHEDULE_ID_OR_NULL}}`\n- terminal_state: `{{TERMINAL_STATE}}` · policy: `{{POLICY_CLASS}}`\n- chair_report_trigger: `{{TRIGGER}}`\n- state_freshness: `{{FRESHNESS}}`\n\n### 근거\n- ledger: `{{LEDGER_PATH}}`\n- evidence: `{{EVIDENCE_PATH}}`\n\n### 회장 결정 대기 (HOLD)\n- 다음 action 자동 실행 금지. 회장 verbatim 결정 후 .anu_state append 필요.",
    "byte_budget_check": {
      "method": "printf '%s' \"$P\" | wc -c",
      "max_bytes_utf8": 3900,
      "warn_lower_bytes_utf8": 3500
    },
    "do_not_use_phrases": [
      "callback received",
      "callback 도착",
      "callback 수신",
      "콜백 도착",
      "콜백 수신",
      "수신 완료"
    ],
    "required_source_attribution": "CALLBACK_COLLECTOR_PROCESSED",
    "merge_policy_lock_note": "MERGE_READY → 본 packet 의 next_action_decided 는 반드시 REQUEST_CHAIR_MERGE_APPROVAL (보강-3 hardcoded · override 불가). collector merge 실행 절대 금지."
  },
  "_validation_invariants": [
    "next_action_branch == chair-required (auto-executable/terminal_noop 에서 발사 금지)",
    "next_action_decided ∈ {REQUEST_CHAIR_MERGE_APPROVAL, REPORT_CRITICAL7, REPORT_PERMISSION_OR_CREDENTIAL_EXPANSION, HOLD_FOR_CHAIR}",
    "message_markdown 최종 bytes (UTF-8) ≤ 3900",
    "ledger_entry_path / next_action_evidence_path 모두 non-empty",
    "do_not_use_phrases 0건",
    "source_attribution=CALLBACK_COLLECTOR_PROCESSED"
  ]
}
