{ "$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-08-19", "protocol": 4, "moduleApi": "1.6.0", "bundle": { "tag": "2026.08.19", "sidecar": "v2.0.0", "overlay": "v1.0.0", "servuoMin": "57.4" }, "releases": { "link": "v2.0.0", "installer": "v0.1.1", "Module-uo": "v1.0.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" } }