GPT 독립 기술 검토 및 Claude 인계

원본: projects/skill-lens/engineering/02-gpt-independent-review-claude-handoff.md

1. 검토 기준과 현재 기준점

저장소 상태

저장소브랜치확인한 기준
mymyiove/skill-lenszeroHEAD 6b4dd59fd02eb45ccba0148a4efa7d4eeddeaf40
mymyiove/skill-lensmainHEAD b7e7ee8acd10c0fe66af122f2354a10e9518d804
mymyiove/ideberdev확인 시 HEAD 388b63d0d9efa8d69da85e1c76d6a53f09a4d743

주요 확인 파일과 blob SHA:

반드시 유지할 제품·협업 규칙

2. 최우선 결함: Worker가 Zero flow를 지원하지 않음

판정: 구현 전 해결해야 하는 서버 계약 결함.

main의 Worker 코드에서 확인한 내용:

  1. flowOf(v, dflt)는 full과 simple만 인식한다. zero는 유효한 flow로 취급하지 않고 기본값으로 떨어진다.
  2. memberEntry(flow, token, next)는 simple이면 Simple 온보딩 URL, 그 외에는 /welcome.html을 반환한다. Zero React 진입 경로가 없다.
  3. tenantCreate()는 flowOf(b.flow, 'simple')로 저장한다. 요청에서 flow: 'zero'를 보내도 현재 구현은 Simple로 저장한다.
  4. tenantUpdate()는 flow가 simple 또는 full이 아니면 거부한다. zero를 허용하지 않는다.
  5. 06-server-coverage는 Zero 조직에 flow='zero'를 두는 방향을 명시한다. 문서의 목표와 현재 Worker 구현이 불일치한다.

Claude 작업 제안

Claude에게 확인할 질문

  1. Zero 앱의 실제 진입 URL과 라우터는 무엇인가? Worker의 memberEntry가 어떤 URL을 반환해야 하는가? 근거 파일과 함께 제안해 달라.
  2. Zero flow를 추가할 때 관리자 초대, 실무자 초대, 비밀번호 설정, 재진단, 결과 메일 링크가 모두 같은 flow resolver를 타는가? 빠진 경로를 찾아 달라.
  3. 운영 DB 복사본 기반 시험 Worker를 어떤 구성으로 격리했는가? 시험 DB·환경변수·메일 바인딩이 운영과 분리된 증거를 제시해 달라.
  4. Zero flow의 변경 권한과 기존 Simple/Full 회귀 검증을 어떤 테스트로 보장할 것인가?

3. 현재 API 여정은 Zero UI E2E를 증명하지 못함

판정: 기존 시험은 유용한 API 통합 시험이지만, 브라우저 UI 여정의 대체물이 아니다.

Claude 작업 제안

기존 API 여정은 API 계약·DB 상태 통합 시험으로 유지하되, 별도 Playwright UI E2E를 추가한다.

API 여정 수정:

실제 브라우저 여정:

Claude에게 확인할 질문

  1. API 직접 호출 여정과 Playwright UI 여정을 어떤 파일·명령으로 분리할 것인가?
  2. Playwright가 실제 Worker 외에 어떤 요청도 mock하지 않는다는 것을 어떻게 강제하고 증명할 것인가?
  3. A-22 저장의 완료 조건은 어떤 API·테이블·상태를 기준으로 확인할 것인가?
  4. 첫 화면에서 마지막 A-22까지 실제 사용자 세션과 권한을 유지하는가? 운영자/관리자/실무자 계정이 섞이지 않는가?

4. 로컬 여정 실행기의 비밀값 파일 파괴 위험

판정: 재현 가능한 로컬 시험을 위해 먼저 안전하게 고쳐야 할 실행기 결함.

tests/e2e/run-journey.sh는:

Claude 작업 제안

5. Lens 검사기의 오탐 가능성

판정: 검사 기준과 React 구현을 함께 고쳐야 한다. 컴포넌트 자체가 CSS 렌즈라고 단정하면 안 된다.

Claude 작업 제안

6. 화면 수 문서 불일치

판정: 기준 문서와 하위 인덱스의 숫자가 다르다.

Claude 작업 제안

  1. 00-structure.md를 기준으로 화면 ID 전체를 기계적으로 집계한다.
  2. 03의 카드 ID·분류·화면 수가 72 전체와 일치하는지 확인한다.
  3. 이번에 만드는 54개와 다음 단계 화면 18개를 구분해 표제와 범주 합계를 수정한다.
  4. README의 68개 표기를 수정한다.
  5. 새 매핑 문서를 만들지 말고, 03의 기존 화면 등록표에 02 기능 ID와 06 서버 계약 참조를 연결한다.

7. 디자인 시스템 동기화 기록

Claude 확인 항목

8. API 재사용 판정표 작성 기준

06-server-coverage는 기능 커버리지와 변경 방향을 설명하는 문서다. 그것만 보고 API를 재사용 가능하다고 판정하면 안 된다.

각 화면/기능을 기준으로 다음을 대조한다:

각 항목에 아래 중 하나의 결론을 명시한다:

특히 DEC-242(반영 대기 남으면 결과확정 금지), DEC-129/DEC-090(확정 뒤 회차 잠금), DEC-118/DEC-019(커스텀스킬 반영/미반영), DEC-147(초대 링크 만료), DEC-132(파기 후 비식별 기록 보존)을 실제 handler와 테스트에서 확인한다.

9. 결함 검증과 완료 증거

검사기가 존재한다는 사실만으로 검사 능력이 증명되지는 않는다. 격리 fixture에서 일부러 결함을 넣고 각 검사가 잡는지 확인한다.

최소 검증:

10. Claude가 바로 처리할 순서

  1. Worker Zero flow 계약을 시험 서버에서 구현하고 Simple/Full 회귀 테스트를 추가한다.
  2. API 여정의 false pass를 제거한다: flow: zero 전달, D1/세션/링크 flow assertion 추가.
  3. 로컬 실행기 안전성을 고친다: .dev.vars 백업·복원, trap 선등록, 격리 실행.
  4. 실제 Playwright UI E2E를 추가해 A-22까지 실사용 경로를 통과시킨다.
  5. Lens checker를 승인 SVG와 CSS 렌즈를 구분하도록 수정하고 결함 fixture를 추가한다.
  6. 72/54 화면 수를 00 기준으로 03과 README에 일치시킨다.
  7. API 재사용 판정을 화면·기능·실제 handler·권한·상태 전이 근거로 완성한다.
  8. 8판 baseline과 결함 주입 검증을 실행하고, 실패/통과 증거를 보고한다.

11. Claude에게 회신받을 내용

작업을 시작하기 전에 긴 설명 대신 아래 항목에 대한 제안과 근거를 먼저 정리해 달라. PM에게 결정만 떠넘기지 말고 기본 제안·대안·근거·영향을 함께 제시한다.

12. 검토 범위의 한계

이 사이트는 ideber 저장소 projects/skill-lens/ 에서 자동으로 만들어집니다. 고칠 때는 저장소를 고칩니다. 공개 주소이지만 검색엔진에는 나오지 않습니다.