/design 페이지 ENOENT 복구 — open-design daemon 좀비 상태
의사결정
DevPL 워커 정상 완료 (rc=0, 5/7 23:29 EXIT). 산출물 10건: architecture.md, dependency_map.md, nfr_analysis.md, risk_register.md, roadmap.md, tech_debt.md, work_breakdown.md/json, output.json, ADR-001-temporary-block-over-full-restore.md. ADR-001 결론: /design 페이지 풀 복구 대신 임시 블록(503/안내문) 우선 → work_breakdown 기반으로 후속 design 티켓 분기 권고. retroactive finalize: 5/8 fake_done_guard 통과 + run_role.sh fix 동시 적용.
내용
## 증상
브라우저: `https://dashboard.nexai.co.kr/design` 진입 시 본문에 다음 에러만 표시됨.
```
Error: ENOENT: no such file or directory, stat '/home/iaas/nexai/grandzo/external/open-design/apps/web/out/index.html'
```
DevTools Console: 404 Not Found.
## 원인 (사전 조사 완료)
- `/design` 라우트(dashboard-v2/app.py:1982)는 `design.html` 템플릿을 반환하고, 그 안에서 `/design-tool/` (port 17456 daemon proxy)을 임베드함.
- daemon (PID 796, parent 300, esbuild 891) 은 May 5 부터 가동 중이며 실행 인자로 `/home/iaas/nexai/grandzo/external/open-design/...` 를 잡고 있음 (ps -ef 확인).
- 해당 디렉토리는 cleanup 사고 (`grandzo/` rm -rf, .gitignored 포함)로 사라진 상태. daemon 이 deleted inode 를 들고 있어 좀비 응답.
- 같은 사고에 대한 선행 티켓이 이미 있음: `OPS-0507-NEXAI-DESIGN-RESTORE-V2` (status: DECOMPOSED, dispatch_count: 1, sub-ticket 0건). 22시간째 진행 안 됨 → 본 티켓은 하네스 재시도 + 추적 가시화 목적.
## 본 티켓의 범위
**최소 복구만**. 풀 재빌드(V2)는 별개로 두고, 사용자에게 `/design` 페이지가 정상 응답하도록 우선 처리.
옵션 (담당이 선택):
1. **임시 차단**: `/design` 라우트가 daemon proxy 대신 "복구 진행 중" 안내 페이지 반환 + 좀비 daemon kill (PID 796, 300, 891) + port 17456 정리. → 가장 빠름.
2. **근본 복구**: `OPS-0507-NEXAI-DESIGN-RESTORE-V2` 와 통합 후 진행 (origin clone → build → 새 위치 daemon 기동).
권장: 옵션 1 먼저 (사용자 화면 즉시 정상화) → V2 가 근본 복구를 이어받음.
## 검증 방법
- `curl -s -o /dev/null -w "%{http_code}\n" https://dashboard.nexai.co.kr/design` → 200
- 본문에 "ENOENT" 문자열 없음
- (옵션 1 선택 시) 안내 메시지 표시 확인
- 좀비 daemon: `ss -tlnp | grep 17456` → 옵션 1이면 LISTEN 없음 (또는 새 안내 데몬), 옵션 2면 새 PID
## 참고
- 기존 V2 티켓 description 에 빌드/실행 명령어 전체 명세 있음
- 본 티켓의 핵심은 **하네스 dispatch 가 실제로 코드 수정→QA→커밋까지 가는지 추적**
상태 변경
추가 작업
핸드오프 체인
1.
2026-05-07T22:26
ceo → harness
"ticket created"
체이닝 타임라인
| # | From → To | 작업 | 체인 | 상태 | 시작 | 완료 |
|---|---|---|---|---|---|---|
| 1994 | coordinator → DevPL | DevPL_OPS-0507-DESIGN-PAGE-FIX_2006490_1778160527 | 1 | completed | 2026-05-07T13:28:47 | 2026-05-07T13:35:10 |
| 1999 | coordinator → DevPL | DevPL_OPS-0507-DESIGN-PAGE-FIX_2060467_1778162046 | 2 | failed ✅ 이후 완료 | 2026-05-07T13:54:06 | 2026-05-07T14:10:03 |
| 2000 | coordinator → DevPL | DevPL_OPS-0507-DESIGN-PAGE-FIX_2082453_1778163008 | 3 | completed | 2026-05-07T14:10:08 | 2026-05-07T14:15:34 |
| 2001 | coordinator → DevPL | DevPL_OPS-0507-DESIGN-PAGE-FIX_2088464_1778163310 | 4 | completed | 2026-05-07T14:15:10 | 2026-05-07T14:26:17 |
| 2003 | coordinator → DevPL | DevPL_OPS-0507-DESIGN-PAGE-FIX_2095372_1778163614 | 5 | completed | 2026-05-07T14:20:12 | 2026-05-07T14:27:22 |
| 2005 | coordinator → DevPL | DevPL_OPS-0507-DESIGN-PAGE-FIX_2107967_1778163916 | 6 | failed ✅ 이후 완료 | 2026-05-07T14:25:17 | 2026-05-07T18:05:02 |
산출물
- ADR-001-temporary-block-over-full-restore.md
- architecture.md
- dependency_map.md
- nfr_analysis.md
- output.json
- risk_register.md
- roadmap.md
- tech_debt.md
- work_breakdown.json
- work_breakdown.md
관련 로그
관련 봇 로그 없음