Plan fixes before the cutover — protocol 13 and the walk's redesigns (PLAN_FIXES.md) #21

Open
opened 2026-09-26 22:20:45 +00:00 by wtclaude · 4 comments
Member

Tracks docs/modules/rust/PLAN_FIXES.md: everything the first player walk (Oxide pass, 2026-09-26) found. All of it lands before the phase-19 cutover (D169). Protocol 13 is built on edge in Rust-Plugins, Rust-Link and Module-Rust and released together (D177).

Step 1 — the opening of protocol 13

  • F15 UTF-8 decode, F9 + F10 config save answers first. PRs: Rust-Plugins#16, Rust-Link#18, Module-Rust#20. Spec docs#286, decisions docs#285 (D176–D179).

Step 2 — the rest of protocol 13

  • F13 world.expired carries what, and F14 marks the expired zone (D170)
  • F12 a player already inside a zone counts
  • F1 gathered includes the bonus and pickups (D159)
  • F3 own-building raids don't count
  • F8 plugin loaded/unloaded frame
  • F7 restart sync waits for worldReady
  • F2 NPC killer display name
  • F4 steamId for plugin-spawned players
  • F5 / F6 link redeem vs dead servers (module only)

Step 3 — redesigns (each planned in detail before code)

  • §4.1 permission manager (D160–D163)
  • §4.2 / §4.3 event step editor + kit-weekend template (D164, U-3–U-6, F11)
  • §4.4 ZoneManager options + ZoneDomes (D166, D167)
  • §4.5 map marker types (D165)
  • §4.6 23 title conditions (D172–D175), incl. the mission-detection spike
  • §4.7 NPC research

Step 4

  • The re-walk (§8) on Oxide and Carbon, then the cutover.

🤖 Generated with Claude Code

Tracks `docs/modules/rust/PLAN_FIXES.md`: everything the first player walk (Oxide pass, 2026-09-26) found. **All of it lands before the phase-19 cutover (D169).** Protocol 13 is built on `edge` in Rust-Plugins, Rust-Link and Module-Rust and released together (D177). ### Step 1 — the opening of protocol 13 - [ ] F15 UTF-8 decode, F9 + F10 config save answers first. PRs: Rust-Plugins#16, Rust-Link#18, Module-Rust#20. Spec docs#286, decisions docs#285 (D176–D179). ### Step 2 — the rest of protocol 13 - [ ] F13 `world.expired` carries `what`, and F14 marks the expired zone (D170) - [ ] F12 a player already inside a zone counts - [ ] F1 gathered includes the bonus and pickups (D159) - [ ] F3 own-building raids don't count - [ ] F8 plugin loaded/unloaded frame - [ ] F7 restart sync waits for `worldReady` - [ ] F2 NPC killer display name - [ ] F4 steamId for plugin-spawned players - [ ] F5 / F6 link redeem vs dead servers (module only) ### Step 3 — redesigns (each planned in detail before code) - [ ] §4.1 permission manager (D160–D163) - [ ] §4.2 / §4.3 event step editor + kit-weekend template (D164, U-3–U-6, F11) - [ ] §4.4 ZoneManager options + ZoneDomes (D166, D167) - [ ] §4.5 map marker types (D165) - [ ] §4.6 23 title conditions (D172–D175), incl. the mission-detection spike - [ ] §4.7 NPC research ### Step 4 - [ ] The re-walk (§8) on Oxide and Carbon, then the cutover. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
Author
Member

Step 1 walked on both rigs, 2026-09-26/27. Both ran protocol-13 builds of the plugin and sidecar from edge, against walk core :3270. PLAYER_WALK configuration steps 2, 2a, 2b and 4 were run.

  • Oxide passed as merged. F9: a cold compile (3078 ms) settled applied in 9 s instead of being rolled back. F15: é, — and 🛡️ are intact on disk, and ZoneManager re-saved them intact. Step 4 rolled back in about 3 s, restored, with the file byte-identical.
  • Carbon failed as merged. A save unloaded Kits and never brought it back (W3). The log evidence never fired (W4). A broken config was reported applied, because Carbon loads the plugin anyway (W5). All three are fixed in Rust-Plugins#17, and Carbon 2, 2b and 4 now pass on that build. Two Oxide refinements (W1, W2) are in the same PR. Spec and D180: docs#287.

