world-text-acceptance.json
docs/evidence/world-text-acceptance.json
1{
2 "recordedAt": "2026-10-25T18:46:28.878706+00:00",
3 "baseCommit": "88e42f6738a405a91ecc49fa0716f9f2881cf62e",
4 "scope": "Bounded world-space lettering, literal readable signs, editor authoring and shared revision recovery. Full roadmap milestones 0\u201318 remain open.",
5 "fullPlanEstimatePercent": 75,
6 "sourceSha256": {
7 "apps/editor/main.ts": "dd815c4fdd6d00e9d482cf6b393d5c15ea1bf17e8f9af804c6e195f0bf141c31",
8 "apps/editor/scene.ts": "6d6f44f86a6c7a0f4e1cf576e62efb1e9bd9a0db2d650ce4823254296ad99660",
9 "apps/editor/style.css": "7a6bca8d9d9e815a79c5bb8b973225d82bb03789eb0ccf3fec19f5070652d1ab",
10 "apps/editor/world-text.ts": "79a62e6e57cf20615f39b2fb12cf2438ccd2dbad5f6583a60162baa2ba7a3214",
11 "apps/player/development.ts": "606e6aefeac409251c3921804836e3923bde64dd5b9aebea7bd264020579dfcf",
12 "apps/player/main.ts": "9eed76e6faf6bf466790a08a5320e2bdf06f2ce1dd34c8f03375f6324457cf07",
13 "apps/player/style.css": "4dae0d431fdb81d4bdea0d6bde1dc93be6a0ff583ff20a362e0b1deae5a41899",
14 "apps/probe/protocol.ts": "591bc4e69b17882d84c1eb5b78e60e10a01496eecebd17d309780b2a6cb1e6bf",
15 "apps/probe/render.worker.ts": "09eda3fea805eb8afc633e57d7223b0e0211b0c0d2e92471371132a02c078509",
16 "apps/probe/run.ts": "7ef298b2d6a34748cb460c6c1cb332c9267a4a6762c52231159f6db564563751",
17 "apps/probe/world-text.ts": "617ad321ab2260449cd5dcf621ca7eb9ed0fd08d991d745a9897c19c7356aa6a",
18 "apps/shared/presentation.ts": "c19ac3508e3e5689a47a56082f55750e6838da988c27d8042554c82fbe57a788",
19 "package.json": "ef65144f9080ac67a918713c3e366959d046e0f30303881870d5cdbf34b0a324",
20 "packages/authoring/index.ts": "17d4dc0333e612f95b48662c03d49f3b26e9ad3d5b9a628285bd55e7fc81e161",
21 "packages/authoring/merge.ts": "44754a9c0e6cfd60eed05f5536efac0f1fb5fa0cf5b927f0aa0afb998159bf41",
22 "packages/authoring/observations.ts": "dacc1989b8c76a9b47c9300acee9a73475a6dfe672b2393d3604053670543777",
23 "packages/authoring/undo.ts": "150f1ac0e107ef307ad875297f07873e58f4a9f4cf53c3e77a82b85d5547dfeb",
24 "packages/compiler/index.ts": "ce83adeb7038c5f64bd8511812b02af8b889dfde23830ce1ac9d3866aee1a2c3",
25 "packages/render-webgpu/index.ts": "fcb06ee7fa7cff56887195c859d6db5221c3d7ad42912712760c96e596b8c1d2",
26 "packages/render-webgpu/world-text-atlas.ts": "ee804e31a55443d9ae5b0c76afe463e444cad003fce6aeff024ac91172d6646c",
27 "packages/render-webgpu/world-text.ts": "25aa3c57c3a9ac81a7a7fb24a19b7548e671060c9f74a3e3d859dbae8bcf3120",
28 "packages/render/index.ts": "943862ba518c038639cdeeb1f2d45c07fc4cc41a3e1c8052d16a9239e6cda0bb",
29 "packages/render/presentation.ts": "6c56e60e657d2464a5438bd2baaa9a33aab9c71c4e7b17991b2eea3a2b0eaed0",
30 "packages/render/world-text.ts": "1ee4c2680ad7b323333d2f45d19dbccf6ec66faf4c78193315f4979f26694c1c",
31 "packages/schema/index.ts": "0d89a8e50f29ef309493bae566f5a23581c3723ee4b4fec49f0975a33cc1a376",
32 "packages/schema/world-text.ts": "2bc424c47c74d3f1e143f10619bdec63152645c7fe59521dbe953b632a4a044d",
33 "packages/simulation/checkpoint.ts": "afe62ec9336fe2fd002e358fbc69de7aa4fbc8a2655f229983e0d20ecf930e15",
34 "tests/authoring-proposals.test.ts": "1fa3445cefbba1ce16e86d67469ef0313749dbd514ea4661253c5f566f2c0df4",
35 "tests/browser/development-recovery.spec.ts": "5d69f4a2b385f63a420948f0b80ac208beff51cfe5a91b1f9b2fb60d5bb36f7b",
36 "tests/browser/editor-world-text.spec.ts": "4c4cca480f2a28526d90434e180e72c958d447b985f3bdeae0ee5420245e856e",
37 "tests/browser/probe.spec.ts": "817f2e15646248f137a19b09cb0a2b8b8470e0b67287e4f878c53319b836622f",
38 "tests/world-text.test.ts": "2c442e0691b88da374ba72bb1bfe5009c2ea83b4249f8ae136a658bcacfdd86b"
39 },
40 "environment": {
41 "node": "22.23.4",
42 "playwright": "1.56.1",
43 "browser": "Chromium 141 headless shell",
44 "graphics": "SwiftShader WebGPU/Vulkan on Linux"
45 },
46 "commands": [
47 "npm run check",
48 "npm test",
49 "playwright test tests/browser/probe.spec.ts --grep \"owned renderer works\"",
50 "DW_PLAYTEST=garden-ferry VITE_DW_PLAYTEST=garden-ferry DW_EDITOR_TOKEN=<fixture-key> playwright test tests/browser/editor-world-text.spec.ts tests/browser/development-recovery.spec.ts"
51 ],
52 "checks": {
53 "headless": {
54 "total": 734,
55 "pass": 678,
56 "skip": 56,
57 "fail": 0,
58 "log": "world-text-headless.tap"
59 },
60 "typeAndImports": {
61 "pass": true,
62 "packageFiles": 138,
63 "log": "world-text-check.log"
64 },
65 "browser": {
66 "uniquePassingCases": 5,
67 "native": 1,
68 "editorAndShared": 2,
69 "existingRecovery": 2,
70 "reports": "world-text-browser-reports.json"
71 },
72 "measurements": "world-text-measured.json"
73 },
74 "verified": [
75 "World format 15 / lettering-world.15 and presentation envelope 9 explicitly carry lettering; older formats reject it. Particle edits preserve world format 15.",
76 "Strict owned source enforces 32 signs, 128 Unicode code points, two lines and bounded placement; creator strings remain literal in canvas and semantic HTML.",
77 "Lettering revisions preserve canonical entities and simulation state; serialized source and native checkpoints restore; durable undo restores the exact original world format across store restart and fences conflicts.",
78 "Native fixed and camera-facing signs respect opaque depth, back faces and distance. Source-order blending differs by at most one channel unit at the original tolerance.",
79 "The maximum 32-sign atlas is 8388608 bytes. Ten native add/remove cycles keep ownership stable; actual device destruction recreates the same image and final disposal releases all tracked buffers and textures.",
80 "Invalid source, raster failure and staged cancellation preserve the accepted image. Cancellation while queue completion is held immediately frees the staged atlas; delayed cleanup cannot clear a newer revision barrier.",
81 "Editor preview/discard, save/reload, undo/redo, validation, sign removal and narrow layout pass. Screenshots inspected.",
82 "Two travelers receive live signs while retaining identity; a native GPU loss restores the 262144-byte single-sign atlas with unchanged buffer/texture counts. Literal HTML-looking strings do not create DOM elements or run script.",
83 "Existing older-checkpoint and stalled-revision recovery journeys pass with their original assertions and deadlines."
84 ],
85 "developmentFindings": [
86 "Painting text at different atlas-cell offsets produced source-order image error 14. An isolated 2D experiment found 49 changed channels with maximum error 204. Painting every cell at the same scratch origin and copying pixels reduced the native comparison to error 1; tolerance was not relaxed.",
87 "The new held-upload cancellation probe reproduced retained candidate resources. A prepared-atlas abort handler and operation identity now release candidates immediately and fence delayed cleanup from newer work.",
88 "The initial older-checkpoint recovery journey completed its functional assertions by approximately 56.1 seconds, then exceeded its 60-second test deadline during the final screenshot. Its trace was inspected before rerun. The three-page software-rendered fixture now uses explicit 960x640 viewports; assertions and deadline are unchanged. Both recovery cases passed afterward.",
89 "The final combined run passed both recovery cases and editor authoring, then traveler startup timed out with Chromium reporting an invalid external Instance reference; the editor preview also lost graphics. A fresh isolated browser run passed both lettering journeys. This records a local software-GPU qualification limitation, not proof of a diagnosed driver root cause.",
90 "The first shared screenshot obscured the new sign with the normal revision toast. Final capture waits for the existing toast to hide; the actual world and UI remain unchanged."
91 ],
92 "validationScopeNote": "The native renderer probe passed before the final editor textarea spacing and browser-only viewport/screenshot changes. Renderer, source contracts and revision cancellation code were unchanged afterward. Final type/headless checks and the final isolated lettering journeys plus the passing recovery cases in the preceding combined run cover the final executable sources.",
93 "remaining": [
94 "No numbered roadmap milestone is closed.",
95 "SDF/custom fonts, bone-attached labels, general transparent materials, material/effect graphs, textured sprite animation and visible portals remain open.",
96 "Physical desktop/phone performance, long-session/thermal qualification, Docker/Coolify execution and remote CI are not established by these checks.",
97 "Character models and shared-arrival/camera art polish remain deferred."
98 ],
99 "visuals": [
100 "world-text-controls.png",
101 "world-text-controls-narrow.png",
102 "world-text-editor-preview.png",
103 "world-text-shared.png",
104 "world-text-reading.png"
105 ]
106}
107