docs(website): record the landed route manifest and resequence CSP after PR 0 #49
Reference in New Issue
Block a user
No description provided.
Delete Branch "chore/route-manifest"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
What & why
Documentation companion to RunicGateway/website#99 (
chore(server): freeze the URL surface with a generated route manifest), which lands PR 0 of the router domain split.BACKEND_DESIGN.md— new § 4.0, "The authoritative route list"§ 4's prose tables are orientation for a human reader and can drift. Two generated artifacts cannot, and this section names them and says what each is authoritative for:
routes.manifest.json(mirrored asapi-route-inventory.json)swagger-output.jsonThat split is why the manifest, not Swagger, is the thing PR checks freeze. It also documents
routes.guards.jsonas a review aid that is explicitly not a contract, and records why the manifest excludes the filesystem-conditional static mounts.§ 2's "Planned change" callout now says the URL freeze is enforced mechanically rather than by review.
API_V2_PLAN.md— PR 0 marked shipped, with its two deviations/admin/**and/player/**route still carriesrequireAuth.routes.guards.jsonis committed and staleness-checked even though a diff in it is not a contract change — an ungenerated review aid rots into a misleading one within a release. The gate is on freshness; the meaning of a guards diff is still "read this", not "justify this".API_V2_PLAN.md— sequencing corrected: PR 0 now runs before the CSP pairThe plan had CSP report-only → CSP enforce → PR 0. That ordering breaks PR 0's own acceptance test. The CSP report-only PR must stand up a
POST /api/csp-reportcollector forreport-toto target — a new URL under/api/**. Landing it first would leave PR 0's generator emitting 200 routes against a 199-route committed baseline, so it could no longer prove itself by reproducingapi-route-inventory.jsonbyte-for-byte.With PR 0 first, the collector shows up as a reviewed, deliberate
+1in the manifest — which is the mechanism working exactly as designed. CSP and the split remain independent otherwise.api-route-inventory.jsonis unchanged — and that is the resultThe generator reproduced it byte-for-byte on first run. The freeze was already accurate.
How it was tested
Markdown only. Cross-checked every claim against the code in website#99: the 199 + 2 route counts, the generator's scope filter, the guards-file contents, and the
--checkexit codes in both directions.Checklist
AI-assisted contributions (required)
Claude Code (Opus). I have reviewed and understandevery change, and take responsibility for it. AI-authored commits are
marked with a
Co-Authored-By/Assisted-Bytrailer.License
(GNU GPL v3.0 or later), and I have the right to contribute it.