Step 1 is done once #17 and docs#287 merge. Next is step 2.

🤖 Generated with Claude Code

**Step 1 walked on both rigs, 2026-09-26/27.** Both ran protocol-13 builds of the plugin and sidecar from `edge`, against walk core :3270. PLAYER_WALK configuration steps 2, 2a, 2b and 4 were run. - **Oxide passed as merged.** F9: a cold compile (3078 ms) settled `applied` in 9 s instead of being rolled back. F15: é, — and 🛡️ are intact on disk, and ZoneManager re-saved them intact. Step 4 rolled back in about 3 s, restored, with the file byte-identical. - **Carbon failed as merged.** A save unloaded Kits and never brought it back (W3). The log evidence never fired (W4). A broken config was reported `applied`, because Carbon loads the plugin anyway (W5). All three are fixed in **Rust-Plugins#17**, and Carbon 2, 2b and 4 now pass on that build. Two Oxide refinements (W1, W2) are in the same PR. Spec and **D180**: docs#287. Step 1 is done once #17 and docs#287 merge. Next is step 2. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
Author
Member

Step 2 built, 2026-09-27. The org lead answered step 2's open choices before any code (D181–D185, docs#288).

Repo PR What
Rust-Plugins #18 → edge F13 what, F1 three gathering hooks, F3 own-base raids, F4 steam ids, F8 plugin load frames with a permission diff, F12 helper RunicGatewayZones.cs (Harmony) plus the geometry fallback, release packaging
Module-Rust #22 → edge F13/F14 expiry to core, F8 dirty, F7 loading hold, F2 NPC names, F5/F6 link fleet, helper state on the servers page, event catalogue through protocol 13. coreApi ^1.11.0
website #209 → main the expired ledger status and ctx.events.expired, MODULE_API 1.11.0. Module-uo proved unaffected (frozen manifest, 723 + 45 tests)
Rust-Link #19 → edge the egg installs every .cs the manifest lists, sha-checked
installer #35 → main install, update, uninstall and doctor handle helpers
docs #288, #289 decisions; spec (PROTOCOL §19.4–19.8, MODULE_API, EVENTS §L, INSTALL, PLAYER_WALK)

Walked on both rigs without a player:

  • The bridge and helper compile. The helper needed one fix (ListHashSet has no ToArray).
  • patched ZoneManager 3.1.14 on Oxide and Carbon, and the site read zoneHelper: patched from both hellos.
  • Kits unload/load sent ["kits.admin","kits.rgreward"] on both frameworks.

Still to walk:

  • The site side, on a walk core running #22 on website#209.
  • PLAYER_WALK's step-2 rows 3–9, which need somebody in the game: F12 in a zone and across a restart, F1, F3, F13/F14 end to end, F5, F2.

Both rigs are left running the #18 build plus the helper. The old plugins are in session scratch.

🤖 Generated with Claude Code

**Step 2 built, 2026-09-27.** The org lead answered step 2's open choices before any code (D181–D185, docs#288). | Repo | PR | What | |---|---|---| | Rust-Plugins | #18 → edge | F13 `what`, F1 three gathering hooks, F3 own-base raids, F4 steam ids, F8 plugin load frames with a permission diff, F12 helper `RunicGatewayZones.cs` (Harmony) plus the geometry fallback, release packaging | | Module-Rust | #22 → edge | F13/F14 expiry to core, F8 dirty, F7 loading hold, F2 NPC names, F5/F6 link fleet, helper state on the servers page, event catalogue through protocol 13. `coreApi ^1.11.0` | | website | #209 → main | the `expired` ledger status and `ctx.events.expired`, MODULE_API 1.11.0. Module-uo proved unaffected (frozen manifest, 723 + 45 tests) | | Rust-Link | #19 → edge | the egg installs every `.cs` the manifest lists, sha-checked | | installer | #35 → main | install, update, uninstall and doctor handle helpers | | docs | #288, #289 | decisions; spec (PROTOCOL §19.4–19.8, MODULE_API, EVENTS §L, INSTALL, PLAYER_WALK) | **Walked on both rigs without a player:** - The bridge and helper compile. The helper needed one fix (`ListHashSet` has no `ToArray`). - `patched ZoneManager 3.1.14` on Oxide and Carbon, and the site read `zoneHelper: patched` from both hellos. - Kits unload/load sent `["kits.admin","kits.rgreward"]` on both frameworks. **Still to walk:** - The site side, on a walk core running #22 on website#209. - PLAYER_WALK's step-2 rows 3–9, which need somebody in the game: F12 in a zone and across a restart, F1, F3, F13/F14 end to end, F5, F2. Both rigs are left running the #18 build plus the helper. The old plugins are in session scratch. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
Author
Member

