surface-materials-acceptance.json
docs/evidence/surface-materials-acceptance.json
1{
2 "format": 1,
3 "recordedAt": "2026-10-24T23:44:09.688873+00:00",
4 "source": "cdadb443a620889081dcbc0f4d8f0addbadd2d53",
5 "headless": {
6 "command": "node --import tsx --test tests/*.test.ts",
7 "tests": 235,
8 "pass": 235,
9 "fail": 0,
10 "skipped": 0,
11 "log": "surface-materials-headless.tap",
12 "provenance": "Pre-commit full suite includes final source, static-notice routing, authored study, portable CLI and all regression tests. Later edits update documentation only."
13 },
14 "browser": {
15 "command": "npm run test:browser",
16 "stats": {
17 "startTime": "2026-10-24T23:39:05.478Z",
18 "duration": 269812.59,
19 "expected": 26,
20 "skipped": 0,
21 "unexpected": 0,
22 "flaky": 0
23 },
24 "report": "surface-materials-browser.json",
25 "capabilities": "surface-materials-capabilities.json",
26 "environment": "Chromium 141 headless shell; software WebGPU; CI=1; 960x640; one worker; isolated temporary client and room storage",
27 "provenance": "Pre-commit temporary production build of the final renderer, compiler, study and browser tests. Build metadata retains prior HEAD and dirty=true. Subsequent edits are documentation/evidence only."
28 },
29 "surfaceMaterials": {
30 "fixture": "surface-materials.1",
31 "hash": "2aa8dda6d02ed45054359dd4dcdd77874fe99613c4fca23b1be8655f207bc048",
32 "browserCompilerMatch": true,
33 "shadingReferences": 8,
34 "maxReferenceError": 1,
35 "zeroScale": true,
36 "normalAlphaIgnored": true,
37 "occlusionRedOnly": true,
38 "occlusionStrength": true,
39 "ambientOnly": true,
40 "rejectedPreservedFrame": true,
41 "replacementFrames": 4,
42 "recoveredFrame": true,
43 "bytes": 276,
44 "buffers": 4,
45 "textures": 3,
46 "disposed": {
47 "buffers": 0,
48 "textures": 0,
49 "instances": 0
50 }
51 },
52 "materialStudy": {
53 "fixture": "hearth-material-study.1",
54 "hash": "348f797c984a29d450c79e782e0011539b53ab50c34be1de2698fa70f6c26128",
55 "triangles": 5305,
56 "meshes": 7,
57 "bytes": 1138764,
58 "buffers": 24,
59 "textures": 16,
60 "disposed": true
61 },
62 "validation": {
63 "typeAndImports": "passed (56 package source files)",
64 "defaultContent": {
65 "darkwind": "e900a87c1854ad85a8bdc79953bd3e4d4b64f7b15a1451da8209609c2b504888",
66 "engineZoo": "9facac25f35d9a16926052dbcc41fa12d5164ae891528e3a5ff62010c9f5a9cb"
67 },
68 "serverBuild": "passed",
69 "diffWhitespace": "passed",
70 "visualInspection": "Inspected the Observatory screenshot and native 960x600 furnished-study PNG.",
71 "docker": "Smoke expanded to import generated-tangent normal/occlusion source and verify both served license notices. Execution awaits CI; local daemon unavailable.",
72 "ci": "Pending this source commit; no green result claimed."
73 },
74 "previousCi": {
75 "source": "99acd3430b955e1e586a46df82d2689fe2a5eace",
76 "url": "https://github.com/jasona/darkwind-web/actions/runs/40142788222",
77 "core": "success",
78 "browserProbe": "success",
79 "browserPlayer": "success",
80 "browserMultiplayer": "success",
81 "container": "failure",
82 "finding": "Image built and relay started; browser codec-notice fetch returned the 404 JSON body {}. Static route allowlist omitted the shipped notice file. This increment adds exact routes for both license notices, text/plain MIME, real HTTP GET/HEAD and allowlist regression tests. Remote Docker acceptance must be rerun."
83 },
84 "limits": [
85 "Opaque surfaces on TEXCOORD_0; alpha mask/blend, compressed GPU formats and animation remain open.",
86 "Study is static authored development content, not a new playable or multiplayer place.",
87 "64 MiB is the hard WASM memory maximum, not total process RSS.",
88 "GPU counts describe logical owned resources, not physical VRAM.",
89 "Software WebGPU evidence does not establish physical-device or cross-browser performance.",
90 "Default Darkwind world hashes unchanged; no merge or deployment to main.",
91 "Full plan milestones 0\u201318 remain open."
92 ]
93}
94