docs(modules): phase 8 as built, and the rig that finally put the sidecar where the design says it lives
Three documents: * `modules/rust/PLAN.md` §22 — the phase as built. Three org-lead decisions (D39-D41), what a player is told and what they are not, the refusals on a phone, and an honest limit the rig found: a rank can be live while every permission it carries resolves nowhere. * `rust-link/INSTALL_RIG.md` — new. The sidecar runs INSIDE the game container now, which is the shape R20 says the egg ships and which retires the firewall wall phases 6, 7 and 7b each stopped at. A container's 127.0.0.1 is genuinely private, so a stock plugin config and a stock sidecar find each other with nothing configured at all. Three things in the launcher are load-bearing and each is written down with the failure it prevents. * `rust-link/PLAYER_WALK.md` — the account walk on a phone, and a correction: 7b's "it needs a firewall rule on a development machine" is no longer true. `android/PLAN.md` gains M15. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01PMH6bw1jXMgbyF3ZWGEzSM
This commit is contained in:
@@ -185,8 +185,13 @@ live Oxide rig**, where `rg.config` answers
|
||||
|
||||
**What is left is the sentence the phase exists for: a setting changed on the website takes effect
|
||||
in the running game.** It needs the sidecar and the game server on **one host**, because the game
|
||||
link is loopback by design (D2) — on the Pterodactyl rigs that is phase 18's egg, and on a
|
||||
development machine it is a firewall rule for the port the plugin dials.
|
||||
link is loopback by design (D2).
|
||||
|
||||
**Since 2026-09-22 the rigs have that**, and it is no longer a firewall rule on anybody's
|
||||
development machine: the sidecar runs **inside the game container** on the Pterodactyl rigs, which
|
||||
is the shape phase 18's egg ships. The recipe is in [`INSTALL_RIG.md`](INSTALL_RIG.md); a stock
|
||||
plugin config (`127.0.0.1:7799`) and a stock sidecar need no configuration at all to find each
|
||||
other, which is the whole point of putting them in one container.
|
||||
|
||||
| # | Do this | You should see |
|
||||
|---|---|---|
|
||||
@@ -215,3 +220,23 @@ this phase has two specific things to confirm rather than assume:
|
||||
**What counts as a pass:** a setting typed on the website changes what the running game does; a
|
||||
deliberately broken config leaves the plugin loaded and the operator holding the reason; and no file
|
||||
the save did not touch differs by a single byte.
|
||||
|
||||
## The account walk on a phone (phase 8, Android leg B)
|
||||
|
||||
Added 2026-09-22. The app's half was walked on an emulator against a core with the module installed
|
||||
and a **live** rig behind it — the drawer row appearing only for a signed-in player on a site that
|
||||
runs the module, both reads, a refused code rendering beside the button, the entitlement list with
|
||||
its per-server marks, and a release. What no emulator can produce is the code itself, so this is the
|
||||
same three minutes as the identity walk above, done on the phone instead of in a browser.
|
||||
|
||||
| # | Do this | You should see |
|
||||
|---|---|---|
|
||||
| 1 | **In game, type `/link`.** On the phone, open the drawer → *My Rust account*, type the code and press *Link account* | The account appears with the name the game knows you by, when it was linked and which server minted the code |
|
||||
| 2 | **Press it again with the same code** | *"That code is unknown or has expired."* Beside the button, not at the top of the screen |
|
||||
| 3 | **Turn the site off and try a fresh code** | *"A server could not be reached… your code is still good — try again in a minute."* It must NOT tell you to get a new code: you would get it from the same unreachable server |
|
||||
| 4 | **Have an operator grant you something on the website, then pull down / reopen the screen** | It appears under *What you can do in game*, marked **waiting** until a sync lands it and **has it** afterwards. The two states are a word as well as a colour |
|
||||
| 5 | **Press *Unlink*** | The row goes, and every entitlement returns to *waiting* on the next read — the site still holds them, and they now reach nobody |
|
||||
| 6 | **Sign out** | The row is gone from the drawer. On a site with no Rust module it is never there at all, whoever is signed in |
|
||||
|
||||
**What counts as a pass:** a player links an account from the phone without touching a browser, and
|
||||
the screen never claims an entitlement is in the game when the site has not confirmed it there.
|
||||
|
||||
Reference in New Issue
Block a user