Administrator UX successor of excluded #140: derived resources display, honest counters, revoked-worker deletion, limits visibility #226

Closed
opened 2026-10-27 21:22:48 +00:00 by kilo · 4 comments
Member

Goal

Product owner: Scarcity Router; bounded administrator-UX lane. Registered by the 2026-10-27 owner backlog disposition (D-083) as the active successor of the administrator-facing remainder of excluded wontfix issue #140. Producer-owned resource-state correctness (derived/discovered representation, honest availability/freshness, stable consumer projection) moved to #183; this issue owns only the administrator-facing rendering and operations that remain genuinely unimplemented after M09.

Why and Evidence

2026-10-27 reconciliation at develop 4a182affa4775a4a38b47860ad7622a099c56c4a, checked against the current M09 UI and control plane:

  • Resources page iterates only static _config.resources (control_api.py _resources_view); source-derived dynamic resources registered in the live registry never appear (§1 unimplemented).
  • Source counters fold discovered/unclassified decisions into errors (execution_sources.py source_view), so normal discovery is labeled an error (§2 unimplemented).
  • No state-aware remediation text per source state is rendered as specified (§3 partially served by the per-resource diagnostics ladder only).
  • Revoked workers cannot be deleted; workers page offers revoke/rotate only (§4 unimplemented).
  • GatewayLimits are enforced at admission but rendered nowhere in the UI; no /control/limits route (§5 unimplemented).
  • §6 client-integration UX is delivered under D-055/D-058 (x_scarcity_router metadata on /v1/models and completions/responses, Client-configuration page) and is excluded from this successor.

Scope

  1. Resources page: configured AND read-only source-derived resources (id, source, provider, model, effort, health/availability); no duplication of derived resources into durable static configuration; no edit/remove actions implying independent configuration; availability follows the source lifecycle. Reuse #183's producer state projection where available rather than building a second truth.
  2. Sources page: honest counter split routable / restricted / discovered-unclassified / errors; render the retired list; normal discovery never labeled an error.
  3. State-aware source action/remediation text (table-driven): authenticated ≠ auth-required ≠ disconnected-worker ≠ stale-inventory ≠ healthy.
  4. Safe revoked-worker deletion only: revoked-only, refusal while referenced by a Source or static Resource, active-worker deletion rejected, historical audit identity preserved, Delete exposed only when semantically valid.
  5. Execution-limits visibility: operator surface showing why a request is or is not accepted (effective ceilings from D-058), no hidden safety policy.

Acceptance Criteria

  1. Table-driven tests for counter splits and remediation text per source state; resources-page composition tests (configured + derived, read-only discipline).
  2. Revoked-worker deletion happy path plus every refusal case and audit-preservation tests.
  3. Limits visibility payload correctness tests; no secrets in any rendered surface.
  4. Full gate (uv sync --only-dev, make check, uv run basedpyright, git diff --check), deterministic offline tests; mandatory UX review (UX impact: assessment; material regression = CHANGES_REQUESTED); fresh independent technical review at exact frozen HEAD/base.

Constraints

Reuse the existing UI (server_ui.py) and control plane; no second administration service, dashboard or truth store. Do not duplicate capabilities already delivered under M09 or later decisions (§6 is done). No public contract change without an explicit versioned decision. No new network exposure.

Excluded predecessor #140 (historical, unchanged); D-083 disposition; producer-state owner #183; #132 program history; D-053 dynamic sources, D-058 effective limits.

## Goal **Product owner: Scarcity Router**; bounded administrator-UX lane. Registered by the 2026-10-27 owner backlog disposition (D-083) as the active successor of the administrator-facing remainder of excluded `wontfix` issue #140. Producer-owned resource-state correctness (derived/discovered representation, honest availability/freshness, stable consumer projection) moved to #183; this issue owns only the administrator-facing rendering and operations that remain genuinely unimplemented after M09. ## Why and Evidence 2026-10-27 reconciliation at `develop` `4a182affa4775a4a38b47860ad7622a099c56c4a`, checked against the current M09 UI and control plane: - Resources page iterates only static `_config.resources` (`control_api.py` `_resources_view`); source-derived dynamic resources registered in the live registry never appear (§1 unimplemented). - Source counters fold `discovered`/unclassified decisions into `errors` (`execution_sources.py` `source_view`), so normal discovery is labeled an error (§2 unimplemented). - No state-aware remediation text per source state is rendered as specified (§3 partially served by the per-resource diagnostics ladder only). - Revoked workers cannot be deleted; workers page offers revoke/rotate only (§4 unimplemented). - `GatewayLimits` are enforced at admission but rendered nowhere in the UI; no `/control/limits` route (§5 unimplemented). - §6 client-integration UX is **delivered** under D-055/D-058 (`x_scarcity_router` metadata on `/v1/models` and completions/responses, Client-configuration page) and is excluded from this successor. ## Scope 1. Resources page: configured AND read-only source-derived resources (id, source, provider, model, effort, health/availability); no duplication of derived resources into durable static configuration; no edit/remove actions implying independent configuration; availability follows the source lifecycle. Reuse #183's producer state projection where available rather than building a second truth. 2. Sources page: honest counter split `routable / restricted / discovered-unclassified / errors`; render the `retired` list; normal discovery never labeled an error. 3. State-aware source action/remediation text (table-driven): authenticated ≠ auth-required ≠ disconnected-worker ≠ stale-inventory ≠ healthy. 4. Safe revoked-worker deletion only: revoked-only, refusal while referenced by a Source or static Resource, active-worker deletion rejected, historical audit identity preserved, Delete exposed only when semantically valid. 5. Execution-limits visibility: operator surface showing why a request is or is not accepted (effective ceilings from D-058), no hidden safety policy. ## Acceptance Criteria 1. Table-driven tests for counter splits and remediation text per source state; resources-page composition tests (configured + derived, read-only discipline). 2. Revoked-worker deletion happy path plus every refusal case and audit-preservation tests. 3. Limits visibility payload correctness tests; no secrets in any rendered surface. 4. Full gate (`uv sync --only-dev`, `make check`, `uv run basedpyright`, `git diff --check`), deterministic offline tests; mandatory UX review (`UX impact:` assessment; material regression = CHANGES_REQUESTED); fresh independent technical review at exact frozen HEAD/base. ## Constraints Reuse the existing UI (`server_ui.py`) and control plane; no second administration service, dashboard or truth store. Do not duplicate capabilities already delivered under M09 or later decisions (§6 is done). No public contract change without an explicit versioned decision. No new network exposure. ## Links Excluded predecessor #140 (historical, unchanged); D-083 disposition; producer-state owner #183; #132 program history; D-053 dynamic sources, D-058 effective limits.
Author
Member

