REPOSITORY SOURCE

material-graph-acceptance.json

docs/evidence/material-graph-acceptance.json

1{
2  "recordedAt": "2026-10-25T18:57:36.693252+00:00",
3  "baseCommit": "c7ce61a036b3340ab3df94d664cb469711bc27da",
4  "scope": "Typed literal surface DAG schema/compiler, controlled WGSL adapter and native whole-scene study. Per-object saved-world/editor/shared activation is still to be implemented.",
5  "fullPlanEstimatePercent": 75,
6  "compiler": "surface-graph-wgsl.1",
7  "sourceSha256": {
8    "apps/probe/material-graphs.ts": "993c301f7113ec1228a7de99dcb8a9af26a63ceb8aa64ecccd5175e9f2715e26",
9    "apps/probe/protocol.ts": "3075ba26288d5adc20372af0be95f0b2e0824a3ea7709da8ed59d84cde2eb5df",
10    "apps/probe/render.worker.ts": "6f335faf1db79c1da6a790c41f4cf5192359a1f1cabfab09a96ee61eae9785cd",
11    "apps/probe/run.ts": "b5acb0e63adfbafd97ada3428f6f7613b604749d3ad716d4d51fffe1ef7af2f2",
12    "games/engine-zoo/material-graphs.ts": "9dc0c572d7b15dfe1d274fdee2a8bac69c6ed15f95afbc4038d324d1ece6f891",
13    "packages/render-webgpu/material-graph.ts": "4f6c443a91f51647143795fc630cb28555b3ed943cf79d1296815fcb67ef7c06",
14    "packages/render-webgpu/shaders.ts": "d193cfd87cec452838b1f69f9c1521938cf0809d62bc185c6ca244129878a9a7",
15    "packages/render/material-graph-presets.ts": "2fe512c4bd8823d08f2e577e4369879170ed54fc6f8f2b827227b34975d1af51",
16    "packages/render/material-graph.ts": "ef48da045b62b2a5bf1f34e81e8c8c36641018d2baefbeb99ca12725b74be2eb",
17    "packages/schema/material-graph.ts": "f807b9b4f73c106e3cfa0fe66dc4162cecfcfc44839266eecfd6c710a67ddd44",
18    "tests/browser/probe.spec.ts": "13044c7d8d98136597e81531cdc64e65e84423ab4ee582c8318b887b3fac9eae",
19    "tests/material-graph.test.ts": "13398e7d7a5a147e86857edbc829a5f422478719c5ebc50b65d21d0db5c73cb6"
20  },
21  "environment": {
22    "node": "22.23.4",
23    "browser": "Chromium 141 headless shell",
24    "playwright": "1.56.1",
25    "graphics": "SwiftShader WebGPU/Vulkan on Linux"
26  },
27  "commands": [
28    "npm run check",
29    "TMPDIR=<isolated directory on workspace disk> npm test",
30    "PLAYWRIGHT_EXECUTABLE_PATH=/tmp/dw-browser-test/chrome-linux/headless_shell playwright test tests/browser/probe.spec.ts --grep \"owned renderer works\""
31  ],
32  "checks": {
33    "headless": {
34      "total": 738,
35      "pass": 682,
36      "skip": 56,
37      "fail": 0,
38      "log": "material-graph-headless.tap"
39    },
40    "typeAndImports": {
41      "pass": true,
42      "packageFiles": 142,
43      "log": "material-graph-check.log"
44    },
45    "native": {
46      "passingCases": 1,
47      "completeProbeRuns": 2,
48      "report": "material-graph-browser-report.json",
49      "measurements": "material-graph-measured.json"
50    }
51  },
52  "verified": [
53    "Strict format-1 graph source, owned copies, deterministic topological order, scalar/vector inference, source-path errors, missing/cyclic/disconnected links, declaration-order invariance and malformed/hostile node rejection.",
54    "Connected 32-node and 96-weighted-operation graphs compile and render natively; source/depth/constant limits reject before GPU submission.",
55    "Creator identifiers become numeric generated locals. Generated code contains engine-owned operations; native shader diagnostics map back to graph nodes.",
56    "Native compute dispatch and readback verify independently expected arithmetic outputs; a two-hour presentation clock still contributes its expected value.",
57    "Moss, gilt and lantern recipes compile all forward pipeline variants, have distinct shader identities and visibly change the scene; time changes the lantern image.",
58    "Held pipeline compilation leaves the accepted image visible. Invalid graph source and a native shader syntax failure preserve the accepted image and shader identity.",
59    "Six repeated graph/original replacements reproduce reference images with seven buffers and three textures. Actual device destruction followed by source-driven shader reconstruction restores the same image; final owned draw-resource census is zero.",
60    "The full native probe retains existing material, texture, skinning, animation, particle, lettering, physics and checkpoint controls."
61  ],
62  "developmentFindings": [
63    "Review found that an initial \u00b14096 intermediate bound would clip a time input after about an hour. Changed it to \u00b110^12, which keeps the admitted arithmetic finite in float32 while covering ordinary world coordinates and multi-hour clocks; added the native two-hour check.",
64    "The initial full suite and isolated engine-pinning rerun failed three retained-engine cases on writes. A temporary diagnostic wrapper captured errno -122 (EDQUOT) in /tmp, without logging file contents. The unchanged full suite passed using an isolated workspace-disk TMPDIR, which was deleted afterward. No engine storage behavior, assertions or deadlines were relaxed.",
65    "A type-check caught overly narrow literal inference for the shared bound default; explicit numeric parameter annotations fixed it before final acceptance."
66  ],
67  "limitations": [
68    "No numbered milestone is closed; the full milestones 0\u201318 scope and approximate 75% estimate remain unchanged.",
69    "No saved-world graph material field, per-object catalog, shared revision transaction, editor workshop, graph undo or automatic player graph recovery is implemented by this foundation.",
70    "The study applies a single graph across its scene and reconstructs shaders explicitly after loss. Pipeline compilation is tested for all forward variants, but graph interaction with every imported texture/skin configuration is not separately qualified.",
71    "Admission costs are static weights, not GPU timing or hardware guarantees. Resource counts exclude native pipeline-cache memory; GPU pipelines have no explicit destroy API.",
72    "General texture/custom-normal/displacement/transparency nodes, effect graph outputs, physical-device measurements, Docker/Coolify execution, remote CI and final character/arrival art remain open."
73  ],
74  "visual": "material-graph-study.png"
75}
76