docs(rust): the last fixes' docs (N1 N2 W20 W22 W23) and stage 4's core docs

Stage 5 of PLAN_LAST_FIXES (docs#366).

- OPERATING.md: a RaidableBases section. Change its config with a
  restart, never a reload (N2); switching to the free edition rewrites
  a paid pack's profiles (N1).
- PLAN_REDESIGNS 14.3.4: no manual retry for Dangerous Treasures (Q39,
  W20); 11.4: which hook rbevent setowner raises (W23); 9.1 status.
- PLAYER_WALK: rows 2.2, 2.8 and 2.9, Before you start item 8 (BetterChat
  and the four title rules), Carbon's share trimmed to 2.11 (W22, W23).
- PROTOCOL: 20.5 world.error already-out (W3), 20.12 the rollback's log
  is RaidableBases' own (W9) and setowner's two hooks (W23).
- Core, from website#219: MODULE_SYSTEM 2.5 and MODULE_API 4.2 (one
  module at boot, W19), MODULE_API and EVENTS L (a resource's until read
  at reconcile, W1), EVENTS D/I/K and BACKEND_DESIGN (a draft's dry run
  carried by fingerprint, W5), EVENTS observability (W2's words).
- PLAN_LAST_FIXES: status, Q37-Q40 answers, 7 updated, 8 what was built.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01E14m6SuuY6i1vASFeGDBeY
This commit is contained in:
2026-10-22 01:36:57 -05:00
parent 27dd1f8d80
commit 20518ca816
9 changed files with 177 additions and 39 deletions

View File

@@ -14,8 +14,8 @@ raised D335–D336 (§11.2.1). Economics was built on 2026-10-12 too (§11.2.4).
D342–D346), planned and built the same day. On 2026-10-14 RaidableBases was deferred until the current paid copy arrives (D347), with both editions to be supported (D348, §11.4.2). The same day the org lead added Rust's own world events to the base module (§13, D349) and six more first-class optional plugins (§14, D350–D352), to be tested together in one phase before their integration plan. Their questions were answered the same day (D353–D359, the end walk now waiting for RaidableBases), and Steam sign-in stays on the website's plan, linked as §15 (D360). **The §14.2 test phase ran the same day on both rigs (§14.2.1)**: the org lead ruled D361–D362 during it and answered its Q19–Q25 the same day (D363–D369). On 2026-10-16 the org lead added console commands as event steps and rewards (§16, D382–D384), to be built before RaidableBases; **they were built the same day (§16.10)**, with D385. The same day the paid RaidableBases copy arrived; **its spike ran on both rigs (§11.4.2)**, with D386 and four questions, Q33–Q36, answered the same day (D387–D390). **§11.4 was built the same day (§11.4.6)**, with D391, core's dry-run advice. On 2026-10-19 the org lead answered Steam sign-in's questions (D392–D396, §15), and it is built on the website's `edge` to join the cutover. **Every item left is built, tested and PR'd first; every walk —
theirs and the ones still owed by §3 and §5 — happens together at the end (D331, §9).** **The end walk's rows
that need no player ran on 2026-10-16 and 2026-10-19, and all of them are done (§9.1)**: W1–W20 and N1 found, W4
and W19 the real ones. **The in-game pass ran on 2026-10-21** and found W21–W23 and N2; every fix left is listed,
in building order, in [`PLAN_LAST_FIXES.md`](PLAN_LAST_FIXES.md).
and W19 the real ones. **The in-game pass ran on 2026-10-21** and found W21–W23 and N2. **All of them were fixed
by 2026-10-22** ([`PLAN_LAST_FIXES.md`](PLAN_LAST_FIXES.md)); the protocol 14 release and the cutover come next.
This is a companion to [`PLAN_FIXES.md`](PLAN_FIXES.md) and [`PLAN.md`](PLAN.md). Where they disagree, this
document is later and wins. Its decisions continue PLAN_FIXES' numbering at **D188**.
@@ -986,8 +986,8 @@ lead, 2026-10-19).**
- **§5.7 and §3.4** passed in RunicNPC's 9d (stand-ins on 2026-10-07, the org lead in game on 2026-10-09), so
they are not walked again.
**Found** (none fixed yet; each waits for the org lead; the whole list, with the in-game pass's W21–W23 and N2, is
[`PLAN_LAST_FIXES.md`](PLAN_LAST_FIXES.md)):
**Found** (all fixed by 2026-10-22, in [`PLAN_LAST_FIXES.md`](PLAN_LAST_FIXES.md)'s stages 1–5, which also list the
in-game pass's W21–W23 and N2 and the PR that fixed each):
| # | Where | What |
|---|---|---|
@@ -1189,7 +1189,7 @@ The org lead answered the phase's Q19–Q25 on 2026-10-14:
|---|---|---|---|
| **D363** | **Carbon's console route (Q19): watch Carbon's updates and keep an issue open in Rust-Plugins so it is not forgotten** ([Rust-Plugins#34](https://gitea.whitlocktech.com/RunicGateway/Rust-Plugins/issues/34)). No workaround is built for now; each new Carbon production build is re-tested. | Running commands through Carbon's `CommandManager` by reflection now. | 14.2.1 |
| **D364** | **A missing NpcSpawn is reported and refused (Q20):** the hello reports NpcSpawn beside Guarded Crate, the site refuses a guarded-crate step without it and says why, and the operator docs say what NpcSpawn does on load. | Documenting it only. | 14.2.1 |
| **D365** | **Dangerous Treasures' warm-up (Q21):** a step that fails because DT is not ready says so (*"Dangerous Treasures is not ready yet"*), retries once on its own after ten minutes, **and offers staff a manual retry** on the run. | Failing with DT's own text; the bridge pre-warming DT at boot. | 14.2.1 |
| **D365** | **Dangerous Treasures' warm-up (Q21):** a step that fails because DT is not ready says so (*"Dangerous Treasures is not ready yet"*), retries once on its own after ten minutes, **and offers staff a manual retry** on the run. *(The manual retry was dropped on 2026-10-21, Q39: core retries only a failed step, and the automatic retry is enough. §14.3.4.)* | Failing with DT's own text; the bridge pre-warming DT at boot. | 14.2.1 |
| **D366** | **One Bradley event, two places (Q22):** `bradley.destroyed` carries `where: launch_site | road`, and both count toward *Tankbreaker*. | Two separate events; Launch Site only. | 14.2.1, 13 |
| **D367** | **The newer events join §13 (Q23):** the satellite crash, the Deep Sea opening and closing, and the ghost ship's crate (a fourth crate location) are feed events and triggers. **The F-15 flyover is not an event; it can be added to an event as decoration**, a step that calls the flyover (D354). | The F-15 as a feed event or trigger. | 14.2.1, 13 |
| **D368** | **TruePVE in the zone step (Q24):** a *"no PvP protection in this zone"* checkbox (`exclude`), plus an optional ruleset name typed by staff, which the bridge validates by `AddOrUpdateMapping`'s own `false`. | Checkbox only; reading TruePVE's config file. | 14.2.1, 3 |
@@ -1865,6 +1865,10 @@ still there. It is private and not a `[HookMethod]`, but **`Call` reaches it on
despawn) and `OnRaidableBasePurchased` (8 arguments, the same without the load time) come only from
`TrySetPayLock`. That runs when a player buys a base, or when an admin runs
`rbevent setowner <player> [lockout]`. `OnRaidableBaseUnlocked` (8 arguments) is its undoing.
**Which of the two it raises** follows `paylock = !args.Contains("lockout")`: a purchase and the plain
`rbevent setowner <player>` raise `OnRaidableBasePurchased`, and only `rbevent setowner <player> lockout`
raises `OnRaidableBaseLocked`. *(Corrected 2026-10-22: this read as if the plain command locked. The end
walk's in-game pass showed it reads as "bought", [PLAN_LAST_FIXES.md](PLAN_LAST_FIXES.md) W23.)*
- **Locking to the first attacker raises no hook**, and neither does a **lockout** (the per-player cooldown
after a raid, kept in the plugin's own data). So D202's "the feed carries lockouts" still has nothing to
listen to (Q36).
@@ -2984,9 +2988,11 @@ both go when the zone lasts out; cargo's ring for the ship's life; one of our zo
verify where DT is absent or `console.plugins` is false, naming Rust-Plugins#34 for the second.
- **D365.** `dt-not-ready` is reported as *"Dangerous Treasures is not ready yet"*, and the step answers
`{ ok: false, retry: true, retryAfterMs: 600000 }`: **core's new per-failure retry delay (D371, §14.3.13)**, so
the run tries once more ten minutes later. `dt-no-spot` retries on core's ordinary 60 s. The manual retry is
core's own: the step's `on_failure` pauses the run, and staff press **Retry** on the paused step
([EVENTS.md](../../website/EVENTS.md) §I), which re-sends the same key.
the run tries once more ten minutes later. `dt-no-spot` retries on core's ordinary 60 s. **There is no manual
retry** (Q39, 2026-10-21). Core's **Retry** ([EVENTS.md](../../website/EVENTS.md) §I) is for a step that has
failed, and a step waiting out `retryAfterMs` is still pending ("a pending step cannot be retried", even with
the run paused). It is not needed either: DT's warm-up is fifteen minutes, so the automatic retries succeed by
the third attempt (W20, found in the end walk).
- **Feed and triggers.** *"A Dangerous Treasures event started at K12"*; *"Alice won the treasure at K12"*;
ended is staff-only. `rust.dt.started` and `rust.dt.won` are triggers (§14.3.9).
- **A column and a title**, `treasureswon`, default *Treasure Hunter* (D375).
@@ -2996,7 +3002,7 @@ both go when the zone lasts out; cargo's ring for the ship's life; one of our zo
the column and category.
**Walk rows.** On Oxide: start each difficulty from a run; start one in the first minutes after a restart and
see *"not ready yet"*, the automatic retry and the manual retry; win one and see the line, the column and the title.
see *"not ready yet"* and the automatic retry; win one and see the line, the column and the title.
On Carbon: the step refused with Rust-Plugins#34 (until D363 clears).
> **Built on 2026-10-15** (§14.3.18), specified in PROTOCOL.md §20.8. The key's join, how a start that opened