docs(rust): plan the six step-3 redesigns, and D188-D198 #291

Merged
whitlocktech merged 2 commits from docs/rust-step3-plan into main 2026-09-27 08:58:55 +00:00
Member

What & why

Step 3 of modules/rust/PLAN_FIXES.md §6 says each of the six redesigns is "planned in detail before code". The org lead asked for all six in one plan (2026-09-27). This PR is that plan, modules/rust/PLAN_REDESIGNS.md, together with the org lead's answers to its eleven questions, recorded as D188–D198 (§10). No code yet. Tracking: Module-Rust#21.

The decisions (§10)

D188 The import records a holding by Steam account, exactly as the game has it, even when the account is linked. A toggle on the site for a linked player is an account grant (D28).
D189 A group belongs to one server unless an admin shares it with chosen servers or the fleet. The import makes one group per server; groups with the same name are never merged by guessing.
D190 An in-game change affects that server only, and auto-adopt applies it without asking. A grant that reaches several servers gains an exception for that server; a shared group is split, and that server gets its own copy.
D191 zonemanager.ignoreflag.* is listed like any other permission.
D192 Core gains event templates (registerEventTemplates, MODULE_API 1.12.0); the kit weekend is the first.
D193 Zone enter/leave messages and reward messages get the Chat / Popup choice. The bridge sends zone messages itself for its own zones.
D194 ZoneDomes stays (D167 stands). A second helper, RunicGatewayDomes.cs, makes its API safe without a player. The bridge re-adds domes after re-creating zones and removes them at expiry and teardown.
D195 Zone presets are the admins' own (one server, several, or the fleet); none ship.
D196 The site filters map markers by label; minor labels are off by default.
D197 The NPC spike tries both routes, extending rust.npc.place and HumanNPC, and lists HumanNPC's gotchas: its dependencies, Carbon, its own persistence, its own AI, being counted as a player, and upkeep.
D198 The first inventory on an existing install adopts everything present, as D160 is written.

Checked on the rigs before writing (§0)

A read-only probe ran on both rigs and was deleted afterwards.

  • Permission owners are public API on both frameworks (PermissionExists(name, owner)). zonemanager.ignoreflag.nokits belongs to ZoneManager.
  • Neither framework can list all users, so the inventory is built in slices and sent in pages.
  • Groups have parents.
  • OnMissionSucceeded / OnMissionFailed exist on both frameworks, which settles D173 at its option 1.
  • ZoneDomes throws with a null player, after making the dome, and on boot it drops the domes of temporary zones.
  • ZoneManager's flag list is readable only from the helper.
  • Kits' per-player uses are read one at a time; core's own action examples are UO's.

Build order (§9)

