# task-2971 · [T4] InsuRo `/api/status` SHA·readiness 노출 (배포 반영 검증, 이슈1 선행)

## 배경 (6인 미팅 5사이클 결정 · 배포 자동화 선행)
- 오늘 "머지≠활성화" 함정: 서버가 origin/main보다 뒤쳐진 커밋으로 계속 실행돼도 **외부에서 알 방법이 없었음**.
- 현재 `/api/status`(`server/main.py:916`)는 `{"status":"ok"}`만 반환 → SHA/빌드/DB readiness 미노출 → "지금 살아있는 프로세스가 방금 머지된 커밋인지" 운영자가 **증명 불가**.
- codex 권고: 자동롤백/자동배포보다 **`/api/status`에 sha·ready·db 노출이 먼저**. 이게 반자동 배포(T5)의 전제.
- repo `/home/jay/projects/InsuRo`, origin/main `e0a7f64`. 담당 dev3.

## 작업
- `/api/status` 응답에 다음 추가:
  - **`sha`**: 기동 시 `git rev-parse HEAD`(WorkingDirectory 기준) 또는 배포가 주입한 `GIT_SHA` env.
  - **`ready`**: 애플리케이션 startup 완료 여부.
  - **`db`**: Supabase(프로덕션) 연결 ping 결과(간단 select 1 또는 health). SERVICE_ROLE 키 존재 여부 포함 가능(값 노출 금지, boolean).
  - **`build_time`/`started_at`**: 기동 시각.
- 예: `{"status":"ok","sha":"e0a7f64","ready":true,"db":"ok","started_at":"..."}`.

## 원칙
- **비밀 노출 금지**: 키·토큰 값 평문 금지(존재 여부 boolean만). PII 없음.
- Surgical. 기존 `/api/status` 계약 확장(하위호환), 다른 로직 무변경.
- SHA는 기동 시 1회 계산(요청마다 git 호출 금지 — 성능).

## 완료 게이트 (미팅 확정)
- **`/api/status` 한 번으로 현재 배포 sha·readiness·DB 상태를 사람이 즉시 판독 가능**.
- 검증: `curl .../api/status | jq .sha` == `git rev-parse origin/main` 대조 가능.

## 완료 조건
- **PR** + 회귀 + curl 실측 예시 + `memory/reports/task-2971.md` + `.done` + ANU 콜백. 머지 HOLD.
