feat(docs): phase 16 — the RunicNPC subgroup, its API carried in full and drift-checked #37

Merged
whitlocktech merged 2 commits from feat/phase-16-runicnpc into main 2026-10-22 16:07:56 -05:00
Member

What & why

PLAN.md §16 phase 16, built on the org lead's answers of 2026-10-22, recorded as D72–D74 (count of record 74; "How phase 16 built it" in PLAN.md).

  • D72 — eight pages, nested at the end of the Rust group at /docs/rust/runicnpc/: RunicNPC, Install RunicNPC, Commands, NPC profiles, NPC placements, Cost and caps, Profile fields and The API. Profile fields is the one field reference shared by the site's editor (its sections and labels), rnpc.profile set (same JSON paths), the data file and the API.
  • D62/D74 — the API in full: every call, hook and data shape, written in the site's words, with no decision numbers and no per-call "API n" history. The page states the current API version from platform.json and says docs/runicnpc/API.md is normative.
  • D73 — the drift check is two new sections of checkReference.mjs, so the check count stays at twelve:
    • against docs main:runicnpc/API.md: the API version, 24 call and 10 hook signatures, and the field names of the profile, RunicNpc_List rows, placements, routes and owners. It also requires exactly one <Signature call="…" /> per call on api.mdx.
    • against runicnpc-rust main:plugin/RunicNPC.cs: console verbs, permissions, place/here options and RunicNPC.json keys. ⚠️ D62 did not ask for this half. It follows the phase-15 precedent (RunicGateway.json read from source) for the two new pages that list names. Say so and I'll drop it.
  • checkSidebar and checkTerms now read nested sidebar groups through flatLabels().
  • The Rust overview, Events, zones and rewards and Canonical documents link the new pages. The canonical documents gain the four runicnpc/ docs, and that page names the API page as the one deliberate exception to "every page links out".

How it was tested

  • npm run verify green: all twelve checks, both test suites, the build, the served tests, a11y and CSP. checkReference now runs 55 enumeration checks.
  • The check was proven before it was trusted. I planted six drifts: a parameter added to a call, a hook renamed, a RunicNpc_List key renamed, a profile field renamed, a command verb renamed, and a <Signature> removed from the page. All six failed, each naming which side it broke on.
  • Walked first (D36) on the walk site (:3270, both rigs), signed in as the walk admin: Rust NPC profiles (servers, the profile list, the faction table, and the editor opened through every section) and Rust NPC placements (the map, a waiting placement, and the cost warning). Nothing was saved. I also checked the push cadence (30 s tick, 15 min audit) and the kit check on save in Module-Rust npcSync.js before writing them.
  • Built HTML spot-checked: 24 signatures, the hook table, the command tables, and the profile-field anchors in the page contents.

Findings outside this repository

  • The Rust bundle's Oxide floor (2.0.7585) is below RunicNPC's own (2.0.7726). This is intended, per the org lead: 2.0.7585 is the original compatible version and stays until the CI staging drill reports an issue, when raising it becomes part of that update. Recorded in PLAN.md (commit 297cc83). The site quotes each number where it belongs.
  • docs/runicnpc/API.md's profile table broke twice: the boss and loot rows rendered as pipe-filled text on Gitea. Fixed in docs#371, which deletes two blank lines and changes nothing else. This site's check passes either way.

