feat(bridge): Rust's own world events on protocol 14 (PLAN_REDESIGNS §14.3.1) #35

Merged
whitlocktech merged 1 commits from feat/world-events into edge 2026-10-15 02:20:08 -05:00
Member

Stage 1 of the §14.3 integration plan (docs#347): the patrol helicopter, Bradley, the cargo ship, the Chinook, airdrops, locked crates, the Travelling Vendor, the satellite and the Deep Sea, with no plugin (D349). Spec: docs rust-link/PROTOCOL.md §20.5 (docs PR alongside).

  • world.event, one kind whose event names which of 24 types. Not type: that is the envelope's field and the sidecar files on it. The plan's example put it there, and the rig's sidecar dropped every world event as untyped.
  • Credit (D372, D379): a damage table for the patrol heli, Chinook and Bradley. Their deaths carry every candidate (blow, last, most, damagers); the plugin credits nobody. D174's CreditVehicle and the tally's apcKills/heliKills are gone; chinook.downed is new.
  • Positive classification: locked crates by oil rig, cargo, ghost ship, or a Chinook drop (joined at the crate's landing), and anything else says nothing. Bradley where comes from the game's spawners, not RoadSpawned (it defaults to true). airdrop.called comes from the cargo plane's spawn, because supply.call raised neither airdrop hook.
  • Tally: cratesHacked, dropsLooted (Safecracker, Scavenger, D356).
  • world.call (D354, D367, D378): one of the schedule's TriggeredEvents at random, without Trigger (which would reset its clock). A position only for the airdrop and the patrol heli, as the stage-1 spike measured: 0–1 m and 10–54 m from the point. The Chinook takes none. Kept; the key is remembered 7 days; EventsMaxWorldCalls (default and ceiling 10) per run.
  • Hello/status console.plugins (D363), probed from a timer. Finding: Carbon 2.0.262 refuses plugin console commands only inside a console command, which is how §14.2's spike tested. The bridge's NextTick-from-reader path reaches them, so the probe reads true on both rigs.
  • checkPlugin.js: the probe must name a declared [ConsoleCommand].

Tested: compiled and loaded on both rigs (Rust 25902425, Oxide 2.0.7830, Carbon 2.0.262). Frames read back from each rig's sidecar store; rigs restored. Static checks and 18 tests pass. Walks are deferred to the end (D331).

AI-assisted: written with Claude Code (disclosed per org policy).

🤖 Generated with Claude Code

https://claude.ai/code/session_01E14m6SuuY6i1vASFeGDBeY

Stage 1 of the §14.3 integration plan (docs#347): the patrol helicopter, Bradley, the cargo ship, the Chinook, airdrops, locked crates, the Travelling Vendor, the satellite and the Deep Sea, with no plugin (D349). Spec: docs `rust-link/PROTOCOL.md` §20.5 (docs PR alongside). - **`world.event`**, one kind whose **`event`** names which of 24 types. Not `type`: that is the envelope's field and the sidecar files on it. The plan's example put it there, and the rig's sidecar dropped every world event as untyped. - **Credit (D372, D379):** a damage table for the patrol heli, Chinook and Bradley. Their deaths carry every candidate (`blow`, `last`, `most`, `damagers`); the plugin credits nobody. D174's `CreditVehicle` and the tally's `apcKills`/`heliKills` are gone; `chinook.downed` is new. - **Positive classification:** locked crates by oil rig, cargo, ghost ship, or a Chinook drop (joined at the crate's landing), and anything else says nothing. Bradley `where` comes from the game's spawners, not `RoadSpawned` (it defaults to true). `airdrop.called` comes from the cargo plane's spawn, because `supply.call` raised neither airdrop hook. - **Tally:** `cratesHacked`, `dropsLooted` (Safecracker, Scavenger, D356). - **`world.call`** (D354, D367, D378): one of the schedule's `TriggeredEvent`s at random, without `Trigger` (which would reset its clock). A position only for the airdrop and the patrol heli, as the stage-1 spike measured: 0–1 m and 10–54 m from the point. The Chinook takes none. Kept; the key is remembered 7 days; `EventsMaxWorldCalls` (default and ceiling 10) per run. - **Hello/status `console.plugins`** (D363), probed from a timer. **Finding:** Carbon 2.0.262 refuses plugin console commands only *inside* a console command, which is how §14.2's spike tested. The bridge's NextTick-from-reader path reaches them, so the probe reads true on both rigs. - `checkPlugin.js`: the probe must name a declared `[ConsoleCommand]`. **Tested:** compiled and loaded on both rigs (Rust 25902425, Oxide 2.0.7830, Carbon 2.0.262). Frames read back from each rig's sidecar store; rigs restored. Static checks and 18 tests pass. Walks are deferred to the end (D331). AI-assisted: written with Claude Code (disclosed per org policy). 🤖 Generated with [Claude Code](https://claude.com/claude-code) https://claude.ai/code/session_01E14m6SuuY6i1vASFeGDBeY
wtclaude added 1 commit 2026-10-15 00:40:18 -05:00
feat(bridge): Rust's own world events on protocol 14 (PLAN_REDESIGNS §14.3.1)
All checks were successful
PR Checks / plugin-checks (pull_request) Successful in -1m55s
adb9df6a2e
Stage 1 of the §14.3 integration plan: the patrol helicopter, Bradley, the
cargo ship, the Chinook, airdrops, locked crates, the Travelling Vendor, the
satellite and the Deep Sea, with no plugin (D349).

- `world.event`, one frame kind whose `event` names which of 24 types
  (PROTOCOL.md §20.5). The type is in `event`, never `type`: `type` is the
  envelope's, and the rig's sidecar dropped every world event as untyped when
  the plan's example put it there. Nothing is said before the world loads or
  while the server quits. Positions are x/z; the site works out the grid.
- Credit (D372, D379): a damage table for the patrol helicopter, the Chinook
  and Bradley; `heli.downed`, `chinook.downed` and `bradley.destroyed` carry
  every candidate (blow, last, most, damagers) and the plugin credits nobody.
  D174's `CreditVehicle` and the tally's apcKills/heliKills are gone.
- Locked crates told positively (oil rigs, cargo, ghost ship, a Chinook drop
  joined at the crate's landing); anything else says nothing. A Bradley's
  `where` comes from the game's spawners, not `RoadSpawned` (which defaults to
  true). `airdrop.called` comes from the cargo plane's spawn: `supply.call`
  raised neither OnAirdrop nor OnCargoPlaneSignaled.
- The tally gains cratesHacked and dropsLooted (Safecracker, Scavenger, D356).
- `world.call` (D354, D367, D378): one of a schedule's TriggeredEvents at
  random, without Trigger (which would reset its clock); satellite.random for
  the satellite. A position for the airdrop (InitDropPosition) and the patrol
  helicopter (SetInitialDestination) only, both set before the spawn, as the
  stage-1 spike measured (0-1 m and 10-54 m). Kept; the key is remembered seven
  days in world-calls.json; EventsMaxWorldCalls (default and ceiling 10) per run.
- Hello/status `console.plugins` (D363): the bridge runs its own rg.probe
  through ConsoleSystem.Run from a timer. Carbon 2.0.262 refuses plugin
  commands only inside a console command (or a NextTick one queued), which is
  how §14.2's spike tested; from a timer, and from the link reader's NextTick,
  it finds them. Reads true on both rigs.
- checkPlugin.js: the probe must name a [ConsoleCommand] the plugin declares.

Compiled and loaded on both rigs (Rust 25902425, Oxide 2.0.7830, Carbon
2.0.262); heli.arrived, cargo.arrived and airdrop.called read back from each
rig's sidecar store. Rigs restored. 18 check tests pass.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01E14m6SuuY6i1vASFeGDBeY
whitlocktech merged commit 51de1b492f into edge 2026-10-15 02:20:08 -05:00
whitlocktech deleted branch feat/world-events 2026-10-15 02:20:08 -05:00
Sign in to join this conversation.
No Reviewers
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: RunicGateway/Rust-Plugins#35
No description provided.