M09: Configuration, web UX, and diagnostics #94
Labels
No labels
accessibility
bug
documentation
duplicate
enhancement
good first issue
help wanted
invalid
P1
P2
P3
question
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Depends on
#85 A0: Architecture, decisions, and contracts for the optional execution gateway
Creatidy/scarcity-router
#88 M03: OpenAI-compatible gateway and execution coordinator
Creatidy/scarcity-router
Reference
Creatidy/scarcity-router#94
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
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?
Goal
Allow a user to install and operate the product without understanding its internal topology and without mandatory YAML/JSON editing.
Module of the execution-gateway program; architecture and contracts come from A0 (#85).
User value
Pairing a worker, adding an API provider and copying client configuration take minutes, not an architecture lesson; errors come with concrete remediation steps.
Relationship to current code
config.py(D-036 default user config),selection_app.ApplicationDependencies(process-configured artifacts),examples/selector-policy.json(D-035/D-036).doctorconcept (D-016) is realized as shared diagnostic logic used by both the UI and adoctorcommand.Scope
doctorcommand.Non-goals
Contracts / interfaces affected
Administrator/client/worker configuration and authentication contracts (A0); audit/diagnostic field contracts (A0); existing REST v1 control endpoints unchanged.
Dependencies
Acceptance criteria
Security considerations
Administration is a distinct identity class per A0: strong authentication for admin surfaces, revocation capability, no shared default password, no bearer secrets in URLs, redacted diagnostics, minimal audit metadata with bounded retention. The UI is served by the same container as the gateway — its auth boundary and session handling follow A0's threat model.
Risks
Evidence still required
Closeout (v0.1.0 release-readiness reconciliation, 2026-09-21). M09 is implemented and its acceptance criteria are satisfied on
develop@9d6192e.control_api.py,control_errors.py,server_ui.py,server_store.py,server_config.py,server_composition.py,diagnostics.py,control_server.py; contract:docs/control-surface.md(control surface v1, D-041/D-048). Stack choice recorded with D-013 evidence: server-rendered standard-library HTML, no frontend framework, no JavaScript requirement.detected→authenticated→protocol_compatible→available→eligible→promotion_confirmed) with a concrete remediation at the first unmet stage; health checks/discovery/doctor never consume inference quota — the only real-generation path is/control/resources/{id}/generation-testrequiring{"confirm": true}; the default OSS configuration is neutral (no author-private defaults shipped); exports/diagnostics/UI are secret-free by construction (credentials live only in the dedicated store table, referenced by id) and configuration has exactly one source of truth (server_config.py); worker pairing UI uses the ONE M05 pairing system (one-time code issue/reveal, real connection state, revocation, rotation).tests/test_m09_server.py,tests/test_control_api.py,tests/test_server_ui.py,tests/test_server_store.pyand the M10 security matrix.scarcity-router doctorrealizes D-016 via the shared diagnostics module (store-read-only, explicitly no collector/dispatch/inference).make check1868 tests OK, basedpyright clean,make package-checkgreen; Forgejo CI green ondevelop(run #25).Closing as complete;
docs/roadmap.mdnow records M09 complete.