model-pool-acceptance.json
docs/evidence/model-pool-acceptance.json
1{
2 "date": "2026-10-25",
3 "baseCommit": "42c3a5a259f9e1a2ae59a395b6b44eeb116b0a05",
4 "scope": "Device-owned immutable model allocation sharing across source, portal and pending replacement views; aggregate budget, retirement and device identity fencing.",
5 "fullPlanPercentApprox": 78,
6 "milestonesClosed": [],
7 "environment": {
8 "node": "22.23.4",
9 "playwright": "1.56.1",
10 "browser": "Chromium 141 headless_shell",
11 "graphics": "SwiftShader WebGPU through Vulkan"
12 },
13 "budgets": {
14 "perViewLogicalPeakBytes": 33554432,
15 "deviceUniqueModelBytes": 67108864,
16 "deviceModelHandles": 32768,
17 "excludes": [
18 "Frame targets",
19 "Lettering and primitive renderer buffers",
20 "Driver bookkeeping and bind-group caches"
21 ]
22 },
23 "nativeSharing": {
24 "logicalBytes": 3962984,
25 "deviceBytes": 2243668,
26 "savedBytes": 1719316,
27 "reductionPercent": 43.384379043670116,
28 "reuses": 45,
29 "leases": 96
30 },
31 "checks": {
32 "typesAndBoundaries": {
33 "passed": true,
34 "packageFiles": 149
35 },
36 "headless": {
37 "total": 787,
38 "passed": 730,
39 "skipped": 57,
40 "failed": 0,
41 "durationMs": 33864.275894,
42 "report": "model-pool-headless.tap"
43 },
44 "browserDistinctPassed": 7,
45 "browserReports": {
46 "model-pool-browser.json": {
47 "startTime": "2026-10-25T21:13:40.255Z",
48 "duration": 128774.135,
49 "expected": 4,
50 "skipped": 0,
51 "unexpected": 0,
52 "flaky": 0
53 },
54 "model-pool-residency-worker.json": {
55 "startTime": "2026-10-25T21:17:59.637Z",
56 "duration": 37801.106,
57 "expected": 1,
58 "skipped": 0,
59 "unexpected": 0,
60 "flaky": 0
61 },
62 "model-pool-residency-main.json": {
63 "startTime": "2026-10-25T21:18:38.047Z",
64 "duration": 31548.911,
65 "expected": 1,
66 "skipped": 0,
67 "unexpected": 0,
68 "flaky": 0
69 }
70 },
71 "nativeMaterialAndSkinRegression": {
72 "passed": true,
73 "report": "model-pool-residency-initial/browser-results.json",
74 "note": "Owned-renderer scenario passed in this run. The separate residency scenario failed on a detached metric read, then passed in both placements after an atomic diagnostic read."
75 }
76 },
77 "verified": [
78 "Validated geometry, tangent, skin influence and image resources reuse immutable handles without duplicate uploads.",
79 "Private material uniforms and animation palettes do not alias across views.",
80 "Pending native validation is never published for reuse; failed candidates release their reservations without retiring accepted siblings.",
81 "Byte budget includes private and shared allocations across accepted/pending owners; partial rejection rolls back.",
82 "A pool rejects another GPU device; device disposal and late lease release are idempotent.",
83 "Native source/destination view counts agree with instrumented unique handles.",
84 "Retiring the source catalog preserves destination pixels and the last leases.",
85 "Existing renderer material/skin/shader/texture/recovery corpus passes.",
86 "Two-player shared portal publication, failure/retry, travel and both graphics/simulation recovery placements pass.",
87 "Repeated place residency, reset, failed allocation, held preparation, device loss and unrelated revision pass in worker/main placement."
88 ],
89 "initialFailures": [
90 {
91 "kind": "Sandbox child-process restrictions in existing isolated import tests",
92 "resolution": "Reran with child-process permissions and an isolated writable TMPDIR; full suite passed."
93 },
94 {
95 "kind": "New skeletal allocation test mock assumed all writes were typed arrays",
96 "resolution": "Mock now accepts ArrayBuffer, as native WebGPU does. No runtime fix was required.",
97 "evidence": "model-pool-headless-initial.tap"
98 },
99 {
100 "kind": "Existing residency diagnostic read returned undefined after live revision",
101 "resolution": "Read metric label/value atomically inside one browser evaluation. Error-context snapshot contained the expected 1.890 MiB value; both placement reruns passed without timeout changes.",
102 "evidence": "model-pool-residency-initial/",
103 "localTrace": ".data/model-pool-residency-initial-trace.zip"
104 }
105 ],
106 "limits": [
107 "Fixture savings are model logical byte measurements, not total GPU memory or a frame-rate claim.",
108 "Network asset streaming, adjacent prefetch and whole-world CPU residency remain open.",
109 "No persistent/trusted database suites rerun in this increment.",
110 "Physical GPU/vendor and long-soak qualification remain open.",
111 "Final character/arrival art and full milestone gates remain open."
112 ],
113 "sha256": {
114 "packages/render-webgpu/model-pool.ts": "bdbd61a6e3c16f096f91e3124093a66100a5f25ce2b3fb672ddd424157dc9727",
115 "packages/render-webgpu/model-resources.ts": "846378f84e341b9d7eeb11608afdd3623c4d29832166ae7d24ed1720794ac8be",
116 "packages/render-webgpu/index.ts": "cd225c2336ed7ee99ce262770605462bf2eaf893c37179357087caf6ff6ab1b2",
117 "apps/player/main.ts": "f41e594e2b899e7760c72af9ca6e3b3b2c32d2c78247e101f72e62c534dec1a0",
118 "apps/probe/portals.ts": "c1af561d5c0ba6b88e59523b8aabefe0a040f36704576849ccc7663b0b13093f",
119 "tests/model-pool.test.ts": "a99284506518d65dde3342326465a96d9a1c385e64e7b12654e6ec3761d49939",
120 "tests/model-render.test.ts": "0d4930efe6d812e0094a8aaa2157821d5af91ef815117f838bf74b572800aac1",
121 "tests/surface-materials.test.ts": "559859cf50fc7ee3e7fe5f16998d5e73fcb6d1b3ea6f5e154f44b91678284e1b",
122 "tests/browser/portal-rendering.spec.ts": "5613831221aaa185381262b5f3e81bc054ace2c8b19df4a9756db8426e2b5dbb",
123 "tests/browser/place-residency.spec.ts": "162e926639d748c04aecab183e8e4a0bf4a7ff771156ddc013572d4ee0e2a7c4"
124 }
125}
126