simulation-recovery-acceptance.json
docs/evidence/simulation-recovery-acceptance.json
1{
2 "date": "2026-10-25",
3 "branch": "codex/engine-foundations",
4 "approximateFullPlanCompletePercent": 57,
5 "scope": [
6 "Retain one sealed native checkpoint outside the simulation worker with one pending capture",
7 "Replace a blocked or faulted worker without a page reload; clear input, reconstruct presentation and verify a frame before Continue",
8 "Reconnect the same room session and reconcile authoritative state and shared route clocks",
9 "Restore an older development checkpoint into a compatible accepted world and recover from a stall during revision preparation",
10 "Bound attempts and preserve durable local saves on failed restoration",
11 "Preserve airborne velocity, jump/ground state, controller configuration and rider support during shared platform admission"
12 ],
13 "verification": {
14 "headless": {
15 "passed": 552,
16 "failed": 0,
17 "evidence": "simulation-recovery-full.tap"
18 },
19 "focusedHeadless": {
20 "passed": 34,
21 "failed": 0,
22 "evidence": "simulation-recovery-focused.tap"
23 },
24 "coreBrowser": {
25 "passed": 12,
26 "failed": 0,
27 "evidence": "simulation-recovery-browser-tests.json"
28 },
29 "affectedSharedWorldBrowser": {
30 "passed": 3,
31 "failed": 0,
32 "evidence": "simulation-recovery-development-tests.json"
33 },
34 "staticChecks": "TypeScript and import boundaries passed (108 package source files)",
35 "build": "Isolated production client and engine bundles built by browser harness; local editor rebuilt after verification",
36 "order": "Core browser acceptance preceded the final shared-platform motor correction. Full headless and affected development/ferry browser acceptance followed that correction; ordinary non-route core browser behavior is unchanged."
37 },
38 "nativeProof": [
39 "Both render placements restore exact airborne position, velocity and tick from a native checkpoint with animation frames withheld and without changing performance.timeOrigin",
40 "Shared session identity survives and new authoritative door mutations reach the replacement",
41 "Two replacements succeed; a third stall takes the manual retry path without a restart loop",
42 "A corrupt native checksum retires the replacement and leaves durable local save bytes unchanged",
43 "Older-source checkpoints restore into the accepted edited world; subsequent live Apply succeeds",
44 "Stalling the worker in revision preparation preserves the accepted source and permits Apply retry",
45 "Shared route time continues while locally paused after recovery; ferry boarding, pause, host handoff and reload remain coherent"
46 ],
47 "regressionEvidence": {
48 "before": "simulation-recovery-airborne-before.tap",
49 "observed": "Shared admission changed restored vertical velocity from 6 to 0. The corrected path preserves motor/controller state and passes native checkpoint validation and the full suite."
50 },
51 "testDevelopmentNotes": [
52 "An initial combined browser run correctly found an already-open shared door left by the preceding journey. The fallback test now toggles the observed authoritative state instead of assuming a fresh relay; final core acceptance passes all 12 scenarios."
53 ],
54 "visualReview": [
55 "simulation-recovery-wait.png",
56 "simulation-recovered-worker.png",
57 "simulation-recovered-main.png",
58 "development-native-recovered.png"
59 ],
60 "diagnostics": "simulation-recovery-report.json",
61 "localEditor": {
62 "editor": "http://localhost:5181/editor.html",
63 "relayPort": 8791,
64 "savedDraftUnchanged": true,
65 "document": {
66 "revision": "0",
67 "sha256": "f076388ad340c7b1e1aa84e72368aa6a9d3a3f6546187a2fed1d0fba66c36977"
68 },
69 "health": {
70 "ready": true,
71 "players": 0,
72 "revision": "0",
73 "epoch": "0"
74 },
75 "developmentActive": false
76 },
77 "limits": [
78 "Native points remain in page memory; local movement and solo actions since the latest point may roll back. The ordinary lightweight save remains the reload fallback.",
79 "Two attempts and a 45-second per-attempt deadline; invalid, incompatible or failed recovery falls back to manual retry.",
80 "The main-thread watchdog cannot interrupt its own blocked event loop.",
81 "Arbitrary engine/source migration, behavior-level transaction rollback and budgets, durable native storage and hostile-code isolation remain open.",
82 "Software-rendered acceptance does not certify physical devices, multi-machine operation or long soaks.",
83 "No full numbered roadmap milestone is closed; final character art remains deferred."
84 ]
85}
86