From c71279330a0ce707f9bb38b94e05d7085b98adc6 Mon Sep 17 00:00:00 2001 From: wtclaude Date: Mon, 19 Oct 2026 11:19:49 -0500 Subject: [PATCH] =?UTF-8?q?docs(rust):=20record=20the=20end=20walk=20so=20?= =?UTF-8?q?far=20(PLAN=5FREDESIGNS=20=C2=A79.1);=20runicgateway.com=20beco?= =?UTF-8?q?mes=20phase=2020?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit PLAN_REDESIGNS gains §9.1: the three no-player passes of the end walk (2026-10-16 to 2026-10-19), what passed, findings W1-W14 and N1 (W4 the one real bug), and what is still owed with and without a player. A row that has passed is not walked again (the org lead, 2026-10-19). PLAN.md: runicgateway.com moves out of phase 19 into a new phase 20, a game-agnostic rewrite that adds the Rust module (org lead, 2026-10-19). Phase 19 notes Module-Rust's early cutover in 9e. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01E14m6SuuY6i1vASFeGDBeY --- modules/rust/PLAN.md | 7 +-- modules/rust/PLAN_REDESIGNS.md | 78 +++++++++++++++++++++++++++++++++- 2 files changed, 81 insertions(+), 4 deletions(-) diff --git a/modules/rust/PLAN.md b/modules/rust/PLAN.md index d2f93cb..fb1e280 100644 --- a/modules/rust/PLAN.md +++ b/modules/rust/PLAN.md @@ -994,7 +994,7 @@ is now a reinstall rather than a sequence of manual steps that can half-succeed. ## 5. The phases -**Twenty phases, roughly doubled from the first draft** — the contract audit in §7 is why, and the +**Twenty phases, roughly doubled from the first draft**, and a twenty-first (20, `runicgateway.com`) added on 2026-10-19 — the contract audit in §7 is why, and the honest reading is that the first list was a game-bridge plan with a website module bolted on, where the kit treats the module as the bulk of the work. @@ -1035,7 +1035,8 @@ Each phase ends with its findings written down, as every workstream here does. | 16 | **Discord slash commands** (R11). A small read-only set, every refusal deferred ephemeral. ✅ **Built and walked 2026-09-25 — plan in §32 (D126–D132), as built and findings in §32.5–32.7 (D133).** Five commands. Any answer narrower than public goes to the caller alone (D127), which is the reverse of the case the criterion names and the one core does not cover. Plus an operator-set **next wipe** (a rule and a one-off date) shown on the web, in the app and by `/wipe` | Module-Rust + Android-app + docs | A refusal does not go public in the channel, **and neither does a permitted answer narrower than public** | | 17 | **Optional mod integrations** (R15). ✅ **Built and walked 2026-09-25 — plan in §33 (D134–D143), as built and findings in §33.5–§33.7 (D144).** **BetterChat** three ways: leaderboard titles through `API_RegisterThirdPartyTitle` from operator rules, shown on the web and in the app too; all twelve chat fields on a site-authored group with R2's drift posture; and that style as the voice of news and event lines. **PopupNotifications** becomes optional and a delivery choice. Protocol 12. ~~The uMod **Clans** adapter~~ is dropped (D134): its read API exists after all, and a per-server clan source is a candidate future phase | Rust-Plugins + Rust-Link + Module-Rust + Android-app + docs | A server missing every optional mod still runs the module, Teams included | | 18 | **The installer** (R4) **and the Pterodactyl egg** (R20). 📐 **Plan of record in §34 (D145–D153), 2026-09-25**: Rust-Link and Rust-Plugins cut over and release here (D145), bundle schema 2 for both games beside schema 1 (D146, D147), named instances (D148), a Windows service (D149), the server id from the environment (D150). *As first written:* the two halves of "how the shard side reaches an operator", built together so one story is not told twice. `--game servuo\|rust`, the bundle payload as a variant, a **framework** prerequisite check in `doctor` (which one, not whether Oxide — R19), the protocol pairing refusal carried over; the egg derived from "Rust Autowipe" with the sidecar inside the game container, a second allocation for `[web].bind`, **the sidecar configured from egg variables** (R22), the sidecar store held out of `REMOVE_FILES`, and its install script fetching the same pinned pair the installer resolves | installer + Rust-Link + Rust-Plugins + docs | An operator sets a Rust server up with the released binary and nothing hand-copied; **and** a second operator imports the egg, deploys, and reaches the same place — on either framework | -| 19 | **Docs, kit feedback, cutover.** `docs/`; **`.profile`** (three repos were added); **`runicgateway.com`** (a second game is a headline change, and Pterodactyl is a hosting claim the site can now make); the Integration-kit question R2 raised; and whether the kit owes a reader anything about **supporting two mod frameworks at once** (R19) — a shape it has no chapter for either | docs + Integration-kit + .profile + runicgateway.com | `docs/` describes what shipped, the front door names the new repos, and R2's missing chapter is answered either way | +| 19 | **Docs, kit feedback, cutover.** `docs/`; **`.profile`** (three repos were added); the Integration-kit question R2 raised; and whether the kit owes a reader anything about **supporting two mod frameworks at once** (R19) — a shape it has no chapter for either. Module-Rust's own cutover went out early, with RunicNPC's stage 9e on 2026-10-09 (v0.4.0); protocol 14's release follows PLAN_REDESIGNS' end walk (§9). `runicgateway.com` moved to phase 20 (2026-10-19) | docs + Integration-kit + .profile | `docs/` describes what shipped, the front door names the new repos, and R2's missing chapter is answered either way | +| 20 | **`runicgateway.com`, game-agnostic** (added by the org lead, 2026-10-19). The platform's own site was last changed on 2026-09-15 and reads as a UO product: it is rewritten to present the platform as game-agnostic, with Ultima Online and Rust as its two game modules, and to add the Rust module — what it does on Oxide and on Carbon, the Pterodactyl egg (a hosting claim the site can now make), RunicNPC, and the docs journey for connecting a Rust server — with `platform.json`'s release facts brought up to date (they moved at the 9e cutover). Planned in runicgateway.com's own `PLAN.md` and approved before any code; written after phase 19 so it describes protocol 14 as released | runicgateway.com + docs | A reader new to the project learns from the site that it runs more than one game, and can set a Rust server up from the site's docs alone | ### Why the lease comes before the reward action @@ -1178,7 +1179,7 @@ working at once with almost nothing in them, so that afterwards you break exactl | Sidecar rpc correlation | implicit | 1, stated | | Asset bridge (ch. 3 §2b) | **no** | 14 — **map image only** (R9) | | `.profile` landing page | **no** | 19 | -| `runicgateway.com` | **no** | 19 | +| `runicgateway.com` | **no** | 20 (was 19 until 2026-10-19) | | Android app | **no** | 5, 8, 11, 15 (R10) | | `docs/` | yes | every phase, plus 19 | diff --git a/modules/rust/PLAN_REDESIGNS.md b/modules/rust/PLAN_REDESIGNS.md index 06b08e2..b85a834 100644 --- a/modules/rust/PLAN_REDESIGNS.md +++ b/modules/rust/PLAN_REDESIGNS.md @@ -12,7 +12,8 @@ chose neither route: Runic Gateway writes its own NPC plugin, RunicNPC, planned resumed with §2 the same day (D331–D334); §2 was built on 2026-10-12, and §11's Economics spike the same day raised D335–D336 (§11.2.1). Economics was built on 2026-10-12 too (§11.2.4). The Backpacks spike followed and raised D337–D339 (§11.3.1), and Backpacks was built the same day (D340, D341, §11.3.4). The org lead then added permission rewards (§12, 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. **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).** +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 (§9.1)**: W1–W14 and N1 found, W4 the one real bug. 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**. @@ -945,6 +946,81 @@ of §5.7 and §3.4; §16.9; PLAN_FIXES §8's re-walk, including the Carbon pass is fixed, protocol 14 is released, and the cutover follows. **The walk waits for RaidableBases (D359)**, so it runs only once §11.4 is built from the current paid copy (D347). +### 9.1 The end walk so far (2026-10-16 to 2026-10-19) + +The org lead started the rows a server can prove without a player on 2026-10-16, before RaidableBases arrived, +and the rest followed once §11.4 merged. Three passes, all on Rust 25902425, Oxide 2.0.7830 and Carbon 2.0.262 +(the latest of each when checked), with both rigs on `edge`'s bridge and helpers and a protocol 14 sidecar, against +a walk site at website `main` (MODULE_API 1.16.0) with Module-Rust `edge`. Players were stand-ins with Steam-shaped +ids acting through Rust's own code, as in RunicNPC's 9d. **A row that has passed is not walked again (the org +lead, 2026-10-19).** + +**Passed:** + +- **§2.7:** a kit weekend from the template on each rig, the warning when a phase's advance is removed, Start + asking about a draft edited after publishing, a boolean lease shown as a toggle. +- **§16.9:** both steps off until switched on; unticked refused; replies in the run log; teardown at the end and + at a cancel; a misspelled command (`unknown-command`, nothing after it run); D385's abort with the teardown run + once; a plugin's command on Carbon (§14.3.14 point 7); a reward by command skipping an offline player by name. +- **§14.3.2 TruePVE:** every row, on both rigs, the leftover mapping on Carbon included. +- **§13:** every call, the credit block and each credit rule's count, a crate hacked at each location + (*Safecracker*), a drop looted once (*Scavenger*), the signed-out lines (Oxide). **§14.3.12:** a start on a + Bradley, ignored while running and inside the cooldown, started again after it. +- **§12.9:** the picker, lend and give, the unloaded plugin refused by name (Oxide); a grant made while its plugin + was out landing on the reload (PLAN_FIXES F8). +- **§11.2.3 Economics** (Oxide): the admin page, deposit, withdraw beyond the balance refused, set, the activity + rows, the step, the richest column, `ecowipe`. **§11.3.3 Backpacks** (Oxide): a never-used backpack, *Bigger + backpack* lent and taken back, the refusal with Backpacks out. +- **§11.4 RaidableBases:** the paid edition on both rigs — the pickers, D391's advice, a pick with every setting, + a spot, a profile, `rb-busy`, teardown taking only the run's bases, expiry, Carbon's unload, the profile editor + good and broken, signed out, the audience switch; the never-started expiry at fifteen minutes; the free edition + with the helper (pick, profile, spot) and without it (`rbevent`); the paid edition without the helper. +- **§14.3.3 Dynamic PVP:** rings for the cargo ship, Bradley, airdrop and helicopter, a hotload, and its ring + beside one of our zones with neither touched. **§14.3.4 Dangerous Treasures:** not ready, the automatic retry, + a start on both rigs. **§14.3.5 Guarded Crate:** at a monument and a point, kept after a cancel, `gcrate stop`, + NpcSpawn out refused, no airdrop line. **§14.3.6 ZLevels:** `vip2` lent and taken back. +- **PLAN_FIXES §8:** F8, F9, F13, F14 and F15 here; F1, F3, F5, F6 and F12 with the org lead in game on both rigs + on 2026-09-27. +- **§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): + +| # | Where | What | +|---|---|---| +| W1 | core | On a reconnect the run log shows `resource.orphaned` five seconds before `resource.expired`; the end state is right. | +| W2 | core | A running phase whose steps are done reads "Phase p1 has not started" while it waits to advance. | +| W3 | Module-Rust | Calling the Travelling Vendor while one is out answers "called 1" and spawns nothing. | +| **W4** | Module-Rust | **The feed re-credits past helicopter and Bradley lines with the server's current credit rule; the counts keep the old one.** The rule should be stamped at ingest. The one real bug. | +| W5 | core | A dry run that passed on a draft does not count for the version published from it, so trigger starts stay `unverified`. | +| W6 | Module-Rust | "A locked crate is being hacked dropped by a Chinook" — word order. | +| W7, W11 | Module-Rust | The "is it loaded" refusals read the 30-second status poll, so they lag about a minute after a restart or unload. | +| W8 | Module-Rust | A RaidableBases profile write's audit row names the plugin "@data". | +| W9 | bridge | A rolled-back profile's log is the server log's tail, not RaidableBases' error. | +| W10 | Module-Rust | The backpack sizes picker lists each size once per server. | +| W12 | bridge | `raid.ended` carries no id, run or key, though PROTOCOL says it does. | +| W13 | Module-Rust | A profile name on both servers shows the first server's difficulty. | +| W14 | Module-Rust | "…once the base opens. not the run's" — lower case after a full stop. | +| N1 | docs | Installing the free edition over a paid pack rewrites the pack's profiles and drops their bases; worth a line for operators. | + +NightVision 2.4.1 does not compile on Rust 25902425, so §12.9's perk rows wait for a current copy from uMod. + +**Still owed, with the org lead in game:** a raid finished by a player (the feed, *Warlord*, the column), a +purchase and an admin lock, and a run's settings felt; Economics paying three, one offline, the popup on wake, +*Magnate*, a balance on the account page and in the app; Backpacks full and two-page, your own on the account page +and in the app, the extra page's items to the inventory and to the ground; §12.9's and D333's messages online and +on wake, and a permission already held kept; a reward by command online, to a name with spaces and a quote; a +helicopter crash long after the hit, and the last hit differing from the blow; a Dangerous Treasures chest won, +a Guarded Crate cleared, ZLevels' rate moving with `vip2`; whether a hand revive (hold E) counts as a heal; and +PLAN_FIXES §8's tail — the Carbon rows of the first player walk nothing has covered since, its row 8 and the map +walk with a second player, events step 7 with several players, and the phone walk. + +**Still owed, without a player** (the next pass): the Carbon halves of §11.2.3, §11.3.3, §12.9 and §13; paying +at the balance limit and a retry answered `repeat`; deleting a *for good* grant; a Module-uo event in the same +editor; Dangerous Treasures after a hotload and its manual retry; a Guarded Crate timing out, and its guards +killed by a RunicNPC NPC; Server settings' ZLevels line; §14.3.14's extra rows; and §16.9's retry after a lost +answer, if the sidecar inside the game container can be stopped mid-step. + ## 10. Decisions of record The plan asked eleven questions. The org lead answered them on 2026-09-27, the day it was written.