이월 시드 정리 — sprint-87-plan.md를 docs/planning/으로 relocate
요약5 Phase 블로그 개편 완료 후 누적 이월 시드를 정리한다. 사용자 범위 확정으로 비-ADR plan 문서 sprint-87-plan.md(KR+EN)를 docs/planning/으로 relocate하고, ADR 카운트 게이트(128→127)와 범위 표기를 동기화했다. 동작 변경 0.
날짜
영향도높음
목표
- 5 Phase 블로그 포트폴리오화 개편(Sprint 185~189) 완료 후, Sprint 189까지 누적된 이월 시드를 정리한다.
- 6개 이월 시드 후보 중 사용자가
sprint-87-plan.mdrelocate 단독으로 범위를 확정했다. 비-ADR plan 문서가 ADR 디렉토리에 잔존하던 데이터 정리로, 동작 변경 0의 순수 파일 이동 + 카운트 게이트 동기화.
배경
- Sprint 183에서
deriveSlug(loader.ts)가sprint-87.md와sprint-87-plan.md를 둘 다 슬러그'87'로 충돌시켜/adr/sprints/87/라우트가 plan 본문으로 오염된 사례가 있었다. 당시 loader 스캔을sprint-NNN.md만 인정하도록 좁혀 차단했으나, plan 파일 자체는docs/adr/sprints/(+ EN 카운터파트)에 잔존했다. - 이 파일은 ADR(결정 기록)이 아닌 계획 문서로, ADR 스펙을 따르지 않으면서 ADR 디렉토리 정합성을 해쳤다(Sprint 183/184 이월 시드).
결정
D1. relocate 단독 수행 + 위치 (사용자 확정)
착수 전 조사로 이월 시드의 실효 가치를 측정하여 사용자에게 제시했다:
- blog ADR 파서 H3 PR표(sprint-135/143/146): 3편 모두 "구현/Implementation" 섹션이 없고, PhaseStrip 렌더에 필요한 Phase/Wave 컬럼은 sprint-135(
PR | Wave | ...)만 보유. sprint-143(PR | 브랜치 | 파일 수 | Critic)·146(PR | 시드 | 위치 | 결과)은 미해당 → 실효 sprint-135 1편. 파서/section-aliases 확장은 전체 ADR 회귀 위험 → 제외. filterAdjacencyunresolved 엣지 P2: 현재 unresolved 엣지 0건이라 실제 영향 없음 → 우선순위 낮음, 제외.sprint-87-plan.mdrelocate: 명확하고 잘 정의된 데이터 정리, 회귀 위험 낮음 → 단독 채택.
relocate 위치는 docs/planning/. KR(sprint-87-plan.md) + EN(sprint-87-plan.en.md) 양쪽 plan 파일을 함께 이동해 check-adr-en-coverage의 KR/EN 균형을 유지한다.
D2. 카운트 게이트 동기화 + 범위 표기 reconcile (Critic P3)
check-adr-index-count가sprints/*.md전체(README 제외)를 세므로 relocate 시 sprint 카운트 128→127.docs/adr/README.mdKR 2곳(ASCII 트리 line 18 + 섹션 헤더 line 54) 갱신. EN README는 카운트 선언이 없어 변경 불필요.- Critic(Codex) P3 적발: "127개, Sprint 62
189"는 62189가 128개 번호라 카운트와 내부 불일치. 실제 구성 — 62~189 중 88·89·90·172 결번 + 통합 단발노트 40·48·51 = 127. 범위 표기를Sprint 62~189 일부 결번 + 통합 40·48·51로 reconcile.
구현
구현 커밋 (2커밋, PR #333 squash → 9be2c29)
697232echore(docs) — relocatesprint-87-plan.md(KR+EN)docs/adr/sprints/·docs/adr-en/sprints/→docs/planning/(git rename 100% 추적) + README 카운트 128→127 (2곳)2978a35docs(adr) — Critic P3 범위 텍스트 reconcile (결번·통합 명시)
영향 0 근거 (사전 조사로 전수 확인)
| 게이트/시스템 | 영향 | 근거 |
|---|---|---|
check-adr-index-count | sprint 128→127 | README KR 2곳 동기화 |
| EN README | 없음 | 카운트 선언 부재 |
check-adr-en-coverage | 137→136 (균형) | KR/EN plan 동시 이동 |
check-doc-refs | 없음 | code-span 멘션은 stripInlineCode로 strip, bare-path는 repo-path 접두 요구 |
check-adr-links | 없음 | plan 파일로 향하는 마크다운 링크 0건 |
| blog loader/build | 없음 | loader가 sprint-NNN.md만 인정 → 빌드 대상 외 (산출물 무변경) |
검증
- 게이트 6종 green: index-count 127/127 · en-coverage 136/136 · doc-refs 341 files 0 broken · adr-links 1900 links 0 broken · adr-conversion 12/12 fixtures(sprint=127) · blog build 전 라우트 정적 prerender.
- Critic:
codex review --base main→ Critical/High/Medium 0건, P3 1건(범위 텍스트) → 보정 커밋2978a35로 해소. - CI #333: 38 pass / 0 fail (Quality — docs 포함).
- 머지 후 main 확인:
docs/planning/에 KR+EN plan 안착, ADR 디렉토리 잔존 0, index-count 127/127 일치.