# PR #248 CI 워처 — 롤백 SQL 봉인

## 목표
`Jeon-Jonghyuk/InsuRo` PR **#248** 의 CI 가 전부 통과하면 머지하고 ANU 에 보고한다.

## 배경
2026-08-22 task-2991/2996/3000 으로 고객 채팅의 익명 접근을 닫았는데,
각 작업의 **롤백 SQL 이 그 구멍을 되살린다.** 이 PR 은 그 롤백 2개에
`RAISE EXCEPTION` 가드를 넣어 봉인한다. 변경은 SQL 주석·가드뿐이며 기능 코드 무변경.
ANU 가 봉인 후 프로덕션에서 실제 실행해 차단을 확인했다.

## 절차

1. 토큰 로드
   ```
   set -a; source /home/jay/workspace/.env.keys; set +a
   ```

2. CI 확인 (최대 20분, 2분 간격 폴링)
   ```
   R=Jeon-Jonghyuk/InsuRo
   HEAD=$(GH_TOKEN="$BOT_GITHUB_TOKEN" gh api repos/$R/pulls/248 --jq '.head.sha')
   GH_TOKEN="$BOT_GITHUB_TOKEN" gh api repos/$R/commits/$HEAD/check-runs \
     --jq '.check_runs[] | "\(.conclusion // .status) \(.name)"'
   GH_TOKEN="$BOT_GITHUB_TOKEN" gh api repos/$R/pulls/248 --jq '.mergeable_state'
   ```

3. 모든 체크가 `success` 이고 `mergeable_state` 가 `clean` 이면 머지한다.
   반드시 아래 REST 경로를 사용하라.
   ```
   GH_TOKEN="$BOT_GITHUB_TOKEN" gh api -X PUT repos/$R/pulls/248/merge -f merge_method=squash
   ```
   ★ 동일 기능의 `gh` CLI 서브커맨드는 하네스가 차단한다. 위 REST 경로만 쓴다.

4. 머지 후 검증
   ```
   cd /home/jay/projects/InsuRo && git fetch origin main -q
   git show origin/main:supabase/migrations/20260820T000000_task2991_caller_binding_ROLLBACK.sql | grep -c 'SEALED 2026-08-22'
   git show origin/main:supabase/migrations/20260822T000002_task2996_push_subscriptions_caller_binding_ROLLBACK.sql | grep -c 'SEALED 2026-08-22'
   ```
   → 두 값 모두 **1 이상**이어야 한다. 0 이면 머지 실패로 판정하라.

## 실패 시
- CI 실패 → 머지하지 말고 실패한 체크 이름과 로그 요약을 보고
- 20분 초과 → 머지하지 말고 현재 상태 보고
- 머지가 409/405 로 거부 → `mergeable_state` 값을 함께 보고

## 보고
결과를 이 챗(6937032012)으로 **5줄 이내** 보고한다:
PR 번호 · 최종 CI 상태 · 머지 여부 · main sha · 봉인 문자열 검증 결과
