Files
Faset_Engine/docs/validation/linux-release-2026-09-18/evidence.json
T

313 lines
10 KiB
JSON

{
"format": "faset.validation-evidence",
"version": 1,
"status": "passed",
"scope": "Linux relocated Release game export and offscreen small-scene measurement",
"source_checkout": {
"reference_commit": "5ac4db438dae5ee28e5619e62cf8d6647beecd52",
"clean_commit_match": false,
"description": "Shared working tree around 5ac4db4 plus in-progress checkpoint 4 work; builds were not made from a frozen clean commit. Exact exported binary/shader hashes are retained in each manifest."
},
"export_started_utc": "2026-09-18T01:46:06.267995+00:00",
"export_finished_utc": "2026-09-18T01:49:50.149934+00:00",
"host": {
"os": "Ubuntu 26.04 LTS",
"kernel": "7.0.0-31-generic x86_64",
"cpu": "AMD Ryzen 7 1700 Eight-Core Processor (8 cores,16 threads)",
"system_memory_bytes": 33571037184,
"gpu": "NVIDIA GeForce RTX 2080 Ti",
"gpu_memory_mib": 11264,
"nvidia_driver": "595.84"
},
"configuration": {
"build": "Release",
"compiler": "Clang 21.1.8",
"cxx_flags": "-O3 -DNDEBUG",
"cmake": "4.2.3",
"api": "Vulkan 1.3",
"resolution": [
1280,
720
],
"presentation": "offscreen",
"validation_enabled": true,
"physics_debug": false,
"frames_per_final_profile": 240,
"fixed_delta_seconds": 0.016666666666666666,
"simulation": "synthetic fixed timestep, no player input",
"sampling": "nearest rank, all completed frames, cold first frame retained"
},
"verification": {
"tool": "tools/verify_playable_exports.py",
"project_copies_and_relocated_binaries_include": "Faset Café 世界",
"steps": [
"Copy exact checked-in sample project inputs",
"Real Editor import of 3D Blender arch bundle",
"Real Editor Release export",
"Verify every package file size and SHA256",
"Copy generation outside engine/source trees",
"Hide disposable source-project paths",
"Launch Player from unrelated empty cwd without scene/assets arguments",
"CPU --validate then 120-frame offscreen capture and profile",
"Additional 240-frame no-debug profile of each same relocated executable"
],
"validation_errors": 0
},
"projects": [
{
"name": "collect-2d",
"dimension": 2,
"generation": "48ec8546-3750-463f-9c4c-f76c3b933256",
"build_fingerprint": "5b1996b0fe44eeaa01ee1fd581f9f063f8c84147128e896541d27207dbab9aaa",
"scene_hash": "05ab2c3e5b152ab25867976c47635961f440f41d8cd0408732eb2d8d5b7800a8",
"asset_generations": {},
"source_inputs": [
{
"path": ".gitignore",
"sha256": "53aa4d7124d4c8d93b8d7c4cb470b6c82b844e019a660d6243ffeadc50602de1"
},
{
"path": "README.md",
"sha256": "d6c35206b10ee28efd5cc02da77a3ce9b6e1f8ce085793150bbf2f23bd925d65"
},
{
"path": "Scenes/main.scene.json",
"sha256": "be48a6d21385e717b6c8ebf9a3b4322eebbeff6bb067428e089ab5214be79854"
},
{
"path": "Scripts/Gameplay.cpp",
"sha256": "6b581b24da613e1915819de0a0f0ea820dd3333efa62c4b479a9ea7ffdbc6bcc"
},
{
"path": "Scripts/Gameplay.hpp",
"sha256": "4121587182ed4f74901b1c0757c53daadbf309af1d6bb5dd87fef142130ccbbe"
},
{
"path": "project.faset.json",
"sha256": "36e2acd32210f5489372a2331346a3294ead2395f0713e3e5fd2da4e83263689"
}
],
"package_file_count": 17,
"source_project_paths_unavailable": true,
"standalone_validation": "passed",
"standalone_render_frames": 120,
"capture": {
"width": 1280,
"height": 720,
"sampled_colors": 7,
"sha256": "f9d74067d87c1ebf30c6db372a26d93b7285791c8cb0307a24af5adb23bf201a"
},
"final_profile": "collect-2d-profile-240.json",
"profile_recorded_at_utc": "2026-09-18T01:51:24.599491+00:00",
"gpu_allocated_bytes": {
"min": 15750288,
"max": 15750288
},
"draw_calls": [
11
],
"vertices": [
66
],
"texture_count": [
1
],
"summary_ms": {
"gpu": {
"max": 0.58912,
"min": 0.563616,
"p50": 0.564832,
"p95": 0.57856,
"samples": 240
},
"render_call": {
"max": 5.705444,
"min": 1.581003,
"p50": 1.865269,
"p95": 2.22086,
"samples": 240
},
"renderer_cpu": {
"max": 5.701056,
"min": 1.578639,
"p50": 1.861723,
"p95": 2.216031,
"samples": 240
},
"renderer_readback_cpu": {
"max": 2.763424,
"min": 0.432917,
"p50": 0.509912,
"p95": 0.632894,
"samples": 240
},
"simulation": {
"max": 0.513789,
"min": 0.144743,
"p50": 0.200708,
"p95": 0.258247,
"samples": 240
},
"snapshot": {
"max": 0.25444,
"min": 0.127029,
"p50": 0.170341,
"p95": 0.214946,
"samples": 240
},
"wall": {
"max": 6.089358,
"min": 1.879436,
"p50": 2.233955,
"p95": 2.684014,
"samples": 240
}
}
},
{
"name": "collect-3d",
"dimension": 3,
"generation": "17281e17-9f4f-44f0-8821-6e0071e9a45b",
"build_fingerprint": "5a516f5c4bded8f8e3f027b3dd2812a34b7f40b37e281c21ce87d7586fff88e4",
"scene_hash": "6510f994ee01af5823614911fcdeff0fd433846d937ff1a65d5bf5fb08e45e8f",
"asset_generations": {
"5832763b-3ed0-44d6-9088-0b524f196a91": "4a5bfcc1437a7b4d65c388da2beace0308cceda8e16503d08ce676260f21d5c2"
},
"source_inputs": [
{
"path": ".gitignore",
"sha256": "53aa4d7124d4c8d93b8d7c4cb470b6c82b844e019a660d6243ffeadc50602de1"
},
{
"path": "Assets/exit-arch/create.py",
"sha256": "9c7291124fb1498a3f992ef74afc39cd98f9cc3e2ff4687c633bece85d580905"
},
{
"path": "Assets/exit-arch/manifest.json",
"sha256": "7a13347adc89761fb02ebeab3c58ba87f319cd62f53ec87a3bb61bcd066ffa55"
},
{
"path": "Assets/exit-arch/manifest.json.faset-import.json",
"sha256": "ef4eef28a18a0cc40a40df75db34c97faa5d783b891265f862633f3aec514afc"
},
{
"path": "Assets/exit-arch/payload/ee6c748a212905fc9c465cbe95c033e94b80be643624f4f240ad5353761205b3.glb",
"sha256": "ee6c748a212905fc9c465cbe95c033e94b80be643624f4f240ad5353761205b3"
},
{
"path": "Assets/exit-arch/source.blend",
"sha256": "ff2676bec97ab778e531e87a185ad716049ea3b05b4a4f0027a6345737735035"
},
{
"path": "README.md",
"sha256": "2df5ca4df47ab5d3d05d41508201296d4ad5ec876245f19f061767ade6a30e8f"
},
{
"path": "Scenes/main.scene.json",
"sha256": "61b65baf79e52f07ac386a7f98acf985a1b09e88770cdde37ef461dc94b9dcd7"
},
{
"path": "Scripts/Extensions/Beacon.hpp",
"sha256": "c60d56161eead16f541835053ad32ac3333383d83015709c060b7d45e0af5a97"
},
{
"path": "Scripts/Gameplay.cpp",
"sha256": "5d419786a6861d7f14ed4eca54634694d8cd43be5dbbd60a2c6790db665c3a6a"
},
{
"path": "Scripts/Gameplay.hpp",
"sha256": "4121587182ed4f74901b1c0757c53daadbf309af1d6bb5dd87fef142130ccbbe"
},
{
"path": "project.faset.json",
"sha256": "43d273b1054ec9069369073f54cc1fc7efb3d6b699dcd342c552a2dc2ef852ef"
}
],
"package_file_count": 22,
"source_project_paths_unavailable": true,
"standalone_validation": "passed",
"standalone_render_frames": 120,
"capture": {
"width": 1280,
"height": 720,
"sampled_colors": 42,
"sha256": "914060401de93d08b33bf09a1e210859e491a0060c331e5e2044f517356f4980"
},
"final_profile": "collect-3d-profile-240.json",
"profile_recorded_at_utc": "2026-09-18T01:51:25.501500+00:00",
"gpu_allocated_bytes": {
"min": 15787008,
"max": 15787008
},
"draw_calls": [
31
],
"vertices": [
576
],
"texture_count": [
1
],
"summary_ms": {
"gpu": {
"max": 0.624064,
"min": 0.58432,
"p50": 0.58752,
"p95": 0.600448,
"samples": 240
},
"render_call": {
"max": 4.807059,
"min": 1.644403,
"p50": 1.884165,
"p95": 2.179593,
"samples": 240
},
"renderer_cpu": {
"max": 4.803463,
"min": 1.626759,
"p50": 1.880197,
"p95": 2.174082,
"samples": 240
},
"renderer_readback_cpu": {
"max": 2.729419,
"min": 0.398812,
"p50": 0.468945,
"p95": 0.608337,
"samples": 240
},
"simulation": {
"max": 0.441703,
"min": 0.185701,
"p50": 0.213223,
"p95": 0.300146,
"samples": 240
},
"snapshot": {
"max": 0.740007,
"min": 0.162066,
"p50": 0.181302,
"p95": 0.257285,
"samples": 240
},
"wall": {
"max": 5.902556,
"min": 2.040269,
"p50": 2.298847,
"p95": 2.732225,
"samples": 240
}
}
}
],
"evidence_sha256": {
"collect-2d-profile-240.json": "0141cb2ad6d31394b542d575dce3409fef82ff2e77fe91eb4a7183811471e36f",
"collect-3d-profile-240.json": "bedf3a68df03c1af42bdb4d3b416d930c6e92fa6e99033c63ea9b17ae977c8c6",
"collect-2d-manifest.json": "83a0c8a58dae07376c0db58ca58b115d9ecedb245bcba88bdcd5429796ba5be9",
"collect-3d-manifest.json": "6374a6af5618a6c613b09978b2bf42300b1565808ded21bf9c2b82444027f252",
"collect-2d.png": "c380583f2fd8bc09c5b0e1c6e755c35c3d64b5385ed66177b04d1bbdb532b236",
"collect-3d.png": "98941a2004c3345da336294fa0e1b9e363922fc581c7a8612652ecbb0d764c07"
}
}