fix(bridge): the last fixes' bridge half (W3, W9, W12) #43
Reference in New Issue
Block a user
No description provided.
Delete Branch "fix/last-fixes-bridge"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
What & why
Stage 3 of
docs/modules/rust/PLAN_LAST_FIXES.md(docs#366): the bridge's fixes. W3's module half is already in Module-Rust#55.world.errorwith reasonalready-out("a Travelling Vendor is already out, and the game runs one at a time; nothing was called"). Before, it answered "called 1" and spawned nothing. The refusal is not counted against the run's world-call budget and is not kept under its key, so a retry checks again. Module-Rust#55 reads it ascalled: 0with a note.06:50 [Info] [RaidableBases] …and Carbon's[2026.10.21 18:54:35] [INFO] [RaidableBases] …. If no entry names the profile, its other entries since the write are used. If it logged nothing, the log is empty and the reason line stands alone. A reload that misses the 30 s ceiling also reads RaidableBases' entries, not the tail. Ordinary config writes still use the tail.raid.endedcarries the base'sid, and itsrunIdandkey, when a run made it, as PROTOCOL §20.12 already says. When RaidableBases ends a run's base itself, the record supplies them. A teardown takes the base off the record before its despawn raisesEnded, so the live base now keeps its run and key too (set atStarted, and at a hotload's re-seed).No protocol bump. W3's reason is a new value of an existing field, and W12 sends fields PROTOCOL already lists. The docs (PROTOCOL's
already-out, and the plan's status) come in stage 5, as the plan says. Rust-Link needs nothing: it forwards the reply as it is.How it was tested
Builds: Rust 25902425, Oxide 2.0.7830, Carbon 2.0.262 (each the latest today). This branch compiled and loaded on both rigs. The walk site at
:3270was used, still on Module-Rust stage 1.node scripts/checkPlugin.js: protocol 14, 89 hooks, all void and listed.checkPlugin.test.jspasses.already-outwith the message above. The walk site still runs stage 1's module, so it retried instead of readingcalled: 0. Stage 2 has that half and is merged, but it is not loaded on the walk site.already-outat once.Easy Baseswith"Difficulty Level": "not a number"was rolled back and restored. The outcome'slogis now exactly RaidableBases' entry:18:54 [Info] [RaidableBases] /home/container/oxide/data/RaidableBases/Profiles/Easy Bases.jsonNewtonsoft.Json.JsonReaderException: Could not convert string to integer: not a number. Path '['Difficulty Level']', line 3, position 36.Carbon's is the same, with its own timestamp.
raid.endedcarriesid: raid-1792608907103-1,runId: "79"and the key. Bases no run made still carry none.world.expired(what: raidbase) and thenraid.ended, both withid: raid-1792609042245-2,runId: "80"and the key. The run log showsresource.expired.Both rigs still run this branch. It is
edgeplus these three fixes.Checklist
AI-assisted contributions (required)
Claude Code (Claude Opus 5.5). I have reviewed and understand every change, and take responsibility for it. AI-authored commits are marked with aCo-Authored-By/Assisted-Bytrailer.🤖 Generated with Claude Code
https://claude.ai/code/session_01E14m6SuuY6i1vASFeGDBeY