73 lines
11 KiB
Markdown
73 lines
11 KiB
Markdown
# 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·스토어 게시 검증은 수행하지 않았다.
|
||
|
||
최종 소스 `73ffcbef`의 전체 구현·기획·개발 문서 최종 독립 검토는 approved, blocking 0·남은 advisory 0이다. 후보의 실제 출력 경로와 예정 runtime 경로를 구분하는 문서 보완도 재검토했다. [검토 원문](../artifacts/verification/T8/FinalReview/review.json)에 검토 범위·근거·한계를 기록했다. 사용자가 2026-10-07 “승인합니다”로 최종 결과와 개발 문서를 승인했다.
|
||
|
||
## 이전 작업 디렉터리의 고정 검사 기록
|
||
|
||
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를 기다리거나 종료하지 않는다. 이전 폴더의 이동 관계도 원문에 남겼다.
|