REPOSITORY SOURCE

foliage-acceptance.json

docs/evidence/foliage-acceptance.json

1{
2  "date": "2026-10-25",
3  "baseCommit": "17b5c30c3041d5010bc589dae9121f77a14294b6",
4  "scope": "Seeded meadow grass, terrain/material masks, bounded instancing and wind, source-retaining editor workflows, durable undo, streamed shared Apply and publication. Full milestones 0\u201318 remain open.",
5  "environment": {
6    "node": "22.23.4",
7    "browser": "Playwright 1.56.1 / Chromium 141 / SwiftShader Vulkan WebGPU",
8    "isolation": "Fresh acceptance servers; interactive editor and beta preserved."
9  },
10  "checks": {
11    "focused": {
12      "passed": 25,
13      "failed": 0,
14      "note": "Before final seed-boundary regression; final full suite includes it.",
15      "report": "foliage-focused.tap"
16    },
17    "headless": {
18      "tests": 931,
19      "passed": 871,
20      "skipped": 60,
21      "failed": 0,
22      "concurrency": 4,
23      "report": "foliage-headless.tap"
24    },
25    "build": {
26      "passed": true,
27      "packageFiles": 173,
28      "engine": "c408f69393915ed0fc2a937d01b90264182616f72acac9e7b3f4ff4822d33fb0",
29      "files": 28,
30      "bytes": 51312971,
31      "report": "foliage-build.log"
32    },
33    "portable": {
34      "passed": true,
35      "outsideCheckout": true,
36      "report": "foliage-portable.json"
37    },
38    "browser": {
39      "initial": {
40        "passed": 6,
41        "failed": 2
42      },
43      "preBoundaryFix": {
44        "passed": 8,
45        "failed": 0
46      },
47      "final": {
48        "passed": 8,
49        "failed": 0
50      }
51    }
52  },
53  "observations": [
54    "Placement owns inputs, verifies source data, retains four immutable cached recipes and fences cache clear against pending work. Chunk ordering and regional selection do not alter shared candidates. Grass weights, triangle height, slope and arrival masks constrain placement.",
55    "The separate cosmetic pool admits at most 8192 tufts and draws 4096/2048/1024 for High/Balanced/Performance, at 100/80/60 percent of authored distance. Fixed GPU storage is 262144 bytes with one draw and no textures. Equal-distance capacity boundaries retain nonzero geometry.",
56    "Native main/Worker agree on pinned foliage hash b203892ea89699f3d68979c82e8337782142583d70e5c6411efeab4f5a9cadf5. Fixture draws 1160 of 1749 tufts, 10440 triangles, changes 61207 pixels for grass and 47415 for wind. Undo/device reconstruction are exact; resource maximum is 24 buffers/5 textures versus 23/5 bare. Owned resources reach zero after disposal.",
57    "World 19, foliage-world.19 compiler and presentation 12 retain older reader support. Foliage adds no physics/gameplay entities; simulation state and footing remain unchanged. Source history survives restart, exact saved undo/redo and disjoint atmosphere edits.",
58    "Initial shared Apply failed with manifest HTTP 503 because content admission still capped world format at 18. It now uses the schema FORMAT_VERSION. A streamed content archive regression and two-player Apply/publication cover the repair.",
59    "Review reproduced seed 486 rejection: rounded yaw 6.2832 exceeded 2*pi. Clamping to 6.2831 fixes the valid recipe. A regression exercises all 512 flat-cell candidates; final full and browser campaigns run after this fix.",
60    "Responsive controls, editor projection, shared view and native main/Worker grass were visually inspected. This is a foundation for environmental art, not the final artistic treatment."
61  ],
62  "limits": [
63    "Initial main-thread landscape browser scenario lost its execution context. Cause is unconfirmed; later unchanged graphics scenarios pass. Initial failures remain recorded. Deadlines and assertions were not relaxed.",
64    "Earlier published-world restoration reload contention and earlier shared terrain timing failures remain open; this campaign is not broad performance acceptance.",
65    "Grass does not cast or receive scene shadows and uses procedural opaque blades, not custom models. Trees, shrubs, species libraries, independent vegetation painting, rivers, water/weather/time of day, terrain streaming/LOD and voxels remain open.",
66    "Physical-device and long-session acceptance, final character/environment/arrival art and all unclosed milestone gates remain required. No numbered milestone is closed.",
67    "No Docker/Coolify deployment or production qualification performed."
68  ],
69  "sourceFiles": {
70    "apps/editor/main.ts": "e70e38edb5e09fa75fdee31c8462a33664af9429ad53585a0f662a6137545310",
71    "apps/editor/scene.ts": "91fb0c2f062bf80d7e460c7f6ad36b62e2df03cc46835aeb57ed8880f283ad43",
72    "apps/editor/style.css": "ec1f4a8c3d76114103aba5d0f3068b4332fed59bd17560fd64c7e7416ef1d4a5",
73    "apps/editor/templates.ts": "a07abf70c92da496a69e16e47b40d5e4d88de9784649e39054673a9fd3180240",
74    "apps/editor/terrain.ts": "3ac29507db5dc5a126f1742a257b021e7ce5c708e0f5db902f4da50d16e7c5ed",
75    "apps/player/main.ts": "b6c811a669b441e056e41fde35d83d476b7131ae239ec33f8ea48ef69f6e77fd",
76    "apps/player/presentation-view.ts": "4eeeb05404d4550fb25db6fa917ce4a6133ff341908c344154eb6f886a87ed81",
77    "package.json": "462b63636b8aedfdf0cc49731cf24acf9302039333bd5c172edbdb2fb3c15113",
78    "packages/authoring/index.ts": "e589b4ef4c388ae694383ba2fea4e15f1f15e72ab6af1dd3cbea7d0a12ac4f5e",
79    "packages/authoring/merge.ts": "af30918dc3c98025b98e109d6e2e5cc0ee36f6d88cd17ff69d77d70a8570ba47",
80    "packages/authoring/observations.ts": "c1b7fba6e992407701bd896df78a72cc1da4499cace429eaa682a1c3614ba81a",
81    "packages/authoring/prefabs.ts": "ceef2e6190258f3eb4024134f364ff08494026d6bad40c1b377c6f44fd53ae01",
82    "packages/authoring/terrain.ts": "75898773b2bb904e522978f6ac67f4312fbb781452384fdfae4ae21ef053d7db",
83    "packages/authoring/undo.ts": "492b9d4be0f0848b96c732ddccaa4f4e840825be207a5d72635ae7fcfba6797e",
84    "packages/compiler/index.ts": "0e3cbd6ade6865e44890b9c5f31c16c1a62a194743ef36c837406b4199457d9a",
85    "packages/render-webgpu/foliage.ts": "bc89be5f5f45fa4c66730abd41b4546568989bb7808573c974b3a8e9d6f1239e",
86    "packages/render-webgpu/index.ts": "62092e49b558b75cb3f13c3bf18a0adaa9cfaea1cfb1fd6e19b3052bf963c0e0",
87    "packages/render/foliage.ts": "d8cd5f75eed83cac04894abcf8d344523ad9dde4c295fe678c90c8a5883678d7",
88    "packages/render/index.ts": "dc40c886af0e0335931d66b1bfa2d3853b7aa9b0ff893ab77807b7305ea2b622",
89    "packages/render/presentation.ts": "eda01efa2f5e30fe2fd40e773d66716dac36ca95da7fd2bb43dc64c16d962842",
90    "packages/schema/foliage.ts": "7531ac4fc908c571898e3d2de26c9f24dc0b812957015ff4ba2ff149bd011d39",
91    "packages/schema/index.ts": "b5bc39b6607e3500972cbe37ea64d425e4b452d6988129983f82de2813992b10",
92    "packages/simulation/checkpoint.ts": "1c6685f28f2eb850214c6a1944c188175681cae73e111d8551295ae71966c7fc",
93    "packages/terrain/foliage.ts": "6f5381949ace27ff6ddca2e335ac9632297b1e6646931980d78945849903ba7d",
94    "packages/world/content.ts": "e0fa11e03fb2f337f3c505f6d34dc672975824e83c394bc86d74d7978998c403",
95    "tests/browser/editor-foliage.spec.ts": "eb66cd436a813beaf6900971fae1dbefc922d62e92294a4ec095199115a99612",
96    "tests/browser/terrain.spec.ts": "ff232ab9134ad02e5e2f3a10adc0059555f6d6e405a7251cabe36e4ecedf4f76",
97    "tests/fixtures/foliage-native.ts": "9ebe1c6f3bae1ebd67156cb1b3cf1e65e379098a6e12e891bf02d679bbe41195",
98    "tests/fixtures/terrain-browser-entry.ts": "d2a50577d74eb01eabba9ed24ef6768280014a59cd35c9734068efe3dc3bfcfd",
99    "tests/fixtures/terrain-browser.worker.ts": "afeee14137f18a1419410a14d9a5b6f2b9848648d2ddb7d7d894e53409c562ba",
100    "tests/foliage.test.ts": "98a8d761ea31274ac14838b1606ac9b49fd630cd3c36ed34b88a56395c93dbe9"
101  }
102}
103