All checks were successful
PR checks / checks (pull_request) Successful in 9m34s
Phase 16c of the events plan: `runicgateway.com`'s half of the workstream, now that `main` carries the engine, the module, the app and the bundle. The checks were already red and named their own answers: * `checkFacts` — nine values had moved. Protocol 5 → 7 in all three declaration sites, `moduleApi` 1.9.0 → 1.10.0, the bundle to 2026.09.10 with sidecar v2.2.0 and overlay v1.2.0, `link` v2.2.0, `Module-uo` v1.2.2. * `checkReference` — twenty-seven `Bridge.cfg` keys the site listed nowhere: the events switch and its sweep, the ten caps, the oracle NPC, the two lease keys and the seven participation keys. They are five new groups rather than an appendix to an existing one, because `EventsEnabled` is a second consent switch and belongs beside its own ceilings. Two pages, matching the treatment Teams has: * **Scheduled events** (Administration) — where it is and who sees it, authoring and immutable versions, the switchboard that arrives off, caps as a condition on an `UPDATE` rather than a role check, the dry run, the run console, what an event owns versus what it borrows, generated cleanup, the shard's own switches, and what a player sees. * **Events architecture** — the two sentences it turns on, what is a table and what deliberately is not, budgets in SQL, the ledger's two rules, at-most-once on a wire that can lose an answer, the three layers, and the four omissions. And the rest of the surface: * `/privacy` gains **`deploy-events`** — the participation ledger is personal data and no row named it. Scores and ranks against a module-opaque member key, linked to an account where one is linked; the diagnostic log swept after 90 days on terminal runs only; the run, its steps and its participants not swept at all, because they are the record of what was done to a shared world. `deploy-game-data`'s citation moves from `link/v4.md` to `v7.md`. * **Protocol versions** — the most recent bump touched *five* repositories, and the `website` row is the interesting one: core is normally out of a protocol bump's reach and this one reached it, because what changed was not a game noun but the shape of a thing core owns the ledger for. The store-migration paragraph now says four bumps' worth rather than two. * Two capability entries, so `/`, `/features/` and `/modules/` stop omitting the subsystem — an Administration item, and an **Event calendar** under Community with `/site/events` as its deep link. Deliberately *not* `needsModule`: a bare core can author and run an event, and only the world verbs need a module. * **`reference/event-catalog` is retitled "Shard event catalog"** and says what it is not. Two things in the docs were called an event catalog; the route is unchanged, so nothing outside this repository breaks. * `canonicalDocs` gains `website/EVENTS.md` and moves `link/v4.md` → `v7.md`. No screenshots. Capturing the events surfaces means standing the whole rig back up — game server, sidecar, core, module, a published event with a live run — for two or three images that no check requires, and the engagement workstream's own site leg added none either. `npm run verify` green end to end, including `checkReference` against the protocol spec that only reached `docs` `main` in RunicGateway/docs#232 — the seventh cutover step, which 16b had left on `edge`. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016wDDVXWMDz82WqE1i969r4
83 lines
2.8 KiB
JSON
83 lines
2.8 KiB
JSON
{
|
|
"$comment": [
|
|
"PLAN.md §12: one file holding every externally-sourced fact. Every page reads from",
|
|
"here, and NO version number is ever hardcoded in prose.",
|
|
"",
|
|
"`scripts/checkFacts.mjs` fetches the authority for each value below and fails the build",
|
|
"on any disagreement. When the platform moves, this repo goes red so someone updates the",
|
|
"site — that failure is the feature, exactly as in the Integration Kit's checkCoreApi.js.",
|
|
"",
|
|
"Do not edit a value here to make the check pass without also re-reading the page that",
|
|
"quotes it. §1's process rule exists because a stale local `main` is what produced the",
|
|
"wrong protocol number in the first place."
|
|
],
|
|
|
|
"verifiedOn": "2026-09-09",
|
|
|
|
"protocol": 7,
|
|
|
|
"moduleApi": "1.10.0",
|
|
|
|
"bundle": {
|
|
"tag": "2026.09.10",
|
|
"sidecar": "v2.2.0",
|
|
"overlay": "v1.2.0",
|
|
"servuoMin": "57.4"
|
|
},
|
|
|
|
"releases": {
|
|
"link": "v2.2.0",
|
|
"installer": "v0.1.1",
|
|
"Module-uo": "v1.2.2",
|
|
"Android-app": "v0.5.0"
|
|
},
|
|
|
|
"$comment_website": [
|
|
"`website` publishes no releases at all — it ships as container images and is never",
|
|
"tagged. The site must never print a 'website version'; it refers to the platform by",
|
|
"bundle tag and Module API version instead. checkFacts.mjs asserts the releases list is",
|
|
"still empty, so the day that changes, this repo notices."
|
|
],
|
|
"websiteHasReleases": false,
|
|
|
|
"moduleUoCapabilities": [
|
|
"shard",
|
|
"atlas",
|
|
"market",
|
|
"governors",
|
|
"guilds",
|
|
"houses",
|
|
"champs",
|
|
"cliloc"
|
|
],
|
|
|
|
"androidApplicationId": "com.runicgateway.app",
|
|
|
|
"$comment_androidApk": [
|
|
"Phase 5 / `/app/`. The app is not on any store, so the only way to install it is the",
|
|
"signed APK attached to each Android-app release. `asset` and `checksums` are the two",
|
|
"assets checkFacts.mjs asserts exist on releases/latest, and `minSdk` is re-read from",
|
|
"the app's build.gradle.kts — so the download block on /app/ cannot outlive the file it",
|
|
"points at, and 'Android 10 or newer' cannot outlive the number that makes it true.",
|
|
"",
|
|
"`serviceable` is the one value here with no authority to check it against, and it is",
|
|
"deliberately manual. It answers a question no API can: does the published build",
|
|
"actually work. The org lead reports v0.5.0's does not, so the download block renders a",
|
|
"'being replaced' state instead of a link, and flipping this to true is the single edit",
|
|
"that turns the link back on once a working build is released. A check cannot run an",
|
|
"APK; a person can, and this is where they record that they did."
|
|
],
|
|
"androidApk": {
|
|
"asset": "runic-gateway-0.5.0.apk",
|
|
"checksums": "SHA256SUMS",
|
|
"minSdk": 29,
|
|
"minAndroid": "10",
|
|
"serviceable": false
|
|
},
|
|
|
|
"gitea": {
|
|
"base": "https://gitea.whitlocktech.com",
|
|
"org": "RunicGateway"
|
|
}
|
|
}
|