# 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 승인과 별개다.