Files
ServerKit/docs/MIGRATION_INVENTORY.md
T
Juan Denis 515d960614 chore(ratchets): regenerate the boundary baseline, error ceiling and migration inventory
The recipes Phase 0 commit moved all three measured counts without
regenerating their baselines. The new api/recipes.py persistence
crossings are owned and documented in the baseline; the hand-shaped
error census is unchanged by this branch.
2026-08-21 23:05:56 -04:00

2.6 KiB

Remaining-migration inventory

Plan 76 closure artifact (milestone H). Each row is a cross-cutting concern whose door exists and is guarded by an executable ratchet; the "remaining" column is the measured legacy population that has not yet walked through it. A row at 0 is a completed migration held as an invariant. Rows marked REGISTERED EXCEPTION are deliberate policy, not debt. Regenerate with python scripts/generate-migration-inventory.py.

Concern Door Remaining Ceiling Policy
Identity lookups outside rbac.get_current_user() rbac.get_current_user() 69 69 JWT-only routes; the API-key-capable population is held at 0 by a companion assertion
Routes on bare @jwt_required() auth_required() / role decorators 576 577 REGISTERED EXCEPTION: JWT-only is the deliberate default; conversion grants API-key access and happens per route, on decision
HTTP statuses chosen by sniffing error text typed errors from app.exceptions 0 0 INVARIANT at 0 - migration completed 2026-08-19
API crashes swallowed without recording app.error_reporting 0 0 INVARIANT at 0
Hand-shaped {'error': ...} bodies in app/api typed errors + the global handler 1150 1150 migrate when touched; new endpoints raise
Raw subprocess calls outside the runners app/utils/system.py runners 24 24 migrate when touched
Controller-boundary violations (routes doing service work) service layer extraction 515 515 migrate when touched (first-wave ratchet)
raw api.* calls in pages/ E1: useServerQuery/useServerMutation 460 460 migrate when touched
per-page toast.error extractions in pages/ E1: query-layer error presentation 264 264 migrate when touched
hand-rolled form-group blocks F2: FormField/useForm 343 343 migrate when touched
unencoded ?k=${v} query interpolations in services/api C4: buildQuery/encoding template 97 97 migrate when touched
raw setInterval pollers E2: usePolling/refetchInterval 9 9 DELIBERATE RESIDUE: clock ticks, socket-fallback hooks, and sibling-repo extension timers - each listed per file
direct navigator.clipboard call sites F3: copyToClipboard 0 0 INVARIANT at 0
hex colour literals outside token files G: var(--token) 150 150 migrate when touched
SCSS class names defined in multiple files single-owner partials 114 114 needs eyes on pages (no byte-identical proof available)