feat(bridge): TruePVE in a zone on protocol 14 (PLAN_REDESIGNS §14.3.2) #36

Merged
whitlocktech merged 2 commits from feat/truepve-zone into edge 2026-10-15 06:06:26 -05:00
Member

Stage 3 of the §14.3 integration plan (D362, D368). Spec: docs rust-link/PROTOCOL.md §20.6 (docs PR alongside); record: modules/rust/PLAN_REDESIGNS.md §14.3.16.

  • world.zone's optional truePve: {"exclude": true} or {"ruleset": "name"}, exactly one, the name 1–64 characters. A malformed one is malformed. TruePVE not loaded is truepve-missing, checked before anything is made.
  • All or nothing. The bridge makes the zone (and its dome), then calls AddOrUpdateMapping. A false erases both and answers truepve-ruleset with the name, or refused for exclude.
  • The unmapping lives with the zone (D362). The registry entry remembers its mapping. Every path that erases one of our zones calls RemoveMapping first: the deadline, world.revert, a zone world.owned finds gone, and a new wipe. While TruePVE is away, the id waits in data/RunicGateway/truepve.json. It is flushed at OnPluginLoaded(TruePVE) and at the bridge's own load.
  • Hello: integrations.truePve { loaded, version }, sent again when TruePVE loads or unloads. rg.world prints truePve= and truePveLeftover=.
  • README lists TruePVE among the optional plugins.

Two commits: the first is the feature, pushed as WIP by an earlier session. The second adds the hello re-send on TruePVE load/unload, which that session missed, plus the README entry.

Tested: compiled and loaded on both rigs (Rust 25902425, Oxide 2.0.7830, Carbon 2.0.262, TruePVE 2.4.6). rg.world read truePve=True truePveLeftover=0 on each. Afterwards both rigs were put back on the protocol-13 bridge. Walk rows are §14.3.2's and wait for the end walk (D331, D359).

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

🤖 Generated with Claude Code

https://claude.ai/code/session_01E14m6SuuY6i1vASFeGDBeY

Stage 3 of the §14.3 integration plan (D362, D368). Spec: docs `rust-link/PROTOCOL.md` §20.6 (docs PR alongside); record: `modules/rust/PLAN_REDESIGNS.md` §14.3.16. - **`world.zone`'s optional `truePve`**: `{"exclude": true}` or `{"ruleset": "name"}`, exactly one, the name 1–64 characters. A malformed one is `malformed`. TruePVE not loaded is `truepve-missing`, checked before anything is made. - **All or nothing.** The bridge makes the zone (and its dome), then calls `AddOrUpdateMapping`. A false erases both and answers `truepve-ruleset` with the name, or `refused` for `exclude`. - **The unmapping lives with the zone (D362).** The registry entry remembers its mapping. Every path that erases one of our zones calls `RemoveMapping` first: the deadline, `world.revert`, a zone `world.owned` finds gone, and a new wipe. While TruePVE is away, the id waits in `data/RunicGateway/truepve.json`. It is flushed at `OnPluginLoaded(TruePVE)` and at the bridge's own load. - **Hello**: `integrations.truePve` `{ loaded, version }`, sent again when TruePVE loads or unloads. `rg.world` prints `truePve=` and `truePveLeftover=`. - README lists TruePVE among the optional plugins. Two commits: the first is the feature, pushed as WIP by an earlier session. The second adds the hello re-send on TruePVE load/unload, which that session missed, plus the README entry. **Tested:** compiled and loaded on both rigs (Rust 25902425, Oxide 2.0.7830, Carbon 2.0.262, TruePVE 2.4.6). `rg.world` read `truePve=True truePveLeftover=0` on each. Afterwards both rigs were put back on the protocol-13 bridge. Walk rows are §14.3.2's and wait for the end walk (D331, D359). 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 2 commits 2026-10-15 05:48:35 -05:00
Stage 3 of the §14.3 integration plan (D362, D368): world.zone's optional
truePve ({exclude: true} or {ruleset}), all or nothing, unmapped on every
path that erases one of our zones, with truepve.json for erases while
TruePVE is away. Docs and PRs still to come.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01E14m6SuuY6i1vASFeGDBeY
feat(bridge): TruePVE in a zone on protocol 14 (PLAN_REDESIGNS §14.3.2)
All checks were successful
PR Checks / plugin-checks (pull_request) Successful in 10s
491760d817
Stage 3 of the §14.3 integration plan (D362, D368), specified in docs
rust-link/PROTOCOL.md §20.6.

- world.zone's optional truePve: {"exclude": true} or {"ruleset": "name"},
  exactly one, the name 1-64 characters. Malformed is `malformed`; TruePVE
  not loaded is `truepve-missing`.
- All or nothing: the zone (and its dome) is made, then AddOrUpdateMapping.
  A false erases both and answers `truepve-ruleset` with the name (or
  `refused` for exclude).
- The registry entry remembers its mapping, and every path that erases one
  of our zones calls RemoveMapping first: the deadline, world.revert, a zone
  world.owned finds gone, a new wipe. While TruePVE is away the id waits in
  data/RunicGateway/truepve.json, flushed at OnPluginLoaded(TruePVE) and at
  the bridge's own load.
- hello's integrations.truePve { loaded, version }, sent again when TruePVE
  loads or unloads. rg.world prints truePve= and truePveLeftover=.

Compiled and loaded on both rigs (Rust 25902425, Oxide 2.0.7830, Carbon
2.0.262, TruePVE 2.4.6).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01E14m6SuuY6i1vASFeGDBeY
whitlocktech merged commit 49a677e3fb into edge 2026-10-15 06:06:26 -05:00
whitlocktech deleted branch feat/truepve-zone 2026-10-15 06:06:27 -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#36
No description provided.