From 391a4a131b001a210b4b815a0c6882939763313f Mon Sep 17 00:00:00 2001 From: wtclaude Date: Tue, 1 Sep 2026 08:14:09 -0500 Subject: [PATCH 1/3] chore(facts): protocol 5 and Module API 1.9.0 -- HOLD until the cutover Engagement Phase 12b. **This branch is deliberately red and must not be merged until the Phase 13 cutover has landed link and servuo-plugins on `main` and CI has republished the bundle.** checkFacts.mjs fetches every value from the source repo's `main`, so it fails today exactly as designed: FAIL protocol (sidecar) platform.json 5 link main 4 FAIL protocol (overlay) platform.json 5 servuo-plugins main 4 FAIL moduleApi platform.json 1.9.0 website main 1.6.0 FAIL protocol (bundle) platform.json 5 installer bundles:current.json 4 Every other check is green on this branch: checkLinks 2503, checkReference 22, checkA11y, checkCsp, checkSidebar, 42 tests. moduleApi is **1.9.0**, not the 1.7.0 the plan named -- Phase 11 moved it twice after that sentence was written (1.8.0 for the `admin` ceiling, 1.9.0 for the module seed API). ## Also: the one page whose whole subject is the protocol number was the one page that ## hardcoded it platform.json's own header says no version number is ever hardcoded in prose, and `architecture/protocol-versions.mdx` had `4` written out three times -- the headline sentence and both declaration-site rows. It now imports platform.json like every other page that quotes a fact, so it moves with the JSON and cannot say 4 while the JSON says 5. Note the interpolation is OUTSIDE the code spans: MDX does not evaluate an expression inside backticks, so `PROTOCOL_VERSION: u32 = {platform.protocol}` would have rendered the braces literally. Verified in the built HTML -- "currently 5", and no `platform.protocol` survives anywhere in the output. The same page's "what a bump obliges" section said version 4 was the first bump to need a store migration, which read as though every bump does. v5 needed none (it only widens frames the store already keeps whole -- docs link/v5.md), so the sentence now says which did and which did not, and v5.md joins v4.md under canonical documents. ## The fill-in step, at merge time Three values are not knowable today because the artefact does not exist yet. After the bundle republishes, run: GITEA_TOKEN= node scripts/checkFacts.mjs and copy what it prints in the "says" column into src/data/platform.json: * bundle.tag, bundle.sidecar, bundle.overlay -- from installer bundles:current.json * releases.Module-uo -- if the cutover cuts a new module release * verifiedOn -- the date you ran it Then re-read `getting-started/connect-a-game-server` and `administration/the-shard-connection`, which quote the bundle, before merging. The check is green when all 19 agree. AI-assisted: written with Claude Code. Co-Authored-By: Claude --- .../docs/architecture/protocol-versions.mdx | 23 +++++++++++-------- src/data/platform.json | 4 ++-- 2 files changed, 15 insertions(+), 12 deletions(-) diff --git a/src/content/docs/docs/architecture/protocol-versions.mdx b/src/content/docs/docs/architecture/protocol-versions.mdx index c14d451..dbaf1ae 100644 --- a/src/content/docs/docs/architecture/protocol-versions.mdx +++ b/src/content/docs/docs/architecture/protocol-versions.mdx @@ -4,12 +4,13 @@ description: One number, declared in three repositories, that decides whether a --- import { Aside } from '@astrojs/starlight/components'; +import platform from '../../../../data/platform.json'; The loopback wire protocol between the game plugin and the sidecar is a **versioned compatibility contract**, not a build dependency. Nothing compiles the three sides together, so the number is what stops a mismatch from being discovered as corrupted data. -The current protocol is **4**. +The current protocol is **{platform.protocol}**. ## Three declaration sites @@ -17,8 +18,8 @@ The same number is written down in three places, and they must move together. | Where | What declares it | |---|---| -| `link/sidecar/src/main.rs` | `pub const PROTOCOL_VERSION: u32 = 4` — what the sidecar speaks | -| `servuo-plugins/overlay.toml` | `protocol = 4` — what the plugin overlay speaks | +| `link/sidecar/src/main.rs` | `PROTOCOL_VERSION`, currently {platform.protocol} — what the sidecar speaks | +| `servuo-plugins/overlay.toml` | `protocol`, currently {platform.protocol} — what the plugin overlay speaks | | The bundle manifest | Copied from `overlay.toml` by CI, so a released pair carries its own claim |