---
task_id: task-2342
type: checklist
scope: task
created: 2026-05-02
updated: 2026-05-02
status: completed
---

# 체크리스트: task-2342

**task**: task-2342

---

## Phase 1 — 설계 + 위임 (마르둑)

- [x] A. 원인 진단 (vite.config.ts denylist에 `/downloads/` 부재 확인)
- [x] B. Codex Gate 통과 (pass:true, critical:false)
- [x] C. worktree 생성 (task/task-2342-dev5)

## Phase 2 — 구현 (이쉬타르)

- [x] A. vite.config.ts navigateFallbackDenylist 확장 (4 regex)
- [x] B. public/_headers `/downloads/*.zip` 블록 추가
- [x] C. npm run build 성공 (15.84s, PWA precache 168 entries)
- [x] D. dist/sw.js grep 검증 — `/downloads/` 패턴 포함 확인
- [x] E. micro-commit (874f79e)

## Phase 3 — 검증 (닌기르수)

- [x] A. 로컬 정적 서버 (python3 http.server 4173)
- [x] B. Playwright SW 등록 확인 (scope=http://localhost:4173/)
- [x] C. fetch zip → firstBytes `50 4b 03 04` 검증 PASS
- [x] D. navigation 테스트 — SPA 404 미노출 확인
- [x] E. 스크린샷 캡처 + browser_close 정리

## Phase 4 — 머지 + 프로덕션 검증 (마르둑)

- [x] A. PR #74 생성 → Gemini 리뷰 PASS (high 0건, medium 2건 DEFER)
- [x] B. main 머지 → Cloudflare Pages 자동 배포
- [x] C. 프로덕션 sw.js 검증 — 새 denylist 4 regex 반영
- [x] D. 프로덕션 zip 다운로드 검증 — 11453 bytes ZIP archive

## 검증

- [x] 테스트 통과 확인 (L1 PASS)
- [x] QC 검증 완료 (finish-task.sh로 자동 수행 예정)
- [x] 최종 보고