Checklist

  • I have read CONTRIBUTING.md.
  • npm run verify passes locally (all twelve checks and both test suites).
  • No fact is stated in prose — versions and platform facts come from src/data/platform.json.
  • PLAN.md still describes what this repository does; a decision it records is either unchanged or amended here, with the reasoning.
  • My commits are reasonably scoped, with Conventional Commit 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 PLAN.md §16 phase 16, built on the org lead's answers of 2026-10-22, recorded as **D72–D74** (count of record **74**; "How phase 16 built it" in PLAN.md). - **D72 — eight pages**, nested at the end of the Rust group at `/docs/rust/runicnpc/`: *RunicNPC*, *Install RunicNPC*, *Commands*, *NPC profiles*, *NPC placements*, *Cost and caps*, *Profile fields* and *The API*. *Profile fields* is the one field reference shared by the site's editor (its sections and labels), `rnpc.profile set` (same JSON paths), the data file and the API. - **D62/D74 — the API in full**: every call, hook and data shape, written in the site's words, with **no decision numbers and no per-call "API n" history**. The page states the current API version from `platform.json` and says `docs/runicnpc/API.md` is normative. - **D73 — the drift check** is two new sections of `checkReference.mjs`, so the check count stays at twelve: - **against `docs` `main:runicnpc/API.md`**: the API version, 24 call and 10 hook **signatures**, and the **field names** of the profile, `RunicNpc_List` rows, placements, routes and owners. It also requires exactly one `<Signature call="…" />` per call on `api.mdx`. - **against `runicnpc-rust` `main:plugin/RunicNPC.cs`**: console verbs, permissions, `place`/`here` options and `RunicNPC.json` keys. ⚠️ **D62 did not ask for this half.** It follows the phase-15 precedent (`RunicGateway.json` read from source) for the two new pages that list names. Say so and I'll drop it. - `checkSidebar` and `checkTerms` now read nested sidebar groups through `flatLabels()`. - The Rust overview, *Events, zones and rewards* and *Canonical documents* link the new pages. The canonical documents gain the four `runicnpc/` docs, and that page names the API page as the one deliberate exception to "every page links out". ## How it was tested - `npm run verify` green: all twelve checks, both test suites, the build, the served tests, a11y and CSP. checkReference now runs 55 enumeration checks. - **The check was proven before it was trusted.** I planted six drifts: a parameter added to a call, a hook renamed, a `RunicNpc_List` key renamed, a profile field renamed, a command verb renamed, and a `<Signature>` removed from the page. All six failed, each naming which side it broke on. - **Walked first (D36)** on the walk site (:3270, both rigs), signed in as the walk admin: *Rust NPC profiles* (servers, the profile list, the faction table, and the editor opened through every section) and *Rust NPC placements* (the map, a waiting placement, and the cost warning). Nothing was saved. I also checked the push cadence (30 s tick, 15 min audit) and the kit check on save in `Module-Rust` `npcSync.js` before writing them. - Built HTML spot-checked: 24 signatures, the hook table, the command tables, and the profile-field anchors in the page contents. ## Findings outside this repository - **The Rust bundle's Oxide floor (2.0.7585) is below RunicNPC's own (2.0.7726). This is intended**, per the org lead: 2.0.7585 is the original compatible version and stays until the CI staging drill reports an issue, when raising it becomes part of that update. Recorded in PLAN.md (commit `297cc83`). The site quotes each number where it belongs. - **`docs/runicnpc/API.md`'s profile table broke twice**: the `boss` and `loot` rows rendered as pipe-filled text on Gitea. **Fixed in docs#371**, which deletes two blank lines and changes nothing else. This site's check passes either way. ## Checklist - [x] I have read [CONTRIBUTING.md](CONTRIBUTING.md). - [x] `npm run verify` passes locally (all twelve checks and both test suites). - [x] No fact is stated in prose — versions and platform facts come from `src/data/platform.json`. - [x] `PLAN.md` still describes what this repository does; a decision it records is either unchanged or amended here, with the reasoning. - [x] My commits are reasonably scoped, with Conventional Commit 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-22 15:49:40 -05:00
feat(docs): phase 16 - the RunicNPC subgroup, its API carried in full and drift-checked
All checks were successful
PR checks / checks (pull_request) Successful in 2m11s
ecc556d7ac
PLAN.md §16 phase 16, with the org lead's D72-D74 (count of record 74).

- Eight pages nested in the Rust group at /docs/rust/runicnpc/ (D72): the
  overview, Install RunicNPC, Commands, NPC profiles, NPC placements, Cost and
  caps, Profile fields (the one field reference the editor, rnpc.profile set,
  the data file and the API all share) and The API.
- The API page carries every call, hook and data shape (D62), in the site's
  own words, with no decision numbers and no per-call version history (D74).
  Signatures print from src/data/runicnpc.mjs through Signature.astro.
- checkReference.mjs gains two sections. Against docs main:runicnpc/API.md:
  the API version, 24 call and 10 hook signatures, and the field names of the
  profile, RunicNpc_List rows, placements, routes and owners (D73), plus
  exactly one <Signature> per call on api.mdx. Against runicnpc-rust
  main:plugin/RunicNPC.cs: console verbs, permissions, place options and
  config keys. Six planted drifts all failed before it was trusted.
- checkSidebar and checkTerms read nested sidebar groups via flatLabels().
- The Rust overview, Events zones and rewards, and Canonical documents link
  the new pages; the canonical documents gain the four runicnpc/ docs.

Both NPC admin screens were walked on the walk site first (D36); nothing was
saved. npm run verify is green.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01E14m6SuuY6i1vASFeGDBeY
wtclaude added 1 commit 2026-10-22 16:02:47 -05:00
docs(plan): record the Oxide floor ruling and the API.md table fix
All checks were successful
PR checks / checks (pull_request) Successful in 8m36s
297cc83db5
The bundle's Oxide 2.0.7585 is the original compatible version and stays
until the CI staging drill reports an issue (org lead, 2026-10-22). The
API.md table break is fixed in docs #371.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01E14m6SuuY6i1vASFeGDBeY
whitlocktech merged commit ec65b2d5aa into main 2026-10-22 16:07:56 -05:00
whitlocktech deleted branch feat/phase-16-runicnpc 2026-10-22 16:07:57 -05:00
Sign in to join this conversation.
No description provided.