Skip to content

R01 미사용 경로 퇴역과 호환 보존 — 후속 검증의 기준 확정 (2026-09-11)

  • 기간: 2026-09-11, 1세션. 오너 지시: “선행작업 끝냈으니까 시작해”, #1537 끝까지 수행.
  • 랜딩: 앱 PR #1569 → release/v0.18.0, merge 849191b54b15682fba001dbde9757f88b76cf580, 2026-09-11 13:42 KST. 문서 게시 PR은 이 기록을 포함한 PR; 마이그레이션·Edge 변경·Production 배포 없음.
  • 설계서: #1537 Phase 계획.
  • 정본: 퇴역·호환 자격 manifest, G05 장부.
  • 도구: 기존 scripts/architecture/check-coverage-inventory.mjs --strict; PR·조상 관계 대조용 임시 스크립트는 작업 디렉터리에만 보관.
  • 게이트: 각 Phase npm run check, 기존 저장·복구 행동 테스트, G05 strict. 기존 U05 Chromium 브라우저 8/8 통과. 필수 precheck 2분4초 PASS, Merge Check PASS(58초), 실제 release ancestry 확인. DB 변경이 없어 새 pgTAP 실행 없음.
  • 버그리포트: 없음. 관측 제품 결함 수리가 아닌 미사용 경로 이식 종료.
  • 계약: A15 §7 후속 소비, U05 후속 정리.

Phase 현황

Phase내용상태
Phase 1선행 병합·실제 소비·보존 재고완료, docs 903d5e5
Phase 2미사용 scaffold·warmup 퇴역, 서버 강도 투영 명명완료, app f92a699d, docs 1d53483
Phase 3실제 prepare→write port 테스트 이관, D11/D14 경로완료, app 0043560d, docs 1fd7111
Phase 4G05 strict·31 보고 항목·8 기준·63 계획완료, app 206f43ce, docs bf317f7
Phase 5통합 검증과 후속 인계완료, 브라우저 8/8·전체 검사·precheck·Merge Check 및 release 병합 확인

1. 배경

선행 리팩터링이 목적 release에 반영되어 R01이 제거 가능한 잔여 코드와 계속 필요한 호환 경로를 구분했다. 56개 선행 계획의 실제 구현 PR merge SHA가 기준 release 조상임을 확인했다.

2. 문제 제기

사용하지 않는 Vite AppRoot, 제거된 화면 선로딩의 오류 억제 helper, 현재 dispatcher가 호출하지 않는 저장·삭제 facade가 남아 있었다. 서버가 계산한 강도를 표시하는 파일명은 클라이언트 fallback처럼 보였다. G05에는 새 파일 168개와 cron 1개의 분류가 없었다.

3. 해결 방안

실제 소비자를 추적하여 호출이 없는 경로만 제거했다. 저장 검사는 순수 준비기에서 실제 write port까지 연결하고 기존 요청·응답·오류의 참조와 mutation ID·hash·revision을 검증한다. 이름이나 legacy 문자열만으로 일괄 삭제하는 대안은 지원 중인 디코더·복구·전체 계산 경로를 손상할 수 있어 기각했다. 새 분류 엔진 대신 기존 G05 규칙과 소유 근거를 갱신했다.

4. 적용한 내용

Phase 1–2 — 재고와 미사용 경로 퇴역

AppRoot와 전용 props를 제거했다. U05 선로딩 삭제 뒤 남은 warmup 억제를 없애고 interactive 이후 오류가 기존 복구 정책을 지키는 검사를 보존했다. clientStrengthFallback.tsserverSetIntensity.ts로 옮겼으며 화면 계산·단위 동작은 유지한다. 활성 소비가 있는 npm 의존성은 유지했다.

Phase 3 — 현재 저장 경로에 검증 연결

completedWorkoutCommands의 제품 호출 0인 save/delete와 전용 오류 봉투를 제거했다. openEditor/openDetail, dispatcher write port는 유지했다. D14 신규·수정의 공통 changed-row writer와 D11 계산·원자 publisher 연결을 확인했다. 적용 SQL, 전체 계산, 구버전 RPC는 변경하지 않았다.

Phase 4 — 분류와 근거 연결

새 파일 166개를 분류하고 과거 스크린샷 2개는 명시적으로 제외했다. 사용되지 않는 규칙 147개를 제거하고 기존 cron을 등록했다. 기존 분류의 영역 재배정은 0개다. 63개 계획, 보고서 F01–F30와 F07b의 31개 항목, C01–C08을 실제 구현 PR과 검사 근거에 연결했다.

주요 결정과 그 근거

A16 이중 형태 14종, 복구·디코더·지원 RPC·전체 계산과 비교 oracle는 삭제 조건이 충족되지 않아 유지한다. S10/S11 문서는 다른 담당자 PR의 고정 head 링크로 인계하고 main 게시 완료로 표시하지 않는다.

작업 중 드러난 것

Phase 2에서 manifest 대상이 아닌 테스트 선언과 옛 함수명을 검사하던 소스 assertion을 발견해 현재 구조에 맞게 고쳤다. 최종 전체 검사는 통과했다. N01·D11·U05 선행의 실패·예외·DOM 한계를 선행 성공으로 뭉뚱그리지 않았다. 새 게이트 우회는 없다.

5. 적용 결과

항목결과
G05 미분류168 → 0
미등록 cron1 → 0
누락 장부 행2 → 0
현재 strict분류 2,880 · 제외 41 · 미사용 규칙 0 · 차단 0
전체 검사Phase 1–5 각각 3,709 전체 · 3,617 통과 · 0 실패 · 92 제외
관련 행동 검사Phase 2 46/46, Phase 3 47/47
통합 브라우저U05 기존 8/8 통과, 6.1초. network·404·persistent chunk·preservation 실패·pending 이동/입력·IndexedDB 실패 시나리오
필수 precheckclean HEAD206f43ce·최신 base2cfeac53, static/unused/build/artifact 및 unit1 1,903·unit2 1,714 통과/실패0/제외92, 2분4초
병합 검사Merge Check 58초 성공, 앱 PR #1569849191b54b15682fba001dbde9757f88b76cf580 실제 release 포함
DB·ProductionR01 신규 DB 실행·Production 검사·배포 없음

6. 이번 개선으로 향상된 것

실제 저장과 무관한 facade를 테스트하는 우회를 없앴다. 서버 강도 투영의 이름이 역할과 맞아졌으며 화면 동작 변경은 없다. 후속 작업은 보존 대상·정확한 PR 근거·실제 사본 위치·미확보 artifact를 하나의 manifest에서 구분할 수 있다.

남은 것

U06·R02·R03·R04·R05·R06은 각각 별도 후속 계획이며 이 작업의 완료로 검증되지 않는다. R02의 v0.17.1 실제 배포 번들은 미확보다. S11 사본의 위치·원격 artifact metadata는 확보했으나 R01에서 hash·복원 검증을 새로 수행하지 않았다. 과거 훈련에서 S10 복구 8개 테이블은 포함되지 않았다. S10/S11 docs PR 16/28은 아직 main 미게시다. 상세 위치·사용 조건은 manifest를 따른다.