b1a474a7ebde7f7dcd9a4181397b1e7571873195
Companion to website PR 0 (chore(server): freeze the URL surface with a generated route manifest). BACKEND_DESIGN.md gains § 4.0, naming the two generated artifacts that are actually authoritative about the API and what each is authoritative *for*: the manifest records which URLs exist (introspection-derived, reality), the Swagger spec records what they mean (annotation-derived, intent). The prose tables in § 4 are orientation and can drift; those two files cannot. Also documents routes.guards.json as a review aid that is explicitly not a contract. API_V2_PLAN.md marks PR 0 shipped and records its two deviations. The optional unauthenticated-status snapshot was tried and dropped exactly as that section allowed — against the dead-port mariadb pool the tests use it sits on the acquire timeout rather than failing fast — replaced by a deterministic assertion that every /admin/** and /player/** route still carries requireAuth. routes.guards.json is committed and staleness-checked even though a diff in it is not a contract change, because an ungenerated review aid rots into a misleading one. The sequencing section is corrected: PR 0 now runs before the CSP pair. The CSP report-only PR must stand up a POST /api/csp-report collector for `report-to` to target, which is a new URL under /api/**; landing it first would have left PR 0 generating 200 routes against a 199-route baseline, destroying its own acceptance test. With PR 0 first, the collector appears as a reviewed, deliberate +1 in the manifest — the mechanism working as intended. api-route-inventory.json is unchanged, which is the point: the generator reproduced it byte-for-byte on first run. Co-Authored-By: Claude <noreply@anthropic.com>
Runic Gateway — Documentation
Central documentation for the Runic Gateway platform. The docs here were extracted from the two code repositories (with full commit history preserved) so they live in one place, independent of either codebase.
Layout
website/ docs from the shard website (Node/Express + MariaDB + React/Vite)
link/ docs from the ServUO bridge (C# plugin + Rust sidecar + Node WS)
android/ docs from the native Android client (Kotlin + Jetpack Compose)
ci/ cross-cutting CI/quality notes
website/
| Doc | What it covers |
|---|---|
| BACKEND_DESIGN.md | API contract, DB schema, security model |
| HERO_EDITOR.md | Hero canvas editor feature spec |
| WIKI_UPGRADE.md | Wiki subsystem upgrade notes |
| website-README.md | Snapshot of the website repo's README (setup/run reference) |
| PROJECT_TREE.md | Auto-generated snapshot of the repo's tracked file layout |
link/
| Doc | What it covers |
|---|---|
| INTEGRATION.md | How the website integrates with the uo-link sidecar |
| PROTOCOL_2.md | Protocol 2.0 / 2.1 design |
| ADMIN_CONTROLS.md | Staff write-plane (kick/ban/broadcast, page queue) |
| SHARD_PREREQS.md | Shard-side prerequisites for the bridge |
| PLAN.md | uo-link build plan |
| RESEARCH.md | Research notes |
| link-README.md | Snapshot of the link repo's README |
| PROJECT_TREE.md | Auto-generated snapshot of the repo's tracked file layout |
android/
| Doc | What it covers |
|---|---|
| PLAN.md | Android client build plan / milestones |
| COVERAGE_PLAN.md | Test-coverage rollout plan |
| APP_LINKS.md | Android App Links / deep-link setup |
| theme-plan.md | Theming plan |
| TRUSTED_DEVICES_APP_HANDOFF.md | Trusted-devices app handoff notes |
| PROJECT_TREE.md | Auto-generated snapshot of the repo's tracked file layout |
Provenance
website/*was extracted fromRunicGateway/websiteviagit filter-repo.link/*was extracted fromRunicGateway/linkviagit filter-repo.
Commit history and authorship for each doc are preserved. The two source repos retain a short pointer to this repo in their own READMEs; the authoritative copy of each document now lives here.
License
Runic Gateway's documentation is free: licensed under the GNU General Public License v3.0 or later — see LICENSE.md.
Copyright (C) 2026 Runic Gateway
This documentation is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY. You may redistribute and/or modify it under the terms of
the GNU General Public License as published by the Free Software Foundation,
either version 3 of the License, or (at your option) any later version.
Contributions are welcome — please read CONTRIBUTING.md (note the AI-usage disclosure requirement) and our Code of Conduct.
Description
Languages
Markdown
100%