8.5 KiB
8.5 KiB
Phase 7 인증 중 콘텐츠 설정 종료 리뷰
1. 리뷰 정보
| 항목 | 내용 |
|---|---|
| 대상 | P7-T1, P7-QA |
| 기준 | ece2012 이후 Phase 7 working tree |
| 일자 | 2026-10-13 |
| 기준 문서 | ../prd.md Phase 7, ../plan-task.md Phase 7 |
| 상태 | R1 수정 검증 완료 / 최종 기능 APPROVE·집중 시각 PASS / 실서버 통합 별도 미검증 |
2. 목적과 범위
- 인증 패널의 X → 기존 V2 종료 팝업 → 설정 패널 종료 및 로컬 인증 중단을 확인한다.
- 계속하기·바깥 터치의 draft 보존, 정확한 줄바꿈·용어, 실패 후 종료·fresh 인증 및 기존 저장 회귀를 검토한다.
- 생산 변경은 VM cancel, 공용 패널/modifier, 인증 전용 번역과 여섯 caller 취소 callback에 한정한다. 일반 설정·shared modal·API·mock·프로젝트 설정은 제외한다.
- 실제 계정·실서버 인증/rollback은 검증 범위가 아니다.
P3-QA의 기존 차단 상태를 이어간다.
3. 판정 기준
- Blocker/High: 종료 불능, 종료 뒤 추가 전송·저장·성공 action·재시작, 기존 저장 실패, 미승인 범위 변경.
- Medium: 팝업 뒤 조작, 큰 글자/작은 화면에서 종료 접근 불가, 중복/재진입 상태 오류.
- Low: 비핵심 표시·문서 문제. 후보는 재현/근거 확인 전 확정하지 않는다.
4. 검토한 근거
- 소스:
MyPage/MyPageViewModel.swift,V2/Component/Modal/AuthContentSettingsSheet.swift,I18n/I18n.swift, 7개 caller 및 변경 없는SodaV2ActionModal.swift. - 검사:
work/tests/AuthContentSettingsExitCheck.swift,work/tests/check-auth-content-settings-exit.sh, 기존 auth mock/serializer와 전체work/tests/check-*.sh. - 환경: macOS x86_64, Xcode 26.0 (17A324), native Combine 실제 VM 실행 및 iOS Simulator Debug 빌드.
| 실행 | 결과 | 증거 |
|---|---|---|
| 실제 VM RED | 실패 확인 | 구현 전 취소 메서드 부재 compile exit 1 |
| 실제 VM GREEN | PASS | coordinator 직접 실행 exit 0; 초기/6종 실패/재진입/중복/제출 guard/기존 성공/main dispatch 검사 |
| 기존 전체 shell suite | PASS | 변경 전·후 각각 exit 0 |
| 실제 request serializer | PASS | ON ALL/MALE/FEMALE, OFF ALL 4조합 |
| 변경 Swift parse / shell 문법 | PASS | exit 0 |
| 두 앱 Debug simulator build | PASS | auth-exit-dev-build-final.log, auth-exit-standard-build.log exit 0 |
| 공백·범위 대조 | PASS | git diff --check exit 0; shared modal/일반 설정/API/mock/project 무변경 |
| LSP diagnostics | 도구 없음 | 실제 Swift compiler/typecheck/link로 대체, LSP 통과로 주장하지 않음 |
| native UI·독립 검토 | 진행 중 | 현재 소스 직접 연결 auth-exit-qa, 결과 수집 전 |
- 빌드 로그와 native scratch 경로의 부모:
/var/folders/yh/8xsbvpsj5wg2qnxzxdp11_gm0000gn/T/opencode. - 첫 dev 빌드의 120초 timeout은 실행 한도를 늘린 재시도로 해결했다. 기존 unrelated warning은 유지한다.
- 실제 VM 검사에는 저장소·AppState·메모리 저장소 doubles를 사용한다. Native host는 실제 패널/modifier/V2 팝업·폰트를 참조하지만 VM/toast는 대체한다. 두 증거를 실서버 통합 성공으로 합치지 않는다.
5. 발견 사항
- 현재 coordinator 소스·실행 검사에서 확정 발견 사항 없음. 독립 검토와 native QA 판정은 대기 중이며 최종 승인으로 보지 않는다.
6. 후속 판정
- native 시나리오·캡처 freshness·독립 검토 결과를 이 문서에 누적한다.
- 확정 회귀가 나오면 코드 수정 전에 기존
plan-task.md에P7-R*Task로 등록한다. - 현재 전환 항목 없음. QA 리소스 정리 및 최종 완료 판정 대기.
7. Native 검증과 확정 발견 사항
- 후속: Oracle 독립 검토는 코드·VM 검사 범위 APPROVE, 수정 요구 없음. 본 판정은 native 전체 완료 승인이 아니다.
- Native 기능 matrix dark10/light4/narrow3/landscape1/reduce2 및 추가 반복1 모두 PASS. coordinator도 핵심 종료 시나리오를 직접 재실행해 1개/0실패/exit0을 확인했다. actual modifier가 popup·host를 모두 제거하고 caller에 남으며 취소1/submit0 상태가 관찰됐다.
auth-exit-qa/EVIDENCE.md, 각 xcresult·action log·capture-inventory74개·source hash가 증거다. 뒤 panel 접근성 차단은 실제 UIKit node enumeration으로 확인했으며 실제 VoiceOver swipe/focus는 미실행이다. 실제 toast와 7개 실서버 route도 미실행이다.
REV-P7-001 — 가로 최대 글자에서 종료 경고와 버튼 이름 생략
- 심각도: Medium. 상태: 확정 / 수정 범위 승인 대기.
- 요구사항:
AUTH-016,AUTH-017,P7-QA큰 글자 수용 기준. - 코드 근거: 변경 없는
SodaV2ActionModal.swift:40의 VStack, title340×64·본문340·button area340 고정 폭과 확대 appFont의 공간 부족. - 재현: iPhone17Pro/iOS26.0 →
content_size accessibility-extra-extra-extra-large→ landscapeLeft → 설정 패널 X.PHASE7_READY=1 bash run_phase7.sh landscape phase7-landscape-02. - 픽셀 증거:
/var/folders/yh/8xsbvpsj5wg2qnxzxdp11_gm0000gn/T/opencode/auth-exit-qa/phase7-landscape-02/modal-upright.png와 보존된 native 원본. coordinator 직접 확인: 본문본인인증을 종료하시겠어…, 버튼계…/종…; 두 번째 경고 문장 전체가 보이지 않는다. - 영향: 최대 글자·가로 사용자에게 종료 결과와 버튼 의미가 시각적으로 불명확하다. accessibility label이 전체 문자열이라 기능 assertion만으로는 탐지되지 않는다.
- 권장 조치: 공용 V2 팝업의 큰 글자 레이아웃 최소 보정에 대한 승인 후 수정한다. 다른 caller 영향 회귀를 함께 검증한다. 공용 component 수정 금지라는 승인 범위를 임의 확대하지 않는다.
- 전환:
plan-task.md의 승인 대기P7-R1. RED 캡처 확보, GREEN/최종 gate 미완료.
8. 정리와 남은 한계
teardown-receipt.json에서 QA 앱/runner6건 삭제, 설정·portrait 복원, 두 소유 device Shutdown, recorder71831 종료를 확인했다. 이후 coordinator가 핵심1개를 직접 재실행한 뒤 재설치 앱/runner도 삭제하고 소유17Pro를 다시 shutdown했다.- Normal/quick positional motion 정량 분석과 모든 캡처 최종 독립 시각 검토는 blocker로 보류했다. Reduce Motion 영상은 일반 모션 증거가 아니다.
- 일본어 regular modal의
必要단어 중간 줄바꿈은 보조 시각 검토 사항이며, 340pt 공용 레이아웃 수정 결정 시 함께 확인한다. - 기존 자동 검사·두 앱 빌드 PASS는 유지되지만 최종 Phase7는 NEEDS WORK / 사용자 범위 결정 대기다. 커밋·푸시 없음.
9. R1 승인 후 재검증 — 2026-10-14
- 사용자 “최소한 수정” 승인 후 shared modal 한 파일 순증24줄을 수정했다.
REV-P7-001수정 완료. 기존 실패/보류 기록은 이력으로 보존한다. - 기존340pt 기본 모습 유지, 접근성 글자는 가용 폭·자연 높이, 넘치는 title/body만 scroll, button은 고정이다. font clamp·공용 API·callback 변경 없음.
- 최대 글자 가로/375pt세로, 기본ko/quick-save/ja, 공용 단일/긴 두 버튼fixture 모두 native PASS. 현재 modal hash
a012015dc4005a523e9cc9348500838e0b71b28640b12737dbf79110cff34e3e가 캡처 manifest와 일치한다. 증거auth-exit-qa/R1-EVIDENCE.md,r1-capture-manifest.json. - coordinator 직접 재실행
r1-parent-landscape-01/NativeExit.xcresult는 1test0failure/exit0, 실제 경고/버튼 가독성과 cancel1/dismiss1/post0 확인. 기본 modal image-diff는0.07%/similarity100, 상단 시계 hotspot만 관찰. - 현재 두 앱 build 및 전체 shell suite exit0, Swift parse·diff check exit0. LSP 도구 없음은 실제 compiler 증거와 구분한다.
- 최종 Oracle 기능 APPROVE, 시각 reviewer PASS. 새로운 차단 결함 없음. 최신 핵심11장/수정 전2장 직접 비교이며 중복27장 전체 검토나 실제 VO/backend 실행을 주장하지 않는다.
REV-P7-001의 경고·버튼 생략은 해소됐다. 가로에서 스크롤 후 제목이 위로 넘어가는 것은 정상 overflow이며 생략과 다르다. 기존 일본어 단어 중간 줄바꿈은 경미 사항으로 유지한다.- 자원: worker 두 기기 정리 및 coordinator 재실행 후 앱/runner제거·light/large/ReduceMotion0복구·17Pro shutdown 완료. 실제 VoiceOver 제스처·실서버7경로·모든 공용caller runtime은 미실행이며 코드·로컬 gate 승인과 별개다.