docs(website): the org lead's answers to the step-5 walk (DM27-DM29)

DM27 locks removing a Steam link on the demo (player route by demoLocks,
staff route in its handler); DM28 has seed:demo switch on the actions the
seeded events use; DM29 leaves SECRET_WORDS as is. The Chrome problem was
local to the walker's PC, and play-review is walked once the fixes land.

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-28 04:44:31 -05:00
parent 2d596c51d9
commit 598b439ec6

View File

@@ -71,7 +71,8 @@ routes in `module.json` (DM1, §3.2).
```json
"demoLocks": [
{ "method": "PUT", "path": "/admin/rust/servers/:id" },
{ "method": "DELETE", "path": "/admin/rust/servers/:id" }
{ "method": "DELETE", "path": "/admin/rust/servers/:id" },
{ "method": "DELETE", "path": "/player/rust/links/:steamId" }
]
```
@@ -118,6 +119,7 @@ so the server cannot tell which row in `GET /auth/me/sessions` is the caller's o
| --- | --- | --- |
| The link to the rig | `PUT`/`DELETE /admin/rust/servers/:id` | Repoint or delete the sidecar link; the site goes dark |
| The bridge's config, **read or written** | `GET`/`POST /admin/rust/config/:serverId/file`, `GET …/writes…` for the `RunicGateway` plugin's files, which are also left out of `GET …/files` | It holds the bridge's link to the sidecar and its credentials. Read, it would let someone talk to the sidecar directly over HTTP (DM14, §3.5) |
| Removing a Steam link (DM27) | `DELETE /player/rust/links/:steamId` (`demoLocks`), and staff's `DELETE /admin/users/:id/rust/links/:steamId`, which the module's handler refuses behind `ctx.demoMode` because it serves under core's users mount, where a module may not declare a lock | `demo-player`'s stand-in link is what its Rust pages, rewards and permission grants hang on; unlinked, the player tour is empty until the wipe |
**Settings stay open (DM2).** Theme, navigation and the other `PUT /admin/settings` values can be
changed and come back at the wipe, except the keys in the "Settings that reach a lock" row above.
@@ -366,7 +368,10 @@ current `rust-oxide`. **Done:** the org lead created the subuser and added the s
- creates the four accounts (§4), or resets them if they exist: password, role, active, 2FA off;
- sets the site live with registration disabled, plus any `settings` the fixture adds;
- writes the seeded site content: news posts, wiki pages, pages and the demo events. It does
this only on the first run against a database, so a re-run never duplicates it;
this only on the first run against a database, so a re-run never duplicates it. With the
events it switches on, in the events switchboard (EVENTS.md §K), every action their steps
use, uncapped. A fresh database starts every `change` and `irreversible` action switched
off, so without this the seeded events could not run (DM28);
- hands each installed module its `modules.<id>` section through the module's `onDemoSeed` hook
(DM15, `MODULE_API` 1.18.0). The Rust module writes its own server row, with the rig's sidecar URL
and token, and `demo-player`'s stand-in Steam link (DM6), and the default set's NPC faction
@@ -487,6 +492,9 @@ down.
| DM24 | (build, step 5) The module's demo code was on `edge` only, so no release could be installed. Cut over? | **Yes, now:** `Module-Rust` `edge` → `main` releases v0.6.0, the first with `protocol` in its install manifest |
| DM25 | (amendment, 2026-10-27) Uploads are locked, but an image pasted into rich text is saved as a `data:` URI inside the JSON body. Block it? | **Yes, on every write and for every `data:` URI.** Core refuses any write whose JSON body has a `data:` URI in any string, on any route, the same way the multipart rule needs no list (§3.3) |
| DM26 | (build, step 5, 2026-10-27) The restored rig is marked managed, so a fresh site adopts none of its NPC profiles and empties them on its first push; chat styles are never adopted. How does the default set bring them back? | **Seed them.** Module-Rust's `onDemoSeed` also takes `npcs` (factions, profiles) and `chat` (a style per group), written before the site's first sync (§7.1, §7.3). Patch release v0.6.1 |
| DM27 | (step-5 walk, W4, 2026-10-28) `demo-player` can remove its stand-in Steam link, and staff can remove it from Admin → Users. Lock it, or leave it to the wipe? | **Lock it, both ways.** The player's route through `demoLocks`; the staff route in its handler, because it serves under core's users mount (§3.3). Module-Rust patch release |
| DM28 | (step-5 walk, W1, 2026-10-28) The seeded events' actions start switched off on a fresh database, so they fail when run. Fix? | **Yes.** `seed:demo` switches on every action a seeded event uses, uncapped, with the events (§7.3). Core only, no `MODULE_API` change |
| DM29 | (step-5 walk, W2, 2026-10-28) `SECRET_WORDS` also hides harmless fields such as "Allow Master Key" and "TC Auth Only". Narrow it? | **No, leave it as is** |
DNS and HTTPS for `demo.runicgateway.com` come from an external reverse proxy, which the org lead is
setting up. The app sits behind it on plain HTTP; core already trusts one proxy hop for
@@ -595,16 +603,19 @@ through that proxy.
back as the default set has them, with all four NPCs alive. The site reseeded at 08:07 and the
rig was fully back at 08:17.
**Found by the walk, open:**
- **The seeded events cannot run.** A fresh database has every event action switched off, so
Server greeting, Treasure drop and Payday show as ready but fail when started ("not enabled on
this deployment"). An admin can switch the action on, and the wipe switches it off again.
**Found by the walk** (the org lead's answers, 2026-10-28):
- **The seeded events could not run.** A fresh database has every event action switched off, so
Server greeting, Treasure drop and Payday showed as ready but failed when started ("not
enabled on this deployment"). **Fixed (DM28):** the seed switches on the actions they use.
- **The credential check over-flags.** `SECRET_WORDS` matches words such as `key` and `auth`
inside longer names ("Allow Master Key", "TC Auth Only", a drone preset key), so on the demo
those harmless fields are hidden and read-only.
- **`play-review` was not walked**: its password is only in the host's `.env`.
- `demo-player` can unlink its stand-in Steam link (the player's Rust page). It is not locked,
and the wipe puts it back.
those harmless fields are hidden and read-only. **Left as is (DM29).**
- **`play-review` was not walked**: its password is only in the host's `.env`. It is read on the
host and walked after the two fixes land.
- `demo-player` could remove its stand-in Steam link, and staff could remove it for them.
**Locked (DM27).**
- The public URL did not open in Chrome on the walker's PC, while curl and the emulator reached
it; the org lead opened it through the proxy without trouble, so it is local to that PC.
- Nothing seeds the moderation queues, so the moderator tour shows empty lists.
6. **Play**: the sign-in details in the Play Console point at `play-review`;
runicgateway.com `/beta` publishes the logins.