Step 2 — player rows walked (2026-09-27, org lead in game, Oxide then Carbon).

PLAYER_WALK step-2 rows 3–9 all passed on both frameworks except row 8's timing:

  • 3 gather: tally = inventory exactly (653 / 654 wood, 10 cloth, 1 seed) ✅
  • 4 own wall (C4): entity.destroyed, no raid ✅
  • 5/6/7 zones: scored standing still through opening, restart (128 s / 246 s) and a ZoneManager reload with the helper unloaded (105 s / 90 s) ✅; F7's restart sync went after startup ✅
  • 8 link: F5 wording ✅, real code linked in < 2 s ✅, made-up code 12 s ⚠️
  • 9 killfeed: Bear, Wolf, Boar, Scientist ✅

Found and fixed (walked live on the walk core):

  • D186 (F6, org lead's option b) — skip servers known down on a code's second pass: 12,245 ms → 360 ms.
  • D187 (F7) — a due audit went to a restarting Carbon before its new hello was read; now held while online: 0.

PRs: #23 (→ edge), docs#290. F12 turned out narrower than written (ZoneManager's own entry counted the player anyway, late). Not walked: player killed by another player (no second player).

**Step 2 — player rows walked (2026-09-27, org lead in game, Oxide then Carbon).** PLAYER_WALK step-2 rows 3–9 all passed on both frameworks except row 8's timing: - 3 gather: tally = inventory exactly (653 / 654 wood, 10 cloth, 1 seed) ✅ - 4 own wall (C4): `entity.destroyed`, no raid ✅ - 5/6/7 zones: scored standing still through opening, restart (128 s / 246 s) and a ZoneManager reload with the helper unloaded (105 s / 90 s) ✅; F7's restart sync went after startup ✅ - 8 link: F5 wording ✅, real code linked in < 2 s ✅, **made-up code 12 s** ⚠️ - 9 killfeed: Bear, Wolf, Boar, Scientist ✅ Found and fixed (walked live on the walk core): - **D186** (F6, org lead's option b) — skip servers known down on a code's second pass: 12,245 ms → 360 ms. - **D187** (F7) — a due audit went to a restarting Carbon before its new hello was read; now held while `online: 0`. PRs: #23 (→ edge), docs#290. F12 turned out narrower than written (ZoneManager's own entry counted the player anyway, late). Not walked: player killed by another player (no second player).
Author
Member

Step 2 closed and step 3 planned (2026-09-27).

  • The step-2 walk PRs are merged (#23, docs#290). #24 moves the CI core pin back to main at website#209's merge (f0e7d2a).
  • Step 3's plan: docs#291, modules/rust/PLAN_REDESIGNS.md. All six redesigns are in one document, at the org lead's choice, with eleven questions (§10) to answer before any code. The rig checks it rests on:
    • permission owners are public API on both frameworks (PermissionExists(name, owner));
    • OnMissionSucceeded / OnMissionFailed exist on both, which settles D173's spike at option 1;
    • ZoneDomes throws with a null player.
  • Proposed build order after the answers: permissions, then titles, zones + dome, map markers, NPCs, with the core step editor in parallel.

🤖 Generated with Claude Code

**Step 2 closed and step 3 planned (2026-09-27).** - The step-2 walk PRs are merged (#23, docs#290). #24 moves the CI core pin back to `main` at website#209's merge (`f0e7d2a`). - **Step 3's plan:** docs#291, `modules/rust/PLAN_REDESIGNS.md`. All six redesigns are in one document, at the org lead's choice, with **eleven questions (§10)** to answer before any code. The rig checks it rests on: - permission owners are public API on both frameworks (`PermissionExists(name, owner)`); - `OnMissionSucceeded` / `OnMissionFailed` exist on both, which settles D173's spike at option 1; - ZoneDomes throws with a null player. - Proposed build order after the answers: permissions, then titles, zones + dome, map markers, NPCs, with the core step editor in parallel. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: RunicGateway/Module-Rust#21
No description provided.