texture-compiler-acceptance.json
docs/evidence/texture-compiler-acceptance.json
1{
2 "format": 1,
3 "recordedAt": "2026-10-24T23:16:06.677430+00:00",
4 "source": "099a999a25981451643b5e035c8f044578f336aa",
5 "headless": {
6 "command": "npm test",
7 "tests": 218,
8 "pass": 218,
9 "fail": 0,
10 "skipped": 0,
11 "log": "texture-compiler-headless.tap",
12 "provenance": "Pre-commit run on final implementation/tests; only TypeScript printer formatting followed."
13 },
14 "browser": {
15 "command": "npm run test:browser -- tests/browser/probe.spec.ts",
16 "stats": {
17 "startTime": "2026-10-24T23:13:37.927Z",
18 "duration": 82559.62999999999,
19 "expected": 10,
20 "skipped": 0,
21 "unexpected": 0,
22 "flaky": 0
23 },
24 "report": "texture-compiler-browser.json",
25 "capabilities": "texture-compiler-capabilities.json",
26 "provenance": "Pre-commit production build. Later additions were independent headless pixel comparisons, packaged notices, documentation and formatting; browser decoder and contract behavior match source.",
27 "scope": "All ten probe cases, including two complete runs and failure/cancellation recovery. Player and multiplayer browser files were not rerun locally for this CPU/compiler-only stage.",
28 "environment": "Chromium 141 headless shell, software WebGPU, CI=1, one worker, isolated temporary production build"
29 },
30 "textures": {
31 "fixture": "texture-rgba8.1",
32 "artifacts": [
33 {
34 "file": "texture-grid.png",
35 "usage": "color",
36 "sha256": "57376b5950bc45ed17588c384d8362809140beed4db106fae79bae07421ba662",
37 "sourceHash": "fbf8f908dc296a19cf94c155d7c894041613100ec9a35e77497bc842b79bb8d4",
38 "width": 9,
39 "height": 7,
40 "bytes": 312,
41 "levels": [
42 {
43 "width": 9,
44 "height": 7
45 },
46 {
47 "width": 4,
48 "height": 3
49 },
50 {
51 "width": 2,
52 "height": 1
53 },
54 {
55 "width": 1,
56 "height": 1
57 }
58 ]
59 },
60 {
61 "file": "texture-grid.png",
62 "usage": "data",
63 "sha256": "155cf050effc36f353d9b3b7ba89865610a8a15aae731e52bcbc061856680a27",
64 "sourceHash": "fbf8f908dc296a19cf94c155d7c894041613100ec9a35e77497bc842b79bb8d4",
65 "width": 9,
66 "height": 7,
67 "bytes": 312,
68 "levels": [
69 {
70 "width": 9,
71 "height": 7
72 },
73 {
74 "width": 4,
75 "height": 3
76 },
77 {
78 "width": 2,
79 "height": 1
80 },
81 {
82 "width": 1,
83 "height": 1
84 }
85 ]
86 },
87 {
88 "file": "texture-grid.png",
89 "usage": "normal",
90 "sha256": "1e3510d32c8d5b93f328455c654d7279ad8fe532fb3a808181663ba6af60d705",
91 "sourceHash": "fbf8f908dc296a19cf94c155d7c894041613100ec9a35e77497bc842b79bb8d4",
92 "width": 9,
93 "height": 7,
94 "bytes": 312,
95 "levels": [
96 {
97 "width": 9,
98 "height": 7
99 },
100 {
101 "width": 4,
102 "height": 3
103 },
104 {
105 "width": 2,
106 "height": 1
107 },
108 {
109 "width": 1,
110 "height": 1
111 }
112 ]
113 },
114 {
115 "file": "texture-grid.jpg",
116 "usage": "color",
117 "sha256": "b4e7687152932027adf5abe3e7a589b3a7b8dbe30c14a3179b4d9880e07a8ccf",
118 "sourceHash": "6da3e92c068050870bee3b2c501b83b2e22b30a4af94d8180c3663af3ecdf865",
119 "width": 9,
120 "height": 7,
121 "bytes": 312,
122 "levels": [
123 {
124 "width": 9,
125 "height": 7
126 },
127 {
128 "width": 4,
129 "height": 3
130 },
131 {
132 "width": 2,
133 "height": 1
134 },
135 {
136 "width": 1,
137 "height": 1
138 }
139 ]
140 },
141 {
142 "file": "texture-grid.jpg",
143 "usage": "data",
144 "sha256": "e7b6f86d87b5ce59633a950c79a505fed772804065ced0bd5991c52843f16e95",
145 "sourceHash": "6da3e92c068050870bee3b2c501b83b2e22b30a4af94d8180c3663af3ecdf865",
146 "width": 9,
147 "height": 7,
148 "bytes": 312,
149 "levels": [
150 {
151 "width": 9,
152 "height": 7
153 },
154 {
155 "width": 4,
156 "height": 3
157 },
158 {
159 "width": 2,
160 "height": 1
161 },
162 {
163 "width": 1,
164 "height": 1
165 }
166 ]
167 },
168 {
169 "file": "texture-grid.jpg",
170 "usage": "normal",
171 "sha256": "0e7d0aef60b7678b43ff724ac2e93f2700a068643c4fe780766a3892694038fd",
172 "sourceHash": "6da3e92c068050870bee3b2c501b83b2e22b30a4af94d8180c3663af3ecdf865",
173 "width": 9,
174 "height": 7,
175 "bytes": 312,
176 "levels": [
177 {
178 "width": 9,
179 "height": 7
180 },
181 {
182 "width": 4,
183 "height": 3
184 },
185 {
186 "width": 2,
187 "height": 1
188 },
189 {
190 "width": 1,
191 "height": 1
192 }
193 ]
194 }
195 ],
196 "digest": "ddf6f2f05a3b655ee945577f4a9fbc4f69fb0d75f93d717dd981b0008d8d91b9"
197 },
198 "checks": [
199 "TypeScript and 54-source-file import boundaries passed",
200 "Legacy Darkwind and engine-zoo hashes unchanged",
201 "PNG pixels exactly match original numeric source; progressive JPEG matches independent ImageMagick decode within two channel values",
202 "Packed, Adam7, palette, transparency and 16-bit PNG conformance fixtures passed",
203 "CRC, bounds, inflate overflow, scanline count and invalid chunk rejection passed",
204 "sRGB linear-light alpha-weighted mips, linear data mips and normalized normal mips passed",
205 "Input ownership, complete mip validation and rehashed mip rejection passed",
206 "Texture process source/settings/reply identity validation passed",
207 "Portable Node-only CLI builds and runs outside the checkout, includes notices, preserves existing files and removes failed temporary outputs"
208 ],
209 "ci": {
210 "url": "https://github.com/jasona/darkwind-web/actions/runs/40141999357",
211 "status": "queued"
212 },
213 "limits": [
214 "No complete milestone is closed",
215 "This stage produces portable CPU texture artifacts; GLB texture references and GPU material sampling remain open",
216 "Default game art and deployed beta are unchanged",
217 "PNG/JPEG have explicit source/dimension/pixel bounds; process deadline and heap limit do not constitute OS isolation or total RSS bounds",
218 "No physical-device graphics or texture-performance claim",
219 "The prior model-integration browser closure remains unexplained despite three passing repetitions; its CI player job remains live"
220 ]
221}
222