Current owner triage, 2026-11-01: P2. Router owns administrator UX. Honest counters, state-aware remediation, limits visibility and safe revoked-worker deletion are independently executable under existing boundaries; no blanket native dependency on #183 is appropriate. Derived-resource rendering must reuse the producer projection from #183 when available, rather than invent a second truth. Client-integration UX already delivered under D-055/D-058 is not to be repeated. Implementation and UX/technical acceptance remain open; this triage starts no development.

**Current owner triage, 2026-11-01: P2.** Router owns administrator UX. Honest counters, state-aware remediation, limits visibility and safe revoked-worker deletion are independently executable under existing boundaries; no blanket native dependency on #183 is appropriate. Derived-resource rendering must reuse the producer projection from #183 when available, rather than invent a second truth. Client-integration UX already delivered under D-055/D-058 is not to be repeated. Implementation and UX/technical acceptance remain open; this triage starts no development.
Author
Member

Implementation PR #250 is open at a60fcde40e5521ed3081d253c9c8394ab22008bc over 10c3ea639280777847605c8f7132fff5a49ef09a. Local full validation passed (3258 tests, 18 skipped; managed type and package checks). Independent review and current-head CI remain pending; issue remains open.

Implementation PR #250 is open at `a60fcde40e5521ed3081d253c9c8394ab22008bc` over `10c3ea639280777847605c8f7132fff5a49ef09a`. Local full validation passed (3258 tests, 18 skipped; managed type and package checks). Independent review and current-head CI remain pending; issue remains open.
Author
Member

Owner clarification in the 2026-11-02 continuation for #226/PR #250: counter correctness reports real producer-backed facts; categories without a valid producer signal must distinguish not reported from measured zero. No invented model states, provider errors, routing policy or classification infrastructure. Scope remains the existing administrator UX delivery; review #1 REQUEST_CHANGES and review #2 APPROVE retain their exact historical refs.

Owner clarification in the 2026-11-02 continuation for #226/PR #250: counter correctness reports real producer-backed facts; categories without a valid producer signal must distinguish not reported from measured zero. No invented model states, provider errors, routing policy or classification infrastructure. Scope remains the existing administrator UX delivery; review #1 REQUEST_CHANGES and review #2 APPROVE retain their exact historical refs.
Author
Member

Integrated PR #250 into develop as 481844accb57f5bc092ba9534746c4641e31fc5f; merge parents are approved base 10c3ea639280777847605c8f7132fff5a49ef09a and reviewed HEAD cb86e95068efdde4e1cb7bc8a4856dd570bb4880, with identical integrated/reviewed tree 969fafea41a39d0952a73e1036520eb1a21f2cd0.

Acceptance: configured and read-only derived resources use producer facts; local-policy restriction and remaining discovery counts partition real model decisions, retired models are shown, and per-model errors are explicitly not reported; source guidance distinguishes supported states; revoked referenced/active workers are refused deletion and historical audit storage retained; effective administrator limits are visible. Inventory freshness remains honestly unknown when producer cannot establish it. Deterministic focused and composed UI tests, uv sync --only-dev, full make check (3259 tests, 18 skips), basedpyright 0 diagnostics, package and whitespace checks passed. Independent GPT-6.1 Sol High review #3 APPROVE with no findings at exact refs; Forgejo CI #3495 succeeded. No live inference, release, deployment or downstream #183 acceptance claimed.

Integrated PR #250 into develop as `481844accb57f5bc092ba9534746c4641e31fc5f`; merge parents are approved base `10c3ea639280777847605c8f7132fff5a49ef09a` and reviewed HEAD `cb86e95068efdde4e1cb7bc8a4856dd570bb4880`, with identical integrated/reviewed tree `969fafea41a39d0952a73e1036520eb1a21f2cd0`. Acceptance: configured and read-only derived resources use producer facts; local-policy restriction and remaining discovery counts partition real model decisions, retired models are shown, and per-model errors are explicitly not reported; source guidance distinguishes supported states; revoked referenced/active workers are refused deletion and historical audit storage retained; effective administrator limits are visible. Inventory freshness remains honestly unknown when producer cannot establish it. Deterministic focused and composed UI tests, `uv sync --only-dev`, full `make check` (3259 tests, 18 skips), basedpyright 0 diagnostics, package and whitespace checks passed. Independent GPT-6.1 Sol High review #3 APPROVE with no findings at exact refs; Forgejo CI #3495 succeeded. No live inference, release, deployment or downstream #183 acceptance claimed.
kilo closed this issue 2026-11-02 20:48:59 +00:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
Creatidy/scarcity-router#226
No description provided.