feat(facts): phase 13 — per-game facts, Rust and RunicNPC checked, main green again #33

Merged
whitlocktech merged 1 commits from feat/phase-13-facts into main 2026-10-22 08:11:15 -05:00
Member

What & why

Phase 13 of PLAN.md §16 (revision 4, merged in #32). The site's facts now cover both games and RunicNPC, and this turns main green again: checkFacts was failing on Module API (1.10.0 → 1.17.0) and installer (v0.2.0 → v0.8.0).

Facts

  • platform.json replaces the single protocol / bundle / moduleUoCapabilities with a games object (uo, rust) plus a runicnpc block. releases stays a single flat list.
  • checkFacts.mjs runs the protocol, plugin-protocol, capability and bundle checks for both games. It now reads the per-game bundles at v2/servuo/current.json and v2/rust/current.json; the root current.json is the frozen schema-1 manifest and is no longer read. It also checks each module's coreApi and reads RunicNPC's plugin.toml. 41 facts, up from 19.

D66 (new, your answer today): the hero, footer and structured data show Module API only. Each game's protocol and bundle belong on that game's pages. The docs landing table now has shared versions first, then one column per game.

What the required re-read found and fixed

  • Three hard-coded "1.6.0" Module API versions in the module docs. They now read platform.json.
  • Module lifecycle still said "modules load alphabetically". The loader now refuses a second module at boot (W19). Installing modules and Managing modules had never mentioned the one-module 409 rule; both now do.
  • "There is one module" was false in five places. Each now says there are two modules, both built inside this project, and the Integration Kit keeps its draft banner.
  • The homepage diagram said "ServUO today" and "uo-link", which stopped being true when Rust shipped. Those labels now use D63's wording, and the caption names both games.
  • notBuilt.mjs drops the "second game module" entry (Module-Rust is released) and rewords "more than one module".

One planned item moved: the page-side Rust capability-coverage check moves to phase 17, because it needs the Rust feature list that phase 17 writes. checkFacts already guards Module-Rust's capabilities. PLAN.md §16 "How phase 13 built it" records this.

Vocabulary is untouched apart from the diagram labels; the vocabulary sweep is phase 14.

How it was tested

GITEA_TOKEN=… npm run verify passed locally: all eleven checks and both test suites (42 + 7). checkFacts: 41 facts agree. checkCsp: 55 pages hashed. checkLinks: 2917 internal links. astro check: 0 errors, 0 warnings; the 1 hint (applyBrand.mjs, unused statSync) was already there. I spot-checked the built HTML: hero and footer chips read "Module API 1.17.0", the docs landing table shows UO / Rust columns, and softwareVersion is 1.17.0.

Checklist

  • I have read CONTRIBUTING.md.
  • npm run verify passes locally (all eleven checks and both test suites).
  • No fact is stated in prose — versions and platform facts come from src/data/platform.json. This PR removes three that were.
  • PLAN.md still describes what this repository does. §12's authority table is updated, D66 is added (count of record 66), and the phase is recorded in §16.
  • 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). AI-authored commits are marked with a Co-Authored-By trailer.

License

  • I agree that my contribution is licensed under this project's license (GNU GPL v3.0 or later).

🤖 Generated with Claude Code

https://claude.ai/code/session_01E14m6SuuY6i1vASFeGDBeY