Permissions → titles → zones + dome → map markers → NPCs (spike, then the org lead's pick), with the core step editor in parallel. All wire changes join the unreleased protocol 13.

How it was tested

Docs only. Every figure in §0 comes from the probe's data files, the rigs' assemblies, ZoneDomes 2.0.2's source on the Oxide rig, or the walk database.

Checklist

  • I have read CONTRIBUTING.md.
  • The change builds and existing tests/checks pass locally.
  • I have added or updated tests/docs where it makes sense.
  • My commits are reasonably scoped with clear messages.

AI-assisted contributions (required)

  • No AI tools were used to produce this contribution.
  • AI tools were used. Tool(s): Claude Code (Claude Opus 5.5). I have reviewed and understand
    every change, and take responsibility for it. AI-authored commits are
    marked with a Co-Authored-By / Assisted-By trailer.

License

  • I agree that my contribution is licensed under this project's license
    (GNU GPL v3.0 or later), and I have the right to contribute it.

🤖 Generated with Claude Code

https://claude.ai/code/session_01E14m6SuuY6i1vASFeGDBeY

## What & why Step 3 of `modules/rust/PLAN_FIXES.md` §6 says each of the six redesigns is "planned in detail before code". The org lead asked for all six in one plan (2026-09-27). This PR is that plan, **`modules/rust/PLAN_REDESIGNS.md`**, together with **the org lead's answers to its eleven questions, recorded as D188–D198** (§10). No code yet. Tracking: Module-Rust#21. ### The decisions (§10) | | | |---|---| | **D188** | The import records a holding by Steam account, exactly as the game has it, even when the account is linked. A toggle on the site for a linked player is an account grant (D28). | | **D189** | **A group belongs to one server unless an admin shares it** with chosen servers or the fleet. The import makes one group per server; groups with the same name are never merged by guessing. | | **D190** | An in-game change affects that server only, and auto-adopt applies it without asking. A grant that reaches several servers gains an exception for that server; a shared group is split, and that server gets its own copy. | | **D191** | `zonemanager.ignoreflag.*` is listed like any other permission. | | **D192** | Core gains event templates (`registerEventTemplates`, MODULE_API 1.12.0); the kit weekend is the first. | | **D193** | Zone enter/leave messages and reward messages get the Chat / Popup choice. The bridge sends zone messages itself for its own zones. | | **D194** | **ZoneDomes stays** (D167 stands). A second helper, `RunicGatewayDomes.cs`, makes its API safe without a player. The bridge re-adds domes after re-creating zones and removes them at expiry and teardown. | | **D195** | Zone presets are the admins' own (one server, several, or the fleet); none ship. | | **D196** | The site filters map markers by label; minor labels are off by default. | | **D197** | The NPC spike tries both routes, extending `rust.npc.place` and HumanNPC, and lists HumanNPC's gotchas: its dependencies, Carbon, its own persistence, its own AI, being counted as a player, and upkeep. | | **D198** | The first inventory on an existing install adopts everything present, as D160 is written. | ### Checked on the rigs before writing (§0) A read-only probe ran on both rigs and was deleted afterwards. - **Permission owners are public API on both frameworks** (`PermissionExists(name, owner)`). `zonemanager.ignoreflag.nokits` belongs to ZoneManager. - Neither framework can list all users, so the inventory is built in slices and sent in pages. - Groups have parents. - **`OnMissionSucceeded` / `OnMissionFailed` exist on both frameworks**, which settles D173 at its option 1. - **ZoneDomes throws with a null player**, after making the dome, and on boot it drops the domes of temporary zones. - ZoneManager's flag list is readable only from the helper. - Kits' per-player uses are read one at a time; core's own action examples are UO's. ### Build order (§9) Permissions → titles → zones + dome → map markers → NPCs (spike, then the org lead's pick), with the core step editor in parallel. All wire changes join the unreleased protocol 13. ## How it was tested Docs only. Every figure in §0 comes from the probe's data files, the rigs' assemblies, ZoneDomes 2.0.2's source on the Oxide rig, or the walk database. ## Checklist - [x] I have read [CONTRIBUTING.md](CONTRIBUTING.md). - [x] The change builds and existing tests/checks pass locally. - [x] I have added or updated tests/docs where it makes sense. - [x] My commits are reasonably scoped with clear messages. ## AI-assisted contributions (required) - [ ] No AI tools were used to produce this contribution. - [x] AI tools were used. Tool(s): `Claude Code (Claude Opus 5.5)`. I have reviewed and understand every change, and take responsibility for it. AI-authored commits are marked with a `Co-Authored-By` / `Assisted-By` trailer. ## License - [x] I agree that my contribution is licensed under this project's license (**GNU GPL v3.0 or later**), and I have the right to contribute it. 🤖 Generated with [Claude Code](https://claude.com/claude-code) https://claude.ai/code/session_01E14m6SuuY6i1vASFeGDBeY
wtclaude added 1 commit 2026-09-27 08:46:11 +00:00
PLAN_REDESIGNS.md plans PLAN_FIXES §6 step 3 in detail, before any code:
the permission manager, the event step editor and kit weekend, zones and
domes, map marker types, the 23 title conditions, and NPCs. Checked on
both rigs first: the public owner lookup for permissions, the mission
hooks both frameworks already raise, and ZoneDomes' null-player throw.
Eleven questions for the org lead (§10) become D188 onward.

Refs RunicGateway/Module-Rust#21

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01E14m6SuuY6i1vASFeGDBeY
wtclaude added 1 commit 2026-09-27 08:56:51 +00:00
Groups are per server unless an admin shares them (D189); an in-game
change affects that server only, as an exception or a split (D190);
ZoneDomes stays, made safe by a domes helper (D194); presets are the
admins' own (D195); zone and reward messages get the popup choice
(D193); the NPC spike tries both routes (D197). The rest confirm the
plan: D188, D191, D192, D196, D198.

Refs RunicGateway/Module-Rust#21

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01E14m6SuuY6i1vASFeGDBeY
wtclaude changed title from docs(rust): plan the six step-3 redesigns in one document to docs(rust): plan the six step-3 redesigns, and D188-D198 2026-09-27 08:57:05 +00:00
whitlocktech merged commit a9981f59bc into main 2026-09-27 08:58:55 +00:00
whitlocktech deleted branch docs/rust-step3-plan 2026-09-27 08:58:55 +00:00
Sign in to join this conversation.
No description provided.