docs(website): record split PR 1 — admin users, account, invites, auth providers #53

Merged
whitlocktech merged 2 commits from docs/admin-router-split-1 into main 2026-07-27 20:59:06 +00:00
Member

Follows #52 (already merged); based on main, so this diff is the PR 1 docs alone.

What & why

Documentation half of RunicGateway/website#102 — the first of five domain-split PRs
(API_V2_PLAN.md § Phase 2).

BACKEND_DESIGN.md

  • §2 folder structure: admin/ now shows index.js (shared gate + mount table) and the four
    capability routers with their route counts, prefixes and extra gates. admin.routes.js is labelled
    as the 82-route residual that goes away with PR 5.
  • §4 /admin heading: was admin.routes.js → admin.controller.js; now points at admin/index.js
    and mentions staffOnly, which the old heading omitted entirely.
  • The "planned change" callout becomes "in progress", listing what has landed.

API_V2_PLAN.md

  • Status planningin progress; PR 1 marked landed in the sequencing list.
  • New PR 1 — as landed section: the route-count table (6 + 15 + 3 + 4 + 82 = 110) and three
    findings for PRs 2–5 — why the self-service /shard/* routes stay with the shard capability
    despite their Admin · Account tag, why a prefix mount must not be "simplified" into a pathless one
    (a bare use(gate) would then run for requests headed to later mounts), and that
    routes.guards.json came back zero-diff too, which is the gate that can catch a dropped
    adminOnly when the method+path freeze cannot.
  • New section on the swagger path-normalization prerequisite (website#101) and its consequence:
    with sorted path keys a pure route move produces no spec diff, so swagger-output.json becomes a
    third zero-diff gate alongside the manifest and the guards file.
  • Correction to step 6: PROJECT_TREE.md is auto-generated by the sync-project-tree workflow since
    website#98 and must not be hand-edited in split PRs.

api-route-inventory.json is deliberately unchanged — verified still byte-identical to
server/routes.manifest.json (200 public + 2 internal), which is the entire point of the exercise.

How it was tested

Markdown only. Route counts, the inventory comparison and the zero-diff claims are taken from the
verification run recorded in website#102, not asserted.

Checklist

  • I have read CONTRIBUTING.md.
  • The change builds and existing tests/checks pass locally.
  • I have added or updated tests/docs where it makes sense.
  • My commits are reasonably scoped with clear messages.

AI-assisted contributions (required)

  • No AI tools were used to produce this contribution.
  • AI tools were used. Tool(s): Claude Code (Opus 5). I have reviewed and understand
    every change, and take responsibility for it. AI-authored commits are
    marked with a Co-Authored-By / Assisted-By trailer.

License

  • I agree that my contribution is licensed under this project's license
    (GNU GPL v3.0 or later), and I have the right to contribute it.
> Follows #52 (already merged); based on `main`, so this diff is the PR 1 docs alone. ## What & why Documentation half of RunicGateway/website#102 — the first of five domain-split PRs (`API_V2_PLAN.md` § Phase 2). **BACKEND_DESIGN.md** - §2 folder structure: `admin/` now shows `index.js` (shared gate + mount table) and the four capability routers with their route counts, prefixes and extra gates. `admin.routes.js` is labelled as the 82-route residual that goes away with PR 5. - §4 `/admin` heading: was `admin.routes.js → admin.controller.js`; now points at `admin/index.js` and mentions `staffOnly`, which the old heading omitted entirely. - The "planned change" callout becomes "in progress", listing what has landed. **API_V2_PLAN.md** - Status `planning` → `in progress`; PR 1 marked landed in the sequencing list. - New **PR 1 — as landed** section: the route-count table (6 + 15 + 3 + 4 + 82 = 110) and three findings for PRs 2–5 — why the self-service `/shard/*` routes stay with the `shard` capability despite their `Admin · Account` tag, why a prefix mount must not be "simplified" into a pathless one (a bare `use(gate)` would then run for requests headed to later mounts), and that `routes.guards.json` came back zero-diff too, which is the gate that can catch a dropped `adminOnly` when the method+path freeze cannot. - New section on the **swagger path-normalization prerequisite** (website#101) and its consequence: with sorted path keys a pure route move produces *no* spec diff, so `swagger-output.json` becomes a third zero-diff gate alongside the manifest and the guards file. - Correction to step 6: `PROJECT_TREE.md` is auto-generated by the `sync-project-tree` workflow since website#98 and must not be hand-edited in split PRs. `api-route-inventory.json` is deliberately unchanged — verified still byte-identical to `server/routes.manifest.json` (200 public + 2 internal), which is the entire point of the exercise. ## How it was tested Markdown only. Route counts, the inventory comparison and the zero-diff claims are taken from the verification run recorded in website#102, not asserted. ## Checklist - [x] I have read [CONTRIBUTING.md](CONTRIBUTING.md). - [x] The change builds and existing tests/checks pass locally. - [x] I have added or updated tests/docs where it makes sense. - [x] My commits are reasonably scoped with clear messages. ## AI-assisted contributions (required) - [ ] No AI tools were used to produce this contribution. - [x] AI tools were used. Tool(s): `Claude Code (Opus 5)`. I have reviewed and understand every change, and take responsibility for it. AI-authored commits are marked with a `Co-Authored-By` / `Assisted-By` trailer. ## License - [x] I agree that my contribution is licensed under this project's license (**GNU GPL v3.0 or later**), and I have the right to contribute it.
wtclaude added 1 commit 2026-07-27 20:57:52 +00:00
Documentation half of the first of five domain-split PRs (API_V2_PLAN.md § Phase 2).

BACKEND_DESIGN.md
- §2 folder structure: admin/ now shows index.js (shared gate + mount table) and
  the four capability routers with their route counts, prefixes and extra gates;
  admin.routes.js is labelled as the 82-route residual that goes away with PR 5.
- §4 /admin heading: was "admin.routes.js -> admin.controller.js", now points at
  admin/index.js and notes staffOnly, which the old heading omitted.
- The "planned change" note becomes "in progress" with what has landed.

API_V2_PLAN.md
- Status: planning -> in progress; PR 1 marked landed in the sequencing list.
- New "PR 1 — as landed" section: the route-count table (6+15+3+4+82 = 110) and
  three findings for PRs 2-5 — why the self-service /shard/* routes stay with the
  shard capability despite their Admin · Account tag, why a prefix mount must not
  be "simplified" to a pathless one (a bare use(gate) would then run for requests
  headed to later mounts), and that routes.guards.json came back zero-diff too.
- New section on the swagger path-normalization prerequisite and its consequence:
  with sorted path keys, a pure route move produces no spec diff, so the spec
  becomes a third zero-diff gate alongside the manifest and guards files.
- Correction to step 6: PROJECT_TREE.md is auto-generated by the sync-project-tree
  workflow since website#98 and must not be hand-edited in split PRs.

api-route-inventory.json is unchanged — verified still byte-identical to
server/routes.manifest.json (200 public + 2 internal), which is the point.

Co-Authored-By: Claude <noreply@anthropic.com>
whitlocktech added 1 commit 2026-07-27 20:58:59 +00:00
whitlocktech merged commit fec3aa0d5d into main 2026-07-27 20:59:06 +00:00
whitlocktech deleted branch docs/admin-router-split-1 2026-07-27 20:59:07 +00:00
Sign in to join this conversation.
No description provided.