Files
MagnetismHeroes/docs/final-verification.md
T

71 lines
11 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# T8 최종 검증 기록
## 통합 dev의 최종 검사 (2026-10-07)
최신 완료 검사는 루트 `C:/git/MagnetismHeroes`, 고정 소스 `ea2ad4506ce2288f7777c0eb017833723679f487`에서 수행했다. 아래 작업 디렉터리의 이전 결과와 구분한다. 네 실제 명령의 외부 종료가 모두 0이고 실행 전후 tracked 변경과 소스 변경이 없다.
| 실제 명령 | 결과 | 외부 종료 |
|---|---|---|
| `pwsh -NoProfile -File tools/verify.ps1 -Phase EditMode -Milestone Final` | 100/100, 실패·건너뜀·미확정 0 | 0 |
| `pwsh -NoProfile -File tools/verify.ps1 -Phase PlayMode -Milestone Final` | 47/47, 실패·건너뜀·미확정 0 | 0 |
| `pwsh -NoProfile -File tools/verify.ps1 -Phase AndroidBuild -Milestone Final` | release ARM64 IL2CPP APK 생성·검사 | 0 |
| `pwsh -NoProfile -File tools/verify.ps1 -Phase AndroidSmoke -Milestone Final` | Final 226/226, 하위 네 검사 실제 종료 0 | 0 |
Smoke는 2026-10-06 17:46:54.093493~18:03:58.028723 UTC에 실행됐다. 새 저장·실제 입력의 Fresh30 151/151, FinalBoundary 37/37, RapidBoundary 39/39, ContentBoundary 69/69가 통과했다. 정상 1~30 진행에는 저장 push나 완료 기록 주입이 없다. 두 미완료 퍼즐·최근 자유 놀이 독립 복원과 부분 계수·카메라, 별도 명시 QA 상태의 빠른 계수·전체 숫자 발화·마지막 발화 보존, 취소·손상 복구·오프라인을 확인했다.
최신 [APK](../artifacts/android/MagnetismHeroes.apk)·Final 사본·이번 설치 후 가져온 APK의 SHA-256은 **`0D341465FD2DC4809DF8FA423490A9CFB3BA755220A8685479399CACBD9BDDE8`**다. 아래 이전 작업 APK `223F...`는 별도 보존본이다. 이번 실제 APK에서도 승인 44개 PCM, 원본/편집본/runtime 132개 해시와 고지 3개의 정확한 일치를 확인했다. 효과음·배경음악은 제외하며 한국어 음성은 유지한다.
실제 원문은 `artifacts/verification/Final`의 `*-outer.json`, phase 기록·XML·네 child report와 JSON/PNG/PCM이다. [고정 보존 목록](../artifacts/verification/T8/BaseEa2/manifest.json)은 2,527개 파일의 SHA를 대조한 사본이다. [독립 원문 확인](../artifacts/verification/T8/independent-base-evidence-ea2.json)은 실제 234개 조건과 종료 0을 기록한다. 이전 작업 원문 16,032개는 `Implementation5eb`, 실패한 첫 통합 검사와 진단 1,146개는 `BaseD9Failure`에 따로 보존했다.
첫 통합 검사 d9의 AndroidSmoke는 18번의 가려진 구를 검사 도구가 좌우 회전만 반복하여 실제 종료 1이었다. 같은 APK·같은 구 ID/위치를 상하 회전 한 번과 탭으로 성공시킨 실제 진단을 남겼다. ea2는 계수 검사에 주기적 상하 회전을 추가한 한 줄의 QA 수정이며 제품 규칙·자산·저장 스키마는 변경하지 않았다. 수정 후 통합본의 네 검사를 새로 모두 수행했다. 실패 결과를 통과 결과로 바꾸지 않았다.
이후 변경은 개발 지침·인수인계 문서와 Unity가 실제 import하여 생성한 문서 메타데이터 3개다. import는 실제 종료 0이며 기존 제품 tracked 파일의 변경은 없었다. 원문은 `artifacts/verification/T8/DocumentationImport`에 있다. 제품 파일 동일성은 별도 기록으로 확인한다. 실제 Android 기기 조작·성능·학습 효과, iOS·스토어 게시 검증은 수행하지 않았다.
## 이전 작업 디렉터리의 고정 검사 기록
2026-10-07 KST. 작업 디렉터리의 고정 소스 `5ebb86e2a82c6005f870460e8434d7ad99c0e99d`에서 Final 네 단계를 모두 실행했다. 검사 전후 tracked 변경은 없으며 아래 종료 코드는 실제 외부 명령의 값이다. 루트 통합·completion 네 단계와 최종 인수는 별도 단계다.
T7은 사용자가 명시한 첫 버전 범위에서 완료됐다. **효과음·배경음악은 제외하며 추가 음원 요청이나 자리표시자를 요구하지 않는다. 승인된 한국어 음성 44개는 유지한다.** T8에서는 게임 규칙·자산·저장 스키마를 변경하지 않았다. 기반 `7db006544cc471240e4342c4fa4affcb7c616d71`과 Assets/Packages/ProjectSettings/SourceAssets의 모든 tracked blob이 같다.
## 실행 결과
| 실제 명령 | 결과 | 외부 종료 코드 |
|---|---|---|
| `pwsh -NoProfile -File tools/verify.ps1 -Phase EditMode -Milestone Final` | 100/100, 실패·건너뜀·미확정 0 | 0 |
| `pwsh -NoProfile -File tools/verify.ps1 -Phase PlayMode -Milestone Final` | 47/47, 실패·건너뜀·미확정 0 | 0 |
| `pwsh -NoProfile -File tools/verify.ps1 -Phase AndroidBuild -Milestone Final` | 실제 APK 생성·검사 통과 | 0 |
| `pwsh -NoProfile -File tools/verify.ps1 -Phase AndroidSmoke -Milestone Final` | Final 226개 게이트 통과 | 0 |
AndroidSmoke는 2026-10-06 17:00:44.546~17:16:16.506 UTC에 실행됐다. Final 디스패치가 실제 다음 네 검사를 순서대로 호출하며 각각 실제 종료 0이다.
| 검사 | 통과 | 증명 범위 |
|---|---|---|
| Fresh30 | 151/151 | 새 저장에서 실제 터치로 1~30 순차 해결, 저장 push/완료 주입 0회 |
| FinalBoundary | 37/37 | 실제 30 완료 후 공급·반환·빈 보드·핀치·분리 취소·음성 취소·손상 파일 복구 |
| RapidBoundary | 39/39 | 명시적인 별도 평면 10구 QA 배치, 오프라인 빠른 계수와 전체 음성 |
| ContentBoundary | 69/69 | 기존 콘텐츠·도움·시범·저장·음성 경계의 별도 실제 입력/QA 교차 검사 |
Fresh30은 각 단계의 실제 완료 JSON·원래 구 ID·목표 묶음을 확인했다. 서로 다른 두 미완료 퍼즐과 최근 자유 놀이가 동시에 저장되고, 양수의 부분 계수와 바뀐 카메라를 포함해 강제 종료 후 각각 복원됐다. 6/10 최초 시범, 순차 해금, 재플레이 완료 기록 유지, 자동 다음 단계 이동 없음, 30 이후 31 없음도 확인했다. 모양이나 특정 구 ID 조합을 새로운 성공 조건으로 추가하지 않았다. Stage15에서 요청한 터치 ID와 실제 선택 ID가 달랐지만 올바른 2+3으로 이미 완료된 경우는 실제 목표·전체 ID 보존으로 판정하고, 요청 ID 일치 검사 통과로 표기하지 않는다.
## APK와 음성
[이전 작업의 고정 APK](../artifacts/verification/T8/Implementation5eb/artifacts/android/Final/MagnetismHeroes.apk)와 그 작업의 표준 사본·Fresh30 설치 후 가져온 `installed-base.apk`는 모두 다음 SHA-256이었다. 현재 배포용 파일은 위 통합본의 APK다.
`223F26C5E2EFAE6A7C50A36CF654195C7EF3AD37DCCDC3001B8CF6E3A515C8C7`
실제 APK의 AudioClip 44개를 고정된 검증 도구 UnityPy 1.25.4로 추출했다. 이름 유일성·44개 완전성과 승인 runtime WAV의 PCM 바이트·형식이 모두 정확히 일치한다. 승인 원본/편집본/runtime 해시 132개와 사용 고지 3개도 일치한다. incremental BuildReport의 빈 packed-assets 목록을 자산 존재 증거로 사용하지 않는다. 동일 inspector로 실제 APK 양성 종료 0, 자산 누락/실제 PCM 변형 사본 각각 종료 1을 확인했다. 검증 도구·모델 가중치·TTS 서버는 APK 의존성이 아니다.
RapidBoundary는 **이번 Fresh30의 실제 30 완료 원문과 Stage20 실제 수집/성공 원문**을 출처로 남기고 위치·카메라·한 묶음·계수 전 상태만 QA용으로 구성했다. 완료 기록은 출처와 정확히 같다. 이 저장 주입은 새로운 정상 진행 증거가 아니다. 실제 11회 탭(중복 포함)을 0.441초에 수행했다. 첫 읽기의 계수 9 이후 약 82ms 뒤 실제 Free20을 관찰했으며 각 읽기 JSON/UTC를 보존했다. PCM 시작보다 앞선 녹음 wrapper 시작으로 계산한 Free 관찰 시각 상한 1.676초는 열 번째 전체 발화 끝 7.383초보다 이르다. 하나~열 전체 발화·FIFO·중복 추가 발화 없음·같은 구/카메라의 Free 전이 이후 마지막 발화 완결을 확인했다. 녹음 전체 길이는 23.893초다.
안내/숫자 취소는 실제 발화 시작의 양성 PCM과 이동·일시 정지 후 마지막 3초 무음을 함께 확인했다. 완전 발화 비교는 취소된 파일을 거부했다. 전체 발화 양성과 앞/뒤/중간 잘림·중복·잡음·다른 발화 여섯 음성 비교 대조군도 실제 0/1 결과로 확인했다. 기존 44개 청취 승인과 이번 객관적 PCM 검사는 구분한다.
## 환경·시각 확인·원문
Unity 6000.6.3f1, `Medium_Phone_API_37.0` AVD(API37/x86_64, arm64 번역), 2400×1080 가로 화면이다. 실제 APK는 arm64-v8a, minSdk26/targetSdk36이다. Editor와 native 녹음은 모두 종료했고 AVD는 유지했다. 네트워크 airplane/wifi/data 0/1/1과 audio speaker/submix/default 5/5/5를 실제 복원했다. 마지막 ContentBoundary가 남긴 Stage11 QA 상태는 Fresh30 정상 완료 원문과 구분한다. **실기기 성능·FPS, iOS, 스토어 배포는 검사하지 않았다.**
[이전 작업의 시각 확인 원문](../artifacts/verification/T8/Implementation5eb/artifacts/verification/Final/native-visual-review.json)은 실제 Android PNG/SHA/터치 명령과 관찰 범위를 연결한다. 해당 작업 Stage13/15의 2+3 친구 얼굴·숫자·구 수량, Stage28의 실제 선택5, 분리 경계의 실제 전체 선택5/떨어진 양끝 선택2를 직접 확인했다. Stage15의 이전 아래쪽 시점은 가독성 합격 근거에서 제외하고 해당 작업의 정상 시점을 사용한다. Editor Camera.Render RT나 모든 시점·해상도의 가독성 합격으로 확대하지 않는다.
해당 작업의 지정 목록은 [고정 manifest.json](../artifacts/verification/T8/Implementation5eb/artifacts/verification/Final/manifest.json)의 **1,982개 지정 파일과 해시**다. 당시 원시 증거 위치는 `C:/git/MagnetismHeroes/.dryforge/worktrees/T8/artifacts/verification/Final`이며 현재 루트 completion 증거와 구분한다. 네 외부 명령/phase 기록, XML, 네 child report, 실제 JSON/PNG/PCM, 해당 APK의 UUID 추출 파일만 명시적으로 연결한다. Final 폴더에 남은 이전 UUID·도구 설치 이력 전체를 해당 소스의 증거로 주장하지 않는다. 문서 전용 후속 커밋과 검사 소스의 관계는 고정 사본 같은 폴더의 `source-documentation-relationship.json`에 기록한다.
실패·사전 검사 원문은 `artifacts/verification/T8-red/`에 보존했다. Final 첫 퍼즐 fallthrough, PowerShell 인수/선택 배열, 화면 밖·소품 가림 입력, 이미 완료된 보드 재시도, 재사용된 recorder PID, 계수 마지막 입력/저장 관찰 경쟁을 게임 규칙 우회 없이 수정했다. 정상 임의 3D 배치에 모든 구가 한 시점에서 보인다는 추가 조건을 요구하지 않는다. 녹음은 시작 때 확인한 원래 process handle을 유지하여 재사용된 브라우저 PID를 기다리거나 종료하지 않는다. 이전 폴더의 이동 관계도 원문에 남겼다.