particles-acceptance.json
docs/evidence/particles-acceptance.json
1{
2 "recordedAt": "2026-10-25T18:22:57.922019+00:00",
3 "baseCommit": "fe2b843c3c67d0df678f53b3feee980b0ab2dd93",
4 "scope": "Pooled CPU cosmetic particles, additive depth-tested billboards, versioned place authoring and live presentation; full milestones 0\u201318 remain open.",
5 "fullPlanEstimatePercent": 74,
6 "sourceSha256": {
7 "apps/editor/atmosphere.ts": "111a8ae847c237672644063627ccd7ef2b5952d779b9a2f5b2fe1dd13fca1bfe",
8 "apps/editor/main.ts": "551d92cba6ec197de8daf9e3f725c7e16b6381fbe6a7c0ec4959730bd6ee5481",
9 "apps/editor/particles.ts": "4169b01a81d28be8e90635ce812563bd6dfad8893cf2a5e1149fb31426bc416a",
10 "apps/editor/scene.ts": "847527e4344312ea4e43d16b80cdfb3668aff4cd4bd527cb7123b3b03a957f32",
11 "apps/editor/style.css": "c8329632b27c49c73e1c0d1bb3f287ee6b61e495c462de903eb26c43d1d87a4e",
12 "apps/player/development.ts": "df3c8f3c539630b4c8b615a9de78660f63c2595f4bf52cce4e3b15e119aeed8e",
13 "apps/player/main.ts": "9558ab14fb8c22cbfc839849afa9904b23a0b73f5cc8a3b2f130373ba32f0540",
14 "apps/probe/model-world.ts": "251706946d3c1cf442084d546098a8da3a4e221611076a4ffc2ed61c3b2f78e9",
15 "apps/probe/models.ts": "edab3320792880bc8a9c8f80d80565227dae6264a39b272630bdd089c17b87f2",
16 "apps/probe/particles.ts": "f2cba973a69a5dd0e3fb451d4488ac81fc49c47f134545eff6cbac6e275a6698",
17 "apps/probe/protocol.ts": "9ee2e47f2d45f32a3e299f4a5c16a843facc38eb3d75769f0d60f7a821b741a2",
18 "apps/probe/render.worker.ts": "ba2133051f66e6aba7a0be1443cd230c730042b562293bfe928d91b7a7b4529c",
19 "apps/probe/run.ts": "d7ab14b0235c573ac0a9eb439016cf38cf1c61457c526bb1168093832ef040a6",
20 "apps/shared/presentation.ts": "9873037dbd731f84f86e2ca81126d8c023d811d14c2cc261e94a5cb6c901dbe0",
21 "package.json": "8fff41dfe3955749ff0207b822612964a76d2eef1101b12e4a14cd15a6590a92",
22 "packages/authoring/index.ts": "338be7accca429cdbea3ede354a3d206d020ed5ee39f5524d56415c03a95fa35",
23 "packages/authoring/merge.ts": "e1176dc10e4b4b32eef2dc035c9581a882705a155db338760b8f245375720704",
24 "packages/authoring/observations.ts": "7a9cfc4e5161c8562c622609782bf6bcdf9b13696444e928ca1af63602acb42f",
25 "packages/authoring/undo.ts": "dbc1afbe127da099afeee5cdb6348beafe77a358a5975832a8b73a1ba235e87a",
26 "packages/compiler/index.ts": "8be881a1ea374c7829fca7dfa70fb644c243c29bab1192c8f5e361644f057ac4",
27 "packages/render-webgpu/index.ts": "3a6275b673894e00615d669394bdf628b4c2792dc0ffcac19e93ab3e390bd31a",
28 "packages/render-webgpu/particles.ts": "f66ecebd0ac2feac1b3e716479519bd0a93f197226312e1c43e073dbd98bf3f0",
29 "packages/render/index.ts": "64b1cb1be651aea93bc343eb6ba3924e42a104dc8434e027f82132da74ea13f2",
30 "packages/render/particles.ts": "9f909ef7a86fce9863506455ff75a09bd9cac29c501caff52e1cf1159486eeb2",
31 "packages/render/presentation.ts": "534b7196845621c55dcd60501cf6c14015e97839449a22deb08a912204d4eacb",
32 "packages/schema/index.ts": "6870eedab93c3bc970f93ec718146f5d9fc870c46ed281836387a3bec276c21b",
33 "packages/schema/particles.ts": "334aef65b38bc89a82f5a342c3c404cce87ffec9df5afd4180904a82574dd5b0",
34 "packages/simulation/checkpoint.ts": "0f527e22446c849430a5f0c9d86c2ce43f13f98ed3115ce2e1ea265129b70d4d",
35 "tests/authoring-proposals.test.ts": "55471d3380c65ea6217c2ff474a245db16ddc210cba5731ab53cfb346b5a1631",
36 "tests/browser/editor-particles.spec.ts": "ba0df27f842b9a6e00e5695412da175798c2f111dbe7160672f7f897186a66b9",
37 "tests/browser/probe.spec.ts": "bad0e2cacc6ad157c25a1d9aee6fa230e6e51cd04f8af66825d95d4939527c24",
38 "tests/particles.test.ts": "5a6c00748a3206716ed9a5f0d61d6e3dc72404e67fe3fe9b1c2801b36e19a569"
39 },
40 "environment": {
41 "node": "22.23.4",
42 "browser": "Chromium 141 headless shell",
43 "playwright": "1.56.1",
44 "graphics": "SwiftShader WebGPU/Vulkan on Linux"
45 },
46 "checks": {
47 "headless": {
48 "total": 730,
49 "pass": 674,
50 "skip": 56,
51 "fail": 0,
52 "log": "particles-headless.tap"
53 },
54 "typeAndImports": {
55 "pass": true,
56 "packageFiles": 134,
57 "log": "particles-check.log"
58 },
59 "browser": {
60 "uniquePassingCases": 6,
61 "native": 1,
62 "existingAtmosphere": 3,
63 "particleJourneys": 2,
64 "reports": "particles-browser-reports.json"
65 },
66 "measurements": "particles-measured.json"
67 },
68 "verified": [
69 "World format 14 / particle-world.14 and presentation envelope 8 explicitly version emitter support; older formats reject the new field.",
70 "Invalid values, duplicates, per-emitter overflow, emitter overflow and total overflow reject before publication.",
71 "Fixed 2048-slot CPU pool reuses storage across large time gaps, stable quality prefixes and replacements; no physics or networked particle state.",
72 "Particle revision leaves canonical entities and simulation state unchanged; the resulting checkpoint restores exactly.",
73 "Saved undo/redo restores exact source and prior world format across authoring-store restart; conflicting subsequent effect edits are fenced.",
74 "Native pixels match with particles behind an opaque wall and differ in front; time changes the image; rejected content retains the accepted image.",
75 "Native High/Balanced/Performance counts are 100/70/40; maximum pool renders 2048 slots; 12 add/remove replacements retain 7 buffers and 3 textures.",
76 "Actual native device destruction restores an identical particle image and disposal releases all tracked resources.",
77 "Editor preview/discard, save/reload, undo/redo, effect removal and narrow layout pass; screenshots inspected.",
78 "Two travelers retain identities across live particle publication; the tested world uses 144 particles at High and 49 at Performance, retaining 54 buffers and 4 textures through actual GPU loss.",
79 "Existing atmosphere preview/merge/conflict and two-traveler continuity journeys pass."
80 ],
81 "developmentFindings": [
82 "Initial unit coverage found two persisted-world readers still capped at format 13; updated both and verified checkpoint/source/undo round trips.",
83 "The first editor test incorrectly expected High density in the existing Balanced atelier. The real rendered count was 172 for an authored 256 at low fraction .35. Corrected the test to the declared scaling formula; no quality policy or timeout relaxation.",
84 "The full suite initially exposed the authoring-command census of 25. Added an explicit set-particles coverage assertion and updated it to 26; full rerun passed."
85 ],
86 "validationScopeNote": "Native renderer probe ran before later UI-only diagnostic text/history-label changes and the corrected editor assertion. Particle renderer, pool, schema and presentation sources were unchanged after that passing native run. Final editor journeys and full headless suite cover the remaining changes. Final comments clarify that bounds contain centers and allocation claims concern GPU resources; executable code is unchanged.",
87 "remaining": [
88 "All numbered roadmap milestones remain unclosed.",
89 "Compute emitters, textured sprite animation, world text, general transparency, material/effect graphs, particle frustum culling and screen-overdraw budgets.",
90 "Physical device tiers, mobile/thermal/long-session measurements, Docker/Coolify execution and remote CI were not qualified here.",
91 "Final character model redesign and shared-arrival/camera art polish remain deferred."
92 ],
93 "visuals": [
94 "particle-controls.png",
95 "particle-controls-narrow.png",
96 "particle-moonlit-preview.png",
97 "particles-shared.png"
98 ]
99}
100