REPOSITORY SOURCE

weather-acceptance.json

docs/evidence/weather-acceptance.json

1{
2  "date": "2026-10-25",
3  "baseCommit": "fefb674a370a14ad9254a722ba56e19f47fa9ce7",
4  "scope": "Versioned cosmetic rain and snow, independent bounded rendering, saved editor history, weather-only room clocks and shared 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    "database": "Local isolated PostgreSQL with fsync and synchronous_commit; created and stopped by test-control."
9  },
10  "checks": {
11    "headless": {
12      "tests": 949,
13      "passed": 885,
14      "skipped": 64,
15      "failed": 0
16    },
17    "rooms": {
18      "passed": 6,
19      "failed": 0,
20      "skipped": 0,
21      "profiles": [
22        "cooperative relay",
23        "persistent cooperative",
24        "persistent trusted"
25      ],
26      "coverage": [
27        "weather-only",
28        "day/night"
29      ],
30      "report": "weather-rooms.tap"
31    },
32    "build": {
33      "passed": true,
34      "packageFiles": 181,
35      "engine": "590c111de45dd69732164b3f14932570a7ac6d762c4a1f81dd1c0d64cf9b8355",
36      "files": 28,
37      "bytes": 51365914
38    },
39    "portable": {
40      "passed": true,
41      "outsideCheckout": true
42    },
43    "browser": {
44      "initial": {
45        "passed": 4,
46        "failed": 4
47      },
48      "sharedCleanupTimeout": {
49        "passed": 7,
50        "failed": 1
51      },
52      "combinedDaylightTimeout": {
53        "passed": 7,
54        "failed": 1
55      },
56      "weatherBeforeVisualPolish": {
57        "passed": 4,
58        "failed": 0
59      },
60      "renderClockLag": {
61        "passed": 3,
62        "failed": 1
63      },
64      "final": {
65        "passed": 8,
66        "failed": 0
67      }
68    }
69  },
70  "observations": [
71    "World 21 and presentation 14 admit owned precipitation.1 settings, reject weather in older profiles, retain checkpoint/simulation state and omit surrounding weather from object arrangements. Existing daylight and terrain operations preserve format 21.",
72    "Seeded direct sampling uses fixed arrays, bounded quality prefixes and exact 120-second loops. The pinned rain hash agrees in Node, browser main and Worker. Snow has gentle seeded drift; both modes stay within their authored center bounds.",
73    "The independent weather pool adds one optional 96 KiB GPU buffer, no textures or frame targets and at most one draw. Main/Worker native tests cover visible rain/snow, motion, depth occlusion, exact loops/removal/reconstruction, reduced-motion freeze, portal animation/loop timing and zero resources after disposal.",
74    "Final browser weather lag observations were 0.2892 and 0.6272 seconds for the two graphics placements and 0.16 seconds for the published traveler. The final shared weather journey took 56.1 seconds; all eight final browser scenarios pass. These are local acceptance observations, not a physical-device or controlled performance benchmark.",
75    "Weather-only cooperative and PostgreSQL cooperative/trusted rooms deliver shared time, with retained identity across restart. Existing epoch-fenced environment-time transport is reused without repeated particle payloads.",
76    "The editor covers invalid area input, responsive controls, cancel, preview, save/reload, unchanged-settings detection and durable undo/redo. Shared main/Worker Apply preserves travelers and footing; a skewed UI wall clock follows server time. Publication retains the saved weather epoch.",
77    "The first focused run found the current unversioned scene reader still using presentation 13. It now validates current scenes with format 14 while keeping historical envelope admission strict.",
78    "The first browser campaign found fixture errors: the editor uses balanced quality (1024 cap, not the requested 1434), and the depth fixture wall was inside the rain volume rather than in front of all precipitation. The shared fixture also incorrectly depended on the preceding save test succeeding. Corrected tests retain the same acceptance deadlines; initial failures are retained.",
79    "The second campaign passed seven cases. Its shared weather journey passed all functional and publication assertions and attached its connected published report, then exceeded the unchanged 60-second total during cleanup (61.827 seconds including runner overhead). Independent browser contexts now close concurrently, with both closures still awaited. This is test-harness cleanup, not a claimed production loading fix. Final campaign and failed run remain recorded.",
80    "Percentage controls now retain exact saved intensity when unchanged and render common values such as 29 percent cleanly. Browser save/reopen/no-change checks cover the rounding regression.",
81    "The third combined campaign passed all four weather cases, including the shared journey in 57.8 seconds, but the existing shared day/night case timed out during cleanup after attaching its successful published report (62.043 seconds including runner overhead). The weather-only campaign before visual polish passed four cases; its shared journey reported 60.373 seconds including runner overhead, leaving effectively no timing margin. These results do not make the broader campaign wholly green or close the existing loading/performance gate.",
82    "The first sandboxed focused test process stalled before tests completed and was explicitly terminated; subprocess acceptance then ran with local execution access. No passing result is inferred from that interrupted process.",
83    "Visual review shortened, narrowed and softened rain and added a near-camera fade. The subsequent shared check measured 1.502751 seconds of displayed weather lag against a 1.5-second limit. Receipt time now travels with its original monotonic prediction deadline, so main/Worker graphics use remaining budget at rendering rather than displaying an old frame sample. Thread handoffs never renew the one-second limit; a monotonic view prevents phase rewind on pause or expired receipts. Synchronization tolerances and test deadlines are unchanged. Explicit unit coverage includes delayed hops, expiry, freeze, reconnect and saturated/malformed samples; floating-point timestamp comparisons use microsecond tolerances.",
84    "Rain, snow, shared presentation and compact responsive controls were visually reviewed. This capability does not replace the required final art pass."
85  ],
86  "limits": [
87    "Outdoor volumes are authored manually; there is no shelter detection, roof collision, wet surface response, snow accumulation, weather audio or gameplay effect. Depth occlusion is not shelter simulation.",
88    "Automatic weather transitions, moving clouds, lightning, seasonal state, water/swimming/buoyancy, terrain streaming/LOD and voxel work remain open.",
89    "Local CPU sampling measurement excludes GPU upload/rendering. Physical-device, long-session and WAN/host-clock qualification remain open. Earlier published-restoration reload and terrain timing gaps are not claimed fixed.",
90    "No numbered milestone is closed. Final character/environment/arrival polish remains required. Docker/Coolify deployment and production qualification were not performed."
91  ],
92  "native": {
93    "sampleHash": "f78857ef1b38b675461f7e07a918288eac46d1c2cb4573a3afa2464357c6728a",
94    "portalAnimated": true,
95    "portalLoopExact": true,
96    "visible": true,
97    "snowDifferent": true,
98    "animated": true,
99    "loopExact": true,
100    "undoExact": true,
101    "recoveryExact": true,
102    "reducedMotionExact": true,
103    "occlusionExact": true,
104    "counts": [
105      2048,
106      1024,
107      512
108    ],
109    "bounded": true,
110    "resources": {
111      "extraBuffers": 1,
112      "extraTextures": 0
113    },
114    "disposed": {
115      "buffers": 0,
116      "textures": 0
117    },
118    "errors": []
119  },
120  "benchmark": {
121    "runtime": "v22.23.4",
122    "scope": "CPU direct sampling only; excludes GPU upload and rendering. Local workstation, not physical-device qualification.",
123    "cases": [
124      {
125        "kind": "rain",
126        "particles": 2048,
127        "samples": 1000,
128        "p50Ms": 0.09699200000000019,
129        "p95Ms": 0.10233800000000315,
130        "maximumMs": 0.17002600000000712,
131        "instanceBytes": 98304
132      },
133      {
134        "kind": "snow",
135        "particles": 2048,
136        "samples": 1000,
137        "p50Ms": 0.15608500000001868,
138        "p95Ms": 0.16377199999999448,
139        "maximumMs": 0.2079339999999661,
140        "instanceBytes": 98304
141      }
142    ]
143  },
144  "sourceFiles": {
145    "apps/editor/atmosphere.ts": "fd8b6e20e62011b85f5dead25366d9bada34bcfee3cf1fe5f977f2def11933bf",
146    "apps/editor/main.ts": "dd47fd2b9e0db6affc6d49358713c0dbc4335404769f786b757174bf8bda3869",
147    "apps/editor/scene.ts": "be3fb33a4e3abf2c00447395495c2e5c49df4a8287c76ce298a2c60d906a2797",
148    "apps/editor/templates.ts": "7d9680f3db99725c42694eee65d89debf4fd241ee2cbe3054fc80cec0cbea09a",
149    "apps/editor/weather.ts": "d636fc32a11d76e8f37bff799d4e68655fc4a49cbb8d93cae7966fad3c1cbca1",
150    "apps/player/graphics-protocol.ts": "4302d8f20108d446e96167c9841fa677566fee92b5f8279a2ac4ccedca4db149",
151    "apps/player/graphics.ts": "7d18ba9776d279d71eb21ed245353b7e113f56ce657d6c277e26dda39cefd9bf",
152    "apps/player/graphics.worker.ts": "7dee50bdff837430cc7a41a5f7024bfadcc1d755c9061be801a85dad4e010336",
153    "apps/player/main.ts": "337abfff873f36ccee38ced28582fc9e9dab924bc9c41685f250aadf34f394d0",
154    "apps/player/presentation-view.ts": "36d0ebe59a3147a271f039e52f1321124d7b974a581168a208438d488392088e",
155    "apps/player/simulation.worker.ts": "3f8ff0a20ea3c9e95add79ccf638b7b8899245fca95be7f58e76d47defea5883",
156    "package.json": "86cfade5044efa0a37e3b5bdd0176850f6d9ec9a125212b5dc2f5c1ee71ff9b9",
157    "packages/authoring/index.ts": "09e3bfc55b0d4e8985276e5dc2cf697a0371a72dc9913020c742adc56c67b5cc",
158    "packages/authoring/merge.ts": "d349d1efda9e2a78f4efceda52737dfb2438cf7029f9b3f2485224af8ce0819e",
159    "packages/authoring/observations.ts": "2649de06941c96f06f8d4e198fa62a2526fef0f22dfce97a066ae2418174de52",
160    "packages/authoring/prefabs.ts": "afece343f6d62d48b716cc51fd8f4334f6ae49bec6522a942ef85846eb5d6c38",
161    "packages/authoring/terrain.ts": "7b7f3d235c23c8803370df56bfc63af047e43a99479372e1d3f439b85a205c16",
162    "packages/authoring/undo.ts": "3c2c9f1a9b15bea9ffe92174953502dc828fbf61fe99df26a4aef71a9417ecd7",
163    "packages/compiler/index.ts": "4d3e017be5bb459cebb99845f9fc00ca27d0b696ece865e8e26ed7e3503d330a",
164    "packages/net/client.ts": "2bd8519799a316f5ad90ac4bb69a87eb1ef4955ff0f450ad20eb76b6b7e60a59",
165    "packages/net/environment-clock.ts": "a4eba8fb5f67b8a4526b2879bdda20a2805aa000339b8b0202bf608b827e2058",
166    "packages/net/persistent-client.ts": "07dfac674706a59db8cd70efd21041a2c02852c8310c424f74326cd5c13bd360",
167    "packages/render-webgpu/index.ts": "7b5e752825111d462d71a6af66470e4975d5eb9388976ce8ad72b404634e3fdb",
168    "packages/render-webgpu/weather.ts": "018ef227e7ff4842e2a897525247951b4c0f2c86be332f58e32d2097f7426e61",
169    "packages/render/environment-time.ts": "d7011f62d99004e508a4b99e3c2b61790a9410f6ad58f01fd3f03d4ce6b5d8de",
170    "packages/render/index.ts": "f73675473b87c12837e060338c73cf2b76eb4ed354efe96a3861f3167af5127b",
171    "packages/render/presentation.ts": "b55aa5e8822303b5a00f241d888eceda6f5ed2fef81b7e6e5df5d0a6d78f1397",
172    "packages/render/weather.ts": "d5c7e0e00be6be0d38fad944ab903b4b7618cf8a21945108d20e8099b0428457",
173    "packages/schema/environment-time.ts": "5163b00ededf4ceb993511a7590cf0f7e42aa07336ff235c2290a88949dbd677",
174    "packages/schema/index.ts": "f728fd5ad6f053ad8e2794ddda60f8efa05b06846f61f891e33113ded33a027d",
175    "packages/schema/weather.ts": "961b3b3af884036695c31eacff028a8d91c4c129d25a16dd227a58b3c425567b",
176    "packages/simulation/checkpoint.ts": "863df0614f504a0e24142a6cfb0689c83d5bc3d30ff675e8065566352bea385c",
177    "services/persistent/server.ts": "5544f2655128588a791ff48e181db357667186c1361876262b567a242ff086a3",
178    "services/relay/server.ts": "6510d7b07ce92d56f4ac1068654535b78d7d1f22f63e54d15dd50fee16ace402",
179    "tests/authoring-proposals.test.ts": "a6b54e085496962b931590c8bdff9993051e53e9300f9bfd6a9fd44e5390dabd",
180    "tests/browser/editor-day-cycle.spec.ts": "c84cf4c82eb157ade065ba676b2e9650b1b9706494cf7c09120c5e3236b04cdd",
181    "tests/browser/editor-weather.spec.ts": "600cb91efe3d84fc62b4128a6726eac2a05d9ec55789ab3f0e23d785b8040c06",
182    "tests/browser/weather.spec.ts": "d4e81ea07164585053cf5f7fb32ae29c395ae8f2eecd3ee4d4d803667ebf060a",
183    "tests/day-cycle-room.test.ts": "db6c2439d1ccc56fec731fb9a7d30ef144ee4c4b6eae6aa6492574ddf77dbe90",
184    "tests/environment-time-view.test.ts": "989bf1e963559062263943db8f5343eba9390d514d08abde57efc221ddb41df0",
185    "tests/fixtures/weather-browser-entry.ts": "4860993c6235fb4044cbd927be06e2346203b305fe928e93a99dd0ffccc4b46f",
186    "tests/fixtures/weather-browser.worker.ts": "42ee4f93fe6fe6fadaf19a63d71cc9c0b1c6a2fc498c7de706550e5360729f34",
187    "tests/fixtures/weather-native.ts": "05418b03c00cea32d225bc00049c32ff555756fad5de16739ae735d1a9584a97",
188    "tests/weather-room.test.ts": "022bf4fc6576803e61d7f4772cf6581812f211b5c2a8a31c6ac735afbadefdbe",
189    "tests/weather.test.ts": "e1752fb30671a02270e4f9237d8dfb24f9b1e6999458af687fae65a1b7878721"
190  }
191}
192