# task-2571+2 Checklist

## G1 설계 게이트

- [x] 3문서 작성 (plan.md / context-notes.md / checklist.md)
- [x] 3 Step Why A-B-C 일관성 확인 (context-notes.md)
- [x] Codex G1 사전 검증 (권고 4건 전부 반영)
- [x] Sanitize 게이트 PASS (PII 없음 / false positive 1건 박제)
- [x] 신규 worktree 생성 확인 (`.worktrees/task-2571+2-dev4`, guard #7 diverged evidence 박제)

## 구현

- [x] scripts/finish-task.sh:1166 `-x` → `-f` 변경
- [x] scripts/finish-task.sh:1175 heredoc `|| echo` → `|| { echo fatal >&2; exit 1; }` 변경
- [x] grep 검증: 변경 라인 1건 매칭, -x 잔존 정확히 2건 (라인 42, 1145)
- [x] effective diff = approved_files (3개) — scripts/finish-task.sh + 신규 test + 보고서

## 테스트

- [x] 신규 regression test 작성 (`test_stash_lifecycle_fail_stop_bash.py`, 5 tests)
- [x] 신규 regression test PASS (5/5)
- [x] PR #124 기존 회귀 66건 PASS (1건 pre-existing fail = scope 외 박제)
- [x] bash -n syntax OK

## L1 스모크테스트

- [x] bash heredoc python failure → non-zero exit 실제 실행 검증 (test_bash_heredoc_python_failure_propagates_nonzero_exit)
- [x] stash_audit.py execute bit 없어도 -f 기준으로 실행 경로 유지 검증 (test_file_guard_passes_without_execute_bit_x_guard_fails)

## G2 구현 게이트

- [ ] 셀프 QC 8항목 PASS
- [ ] Gemini PR 리뷰 통과 (unresolved 0)
- [ ] 마아트 독립 검증 PASS

## G3 머지 게이트

- [ ] g3_independent_verifier.py PASS
- [ ] self-hosted CI SUCCESS
- [ ] mergeStateStatus CLEAN
- [ ] BOT identity squash merge

## 보고

- [ ] memory/reports/task-2571+2.md 작성
- [ ] L1 스모크테스트 결과 박제
- [ ] 보존 PR #123/#124 marker 시도 결과 박제
- [ ] 3문서 status 업데이트 (in-progress → completed)
- [ ] finish-task.sh 호출
