3.8 KiB
고정 배경·패널 모션 분리 리뷰
1. 리뷰 정보
- 대상: P6-T1, 현재 working tree 중
AuthContentSettingsSheet.swift모션 변경. - 일자: 2026-10-13. 기준: PRD §10.0 Phase6, plan-task P6-T1.
- 검토: 독립 기능 검토와 시각/모션 검토, coordinator 실제 소스/프레임/검사 확인.
- 상태: APPROVE(P6 한정).
2. 목적과 범위
fullScreenCover 기본 전환을 끄고 배경은 고정, 패널만 이동하도록 한 변경을 검토한다. 기존 intrinsic 높이, 안전 영역, 확인 전송 순서와 오류 재표시를 유지한다. VM/API/mock/실서버 권한 변경은 범위 밖이다.
3. 판정 기준
배경 마커 위치와 색은 각 진입/퇴장 모션 동안 고정되어야 한다. 패널은 독립적으로 이동하며 화면 밖으로 퇴장한 뒤 host가 닫히고 기존 onDismiss가 한 번 호출돼야 한다. 빠른 확인·재표시·Reduce Motion에서도 누락/중복 호출이나 host 잔류가 없어야 한다.
4. 검토 근거
- 소스:
AuthContentSettingsModifier의 local host state/transaction,AuthContentSettingsPanelMotion의 rendered progress 완료와 자체 높이 변환, 기존 VM confirm/submit guards. - 최종 hash:
1eee37ffc5c8a937b7be15c0f388782be8965447738aa8fa883a84b729719403. - 정확한 P6 delta와 증거: tmp/opencode/auth-settings-qa의
motion-production.diff,MOTION-EVIDENCE.md,motion-verification.json,panel-final.mp4,panel-interrupt.mp4,panel-reduce.mp4. - native host는 실제 View/modifier·폰트·토큰 소스를 컴파일하고 VM/toast는 격리 대체한다. 실서버 인증 증거로 해석하지 않는다.
5. 검증 결과
| 검사 | 결과 | 근거 |
|---|---|---|
| 배경 고정/패널 진입 | PASS | panel-final-083/087/091.png, 고정 마커 RGB(23,83,101), 패널 top 변화 |
| 퇴장 완료 후 onDismiss | PASS | 124/128/132/133.png, 완전 퇴장132 후 host 제거133, callback1회 |
| 빠른 확인/진입 반전 | PASS | normal6개 및 quick 반복5개/0실패, interruption 영상 |
| 오류 재개/선택 유지/3cycles | PASS | native 기본 회귀와 FEMALE 유지, cycle당 callback1회 |
| Reduce Motion | PASS | visible frame의 panel top1508px 일정, 수직 이동 없음 |
| 큰 글자 overflow/foreground 복귀 | PASS | 각각1개/0실패, 확인 접근·선택 유지 |
| 실제 dev loading→panel | PASS | 별도 mock lifecycle4개/0실패, wrapper/패널 실제 소스 |
| 두 앱 Debug builds/회귀 | PASS | coordinator 현재 소스 빌드 exit0, 기존 work/tests 전체·Swift parse·diff 검사 PASS |
초기 didSet-only observer는 빠른 확인에서 hang을 재현해, 최종 수정에서는 actual GeometryEffect 렌더 진행값에서 완료를 확인한다. 최종 증거는 이 보완 후 생성됐다.
6. 발견 사항 및 plan 전환
확정 코드 결함 없음. 기능·시각 독립 검토 모두 승인했다. 추가 회귀 수정 Task는 없다.
증거 표현 정정: panel-final-131.png에는 하단 얇은 패널 조각이 남아 있다. 완전 이탈은 132.png를 근거로 하며, 133.png에서 배경과 host가 제거된다. 자동 픽셀 분석의 null만으로131을 완전 이탈로 판단하지 않는다.
7. 종료 판정과 한계
P6 승인 기준 충족. 기존 레이아웃·문구·API·mock 코드는 유지됐고, 제출 호출은 여전히 host onDismiss 한 곳이다. iOS26 native 실행과 minimum16.6 compile은 확인했으나 iOS16 실기기, 실제 toast, 실계정/7caller/서버 통합은 미검증이다. LSP 도구 미제공으로 compiler/build 증거를 사용했다.
8. 정리 기록
작업 전용 QA 앱/runner 제거, 소유 simulator 종료 및 recorder 종료를 확인했다. 환경의 접근성 설정은 원복했고 프레임·영상·로그는 tmp 경로에 보존했다. 커밋/푸시 없음.