{ "schemaVersion": 1, "status": "APPROVED_MODELS_ADOPTED_VERIFIED_PRODUCT_CANDIDATE", "recordedKstDate": "2026-10-09", "scope": "사용자 승인 바이트와 실제 Unity 채택을 연결한다. 제품 전체의 새 사용자 최종 승인은 별도이며 원본 후보 이력을 덮어쓰지 않는다.", "approval": { "path": "artifacts/verification/VisualUpgrade/ModelReview/user-approval.json", "sha256": "b539d582aa77d032918bbb580d10d2374f65be4bdd6868432a84ed1d23a46bc5", "userResponse": "승인합니다", "confirmedUtc": "2026-10-08T14:05:56.585939+00:00", "approvedFileCount": 25, "reviewPacket": { "path": "artifacts/verification/VisualUpgrade/ModelReview/review-packet.json", "sha256": "4787e5679d1fe940060a889ffee42020258587ffb19eff32696ea6fc2f48cc99" } }, "approvedFiles": [ { "kind": "BLENDER_SOURCE", "repositoryRelativePath": "SourceAssets/Models/Heroes/MagneticKnight.blend", "bytes": 1833499, "sha256": "7ce1272dfe861aee986609cdb899f0edf8b8f2f0f17269c0eda472c8aa90ee3a" }, { "kind": "FBX", "repositoryRelativePath": "Assets/MagnetismHeroes/UnityRuntime/Presentation/Models/Heroes/HeroBody.fbx", "bytes": 60076, "sha256": "56f3301176c612ebeab3fdaaba5c019674beeb0f727f97ed27dd67e32ff50a40" }, { "kind": "FBX", "repositoryRelativePath": "Assets/MagnetismHeroes/UnityRuntime/Presentation/Models/Heroes/KnightEquipment.fbx", "bytes": 222764, "sha256": "a8059a020e79e080635e7326bb91576010cad10c60ee931d95536d47fe76e61c" } ], "historicalProvenance": { "path": "SourceAssets/Models/Heroes/provenance.json", "bytes": 6298, "sha256": "16d9e14f9e3ee66dce4b16737e1b1e3380fb0ffff35e322d24508cef42d52851" }, "authoringTool": { "name": "Blender", "version": "5.2.2 LTS", "script": { "path": "tools/models/build_hero.py", "bytes": 22664, "sha256": "6ac494c6207f2a49804db2b06691519920e28fd1af06224793b341854d63e638" }, "frozenToolRecord": { "name": "Blender", "actualVersion": "5.2.2 LTS" }, "toolBuildHash": null }, "originalPlaygroundHistory": [ { "path": "SourceAssets/Models/PlaygroundProps.blend", "bytes": 301307, "sha256": "59f543fc6d3b835fa282eac6459b9ed45ed2617052b7f1d2184895eb978b5775" }, { "path": "SourceAssets/Models/provenance.json", "bytes": 3848, "sha256": "4429c76007f59a6f3a2243204cae2b4ab0ab3d8d6fbf2cdaae9da01df50e9038" } ], "unity": { "productSourceCommit": "83182e7f3e86926bf130817d401a331829401fac", "applyScript": { "path": "Assets/MagnetismHeroes/Editor/VisualUpgradeAssets.cs", "bytes": 17527, "sha256": "8996b23a4da448562c34bd681529414e87fcaa809fc62c563d135f8c61dc2569", "guid": "40789cbe0397f8745bff78d14a544113", "metaSha256": "f017c6e684dd15cd8d1a3682eea8ff6f1b0e4ab75f04087c092484cd19a97821" }, "imports": [ { "path": "Assets/MagnetismHeroes/UnityRuntime/Presentation/Models/Heroes/HeroBody.fbx", "bytes": 60076, "sha256": "56f3301176c612ebeab3fdaaba5c019674beeb0f727f97ed27dd67e32ff50a40", "guid": "a1145d71b07ba34489a0290583fbe4ee", "metaSha256": "808a80e2c555d64c82fc42d09809a3d93313b305e268e12a7fa524504c1e4d69", "rootEuler": { "x": 89.98021697998047, "y": 0.0, "z": 0.0 }, "meshCount": 1, "triangleCount": 3968, "globalScale": 1, "bakeAxisConversion": true, "rootRotationPreserved": true }, { "path": "Assets/MagnetismHeroes/UnityRuntime/Presentation/Models/Heroes/KnightEquipment.fbx", "bytes": 222764, "sha256": "a8059a020e79e080635e7326bb91576010cad10c60ee931d95536d47fe76e61c", "guid": "ccc4dc45d61bc64499d7c0e1591e1b85", "metaSha256": "f4a1b0bc232425b5e678d6d90e65f76510644d55c83fe9189fe7db0eaf46222f", "rootEuler": { "x": 0.0, "y": 0.0, "z": 0.0 }, "meshCount": 22, "triangleCount": 11684, "globalScale": 1, "bakeAxisConversion": true, "rootRotationPreserved": true } ], "materials": [ { "path": "Assets/MagnetismHeroes/UnityRuntime/Presentation/Materials/VisualUpgrade/Hero_CyanSatin.mat", "bytes": 3919, "sha256": "1c8727d6437de82f5842e1acda727f65196c4d92355857c168e62a68a37abbab", "guid": "21b713eed8aa73146a39c8501b952ef9", "metaSha256": "a171f8daa3b2b70fdb0141bf5c17f152c0468822411fbf87fde440eea2dd463c", "sourceMaterial": "Hero_CyanSatin", "shader": "Universal Render Pipeline/Lit", "baseColorSrgb": [ 0.17, 0.72, 0.83 ], "roughness": 0.48, "smoothness": 0.52, "metallic": 0, "enableInstancing": true }, { "path": "Assets/MagnetismHeroes/UnityRuntime/Presentation/Materials/VisualUpgrade/Helmet_SilverTint.mat", "bytes": 3919, "sha256": "3aeca0f84d254552a3decf8004d4fbd6909fb26c75509069828605e1f3d9de39", "guid": "6bc3d158d578da846bebebd6363bd204", "metaSha256": "89a1606ce98219701647a35e393456945882a03011a45bfbc218b2be1e454c30", "sourceMaterial": "Helmet_SilverTint", "shader": "Universal Render Pipeline/Lit", "baseColorSrgb": [ 0.72, 0.85, 0.86 ], "roughness": 0.39, "smoothness": 0.61, "metallic": 0.18, "enableInstancing": true }, { "path": "Assets/MagnetismHeroes/UnityRuntime/Presentation/Materials/VisualUpgrade/Ceramic_WarmCream.mat", "bytes": 3922, "sha256": "04f690db82d0cf505e4822f8f309c2905367b1fa83670f5422ab952f13b1a559", "guid": "dad2eea71471abc488393ffb4dc0cc6f", "metaSha256": "e871bbbbcedbf57be1ebe507c40b13739d3e2d82b249efad0afc0fe577199692", "sourceMaterial": "Ceramic_WarmCream", "shader": "Universal Render Pipeline/Lit", "baseColorSrgb": [ 0.97, 0.92, 0.78 ], "roughness": 0.43, "smoothness": 0.5700000000000001, "metallic": 0, "enableInstancing": true }, { "path": "Assets/MagnetismHeroes/UnityRuntime/Presentation/Materials/VisualUpgrade/Trim_HoneyGold.mat", "bytes": 3928, "sha256": "d496af29ccbcfa9d3991818801535c68d21f549ff170978ef79627c21907f39f", "guid": "50c03e94de1db4a4daf15b060866ac70", "metaSha256": "102520158a20f5541cd883f1581fb1603f5ec2a0b080e454aa2b09a7bacc5658", "sourceMaterial": "Trim_HoneyGold", "shader": "Universal Render Pipeline/Lit", "baseColorSrgb": [ 0.94, 0.71, 0.34 ], "roughness": 0.42, "smoothness": 0.5800000000000001, "metallic": 0.12, "enableInstancing": true }, { "path": "Assets/MagnetismHeroes/UnityRuntime/Presentation/Materials/VisualUpgrade/Enamel_DeepTeal.mat", "bytes": 3939, "sha256": "d6b422ffa5b6a4e688c8734070a4246967f950b73f7a504732c3a3d4bc863242", "guid": "794c64e2850c3f541981a51bb4314d5e", "metaSha256": "8ead210e4db06ee198df147bbcce864292e502a676d131d45c0089146029f7ef", "sourceMaterial": "Enamel_DeepTeal", "shader": "Universal Render Pipeline/Lit", "baseColorSrgb": [ 0.055, 0.4, 0.44 ], "roughness": 0.42, "smoothness": 0.5800000000000001, "metallic": 0, "enableInstancing": true }, { "path": "Assets/MagnetismHeroes/UnityRuntime/Presentation/Materials/VisualUpgrade/Blade_SatinSilver.mat", "bytes": 3918, "sha256": "92c3fa6805b1c6405baf2fdfa113aa7689df1b73571cc9ed782bc6be4d54281b", "guid": "59b7934cb6c96624abd461dad0a6a8f2", "metaSha256": "440fb1197475cc9df36fafcd0c549cd5befb92b19ddbdb3de00e8baad268fc22", "sourceMaterial": "Blade_SatinSilver", "shader": "Universal Render Pipeline/Lit", "baseColorSrgb": [ 0.85, 0.92, 0.91 ], "roughness": 0.4, "smoothness": 0.6, "metallic": 0.2, "enableInstancing": true } ], "prefabs": [ { "path": "Assets/MagnetismHeroes/UnityRuntime/Presentation/Prefabs/MagnetFriend.prefab", "bytes": 18184, "sha256": "5e986e01ad9bcd2026e713b62601f92c7d8cfb9febf91d3591a833e38f7b4d46", "guid": "91ae23d420859244686c2c654ab58bf3", "metaSha256": "5e31161dac1026b55ff8b8c40fec85f1acdf7f154efb573036cda67c7e99139b" }, { "path": "Assets/MagnetismHeroes/UnityRuntime/Presentation/Prefabs/GroupBadge.prefab", "bytes": 18371, "sha256": "8804ed655c33dddff00f5b060e84ca67c9b91a65fbffb501fc83ada4e1594edc", "guid": "f6475c2f7cafe4441a6f4706a3b2b6a4", "metaSha256": "b76c78e7133454e8bf325948bcbc9f392c96c10fb4eb5a78b01eefac2109c8d7" }, { "path": "Assets/MagnetismHeroes/UnityRuntime/Presentation/Prefabs/GameApp.prefab", "bytes": 406884, "sha256": "a36a37bc84fe99dd8dc2c0bcf24ee5dfae266dd5da0c1a272caeb7bfbc7fc44c", "guid": "73c3215bc432df740b907a1edefa9ea1", "metaSha256": "248f9572123fca7ee45d9d56358e2e89a67c2a78b4c27cb74c4281170ace1db6" } ], "stages": [], "sourceImportEvidence": { "path": "artifacts/verification/VisualUpgrade/UnityApply/source-import.json", "sha256": "4a8788aff69cd30befe5c20d94e63542ee9ad4a102710bfd7c208a8beb14f9a6" }, "sourceImportEvidenceScope": "실제 초기 채택 import 기록이다. 현재 제품의 GUID·SHA는 별도로 위에 기록한다.", "colorMapping": "원본 sRGB 값을 URP Lit BaseColor에 연결하고 linearBaseColor를 sRGB 입력으로 재사용하지 않는다. smoothness=1−roughness, metallic은 원본 값이다.", "geometryBoundary": "원본 미터·Z-up 및 FBX -Z forward·Y-up, import scale 1·원래 import root 회전을 유지한다. 승인 메시·원본 재질 바이트를 변경하지 않는다." }, "verification": { "finalCompletion": { "path": "artifacts/verification/VisualUpgrade/FinalProduct/completion.json", "sha256": "587b92a7f4f63986bfa32af647bc184745b5b100deeed2b0ca4b7818ac309414" }, "editorCaptureDirectory": "artifacts/verification/VisualUpgrade/FinalProduct/EditorCapture", "previousGameReview": { "path": "artifacts/verification/VisualUpgrade/GameReview/visual-review.json", "sha256": "c1d86277177ae32b891a1b4be4ecb637fe48ecb0785e292ee6a43835206ee6dc" }, "previousGameReviewScope": "이전 통합 소스 b4d8854의 검수 이력이며 현재 최종 명령 결과를 대신하지 않는다.", "limitations": "지면 아래 시점의 넓어진 지면 가림은 docs/tracking/findings.md에 기록한다. Editor 비율 캡처·CPU 시간·상주 자원은 Android 실기기 성능이 아니다.", "representativeEditorCaptures": [ { "metadata": { "path": "artifacts/verification/VisualUpgrade/FinalProduct/EditorCapture/world1-soft-shadow.json", "sha256": "3b09516098a73d3fb76c7992feaf0123b206472458dacb718f4f21aeef58a1e0" }, "image": { "path": "artifacts/verification/VisualUpgrade/FinalProduct/EditorCapture/world1-soft-shadow.png", "sha256": "3cbe3c75bc6e864a2abf4a4275ca2aafb6f8ad61db8a09a4b7568053ea2e3902" }, "sourceCommit": "83182e7f3e86926bf130817d401a331829401fac", "utc": "2026-10-08T15:25:03.7926755Z", "width": 1280, "height": 720, "balls": 1, "groups": 1, "equipmentAssemblies": 1, "boardOrigin": "Actual Main daylight with soft shadows", "scope": "실제 Main PlayMode 렌더링의 모의 viewport이다. Android 화면이 아니며 합성 상태는 정상 진행 증거가 아니다." }, { "metadata": { "path": "artifacts/verification/VisualUpgrade/FinalProduct/EditorCapture/world11-soft-shadow.json", "sha256": "43ec85a330d87af485051023ccb75752e1699ac7a9f02da3968577217c6957b3" }, "image": { "path": "artifacts/verification/VisualUpgrade/FinalProduct/EditorCapture/world11-soft-shadow.png", "sha256": "6c1433aa7ddb80f7f08f6477e6254023a8b57ce18168b7a018a65f815fcb722c" }, "sourceCommit": "83182e7f3e86926bf130817d401a331829401fac", "utc": "2026-10-08T15:25:04.0908702Z", "width": 1280, "height": 720, "balls": 3, "groups": 1, "equipmentAssemblies": 1, "boardOrigin": "Actual Main daylight with soft shadows", "scope": "실제 Main PlayMode 렌더링의 모의 viewport이다. Android 화면이 아니며 합성 상태는 정상 진행 증거가 아니다." }, { "metadata": { "path": "artifacts/verification/VisualUpgrade/FinalProduct/EditorCapture/world21-soft-shadow.json", "sha256": "b3f0c277da8218d26854e42f92b64a8d4a82cf5329992cea4c8adf8da470deb1" }, "image": { "path": "artifacts/verification/VisualUpgrade/FinalProduct/EditorCapture/world21-soft-shadow.png", "sha256": "a3688b2458fd8551f9b847a78b4f348e70dd7296d85be2437805aee6b8c1314d" }, "sourceCommit": "83182e7f3e86926bf130817d401a331829401fac", "utc": "2026-10-08T15:25:04.1905928Z", "width": 1280, "height": 720, "balls": 6, "groups": 2, "equipmentAssemblies": 2, "boardOrigin": "Actual Main daylight with soft shadows", "scope": "실제 Main PlayMode 렌더링의 모의 viewport이다. Android 화면이 아니며 합성 상태는 정상 진행 증거가 아니다." }, { "metadata": { "path": "artifacts/verification/VisualUpgrade/FinalProduct/EditorCapture/world11-two-plus-three-phone-default.json", "sha256": "dfdbae399d6dc0671edca533807342cea44ed20d227cc74332eba133e6ca1355" }, "image": { "path": "artifacts/verification/VisualUpgrade/FinalProduct/EditorCapture/world11-two-plus-three-phone-default.png", "sha256": "610a1fd1a25f03a50757a17c7f6f01d463a8b430971aa3d882c2d88fe213ba22" }, "sourceCommit": "83182e7f3e86926bf130817d401a331829401fac", "utc": "2026-10-08T15:25:05.8152052Z", "width": 2400, "height": 1080, "balls": 5, "groups": 2, "equipmentAssemblies": 2, "boardOrigin": "Validated five-ball 2+3 free-play store fixture; actual Main app/session", "scope": "실제 Main PlayMode 렌더링의 모의 viewport이다. Android 화면이 아니며 합성 상태는 정상 진행 증거가 아니다." }, { "metadata": { "path": "artifacts/verification/VisualUpgrade/FinalProduct/EditorCapture/world11-merged-five-phone-default.json", "sha256": "cca93732bef1a2fb86622411295c4f2a638bd1ed2c96c2ef96ece26d1ee3e95b" }, "image": { "path": "artifacts/verification/VisualUpgrade/FinalProduct/EditorCapture/world11-merged-five-phone-default.png", "sha256": "6c03e9c1d814cc88c28254e5357d98f3c50bde22f2e824da3475c43cf40a3c56" }, "sourceCommit": "83182e7f3e86926bf130817d401a331829401fac", "utc": "2026-10-08T15:25:06.1027531Z", "width": 2400, "height": 1080, "balls": 5, "groups": 1, "equipmentAssemblies": 1, "boardOrigin": "Actual app/session 2+3 merge from labeled boundary fixture", "scope": "실제 Main PlayMode 렌더링의 모의 viewport이다. Android 화면이 아니며 합성 상태는 정상 진행 증거가 아니다." }, { "metadata": { "path": "artifacts/verification/VisualUpgrade/FinalProduct/EditorCapture/world11-disconnected-split-two-three-tablet-orbitzoom.json", "sha256": "e27b260c70273f1ec68c43bc1aac16e666dc4c494253df0055703610dd908ecd" }, "image": { "path": "artifacts/verification/VisualUpgrade/FinalProduct/EditorCapture/world11-disconnected-split-two-three-tablet-orbitzoom.png", "sha256": "dea0046052f1400a0fd1e2e870b4546d01859c9463178867084c9fe21cd4c173" }, "sourceCommit": "83182e7f3e86926bf130817d401a331829401fac", "utc": "2026-10-08T15:25:06.5677124Z", "width": 1600, "height": 1000, "balls": 5, "groups": 2, "equipmentAssemblies": 2, "boardOrigin": "Actual app/session split of disconnected five-group endpoints", "scope": "실제 Main PlayMode 렌더링의 모의 viewport이다. Android 화면이 아니며 합성 상태는 정상 진행 증거가 아니다." }, { "metadata": { "path": "artifacts/verification/VisualUpgrade/FinalProduct/EditorCapture/world1-ten-single-groups-phone-default.json", "sha256": "66521c24e42b09e02212409819e35ef30f9c01e39c7fc212722a9ad817413911" }, "image": { "path": "artifacts/verification/VisualUpgrade/FinalProduct/EditorCapture/world1-ten-single-groups-phone-default.png", "sha256": "8f0a22475b6013c58ff5bd9addd285f3927eb94e48aa081f2046eb8c1e276c52" }, "sourceCommit": "83182e7f3e86926bf130817d401a331829401fac", "utc": "2026-10-08T15:25:08.5003167Z", "width": 2400, "height": 1080, "balls": 10, "groups": 10, "equipmentAssemblies": 10, "boardOrigin": "Validated synthetic Core FreePlay render fixture; session UI remains underlying stage 1", "scope": "실제 Main PlayMode 렌더링의 모의 viewport이다. Android 화면이 아니며 합성 상태는 정상 진행 증거가 아니다." }, { "metadata": { "path": "artifacts/verification/VisualUpgrade/FinalProduct/EditorCapture/world1-ten-one-group-tablet-default.json", "sha256": "54c6f106ead00b1ede9bebdf182b78cbeb66007c50b53583a9d0847c27fa3bf5" }, "image": { "path": "artifacts/verification/VisualUpgrade/FinalProduct/EditorCapture/world1-ten-one-group-tablet-default.png", "sha256": "3959e9679a5418b96d2b63d1de0479c2b537934dd3e7c5e71357c9f343d8ea54" }, "sourceCommit": "83182e7f3e86926bf130817d401a331829401fac", "utc": "2026-10-08T15:25:08.8364150Z", "width": 1600, "height": 1000, "balls": 10, "groups": 1, "equipmentAssemblies": 1, "boardOrigin": "Validated synthetic Core FreePlay render fixture; session UI remains underlying stage 1", "scope": "실제 Main PlayMode 렌더링의 모의 viewport이다. Android 화면이 아니며 합성 상태는 정상 진행 증거가 아니다." } ], "modelRoundtripEvidence": { "path": "artifacts/verification/VisualUpgrade/ModelReview/integration-verification.json", "sha256": "9dbe2c85a83c5f5098669724a8e0e73e34bda137a5cbe40e08e8c459e0a810ca" }, "finalEvidenceAudit": { "path": "artifacts/verification/VisualUpgrade/FinalProduct/documentation-final-evidence-audit.json", "sha256": "778be655b03b0e159dfdc981be368802b39e2c25cc34e54d24761cba0dd3701e" }, "actualFinalResults": { "productSourceCommit": "83182e7f3e86926bf130817d401a331829401fac", "phaseExitCodes": { "EditMode": 0, "PlayMode": 0, "AndroidBuild": 0, "AndroidSmoke": 0 }, "editorTests": { "EditMode": 103, "PlayMode": 52 }, "androidChecks": 226, "children": [ { "suite": "Fresh30", "checks": 151, "exitCode": 0, "sourceCommit": "83182e7f3e86926bf130817d401a331829401fac", "apkSha256": "bee8e80e03c4205edebf616a18940d58654e9115fdc91ee0a80f47dea91559ea", "scope": "Fresh 30-stage sequential actual touch progression, no save writes or completion fixtures; separate boundary suites are labelled separately" }, { "suite": "FinalBoundary", "checks": 37, "exitCode": 0, "sourceCommit": "83182e7f3e86926bf130817d401a331829401fac", "apkSha256": "bee8e80e03c4205edebf616a18940d58654e9115fdc91ee0a80f47dea91559ea", "scope": "Separate native boundaries after real30 completion; deliberate corrupt-file tests labelled, no fabricated completion or board injection" }, { "suite": "RapidBoundary", "checks": 39, "exitCode": 0, "sourceCommit": "83182e7f3e86926bf130817d401a331829401fac", "apkSha256": "bee8e80e03c4205edebf616a18940d58654e9115fdc91ee0a80f47dea91559ea", "scope": "Separate QA planar collected10 replay20 fixture; real30 source record preserved. Actual offline native11 taps and complete numeric PCM; not fresh progression evidence." }, { "suite": "ContentBoundary", "checks": 69, "exitCode": 0, "sourceCommit": "83182e7f3e86926bf130817d401a331829401fac", "apkSha256": "bee8e80e03c4205edebf616a18940d58654e9115fdc91ee0a80f47dea91559ea", "scope": "별도 명시 경계 검사. 정상 30단계 진행 수에 합산하지 않는다." } ], "smokeStartedUtc": "2026-10-08T15:31:53.7694461Z", "smokeFinishedUtc": "2026-10-08T15:47:20.6303343Z", "androidReport": { "path": "artifacts/verification/Final/android-final-evidence.json", "sha256": "070b33c70925eabebf33c66dfd08daa902ddffaa6591e052c765d7884e22ba8b" }, "freshAll30SuccessAndIdsChecked": true, "freshSavePushCommandCount": 0, "failedAttemptsPreserved": [ { "phase": "AndroidSmoke", "command": "pwsh -NoProfile -File tools/verify.ps1 -Phase AndroidSmoke -Milestone Final", "startedUtc": "2026-10-08T15:26:38.5225191Z", "finishedUtc": "2026-10-08T15:30:38.1167761Z", "exitCode": 1, "status": "failed", "sourceCommit": "83182e7f3e86926bf130817d401a331829401fac", "sourceDirty": false, "sourceDirtyEnd": null, "outerLog": "artifacts/verification/VisualUpgrade/FinalProduct/FailedAndroidAttempt1/androidsmoke-outer.log", "evidence": "artifacts/verification/VisualUpgrade/FinalProduct/FailedAndroidAttempt1/Final/androidsmoke-evidence.json", "originalEvidencePath": "C:\\git\\MagnetismHeroes\\artifacts\\verification\\Final\\androidsmoke-evidence.json", "originalOuterLogPath": "C:\\git\\MagnetismHeroes\\artifacts\\verification\\VisualUpgrade\\FinalProduct\\androidsmoke-outer.log" } ] }, "apkProvenance": { "apk": { "path": "artifacts/android/MagnetismHeroes.apk", "sha256": "bee8e80e03c4205edebf616a18940d58654e9115fdc91ee0a80f47dea91559ea", "bytes": 57215937 }, "installedApk": { "path": "artifacts/verification/Final/Fresh30/installed-base.apk", "sha256": "bee8e80e03c4205edebf616a18940d58654e9115fdc91ee0a80f47dea91559ea" }, "actualClipCount": 44, "voicePayload": { "path": "artifacts/verification/Final/VoicePayload/apk-voice-payload.json", "sha256": "e89d1987d515ab958cc411f299297ccbea9c1a4f4b62c7886d6d7bc17be2a620" }, "notices": [ { "name": "NotoSansCJK-OFL.txt", "sha256": "88f117575237307bdd86a17ef15e21790fc9a662fe4dfb103ca1ca077f0d9982" }, { "name": "TTS-Apache-2.0.txt", "sha256": "7137274bab133744763a3906ace2a13844c2b34635136fc6d4454c25bfd76eda" }, { "name": "TTS-model-card.txt", "sha256": "2157466302fcaf8e4979d0505aa4b648ad32468aff98b3e964046db05e574f3c" } ] }, "actualAndroidAvdCaptures": [ { "stage": 1, "image": { "path": "artifacts/verification/Final/Fresh30/stage-1-enter.png", "sha256": "6eee00ef4b430cb0ad9c697ca24d5ac4fe8de3630f14488e74fe78c25c87a301" }, "captureCommands": { "path": "artifacts/verification/Final/Fresh30/stage-1-enter-commands.json", "sha256": "465c74bd14cb7cef440efd1e9007adb5f0626b4824fdd780cf8c637a0d6c07f5" }, "observedUtc": "2026-10-08T15:32:22.2063877Z", "sourceCommit": "83182e7f3e86926bf130817d401a331829401fac", "installedApkSha256": "bee8e80e03c4205edebf616a18940d58654e9115fdc91ee0a80f47dea91559ea", "scope": "실제 Android API37 AVD 2400×1080 화면. 정상 30단계 실제 입력의 한 시점이며 모든 얼굴의 동시 가시성을 보장하지 않는다." }, { "stage": 11, "image": { "path": "artifacts/verification/Final/Fresh30/stage-10-next.png", "sha256": "4e64e2ed5706d4571ac43fad55616a457caea934c596a12d437195b13903e905" }, "captureCommands": { "path": "artifacts/verification/Final/Fresh30/stage-10-next-commands.json", "sha256": "b447368b273e8213a3644a1c4afb201597ba884c623d443190d18bbcfb686af5" }, "observedUtc": "2026-10-08T15:34:51.7253665Z", "sourceCommit": "83182e7f3e86926bf130817d401a331829401fac", "installedApkSha256": "bee8e80e03c4205edebf616a18940d58654e9115fdc91ee0a80f47dea91559ea", "scope": "실제 Android API37 AVD 2400×1080 화면. 정상 30단계 실제 입력의 한 시점이며 모든 얼굴의 동시 가시성을 보장하지 않는다." }, { "stage": 21, "image": { "path": "artifacts/verification/Final/Fresh30/stage-20-next.png", "sha256": "030ca33f9f11da310c2ead3a78b61306eee195a162cec1b8f32c5fda009328ef" }, "captureCommands": { "path": "artifacts/verification/Final/Fresh30/stage-20-next-commands.json", "sha256": "4d21313b8c846e97effc65c1bddc94de87c7ab454d94512b2b8f0e56f41b4255" }, "observedUtc": "2026-10-08T15:39:44.5484050Z", "sourceCommit": "83182e7f3e86926bf130817d401a331829401fac", "installedApkSha256": "bee8e80e03c4205edebf616a18940d58654e9115fdc91ee0a80f47dea91559ea", "scope": "실제 Android API37 AVD 2400×1080 화면. 정상 30단계 실제 입력의 한 시점이며 모든 얼굴의 동시 가시성을 보장하지 않는다." } ], "newFinalProductUserApproval": "별도 최종 사용자 승인 대기이며 모델 승인과 구분한다." }, "preservation": "기존 13 FBX·원본·출처, 기존 GUID, 30 비시각 정의·초기 구 위치·ID·수량, 음성 44개·얼굴 6표정·폰트·UI·Mixer·Core·저장을 유지한다.", "fileHashScope": "실제 최종 빌드 저장소 파일 바이트이며 Git 체크아웃의 줄바꿈 차이와 구분한다.", "pathBase": "path와 repositoryRelativePath는 저장소 루트를 기준으로 한다. artifacts 경로는 검증 원문이며 제품 자산이 아니다." }