Control Plane — UI surfaces¶
Target
This page describes intended behaviour or structure. No implementation is claimed unless a section is explicitly marked Current implementation or Evidence.
The Control Plane has no user interface of its own. It exposes read models and commands through the Studio BFF (GW-03) and the public API (GW-01); the Factory Studio renders them, and the CLI and VS Code extension mirror the same commands. This page lists what the platform offers to those clients; the Studio's own information architecture, flows and screens are designed in the UX track (D35) and will reference the ids below.
Work areas served¶
| Studio work area | Screens fed by the Control Plane | Read model | Commands |
|---|---|---|---|
| Workspace | Project list and detail, members and delegations, source scope, environments with freeze state | GET /factory/projects, GET /factory/projects/{projectId}, GET /factory/projects/{projectId}/environments |
CreateProject, SetMembership, Delegate, RevokeDelegation, SetSourceScope, CreateEnvironment, Freeze, Unfreeze, CloseProject |
| Assets | Release list by kind and state, release detail with closure and evidence, aliases, publication review | GET /factory/asset-releases, GET /factory/asset-releases/{releaseId} |
ValidateRelease, SubmitRelease, PublishRelease (approval-gated), DeprecateRelease, MoveAlias |
| Operations & usage | Run list and run detail (steps, attempts, receipts), approvals inbox, budget and usage by status, run usage | run and approval reads of RunControlService; GET /factory/projects/{projectId}/usage, GET /factory/runs/{runId}/usage |
SubmitRun, CancelRun, Decide (approval), SetProjectBudget |
| Governance & administration | Subscription and edition, invoices, A2A cards visible to the tenant | GET /factory/subscription, GET /factory/invoices, GET /factory/agent-cards |
ChangeSubscription |
State families shown¶
Every state the Studio displays for Control Plane objects is one of these vocabularies, rendered with the status palette of the design system:
| Family | Values | Source |
|---|---|---|
| Run | Accepted, Running, WaitingForApproval, Cancelling, Completed, Failed, Cancelled | RunState (ADR-0014) |
| Approval | Pending, Approved, Rejected, Expired, Stale, Cancelled | ApprovalState |
| Asset readiness | Draft, InReview, Published, Deprecated | ReleaseState |
| Usage | Estimated, Reserved, Observed, Reconciled, Uncertain | UsageStatus (FUX-08) |
| Project | Active, Suspended, Closing, Closed | ProjectState |
| Environment | Draft, Active, Frozen, Retired | EnvironmentState |
| Subscription | Trial, Active, PastDue, Suspended, Cancelled | SubscriptionState |
Rules the clients must honour¶
- Scope comes from the shell. The organization, project and environment switchers change which read model is requested; they grant nothing. Permissions are evaluated server-side per command from the trusted scope.
- Approvals are exact. The approval screen shows the proposal version it decides on; if the proposal changed, the request is
Staleand the screen offers the new request, never a re-submit of the old decision. - Usage is honest. Amounts are shown with their status; an
Uncertainamount is labelled as such and never summed into a "final" total. - Idempotent submission. Clients send an idempotency key with every run submission and reuse it on retry; the server returns the same run.
- Live state from events. Run and approval screens subscribe to the Control Plane event stream through the BFF; a toast is never the source of truth, the next read is.
CLI and VS Code¶
The CLI (factory projects|assets|runs|approvals|usage|subscription) and the VS Code extension (run panel, approvals view, asset status in the editor) use the same GW-01 routes with the same scopes. Every command has the same name in the Studio, the CLI and the extension so that documentation and audit entries match.
Localization and accessibility¶
Texts of the vocabularies above are localized in English, Hebrew (right-to-left) and Russian; identifiers, hashes and release ids are never translated. Screens meet WCAG 2.2 AA (D34); the Control Plane contributes stable ids and machine-readable states so that assistive technology can announce transitions.