From 0319f6b26e437dd0a22925ed11ccb265c63daaf3 Mon Sep 17 00:00:00 2001 From: wtclaude Date: Sat, 26 Sep 2026 16:34:54 -0500 Subject: [PATCH] =?UTF-8?q?docs(rust):=20plan=20fixes=20=E2=80=94=20D175?= =?UTF-8?q?=20titles=20are=20defaults=20admins=20can=20replace?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The twenty-three title names in §4.6 are the module's defaults. An admin can set their own title per category, once for the site, and it supersedes the default on every server; clearing it restores the default. A rule's own text still wins over both. §4.6 describes the three layers on top of phase 17's rust_title_rules (stat grows from three values to the twenty-three categories). Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01E14m6SuuY6i1vASFeGDBeY --- modules/rust/PLAN.md | 4 ++-- modules/rust/PLAN_FIXES.md | 27 +++++++++++++++++++++++---- modules/rust/README.md | 2 +- 3 files changed, 26 insertions(+), 7 deletions(-) diff --git a/modules/rust/PLAN.md b/modules/rust/PLAN.md index 2aed1c2..87851aa 100644 --- a/modules/rust/PLAN.md +++ b/modules/rust/PLAN.md @@ -1,7 +1,7 @@ # `module-rust` — the plan **Before the Module-Rust cutover (phase 19):** the first player walk's fixes and the org lead's -decisions from it (D159–D174) are planned in [`PLAN_FIXES.md`](PLAN_FIXES.md), 2026-09-26. +decisions from it (D159–D175) are planned in [`PLAN_FIXES.md`](PLAN_FIXES.md), 2026-09-26. **Status:** phases 0 and 1 done, 2026-09-15. **Twenty-two decisions of record, no open questions.** Audited against the whole contract, not just the game-facing chapters (§7); the event and engagement catalogues are §9 and §10; §11 is a second pass over `MODULE_API.md` @@ -6989,7 +6989,7 @@ line, `confirms it connected.` (installer#34). The first walk of [`PLAYER_WALK.md`][pw] with a real player (the Oxide pass, org lead in game) found fifteen places where the bridge or the site does something other than this plan and [`PROTOCOL.md`][protocol] say, and the -org lead took sixteen decisions on it (D159–D174) — among them **D160, which reverses D31**: the site now owns every +org lead took seventeen decisions on it (D159–D175) — among them **D160, which reverses D31**: the site now owns every permission and group, not only those it authored. They are planned in their own document, [`PLAN_FIXES.md`](PLAN_FIXES.md), so this one stays a record of the phases as built. diff --git a/modules/rust/PLAN_FIXES.md b/modules/rust/PLAN_FIXES.md index 514798d..d55c895 100644 --- a/modules/rust/PLAN_FIXES.md +++ b/modules/rust/PLAN_FIXES.md @@ -1,7 +1,7 @@ # `module-rust` — plan fixes **Status:** plan, awaiting the org lead's approval, 2026-09-26; its four open questions were answered the same -day (D169–D174). **Everything in it — fixes and redesigns alike — lands before Module-Rust's cutover +day (D169–D175). **Everything in it — fixes and redesigns alike — lands before Module-Rust's cutover (phase 19, [`PLAN.md`](PLAN.md) §34, D145; D169).** Everything here comes from the first walk of [`PLAYER_WALK.md`](../../rust-link/PLAYER_WALK.md) with a real player in the game — the Oxide pass, walked by the org lead on the `rust-oxide` rig with every frame checked on the console, the sidecar and the site's @@ -58,6 +58,7 @@ Taken by the org lead during and straight after the walk. | **D172** | **Chat titles use all twenty-three conditions the org lead listed, under new names** (§4.6). Rejected: a first subset. | | **D173** | **"Quests completed" counts Rust's own missions** — the ones the game's NPCs already hand out on the map. No quest plugin. How the bridge detects a completed mission is settled by a spike on the rig (§4.6), because uMod's catalogue names no mission hook and [`CARBON.md`](CARBON.md) lists none among Carbon's own. | | **D174** | **The title rules §4.6 recommended are adopted:** the two kill-distance titles are *best* columns (the longest single kill), not sums; a weapon-class kill counts any kill the player is credited with (players, NPCs, animals), from weapon lists kept in one place; the APC and the helicopter credit the killing blow; healing counts only other players. | +| **D175** | **The titles in §4.6 are the module's defaults, not fixed names.** An admin can write their own title for any category, and it supersedes the default everywhere that category is used; clearing it brings the default back. A rule may still carry its own text, which wins over both. | ## 2. Fixes @@ -262,8 +263,8 @@ monument data. ### 4.6 Chat titles: twenty-three conditions (D172) -All of the conditions the org lead listed, each under a new title. The titles are proposals; the conditions are -decided. Every hook below is in uMod's catalogue ([`HOOKS.md`](HOOKS.md)); each is declared `void`, as the read +All of the conditions the org lead listed, each with a new default title. The conditions are decided; the titles +are **defaults an admin can replace** (D175). Every hook below is in uMod's catalogue ([`HOOKS.md`](HOOKS.md)); each is declared `void`, as the read path requires (PROTOCOL.md §8.7), and each must be checked on Carbon, whose catalogue renames some. | Condition | Title | Where the count comes from | @@ -292,6 +293,23 @@ path requires (PROTOCOL.md §8.7), and each must be checked on Carbon, whose cat | Explosives thrown | **Demolitionist** | `OnExplosiveThrown` and `OnExplosiveDropped` | | Quests completed | **Wayfarer** | Rust's own NPC missions (D173) — detection settled by the spike below | +**Defaults, and the admin's own (D175).** Phase 17 already has the machinery: a title rule, per server, ranks +one stat for the current wipe and gives its top N a title (`rust_title_rules`: `stat`, `top_n`, `text` of up to 24 +characters with `[ ] < > { }` stripped, `color`, `position`). Today `stat` is one of `kills`, `npckills` and +`playtime`; the twenty-three categories become more values of it. What changes is where a rule's text comes from, +in three layers, the first that is set winning: + +1. **The rule's own text**, if the admin typed one for that rule. +2. **The admin's title for the category** — set once for the site, on the titles screen, and used by every rule + of that category on every server that has not typed its own. +3. **The module's default** from the table above, shipped with the module. + +So an admin who renames Beastbane to "Hunter" does it once, and every animal-kill rule shows "Hunter" from the next +push; clearing it brings Beastbane back. The same 24-character limit and markup stripping apply to an admin's +title as to a rule's. New rules open with the category's current title filled in, so what the admin sees is what +the players will see. Nothing is stored per player — titles are still computed from the standings at each push +(D135), so a rename is never stale. + The rules, adopted (D174): - **Two kinds of column.** Every existing leaderboard column is a sum; the two distance titles are a *best* (the @@ -392,7 +410,8 @@ After step 2 of §6, on both frameworks: ## 9. Answered, and what stays open The four questions this plan first asked were answered on 2026-09-26: the gate (D169), F14 (D170), Steam sign-in -(D171) and the title conditions (D172) — then quests (D173) and the title rules (D174). +(D171) and the title conditions (D172) — then quests (D173), the title rules (D174) and admin-owned title names +(D175). Left for the detailed plans of §6 step 3, none of them blocking the fixes: diff --git a/modules/rust/README.md b/modules/rust/README.md index 7466998..23c8af5 100644 --- a/modules/rust/README.md +++ b/modules/rust/README.md @@ -24,7 +24,7 @@ differ. for actually building `module-rust`. Everything else in this directory is copied from uMod; those two are written by this project and are where the phases, the settled decisions and the local test rig are recorded. [`PLAN_FIXES.md`](PLAN_FIXES.md) is its companion: the first player walk's fixes and decisions -D159–D174, all to land before the Module-Rust cutover. +D159–D175, all to land before the Module-Rust cutover. > **This is a mirror, not a specification we own.** uMod is upstream and wins any disagreement; the > point of copying it is availability and grep-ability, not authority. Nothing here may be cited as a