| B1/B16/B17 | A ray-probed enemy mover with positions held in Lua, engine objects re-centred every 10 s, a 5-part enemy rig, hidden templates switched off, AI at 5 Hz near players and 2 Hz away, and a cap of 24 enemies | Shipped: 53–56 fps worst case |
| B2 | Enemies spawned one per 0.3–0.4 s; boss bodies built across frames | Shipped |
| B3 | Settle waits after terrain clears, and a fall-catch that teleports players back | Shipped (workaround) |
| B4/B21 | Staging folders, single-write copies, compare-after-sync, one deployer | Process |
| B7 | Generation jobs queued at most 4 at a time, with failure tracking. 11 of 11 sound effects generated fine | Shipped |
| B8 | Builders that resume, idempotent rebuilds, and no Lua saves while generation callbacks are pending | Process |
| B12 | Game state serialized as Lua-literal strings in a ledger; the terrain journal kept as its own string | Shipped |
| B19/B20 | Terrain Keeper: full save only when the server is empty, plus a replayed edit journal | Shipped |
| B9 | Particle budgets per effect; no particles in the server's headless client | Shipped |
| B23 | Event-queued key input in the player script | Shipped, verified live |
| B24 | Audio module re-indexes on asset sync and falls back to built-in sounds | Shipped |
| B26 | Server rigs pose at 4 Hz in the headless client; visual checks done in a visible browser client, or with screenshot --client <id> through a real client with lighting on | Process |
| B27 | Persisted timers moved off Time.time; now on the persistent game clock (B41) | Shipped |
| B28 | Terrain reworks scheduled for an empty server; server-side ray audits; floating props found and grounded (a dead tree hung 35 m up, and an oil drum 1.3 m up after the Pit rim was reshaped) | Process + fixed |
| Arena | Pit rim reshaped into crags; stair access to all three high-ground shelves verified with a 0.5 m-step flood fill in both directions | Verified live |
| B29 | Pre-built enemy rig pool; spawn 320 ms → 4–20 ms | Shipped, measured |
| B29 (follow-up) | Bulwark rigs pooled the same way (previously about 300 ms per spawn); the Matron's 10 parts staged ahead of the fight, and her spawn measured at 10 ms live | Shipped, measured |
| B28 (update) | Phantom geometry also seen 2–10 m from the camera after about 600 hub edits; server rays confirm the plaza is clear. Hub and plaza dressing now follows the empty-server rule too | Process |
| B23 (follow-up) | Mouse clicks and UI keys are now event-queued too (attacks, build placement, menus) | Shipped |
| B19 (follow-up) | The Keeper's automatic empty-server save fired twice on its own: the journal was cleared and the terrain marked saved | Verified live |
| "Odd walls" | The 12 bare ruin shells were rebuilt as dressed ruined buildings (2 168 ops, 0 errors). The hub wall became a scavenged palisade, ash patches became flat paint, the sphere berm became a continuous boundary, and test structures were removed through the journal | Shipped; the edge was later rebuilt as faceted cliffs (B36) |
| B30 | Edge walls kept at least 2.9 m above the highest foothold; the Undercroft gated by a one-way door rather than a ledge | Shipped |
| B31 | Stamped armour visuals reverted before players saw them, then rebuilt from live part measurements as shell stamping (B42); offline mocks must model scaled flat parts | Resolved |
| B32 | Deploys batched and made with nobody online where possible; adopting the pool after reload tried and reverted | Process |
| B19 (update) | One automatic empty-server save measured at a 33.4 s main-thread stall; the Keeper saves non-journaled edits at most hourly | Measured |
| B33 | Hit-stop by scaling each rig's update time; vignette from stepped translucent bands | Shipped |
| B20 (update) | Procedural props (oil drums) found empty after a restart; rebuild on boot when the VoxelData is empty, or save props as assets | Fix proposed; not confirmed shipped before the pause |
| B33 (update) | Hit-stop and directional damage vignette deployed | Shipped, verified server-side |
| B34 | Wait for the .zma or retry before attaching a new script | Process |
| B35 | Retry with backoff for fetch failures (read back state before retrying world-changing Lua); boss logic checked in offline harnesses and server-side probes; human playtests for feel | Process |
| B36 | Handedness normalised in the parallelepiped helper; north and east cliffs rebuilt (lowest crest N 0.5 → 6.7 m, E 0.0 → 5.7 m, 0 floating cells); plaza banners restored | Shipped, verified live |
| B37 | Read-only ray audits (height maps, underside rays) after every procedural build | Process |
| B36 (update) | Guarded helper in every builder; homes 0/3 → 3/3 edge pieces with a boot-time rebuild; lair buttresses 0.7 → 5.8 m; Deep Arena crust cavities 0 → 1.9–2.4 m; armour confirmed unaffected | Shipped, verified live |
| B29 (siege) | Permanent Hollow pool of 14 for the siege: its warning phase holds 59 fps with a worst frame of 31 ms (was 48.5 fps, 140 ms) | Shipped, measured |
| B38 | None possible in game code | Reported |
| B39 | Watched for a plateau; the atlas capped (see update) | Superseded below |
| B29 (stress test) | No cold builds mid-fight, throttled pool rebuild, jittered AI think, lighter static jobs: steady 50–51 → 56.3 fps, worst frame 84–94 → 29 ms. Ramp-up spikes (p99 341 ms) traced and fixed in rounds 12–13 (see below) | Fixed later, measured |
| B39 (update) | Atlas confirmed capped at 5,000 MB; residual growth of ~7 MB/min unexplained at the pause | Open at the pause |
| B40 | Parked rigs activated briefly, between fights, while being dressed | Shipped |
| B29 (resolved) | Spawn spikes traced to voxel adds on scaled parts; crust baked into 3 variant assets, chips painted, pools paced. Ramp p99 508 → 60.9 ms, worst 893 → 73 ms; steady worst 84–94 → 51 ms | Shipped, measured |
| B29 (forging) | Forging armour on a player rig: 43.5 fps, worst 83 ms for ~6 s; baked tiers tried and reverted (B42). Now live 1-op/frame stamping onto shells: 47 fps, worst 48–52 ms over ~35–40 s | Acceptable |
| B29 (round 14) | Ramp p99 38.6 ms, worst 73 ms; steady 54.3 fps, p99 30.7 ms | Measured |
| B42 | Baked-armour character patch reverted (58.2 fps, worst 28 ms after); assets kept for relinking | Reverted |
| B42 (update) | Freeze traced to the in-script bake code, now removed: 0 freezes in ~7,000 frames with and without templates. Baked binds still 100–500 ms, so armour shells were tried next | Superseded below |
| B42 (shells) | Armour shells measured at 40–360 ms per bind; shell code re-introduced the periodic freeze and was reverted; 111 obsolete variants (329 MB) deleted. Next: live 1-op/frame stamping onto shells | Reverted |
| B42 (round 5d) | No binds or SaveAs for armour; idle shows 0 freezes over 100 ms in 6,957 frames; 75 shell templates (60 MB) deleted. Freeze correlates with heavy SaveAs use (unproven) | Shipped, measured |
| B44 | Restart-proof state: persistent clock, immediate ledger saves, boot repair passes; all survived the 01:10 restart | Process |
| B29 (round 16) | Hollow, Body and Beacon components inactive, driven by one manager: steady 54.7 fps, worst 32 ms, no frames over 33 ms; script time 8.66 → 4.15 ms | Shipped, measured |
| B43 | None possible in game code; fewer active objects | Reported |
| B41 | Persistent game clock in the ledger; immediate ledger save after one-shot repairs; boot-time home repair | Shipped |
| B44 (update) | Fourth restart during background Hollow dressing (25.1 fps, worst 596 ms beforehand); dressing reverted (59.7 fps, worst 17 ms); continuous stamping on scaled parts shelved | Shelved |
| B45 | Restart sync after every server restart; confirm "pushed" lines per deploy | Process |
| B46 | Joins held until the chat name arrives (up to 20 s); records refused for guest names; playtesters sign in | Shipped, verified |
| B47 | Vectors duck-typed on .x/.y/.z; Reach smoke test 16/16 including the ping broadcast | Shipped, verified |
| B44 (#5, #6) | Restarts at 07:22 (playtester walking to the hub) and 07:58 (test client); orphaned syncs stopped | Open (cause unknown) |
| B29 (rounds 17–18) | No new rigs while 18+ Hollows are out: worst case 56 fps, worst frame 36–37 ms (was 64–102 ms) | Shipped, measured |
| B48 | Long-running sync stopped; push-only deploy script on the CLI's files client | Process |
| B49 | Close clients gracefully | Process |
| B50 | Rest transform published in a networked table; client waits for it | Shipped |
| B44 (#7) | Rig-op budget (4/s, none near players), zero-op crust chips, Warden rebuild never stamps within 80 m; siege smoke rig ops 34 → 0 | Shipped, measured |
| B51 | Boot-time terrain relink (repairTerrainLink); verified on the play server | Shipped, verified |
| B51 (update) | A publish reported finished while delivering nothing; retried, then verified the play server's code, terrain and music by probe | Process |
| B52 | Scenes backed up; live world saved as InitScene with its own terrain copy | Fixed by hand |
| B53 | Case-insensitive lookup with a v1 fallback | Shipped |
| B54 | Check durations; regenerate short takes | Process |
| B55 | Plain copies for each networked table | Shipped |
| B56 | Frame helper defaults to overflow = "Wrap"; explicit endLine elsewhere | Shipped |
| B57 | Sizes kept in game tables, never read back | Shipped |
| B58 | Disabled buttons are a style, not the engine flag | Shipped |
| B59 | No frame on clear elements; only the selected row is framed | Shipped |
| B60 | ASCII-only uppercase helper for titles | Shipped |
| B61 | Art at 24 px and up; coloured shape tokens below | Shipped |
| B5 | No game-side cap exists; networked state kept small and written only on change | Avoided |
| B6 | None possible in game code; no unbounded tables, and long probes kept short | Avoided |
| B10 | None in game code | Open (platform) |
| B11 | The game replicates the transforms it needs itself, through networked tables and RPCs (see also B50) | Shipped |
| B13 | Large builds split into many small ops | Process |
| B14 | Known Editor Tools boot errors ignored when checking engine errors | Process |
| B15 | Symbols checked against the running build before use | Process |
| B18 | Characters stay server-side rigs, pooled (B29) | Worked around |
| B22 | Client tuning based on code-path costs, not a hidden tab's fps | Process |
| B25 | A tunable lift for the vitals panel (AshUI.VITALS_LIFT); off by default | Shipped |