# 첫 퍼즐 통합과 검증 첫 퍼즐은 실제 `Stage01.asset` 정의와 Inspector에서 수정할 수 있는 `Presentation/Prefabs/GameApp.prefab`으로 실행합니다. 순수 C# `GameSession`이 진행·성공·저장 경계를 소유하고, Unity 입력은 이동 프리뷰를 확정하기 전까지 규칙 상태를 바꾸지 않습니다. 시작 화면 → 친구 찾기 → 1번 → 자석을 직접 끌어 놓기 → 한 번 눌러 세기 → 같은 배치의 자유 놀이터가 첫 구현 범위입니다. 수집 전 탭·중복 계수·취소·화면 밖 놓기는 완료를 만들지 않습니다. 미완료 저장은 확정 위치·수집·계수·카메라만 저장하며, 성공 변경은 완료·미완료 제거·최근 자유 놀이를 함께 저장합니다. 아직 30개 콘텐츠·자석 공급/반납·합체/분리·최종 미술 완성을 뜻하지 않습니다. ## 공유 Main 씬 연결 공통 씬은 실행 담당자가 소유합니다. `Assets/MagnetismHeroes/Scenes/Main.unity`를 실제 Editor API로 열고, 기본 Camera/AudioListener/Light 중복을 제거한 뒤 `PrefabUtility.InstantiatePrefab`으로 GameApp 프리팹을 하나 배치하고 저장합니다. 프리팹은 Camera/AudioListener·Sun·EventSystem·uGUI/TMP·입력·Voice Mixer 참조를 포함합니다. Camera와 AudioListener는 Playground 활성 상태와 분리되어 Home에서도 활성입니다. `GameApp.Start()`가 앱 전용 `progress.json` 저장소를 직접 연결합니다. 제품 UI에 디버그 단계 우회가 없습니다. 전용 자산 제작 진입점은 `MagnetismHeroes.Editor.FirstSliceAssets.Build()`입니다. 실제 Editor API로 Stage01/Sphere/Badge/UI 프리팹·한글 정적 글꼴·Master 하위 Voice/SFX/Music Mixer를 만들며 Main 씬은 수정하지 않습니다. 첫 TMP Essentials import는 Unity가 import 작업을 마칠 수 있도록 `-quit` 없는 batch 실행과 import 완료 후 종료가 필요합니다. 리소스가 이미 있으면 다음 명령으로 재생성할 수 있습니다. ```powershell unity run . --timeout 300 --log-file artifacts/firstslice-assets.log --no-tail -- -executeMethod MagnetismHeroes.Editor.FirstSliceAssets.Build pwsh -NoProfile -File tools/verify.ps1 -Phase EditMode -Milestone FirstSlice pwsh -NoProfile -File tools/verify.ps1 -Phase PlayMode -Milestone FirstSlice ``` uGUI 2.6 기본 TMP helper가 registry PackageCache 경로를 찾지 못한 것을 확인했으며, 패키지의 실제 resolvedPath를 찾아 helper 내부와 동일한 `UnityEditor.AssetPackage.Package.Import`를 호출합니다. Examples/Extras와 수작업 prefab/scene YAML은 사용하지 않습니다. 반복 bake에서는 TMP의 Editor 원본 Font 참조를 복구하고 실제 glyph 존재를 검사합니다. ## 검증 범위와 한계 EditMode는 기존 Core 규칙과 진행 경계·완료 단일 전이·재플레이·엄격한 JSON 키/형식·손상 원본/백업·실제 프리팹 참조·한글 glyph를 검사합니다. PlayMode는 실제 GameApp/Stage01 자산으로 UI 버튼 이동, 수집 전 탭 거부, 이동/계수/자유 전환, 중복 음성 거부, 취소/화면 밖 release, UI 충돌, 합성 TouchState의 pinch/취소/잔여 손가락 억제, 카메라 경계, 복원/정의 불변, 실제 WAV 재생·숫자 큐 순서를 검사합니다. Headless 검사에서는 원본 InputSettings를 보존하고 테스트 복제본만 Game View에 입력을 보내도록 설정한 뒤 원상복구합니다. 확인된 실패는 `artifacts/verification/FirstSlice/red/`에 보존합니다. 최종 XML/log/evidence JSON의 실제 검사 개수·종료 코드·sourceCommit·sourceDirty가 검증 근거입니다. 자석을 가리던 납작한 Cylinder의 기본 CapsuleCollider를 실제 ray hit로 확인해 보이는 mesh와 일치하는 static MeshCollider로 고쳤습니다. 배경의 가림 판정은 유지합니다. 필수 세 한국어 WAV는 사용자 청취 승인 파일과 실제 SHA-256을 대조했습니다. [자산 등록](asset-register.md)과 [Qwen 제작 기록](qwen-voice-register.md)에 원본·설정·조건·검수 상태가 있습니다. 효과음·음악은 사용자 후속 추가이며 다른 숫자는 미검수입니다. Qwen 모델/conda 환경은 게임 런타임에 포함하지 않습니다. Main은 GameApp 프리팹 하나로 연결했습니다. 실제 Unity 에디터에서 별도 검수 저장 파일을 사용해 수집 전 계수 거부, 끌어 모으기, 확정 배치·시점의 파일 복원, 계수 후 같은 공간의 자유 놀이를 확인했습니다. 아래 시점에서 숫자가 구 뒤에 가리던 문제는 카메라의 위쪽 방향으로 표시 위치를 계산하도록 고쳤습니다. Android의 짧은 탭 누락은 EnhancedTouch의 시작·이동·종료 기록을 순서대로 처리하도록 고쳤습니다. 정면·아래·기울어진 시점, 이동 미리보기, 짧은 탭과 취소 검사를 포함해 PlayMode 25개 및 자산 연결 EditMode 3개가 통과했습니다. 근거는 `artifacts/verification/T2/`와 `artifacts/verification/T3/ShortTouch/Regression/`의 XML·로그·JSON·PNG입니다. 첫 Android APK의 설치·실행·짧은 탭·끌기·시점 회전·미완료/자유 놀이 복원·오프라인 재생 검증을 완료했습니다. Build/Smoke 종료 코드 0, 기계 검사 115개, 직접 화면 관찰 13개, 저장 상태 검사 19개를 기록했습니다. [Android 검증](android-first-slice.md)에 검사 방법과 한계를 정리했습니다. 가상 기기의 ARM64 번역 실행이며 실제 기기 조작·가독성·성능 합격을 뜻하지 않습니다.