docs(modules): phase 8 as built, and the rig that put the sidecar where the design says it lives #261

Merged
whitlocktech merged 1 commits from docs/rust-phase-8 into main 2026-09-23 01:51:54 +00:00
Member

Three documents for module-rust phase 8 (Module-Rust#10, Android-app#48), plus the Android milestone.

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 (vip landed in Oxide's store; kits.vip came back unresolved because Kits is not installed there).

rust-link/INSTALL_RIG.md — new, and the reason this phase reads differently from the three before it. The sidecar now runs inside the game container on the Pterodactyl rigs, 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 (127.0.0.1:7799) and a stock sidecar find each other with nothing configured at all.

Three things in the launcher are load-bearing, each written down with the failure it prevents:

  • env -u LD_PRELOAD for the sidecar — Carbon's entrypoint prepends LD_PRELOAD=…/libdoorstop.so to the whole startup string, and RustDedicated still inherits it from the script's environment. This is the composition R20 left unsettled.
  • exec "$@" for the game — the game becomes the process, so the panel console keeps stdin/stdout and stop still stops the server.
  • an unset variable is never exported — the sidecar's precedence is env > file > default, and RUSTLINK_WEB_TOKEN="" would override a perfectly good token with nothing.

It also records why the startup command cannot contain shell operators (the image runs it through eval echo before node /wrapper.js), and what is still open for phase 18.

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.

AI disclosure

Written with Claude Code (Opus 5).

🤖 Generated with Claude Code

https://claude.ai/code/session_01PMH6bw1jXMgbyF3ZWGEzSM

Three documents for `module-rust` phase 8 (Module-Rust#10, Android-app#48), plus the Android milestone. **`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** (`vip` landed in Oxide's store; `kits.vip` came back `unresolved` because Kits is not installed there). **`rust-link/INSTALL_RIG.md`** — new, and the reason this phase reads differently from the three before it. The sidecar now runs **inside the game container** on the Pterodactyl rigs, 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 (`127.0.0.1:7799`) and a stock sidecar find each other with nothing configured at all. Three things in the launcher are load-bearing, each written down with the failure it prevents: * `env -u LD_PRELOAD` for the sidecar — Carbon's entrypoint prepends `LD_PRELOAD=…/libdoorstop.so` to the **whole** startup string, and RustDedicated still inherits it from the script's environment. This is the composition R20 left unsettled. * `exec "$@"` for the game — the game *becomes* the process, so the panel console keeps stdin/stdout and **stop still stops the server**. * an unset variable is never exported — the sidecar's precedence is env > file > default, and `RUSTLINK_WEB_TOKEN=""` would override a perfectly good token with nothing. It also records why the startup command cannot contain shell operators (the image runs it through `eval echo` before `node /wrapper.js`), and what is still open for phase 18. **`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. ### AI disclosure Written with Claude Code (Opus 5). 🤖 Generated with [Claude Code](https://claude.com/claude-code) https://claude.ai/code/session_01PMH6bw1jXMgbyF3ZWGEzSM
wtclaude added 1 commit 2026-09-23 01:37:12 +00:00
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
whitlocktech merged commit eb4a8bcafc into main 2026-09-23 01:51:54 +00:00
whitlocktech deleted branch docs/rust-phase-8 2026-09-23 01:51:55 +00:00
Sign in to join this conversation.
No description provided.