#!/usr/bin/env bash
# ANU 전수검사 완료 처리 — 단일 원자적 커밋 포인트
#
# 배경(2026-08-21, Codex 조율 후 재설계):
#   1차 설계는 빈 `touch <id>.anu-reviewed` 였다. 그러나
#   - 보안 하네스는 "ANU 가 self-key 로 완료 상태를 자체 확정"하는 것을 금지한다.
#   - 빈 마커는 그 금지 대상과 본질적으로 같은 범주다(증거 없는 자가 선언).
#   - `.done` rename 과 `.anu-reviewed` 생성이 별개 조치라 상태기계가 분열됐고,
#     rename 누락이 3회 재현됐다.
#   → 검토 완료를 하나의 원자적 동작으로 통합하고, 증거(해시)를 강제한다.
#
# 사용법: bash anu-review.sh <task_id> "<검토 요약 한 줄>"
#   예:   bash anu-review.sh task-2991 "DDL 적용 후 자체 프로브로 차단 실증(1/1/3행→0/0/0행)"
set -euo pipefail
EV=/home/jay/workspace/memory/events
RP=/home/jay/workspace/memory/reports

ID="${1:-}"; SUMMARY="${2:-}"
[ -z "$ID" ] && { echo "사용법: anu-review.sh <task_id> \"<검토 요약>\"" >&2; exit 2; }
case "$ID" in task-*) ;; *) ID="task-$ID";; esac
[ -z "$SUMMARY" ] && { echo "거부: 검토 요약이 비었다. 무엇을 재측정했는지 한 줄로 남겨라." >&2; exit 2; }

REPORT="$RP/$ID.md"
if [ ! -f "$REPORT" ]; then
  echo "거부: 보고서가 없다 — $REPORT" >&2
  echo "  보고서 없이 검토 완료를 선언할 수 없다." >&2
  exit 3
fi

# 검토 영수증 — 보고서 특정 버전에 결속한다.
# 검토 후 보고서가 바뀌면 해시가 달라져 감시자가 다시 미검토로 판정한다.
# ★ 본문만 해시한다. `## 세션 통계` 는 finish-task.sh 가 실행될 때마다 append 하는
#   메타데이터라 검토 대상이 아니다(2026-08-21: task-2984 에 8회 중복 append 실측).
#   이걸 포함하면 내용이 안 바뀌어도 재검토 경보가 계속 울려 차단 훅이 교착된다.
RSHA=$(awk '/^## 세션 통계/{exit} {print}' "$REPORT" | sha256sum | cut -c1-16)
TS=$(date -Iseconds)
RECEIPT="$EV/$ID.anu-reviewed.json"

python3 - "$ID" "$RSHA" "$TS" "$SUMMARY" "$REPORT" "$RECEIPT" "$EV" <<'PY'
import json, os, sys
task, rsha, ts, summary, report, receipt, ev = sys.argv[1:8]
# 봇 완료 마커를 같은 동작에서 정리한다(별개 조치로 두면 누락된다 — 3회 재현).
src = os.path.join(ev, f"{task}.done")
renamed = False
if os.path.exists(src):
    os.rename(src, src + ".acked")   # rename 이며 신규 생성이 아니다
    renamed = True
json.dump({
    "task_id": task,
    "reviewed_by": "ANU",
    "reviewed_at": ts,
    "report_path": report,
    "report_sha256_16": rsha,
    "review_summary": summary,
    "done_marker_renamed": renamed,
    "note": "report_sha256_16 이 현재 보고서와 다르면 재검토 대상이다."
}, open(receipt, "w", encoding="utf-8"), ensure_ascii=False, indent=2)
print(f"  검토 영수증 생성: {os.path.basename(receipt)}")
print(f"  보고서 해시: {rsha}")
print(f"  완료마커 rename: {'실행' if renamed else '해당없음(이미 acked)'}")
PY

echo "  ✅ $ID 전수검사 완료 처리"
