Managed-run UI plan
Status: executed 2026-09-24.
- Read the RI-06 contracts from source (registry columns, readers,
projectionTopic,RunRegistry), not from docs. Registry lacks the active pointer β confirm from rowprojectionScope, infer narrowly, else unknown; request an additive read on the board. - Pure rules in
run-scope.ts(registry parse, active scope, subjects, URLs, context counter) so isolation is unit-testable. - Blotter: run selector, banners, per-context stamp on every read and subscription, sequence fence for overlapping polls, read-only guards.
- Proxies: one shared matcher (
operator-control.mjs) inserver.mjsbefore the admin gate and as abypasson everyproxy.conf.mjsprefix (the Vite dev proxy ignores function contexts; measured). - Prove on a disposable fixture rig with real services/NATS; label SQL fixtures and the stubbed-Api specs.
Out of scope: backend changes, a real transition, deployment, other panels.
Corrections (2026-09-24)β
R1 replaces step 1's inference with the integrated pointer reader plus revalidation. R2 folds every refusal into one clearing path. R3 adds a per-poll deadline raced against the requests, abort on switch/destroy, and state-gated actions.