docs(runicnpc): stage 9b built; INSTALL and COMMANDS; RunicNPC required (D315, D316) #325

Merged
whitlocktech merged 1 commits from docs/runicnpc-stage9-hardening into main 2026-10-07 02:41:30 +00:00
Member

What & why

Phase 9b (hardening) of runicnpc/PLAN.md stage 9, built and measured 2026-10-06, with the two questions it raised answered by the org lead the same day:

Decision
D315 The performance check records what 100 NPCs cost today and the cost warning says it. The idle overhead is an optimisation issue (runicnpc-rust#13), not a release blocker. Stage 1's own bare NPC no longer meets stage 1's fight bar on today's rigs either.
D316 On a server without RunicNPC, the Place NPCs picker keeps listing Rust's own scientists, and the step is refused when saved, with the reason. Core's option sources cannot show a module's reason.
  • runicnpc/INSTALL.md (new): what it needs, the installer and egg, by hand without Runic Gateway, Kits and ZoneManager (reported, never installed), its files, the cost warning with stage 9's numbers, caps, and what to check after a Rust update.
  • runicnpc/COMMANDS.md (new): every /rnpc verb and console command with its permission, the place options with their defaults, and how to read rnpc.status.
  • rust-link/INSTALL.md: RunicNPC is required; the installer refuses a bundle without it and doctor fails. One deviation from the plan: 9b named modules/rust/OPERATING.md, but that file is a verbatim mirror of uMod's pages. This guide is the one that lists Kits.
  • rust-link/PROTOCOL.md §19.16: every NPC placement needs RunicNPC. No message changes shape, and protocol stays 13.
  • runicnpc/PLAN.md: "9b built", with the measurements.

The measurements (100 NPCs, increase of the median frame, 6000 map)

Oxide: bare NPC Oxide: RunicNPC Carbon: bare NPC Carbon: RunicNPC
Idle, awake +0.96 ms +2.65 / +2.92 ms +0.97 ms +1.52 ms
Idle, asleep +0.52 ms
Fighting 20 stand-ins +7.53 ms +7.19 ms +7.96 ms +9.04 ms

Rust 25681086, Oxide 2.0.7801, Carbon 2.0.262, all current. Measured one rig at a time.

Companion PRs (phase 9b)

website (D314), Module-Rust, Rust-Plugins, installer (into a recreated edge) and runicnpc-rust, each linked from its own PR.

How it was tested

Docs only. Each claim in INSTALL and COMMANDS was checked against plugin/RunicNPC.cs (verbs, permissions, place defaults, caps messages, example profiles) and the installer source.

Checklist

  • I have read CONTRIBUTING.md.
  • The change builds and existing tests/checks pass locally.
  • I have added or updated tests/docs where it makes sense.
  • My commits are reasonably scoped with clear messages.

AI-assisted contributions (required)

  • No AI tools were used to produce this contribution.
  • AI tools were used. Tool(s): Claude Code (Claude Opus 5.5). I have reviewed and understand
    every change, and take responsibility for it. AI-authored commits are
    marked with a Co-Authored-By / Assisted-By trailer.

License

  • I agree that my contribution is licensed under this project's license
    (GNU GPL v3.0 or later), and I have the right to contribute it.

🤖 Generated with Claude Code

https://claude.ai/code/session_01E14m6SuuY6i1vASFeGDBeY

## What & why Phase 9b (hardening) of `runicnpc/PLAN.md` stage 9, built and measured 2026-10-06, with the two questions it raised answered by the org lead the same day: | | Decision | |---|---| | D315 | The performance check records what 100 NPCs cost today and the cost warning says it. The idle overhead is an optimisation issue ([runicnpc-rust#13](https://gitea.whitlocktech.com/RunicGateway/runicnpc-rust/issues/13)), not a release blocker. Stage 1's own bare NPC no longer meets stage 1's fight bar on today's rigs either. | | D316 | On a server without RunicNPC, the Place NPCs picker keeps listing Rust's own scientists, and the step is refused when saved, with the reason. Core's option sources cannot show a module's reason. | - **`runicnpc/INSTALL.md` (new):** what it needs, the installer and egg, by hand without Runic Gateway, Kits and ZoneManager (reported, never installed), its files, the cost warning with stage 9's numbers, caps, and what to check after a Rust update. - **`runicnpc/COMMANDS.md` (new):** every `/rnpc` verb and console command with its permission, the `place` options with their defaults, and how to read `rnpc.status`. - **`rust-link/INSTALL.md`:** RunicNPC is required; the installer refuses a bundle without it and `doctor` fails. **One deviation from the plan:** 9b named `modules/rust/OPERATING.md`, but that file is a verbatim mirror of uMod's pages. This guide is the one that lists Kits. - **`rust-link/PROTOCOL.md` §19.16:** every NPC placement needs RunicNPC. No message changes shape, and protocol stays 13. - **`runicnpc/PLAN.md`:** "9b built", with the measurements. ### The measurements (100 NPCs, increase of the median frame, 6000 map) | | Oxide: bare NPC | Oxide: RunicNPC | Carbon: bare NPC | Carbon: RunicNPC | |---|---|---|---|---| | Idle, awake | +0.96 ms | +2.65 / +2.92 ms | +0.97 ms | +1.52 ms | | Idle, asleep | | | | +0.52 ms | | Fighting 20 stand-ins | +7.53 ms | +7.19 ms | +7.96 ms | +9.04 ms | Rust 25681086, Oxide 2.0.7801, Carbon 2.0.262, all current. Measured one rig at a time. ## Companion PRs (phase 9b) website (D314), Module-Rust, Rust-Plugins, installer (into a recreated `edge`) and runicnpc-rust, each linked from its own PR. ## How it was tested Docs only. Each claim in INSTALL and COMMANDS was checked against `plugin/RunicNPC.cs` (verbs, permissions, `place` defaults, caps messages, example profiles) and the installer source. ## Checklist - [x] I have read [CONTRIBUTING.md](CONTRIBUTING.md). - [x] The change builds and existing tests/checks pass locally. - [x] I have added or updated tests/docs where it makes sense. - [x] My commits are reasonably scoped with clear messages. ## AI-assisted contributions (required) - [ ] No AI tools were used to produce this contribution. - [x] AI tools were used. Tool(s): `Claude Code (Claude Opus 5.5)`. I have reviewed and understand every change, and take responsibility for it. AI-authored commits are marked with a `Co-Authored-By` / `Assisted-By` trailer. ## License - [x] I agree that my contribution is licensed under this project's license (**GNU GPL v3.0 or later**), and I have the right to contribute it. 🤖 Generated with [Claude Code](https://claude.com/claude-code) https://claude.ai/code/session_01E14m6SuuY6i1vASFeGDBeY
wtclaude added 1 commit 2026-10-07 02:35:59 +00:00
- runicnpc/PLAN.md: 9b built and measured; D315 (the performance check records
  today's cost, the warning says it, idle overhead is runicnpc-rust#13) and D316
  (the picker keeps Rust's own; a step on a server without RunicNPC is refused
  on save).
- runicnpc/INSTALL.md (new): requirements, the installer and egg, by hand
  without Runic Gateway, Kits and ZoneManager reported not installed, its files,
  the cost warning with stage 9's numbers, caps, and after a Rust update.
- runicnpc/COMMANDS.md (new): every /rnpc verb and console command with its
  permission, options and defaults, and how to read rnpc.status.
- rust-link/INSTALL.md: RunicNPC is required; the installer refuses a bundle
  without it and doctor fails. (The plan named modules/rust/OPERATING.md, which
  is a verbatim uMod mirror; this is the operator guide that lists Kits.)
- rust-link/PROTOCOL.md: §19.16, every NPC placement needs RunicNPC; no message
  changes shape.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01E14m6SuuY6i1vASFeGDBeY
whitlocktech merged commit eb4dc68880 into main 2026-10-07 02:41:30 +00:00
whitlocktech deleted branch docs/runicnpc-stage9-hardening 2026-10-07 02:41:31 +00:00
Sign in to join this conversation.
No description provided.