## What & why Phase 13 of PLAN.md §16 (revision 4, merged in #32). The site's facts now cover both games and RunicNPC, and this **turns `main` green again**: `checkFacts` was failing on Module API (1.10.0 → 1.17.0) and installer (v0.2.0 → v0.8.0). **Facts** - `platform.json` replaces the single `protocol` / `bundle` / `moduleUoCapabilities` with a `games` object (`uo`, `rust`) plus a `runicnpc` block. `releases` stays a single flat list. - `checkFacts.mjs` runs the protocol, plugin-protocol, capability and bundle checks for both games. It now reads the per-game bundles at **`v2/servuo/current.json`** and **`v2/rust/current.json`**; the root `current.json` is the frozen schema-1 manifest and is no longer read. It also checks each module's `coreApi` and reads RunicNPC's `plugin.toml`. **41 facts**, up from 19. **D66 (new, your answer today):** the hero, footer and structured data show **Module API only**. Each game's protocol and bundle belong on that game's pages. The docs landing table now has shared versions first, then one column per game. **What the required re-read found and fixed** - Three **hard-coded "1.6.0"** Module API versions in the module docs. They now read `platform.json`. - *Module lifecycle* still said "modules load alphabetically". The loader now refuses a second module at boot (W19). *Installing modules* and *Managing modules* had never mentioned the one-module `409` rule; both now do. - "There is one module" was false in five places. Each now says there are two modules, both built inside this project, and the Integration Kit keeps its draft banner. - The homepage diagram said "ServUO today" and "uo-link", which stopped being true when Rust shipped. Those labels now use D63's wording, and the caption names both games. - `notBuilt.mjs` drops the "second game module" entry (Module-Rust is released) and rewords "more than one module". **One planned item moved:** the page-side Rust capability-coverage check moves to phase 17, because it needs the Rust feature list that phase 17 writes. `checkFacts` already guards Module-Rust's capabilities. PLAN.md §16 "How phase 13 built it" records this. Vocabulary is untouched apart from the diagram labels; the vocabulary sweep is phase 14. ## How it was tested `GITEA_TOKEN=… npm run verify` passed locally: all eleven checks and both test suites (42 + 7). `checkFacts`: 41 facts agree. `checkCsp`: 55 pages hashed. `checkLinks`: 2917 internal links. `astro check`: 0 errors, 0 warnings; the 1 hint (`applyBrand.mjs`, unused `statSync`) was already there. I spot-checked the built HTML: hero and footer chips read "Module API 1.17.0", the docs landing table shows UO / Rust columns, and `softwareVersion` is 1.17.0. ## Checklist - [x] I have read [CONTRIBUTING.md](CONTRIBUTING.md). - [x] `npm run verify` passes locally (all eleven checks and both test suites). - [x] No fact is stated in prose — versions and platform facts come from `src/data/platform.json`. This PR removes three that were. - [x] `PLAN.md` still describes what this repository does. §12's authority table is updated, D66 is added (count of record 66), and the phase is recorded in §16. - [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)`. AI-authored commits are marked with a `Co-Authored-By` trailer. ## License - [x] I agree that my contribution is licensed under this project's license (**GNU GPL v3.0 or later**). 🤖 Generated with [Claude Code](https://claude.com/claude-code) https://claude.ai/code/session_01E14m6SuuY6i1vASFeGDBeY
wtclaude added 1 commit 2026-10-22 08:09:49 -05:00
feat(facts): phase 13 - per-game facts, Rust and RunicNPC checked, main green again
All checks were successful
PR checks / checks (pull_request) Successful in 8m25s
9938e71e07
platform.json drops the single protocol/bundle/capability list for a
`games` object (uo, rust) plus a `runicnpc` block. checkFacts.mjs loops
the protocol, plugin-protocol, capability and bundle checks over both
games, reads the schema-2 bundles at v2/<game>/current.json, checks each
module's coreApi, and reads RunicNPC's plugin.toml. 41 facts, up from 19;
clears the two that were red on main (Module API 1.17.0, installer
v0.8.0).

D66: the hero, footer and structured data show the Module API only; each
game's protocol and bundle go on that game's pages, and the docs landing
table splits into shared versions plus one column per game.

The re-read section 1 requires found, and this fixes:
- three hard-coded "1.6.0" Module API versions in the module docs
- module-lifecycle saying modules load alphabetically (the loader now
  refuses a second module, W19), and the install pages never mentioning
  the one-module rule
- "there is one module" in five places, now two modules both built
  inside this project; the Integration Kit keeps its draft banner
- the homepage diagram's ServUO/uo-link sub-labels (D63 wording now)

notBuilt drops `second-module` (resolved by Module-Rust's release) and
rewords `multi-module`.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01E14m6SuuY6i1vASFeGDBeY
whitlocktech merged commit 6046214d71 into main 2026-10-22 08:11:15 -05:00
whitlocktech deleted branch feat/phase-13-facts 2026-10-22 08:11:16 -05:00
Sign in to join this conversation.
No description provided.