docs(rust): §3 walked on the rigs, and D212 (the full dome is the default)

PLAN_REDESIGNS §3.4: the rig rows as walked 2026-09-29 without a player,
the dome types, D212, and the in-game rows deferred to the later in-game walk.
PROTOCOL §19.11: dome type 0 when absent; walk status.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01E14m6SuuY6i1vASFeGDBeY
This commit is contained in:
2026-09-29 09:42:25 -05:00
parent 7f9026c9e7
commit 4056e5a14d
2 changed files with 60 additions and 5 deletions

View File

@@ -461,9 +461,59 @@ Built on `edge` as Rust-Plugins `feat/zones-domes`, Module-Rust `feat/zones-dome
- **The flag groups:** in `server/model/zones/zoneOptions.js`. `NoTp` and ZoneManager's `Custom1`–`5` - **The flag groups:** in `server/model/zones/zoneOptions.js`. `NoTp` and ZoneManager's `Custom1`–`5`
are under Other. are under Other.
**The walk is §3.3, not yet done.** The rigs' panel file API was down on 2026-09-29, so nothing could be **The default dome (D212).** ZoneDomes 2.0.2 has five types, and only **Standard** (type 0, Rust's shaded
installed. On the new `rust-oxide` it also needs ZoneManager, ZoneDomes, PopupNotifications and both `sphere.prefab`) is a whole dome: a dark, see-through sphere that each stacked copy makes darker. Red, Blue,
helpers installed first. The default dome type and stack are still to be chosen on the rig (§3.2). Green and Purple are the Twitch battle-royale spheres, which ZoneDomes itself says show only where they meet
terrain or an object, so they read as a ring at the zone's edge. **The org lead chose the full dome as the
default:** the step lists Standard first as "Full dome (shaded)", labels each colour for what it shows, and
a `dome` sent without a `type` is Standard. The default stack is still 1, until it is chosen by eye.
**Compiled on both rigs, and the rig rows walked, 2026-09-29** (no player; the "file API outage" that
morning was a Git Bash path-rewriting bug in the walk's own helper, not the rigs):
- **Both rigs:** the bridge and both helpers compiled and loaded (Oxide; Carbon with 0 failed plugins).
Both helpers reported `patched`, and the domes helper `ready`.
- **Hello (Oxide, read from the sidecar's board):**
- `zoneManager` carried all **69** flags of ZoneManager 3.1.14 (64 named and `Custom1`–`5`), with no zone
helper involved (D211).
- `integrations.zoneDomes` was `{ loaded, patched, ready }`.
- It was re-sent within a second each time ZoneDomes or a helper loaded or unloaded.
- **Refusals:** an unknown flag (`NoFlying`), a setting outside the allowlist (`rotation`) and radiation 900
were each refused `bad-option`, with the reason.
- **A full zone:** `nobuild, PvpGod, NoPlayerLoot`, radiation 5, safezone off, a popup enter/leave message and a
stacked dome.
- ZoneManager held exactly those flags and settings (read through a throwaway probe calling
`ZoneFieldList`).
- ZoneManager held no enter message of its own: the bridge says it (D193).
- The registry stored the flags as ZoneManager spells them.
- ZoneDomes' data file held the dome.
- **ZoneManager reload:** the zone came back ("1 re-created") with all its flags. The dome's data was
untouched.
- **ZoneDomes reload:** the helper re-patched and was ready again. The dome was redrawn from ZoneDomes' own
data.
- **Server restart:**
- The zone was re-created with its flags.
- On this boot the bridge's zones existed before ZoneDomes started, so ZoneDomes drew the dome itself,
and the bridge's restore added nothing.
- **Exactly 2 sphere entities for a stack of 2**, so the dome was not drawn twice.
- **The other order, forced:**
- The bridge was unloaded (ZoneManager erased the zone), then ZoneDomes reloaded and dropped the dome's
data.
- The bridge was loaded again: "domes after load: 1 put back", and again exactly 2 spheres. §0.5's
boot fault is handled whichever plugin starts first.
- **Teardown (`world.revert`):** the zone was erased, 0 spheres were left, and ZoneDomes' data was empty.
- **Expiry:** a 1-minute domed zone was erased at its deadline, and its dome went with it (0 spheres, data
empty).
- **Without the domes helper:** a dome was refused `dome-unavailable`, "RunicGatewayDomes.cs is not
installed beside the bridge…". Hello said `missing`, then `patched`/`ready` once the helper was loaded
again.
**Still to walk:**
- **The site half:** the presets page, and a step made from a preset.
- **The in-game rows, deferred by the org lead (2026-09-29) to the later in-game walk, with §5.7's:**
- The flags hold for a player without the exemption and not for one with it.
- The enter and leave messages arrive as chat and as a popup.
- The default stack is chosen by eye, in daylight and at night.
--- ---
@@ -964,3 +1014,4 @@ The §3 build raised two more, answered on 2026-09-29:
|---|---|---|---| |---|---|---|---|
| **D210** | **A zone's flags and settings are ticked on an Admin → Rust zone presets page**, and the zone step's Options field copies a preset's line when it is picked. Core is unchanged. | A list param type in core (MODULE_API) drawn as grouped checkboxes; a module-supplied step editor. | 3.4 | | **D210** | **A zone's flags and settings are ticked on an Admin → Rust zone presets page**, and the zone step's Options field copies a preset's line when it is picked. Core is unchanged. | A list param type in core (MODULE_API) drawn as grouped checkboxes; a module-supplied step editor. | 3.4 |
| **D211** | **The bridge reads ZoneManager's flag list** through its API call `ZoneFieldListRaw()` and sends it in hello. A server without the zone helper still offers every flag. | Keeping the read in the zone helper, with a name/radius/minutes-only mode without it. | 3.4 | | **D211** | **The bridge reads ZoneManager's flag list** through its API call `ZoneFieldListRaw()` and sends it in hello. A server without the zone helper still offers every flag. | Keeping the read in the zone helper, with a name/radius/minutes-only mode without it. | 3.4 |
| **D212** | **A zone's dome defaults to ZoneDomes' Standard type, the full shaded dome.** The coloured types show only where they meet the ground or a building, and the step says so. | A coloured default. | 3.4 |

View File

@@ -2281,7 +2281,8 @@ both, **`zonemanager.ignoreflag.nokits` belongs to ZoneManager**.
to chat**; the zone is not refused for it, because the moment the message is said can be days after the to chat**; the zone is not refused for it, because the moment the message is said can be days after the
step ran. **`format`** is the chat voice (§33.2 of PLAN.md), one `{message}`, used only for chat. step ran. **`format`** is the chat voice (§33.2 of PLAN.md), one `{message}`, used only for chat.
- **`dome`** asks ZoneDomes for a dome over the zone: `type` is ZoneDomes' own sphere type (0 Standard, - **`dome`** asks ZoneDomes for a dome over the zone: `type` is ZoneDomes' own sphere type (0 Standard,
1 Red, 2 Blue, 3 Green, 4 Purple) and `stack` 1–10 spheres (1 when absent). It is refused 1 Red, 2 Blue, 3 Green, 4 Purple; **0 when absent**, the one full dome, D212) and `stack` 1–10 spheres (1 when
absent). The coloured types show only where they meet terrain or a structure. It is refused
**`dome-unavailable`**, with which piece is missing, unless ZoneDomes is loaded and the domes helper has **`dome-unavailable`**, with which piece is missing, unless ZoneDomes is loaded and the domes helper has
patched it and seen ZoneDomes finish starting. A dome ZoneDomes does not make takes its zone with it: patched it and seen ZoneDomes finish starting. A dome ZoneDomes does not make takes its zone with it:
the zone is erased and the step refused. the zone is erased and the step refused.
@@ -2342,4 +2343,7 @@ several, or every server (D195, D210). The step's `options` field offers the pre
preset edited later changes no published event. The step checks the line and the dome against the server's preset edited later changes no published event. The step checks the line and the dome against the server's
last hello when it is saved and in a dry run; `bad-option` and `dome-unavailable` are permanent refusals. last hello when it is saved and in a dry run; `bad-option` and `dome-unavailable` are permanent refusals.
**Not yet walked on a rig.** Written 2026-09-29, when the panel's file API on both rigs was down. **Compiled on both rigs and walked without a player, 2026-09-29** (PLAN_REDESIGNS §3.4): every refusal,
ZoneManager and ZoneDomes reloads, a server restart and the forced opposite boot order (exactly one set of
spheres each time), revert and expiry removing the dome, and a dome refused without the helper. The
in-game rows (flags on a player, the messages) wait for the later in-game walk.