# task-3072 ANU 전수검사 — 봉인 구멍 2건 재현 프로브

ANU 재검증(2026-08-31)에서 **커밋된 테스트가 잡지 못하는 변이 2종**을 발견했다.
아래 프로브를 추가하면 두 구멍이 봉인된다. 현재 코드는 **옳다** — 구멍은 테스트 쪽이다.

## 구멍 1 — 순수 탭 전환이 테스트되지 않는다 (프론트)

변이: `Generate.tsx` 의 `useMemo` 의존성 배열에서 `activeResultTab` 제거
→ 커밋된 vitest 전량 **PASS (SURVIVED)**. 그런데 이건 **사고 그 자체의 재발**이다
(수정본을 보면서 복사하면 원본이 나간다).

원인: 커밋된 테스트는 "수정 반영" 버튼을 눌러 `revisedResult` 와 `activeResultTab` 이
**동시에** 바뀌는 경로만 탄다. 사용자가 원본/수정본 **탭 버튼을 직접 누르는** 경로는
어느 테스트도 밟지 않는다.

프로브: `probe_tabswitch.tsx.snippet` — 기존 `Generate.copySource.test.tsx` 말미에 붙인다.
검증됨: 원본 코드 PASS / 변이 FAIL.

## 구멍 2 — 가드가 `create_job` 뒤로 밀려도 전부 통과한다 (서버)

변이: 400 가드 블록을 `generation_queue.create_job` **뒤**(큐 제출 직전)로 위치이동
→ 커밋된 `test_task3072_benchmark_required.py` **12 passed (SURVIVED)**.

원인: `test_rejection_does_not_queue_a_job` 이 `"job_id" not in resp.json()` 만 본다.
400 응답 본문은 `{"detail": ...}` 이므로 **가드 위치와 무관하게 항상 참** — 이 불변식에
대해 사실상 공허(vacuous)하다. 보고서가 말한 "간접 봉인"은 성립하지 않는다.

프로브: `probe_jobleak.py.snippet` — 큐 레지스트리 증가 여부를 직접 본다.
검증됨: 원본 코드 PASS / 변이 FAIL.
