REPOSITORY SOURCE

terrain-acceptance.json

docs/evidence/terrain-acceptance.json

1{
2  "date": "2026-10-25",
3  "baseCommit": "201c8c42f6c3729ffabbc6a8957e1a42e58fa057",
4  "scope": "Heightfield source format 1, hash/revision-pinned sculpt and sample-version undo, incremental halo-aware chunk compiler, static world export, file/standalone CLI, real collision and shared generated-world revisions. Editor brushes and a server-managed terrain source journal are not implemented.",
5  "environment": {
6    "node": "22.23.4",
7    "browser": "Playwright 1.56.1 / Chromium 141 / SwiftShader Vulkan WebGPU",
8    "headlessTmpdir": "workspace .data/ld-terrain",
9    "detachedPortableTmpdir": "/tmp",
10    "isolation": "Fresh isolated browser relay; interactive editor and beta preserved"
11  },
12  "checks": {
13    "headless": {
14      "tests": 904,
15      "passed": 844,
16      "skipped": 60,
17      "failed": 0,
18      "concurrency": 4,
19      "report": "terrain-headless.tap"
20    },
21    "focused": {
22      "passed": 15,
23      "report": "terrain-portable-focused.tap",
24      "coverage": "Eight terrain tests plus seven precomputed-model tests, including standalone executions outside the checkout."
25    },
26    "build": {
27      "passed": true,
28      "packageFiles": 165,
29      "engine": {
30        "engine": "9e778fdb3a6d0b3a996db6e550b0edc6d56ebe79f7fc2dd04e56ec0db531afee",
31        "files": 28,
32        "bytes": 50431163,
33        "output": "/home/jason/coding/dw-web/engine-dist"
34      },
35      "report": "terrain-build.log"
36    },
37    "browser": {
38      "passed": 3,
39      "report": "terrain-browser.json",
40      "startTime": "2026-10-26T01:12:29.583Z",
41      "duration": 31249.545,
42      "expected": 3,
43      "skipped": 0,
44      "unexpected": 0,
45      "flaky": 0
46    }
47  },
48  "observations": {
49    "terrain-shared": {
50      "ids": [
51        "e5b48115-df1a-4aae-8c56-eddfa59c9bda",
52        "07f33299-2f20-44f8-9f53-04d37fcfe02d"
53      ],
54      "across": [
55        18.24550437927246,
56        2.237994432449341,
57        8.130276679992676
58      ],
59      "revision": "3",
60      "publication": "cfa7177acb4bc05012d34e342d854e9a50ac52ef68a70e0395e91c029443e948",
61      "errors": []
62    },
63    "terrain-main": {
64      "changedPixels": 19212,
65      "undoExact": true,
66      "recoveryExact": true,
67      "maximumBuffers": 23,
68      "maximumTextures": 3,
69      "initial": {
70        "buffers": 23,
71        "textures": 3
72      },
73      "disposed": {
74        "buffers": 0,
75        "textures": 0,
76        "chunks": 0
77      },
78      "errors": []
79    },
80    "terrain-worker": {
81      "changedPixels": 19212,
82      "undoExact": true,
83      "recoveryExact": true,
84      "maximumBuffers": 23,
85      "maximumTextures": 3,
86      "initial": {
87        "buffers": 23,
88        "textures": 3
89      },
90      "disposed": {
91        "buffers": 0,
92        "textures": 0,
93        "chunks": 0
94      },
95      "errors": []
96    },
97    "derivedBoundaryStudy": {
98      "chunks": 4,
99      "levels": 8,
100      "boundaryEdgesPreserved": true,
101      "method": "Compare the set of undirected edges occurring in exactly one base triangle with the corresponding set for each decoded generated LOD index stream.",
102      "scope": "One four-chunk meadow fixture; not complete terrain LOD transition qualification."
103    }
104  },
105  "visualReview": [
106    "terrain-main.png"
107  ],
108  "corrections": [
109    {
110      "issue": "Caller mutation could change a terrain brush while source admission awaited its checksum.",
111      "resolution": "Clone the complete request before any await; the same mutation regression fails before the fix and passes afterward.",
112      "retainedReport": "terrain-ownership-initial-failure.tap"
113    },
114    {
115      "issue": "The standalone author/model bundle left meshoptimizer/simplifier external; a temporary output under the checkout could resolve that accidental dependency and mask it.",
116      "resolution": "Bundle the meshoptimizer package root. Detached /tmp executions pass and a new output audit rejects bare meshoptimizer imports regardless of the test temporary-directory location.",
117      "retainedReport": "terrain-headless-initial-failure.tap"
118    }
119  ],
120  "environmentObservation": {
121    "issue": "The first full /tmp run also had four engine-pinning hook failures from cpSync EIO while copying a client assets directory. No code cause was established.",
122    "handling": "The final full suite used the established workspace temporary directory and passed. The focused standalone compiler checks still ran in detached /tmp directories and passed. This does not establish that the /tmp engine-copy failure itself is fixed.",
123    "retainedReport": "terrain-headless-initial-failure.tap"
124  },
125  "limits": [
126    "This is the heightfield foundation. Editor brushes, server-managed sculpt journal, per-chunk streaming, painting, terrain LOD transitions, procedural recipes, vegetation, water and voxels remain open.",
127    "Generated worlds contain static meshes, not the source edit history. Keep the source file; live activation currently uses ordinary whole-world authoring transactions.",
128    "Incremental reuse requires a persistent HeightfieldCompiler instance; separate CLI invocations rebuild their requested output.",
129    "No hardware, Docker/Coolify, PostgreSQL terrain-journal or long-soak qualification is claimed.",
130    "The rendered meadow is a diagnostic surface, not the final environment art pass."
131  ],
132  "progress": {
133    "approximateFullPlanPercent": 79,
134    "numberedMilestonesClosed": [],
135    "goalComplete": false
136  },
137  "sourceSha256": {
138    "package.json": "09860212b623b0a84059a69dde1eaff34a1bfa4956e4346ae0587b7abc125159",
139    "packages/terrain/compiler.ts": "1dcfc19a9686e6d2b83a7d5db97b204fc4581670a0d63283d19216ebcfc0d75b",
140    "packages/terrain/index.ts": "f51b8eff180f8d73d4766ec99ff892c8e7112729ccb74bbc90f2dda5415fd740",
141    "packages/terrain/world.ts": "e83d68e7d9b42725c37a2e3f831b24884ef74ac209d42d06ca63a0846c787ffa",
142    "tests/browser/editor-terrain.spec.ts": "73387cd8a87e230c8af949d9e2dab1258d112daf2eba16cc1fc89dc3710d6a4c",
143    "tests/browser/terrain.spec.ts": "fc269e95c91645d130dfad642870d487a9dae68ac33205b3fb21cc184bab0881",
144    "tests/fixtures/terrain-browser-entry.ts": "5ac7bb648b1b0f337f349114af3bce342072cb58683e07385e3f411292c8c3ce",
145    "tests/fixtures/terrain-browser.worker.ts": "f9caad0d42ffd60dc2fc67bd6c9dfd67853c07484360c8fae48e505163dfc298",
146    "tests/fixtures/terrain-native.ts": "57ba7c26f3233ccf0d89d9e2cae09c8011a7ecdd5f2eae4dacbc5c248364fcbe",
147    "tests/fixtures/terrain-world.ts": "895499e5fe0cc6073758f60c462d073eb117c3540c55fab89fa0327fa001a1d6",
148    "tests/terrain.test.ts": "67514139117c80751fecb42d73d34e97abd31bd3704cbd09b44585d98cafde06",
149    "tools/cli/build-author.mjs": "3dd638d302ae3f1dbcc5dc0656d8a61ff003fcfce7d19412cd4e5485310ca0ab",
150    "tools/cli/check-boundaries.ts": "e5d96bfbe5842b3a39ed2e9a2473b2645bed797d592d8108954cf125af480629",
151    "tools/cli/terrain.ts": "ee55e213c12d82ecf3e5e8261e24b188fbb1b9c120b89d1bd5fe61d5ae1c0e4a"
152  }
153}
154