Studio
Studio displays real server state with a next action, not placeholder statistics.
Page editor
Edit a page draft and insert snippets with /snippet. Saving is revision-bound: a concurrent save answers 412 and opens the merge path instead of overwriting.
Loading…
Snippets
Reusable fragments referenced from pages and expanded when the bundle renders. An unresolved reference stays visible in the text.
| Name | Content | Insert | |
|---|---|---|---|
| No snippet exists yet. | |||
Suggestions and comments
Review notes and suggested edits attached to this page; resolving one records who resolved it and when.
| State | Kind | Body | Author | Resolve |
|---|---|---|---|---|
| No comment on this page yet. | ||||
Navigation
Reorder pages and nav entries; the preview below is the order the rendered bundle uses. Saving forwards the order to a connected engine when one answers.
Loading…
Drafts are stored by the control plane and forwarded to a connected engine; this surface never writes to an engine that did not answer.
Served by the core studio
Software records (sources, programs, runs, releases, components, environments, media, verification and exports) live in the core engine and are edited in its studio. When a connected engine answers through this workspace, the panels above render its own records as returned; without a connection the shell states that and shows nothing rather than an invented row. The surface contract below names each action and the setup it needs.
Surface contract
Primary object: the studio for this software: AI, visual and configuration editing over the same IR the engine publishes.
Actions
- Ask AICore studioAI edits run through the core studio’s model binding and are capped by the workspace budget (micro-USD); this hosted build holds no model binding and sends no prompt.
- Add componentBrowses the public component catalogue; installation records the component digest and permissions in the core studio, which then holds the installed version.
- Edit configCore studioConfiguration edits are written to the studio’s IR with revision checks in the core engine; this page edits drafts and navigation through the documented control-plane API.
- PreviewCore studioPreview bundles are rendered by the control plane from a stored revision and served at a token URL; the engine supplies the claim diff when connected.
- PublishCore studioPublishing runs the core engine’s approved-change flow (build, verification, publication record); the hosted shell never publishes on an engine it cannot see.
Required states and how this surface reaches them
- loading
- the session probe and each list show Loading… until the control plane answers.
- ready
- the server’s own records render as returned; the primary object is named before its details.
- empty
- the list endpoint returned no rows; the empty note names the object to create or connect and links the direct action. Empty is not an error.
- error
- the control plane’s status and detail are shown; no placeholder row replaces them.
- offline
- no control plane is reachable; nothing is rendered rather than invented.
- permission_denied
- a 401 returns to sign-in with this path; a 403 states that the role cannot read this surface.
- not_configured
- a 503 names the missing provider or secret; setup is shown, never fake results.
- budget_paused
- an AI request that would exceed the workspace budget is refused by the control plane with 402 and its detail; the studio never queues spend past the cap.
- requires_approval
- publication of generated changes needs the owner’s approval in the core studio flow; the hosted shell cannot approve on anyone’s behalf.
Scope: workspace membership. Engine records are read and written through the core engine’s own routes (proxied by the control plane); the hosted shell binds only to named contracts, shows a record only when the server returned it, and never calculates permissions in the browser.