UI
Purpose
The v1 pain is invisibility: a case lives in one terminal, nobody else can watch, take over, or answer a gate (Platform Details PG-5). The UI is the one place where a case is visible to many, operated by one, and where every human decision the platform needs is asked and recorded. It is a section of serdica-ui administration, not a separate application — authentication, roles and deployment come with the host.
P The chat is the workspace (D119). A case is worked the way a coding assistant or a chat CLI is worked: one thread per case, in which the agent's steps, its tool calls, its questions, its plan and every human decision appear as cards in time order, and a person types into a composer at the bottom. Nothing about a case happens anywhere else — a decision taken outside the thread is invisible to the ledger and to the other viewers, which is v1's whole failure (PG-26). What makes it more than a chat is that every card says where it is about: environment · system · object, as a chip, so that a reader always knows what is where without opening a query.
P Two surfaces, one application. The operator surface is the administration section — eight workspaces behind role-dependent front doors (§ 1). The client surface is what the customer sees: their requests, one request in their own vocabulary, the acceptance gate their representative owns, and — as the target state — a self-service intake (§ 5b). The adaptive case walkthrough is the operational UX reference: all 68 catalogue cases use five patterns — Queue, Case workspace, Decision, Result / acceptance, Learning review — on their actual module flows. Each contains the selected case's data and working local interactions. Case Journeys § 2 explains the consolidation and stage/state distinction.
P One operations UI across the presentation. The homepage accordion and this page embed the same operations preview, generated from the walkthrough's components, style and local action handlers. The full walkthrough adds the chosen module path and developer inspection. The eight workspace responsibilities below describe entry points and administration; they do not require eight different case interfaces. Control/Metrics/Studio keep their administrative purposes.
P In a case, the current thread card is the focus; the operator/agent conversation and composer remain visible; detailed evidence is folded. A module stage may produce several cards: working, waiting, at a decision, or checked. The same Decision pattern serves plan, stage sign-out, target authority and recovery, with different packets and authorised actors. The prototype's catalogue, module-stage and state selectors sit outside the product frame; real users receive the current server-projected card. Amber indicates a decision/wait, green a checked result, blue current work and links, and red a failed condition.
0. Design principles
P Eight rules, in the order they were argued; every screen in § 5 can be checked against them.
| # | Principle | What it means on screen |
|---|---|---|
| U-1 | The chat is the workspace | a case is worked in one thread of cards; list screens only find and route; nothing is decided off-thread |
| U-2 | Every card says where | a locator chip ENV · SYSTEM · OBJECT (+ mode: read · write · ddl · send) on every tool call, write, decision and brief; the right rail Where is the sum of them |
| U-3 | A brief before a case | nothing arrives raw: platform.intake re-briefs every arrival from its source — with the source named and linked — and authorised intake opens automatically; one operator action corrects, merges or dismisses (H1, SG-11) |
| U-4 | Roles have front doors, not screens | one application; the role decides which workspaces exist in the rail and which buttons render. An Approver's door is Decisions; an Operator's is Inbox and Cases; a Prompt publisher's is Studio; an Administrator's is Control; the Customer representative has the client app |
| U-5 | Progressive disclosure | the thread shows a card's summary; the packet, the paper, the tool result and the full map are one click deeper and never inline. Raw database rows stay out of the thread; concise named business checks summarise retained evidence |
| U-6 | CLI habits welcome | slash commands in the composer (/steer /answer /stop /handover /consult /park /resume /where /papers /try /help), a status line under the thread, keyboard navigation (j k Enter / g d g i g s ?) |
| U-7 | One vocabulary everywhere | the state words (opened · running · parked · at gate · held · resolved · closed), the gate kinds, the paper names and the where-chips are the same in the list, the thread, the queue and the footer of every wireframe |
| U-8 | The customer sees a different application | same case, customer words only; no transcript, no system names, no handles, no gate an operator owns; the client confirms business scope/results when assigned by case policy, and accepts the named preview or delivery; technical effect gates remain role-scoped |
1. Roles → front doors → workspaces
P The roles are those of Trust and Data § 3; the workspaces are the platform's, not a module's — a Support case and a Configuration case are worked in the same chat with a different stage ladder.
| Workspace | Rail group | Front door for | What it is for | Others who use it |
|---|---|---|---|---|
| Inbox (new, D119) | WORK | Operator | arrivals and automatically opened cases; inspect · correct & route · merge · dismiss | Viewer reads |
| Cases (formerly Sessions) | WORK | Operator | every case, its state, where it is, who controls it, what it waits on, its clocks; the case chat (formerly Session view) opens from here | Approver (filtered to waiting on: Approver), Viewer |
| Decisions (formerly Gate inbox; the prose still says "gate inbox" for the concept) | DECIDE | Approver | every waiting gate across all cases with its packet; held batches; write-shape training | Viewer reads; a shape proposal is answered at HW-approve by the Approver holding the target class (D133) |
| Studio (formerly Skills) | BUILD | Prompt publisher | prompts, skills and eval sets per module and stage; draft → eval → publish → rollback | a prompt's owner drafts and tries a draft on one case |
| Knowledge (formerly Memory) | BUILD | Operator with curator duty | the memory tree, the proposals queue, articles with their provenance; confirm · return · retire | every role reads |
| Metrics | OBSERVE | everyone | hours, gates, cases, versions — with each target's basis; nothing is edited here | — |
| Control (Connectors, plus two screens new in D119) | CONTROL | Administrator | connector scopes and health · roles & policies (retention, gate training, budgets) · exceptions & kill switch · audit | Approver reads exceptions |
| Client app | — | Customer representative | my requests · one request · acceptance · start a request | — |
2. The case chat — the vocabulary
P Layout. Three columns. Left: the case header (id, state, type, contract class, clocks), the stage ladder of its module with the gate each stage carries, and the sessions (live · stopped · resumed) with the controller and the viewer count. Centre: the thread of cards, oldest first, a status line and the composer. Right: Where — source, systems touched with mode, papers, linked cases and knowledge, and — when the case is at a gate — the grant that an approval would issue.
P Card kinds. Eleven; the left colour bar names the kind, the small caps label repeats it for the colour-blind.
| Card | Who writes it | Carries | One click deeper |
|---|---|---|---|
| brief | intake software supplies the arrival; support.root supplies classification and precedent judgment; the clock service applies policy |
the normalised arrival and source chip, followed by attributed classification, clocks and resolved handles | the source (ticket, mail, help-desk item), the full brief |
| agent | the stage's agent | a step or a finding with its stated reasoning — never chain-of-thought (Architecture § 1) | the paper it updated (plan, semantic contract, MISSING) |
| tool | the runtime | tool name · mode · where-chip · one-line result summary (counts, sums, timing) | the result kept with the case — never rows in the thread |
| question | the agent | a question only a person can answer; parks the task as question (D66) |
the answer options; answering resumes |
| plan | the agent | the plan version, the writes it will need and their shapes, the verification it promises | the Plan paper; the packet preview |
| decision | the runtime at a gate | who proposes what to whom — module › agent › case · step of the plan · the role it waits on — then one line each of what · where · why, and the options for the role that holds the gate: approve · reply with a different approach (the agent re-plans) · refuse; evidence, shape, reversibility, blast radius and policy checks sit under Details; everyone else sees waiting for ⟨person · role⟩ | the plan gate (screen 07) |
| verdict | a person | the recorded decision: gate, outcome, role, reason, time | the GATE_DECISIONS row |
| write | the effect applier | the executed write under its grant: ids and counts, the 5-step progress (show → apply uncommitted → verify in DB → replay the UI query → COMMIT last), the verify step it triggered | the Write log paper (ids and hashes, never rows) |
| handover · consult | the runtime | a sub-case opened in another module (Hd) or a consult answered read-only | the sub-case's own chat |
| status | the runtime | park and resume with the park class, connector or provider down, budget reached, kill switch, session stop or resume | Control › Exceptions |
| human | any person with a role | a message, a steer, an answer — always attributed to a role and a session | — |
P Where-chips. ENV · SYSTEM · OBJECT in monospace, followed by a mode chip: read (green), write or send (amber — gated), ddl (red — HW-ddl). Objects are handles (policy ••••7731, annex ••••0028/3), never raw identifiers; the case keeps the mapping (Trust and Data § 4). Clicking any chip opens Where (screen 05): the full map by environment, system and mode of everything the case touched — the trace of what the agent actually did, typed by nobody.
P The plan gate follows the plan mode of the coding CLIs. The agent proposes a numbered plan — each step with its where-chips and the gate it will need — states why, and lists the alternatives it rejected. The person picks one of four: approve the plan (a write or send step asks again when it runs, and the grant is issued then); approve and pre-approve a step — one decision for plan and write where policy permits, and shown disabled with the reason where it does not (an approved shape, not irreversible, and never H5 on a customer-facing environment); reply with a different approach — free text to the agent, which re-plans and returns with the next plan version; refuse with a reason, which parks the case. A reply re-opens planning, not the gate. Evidence, the statement, reversibility, blast radius, policy checks, the shape's training count and the grant are one click deeper under Details.
P Composer and permission mode. The composer's second line always states the permission the typist has: you control session 3 · the agent asks, you decide for the controller; Approver(PROD, write) · read + decide for a role holder who is not controlling; viewers have no composer. Slash commands: /steer ⟨text⟩ (a steer to the running agent) · /answer (the open question) · /stop and /resume (the session) · /handover ⟨module⟩ (opens Hd) · /consult ⟨node⟩ (a read-only consult) · /park ⟨reason⟩ · /where and /papers (open the rail sections) · /try ⟨version⟩ (run this case on a draft prompt — how prompts are trained case by case, § 4 W9) · /help.
P Status line. State · stage → next stage · tool calls · elapsed · human minutes so far · runtime budget left (minutes). Internal runtime effort/budget is shown in hours and minutes. Approved commercial offer prices and monetary terms are customer-visible with their currency; they are distinct from model/runtime cost.
3. Intake — a brief before a case
P The Inbox is the first screen an Operator opens, and nothing in it is raw. An arrival from any door — the ticket system, the shared mailbox, the customer's help desk, the client app's Start a request, a monitor — is normalised by platform.intake (Agents § 5c, Stage Classification § 4) into a brief:
| Field | Content | Shown as |
|---|---|---|
| source | channel, external id, link, reporter, arrival time, origin key (channel + external id, D98) | a blue source chip that opens the original |
| what was said | the normalised statement of the arrival — not the raw body | two to four lines |
| identifiers → handles | every policy, annex, agency, ticket, attachment the arrival mentions, resolved to a where-chip and checked | a small table with a green resolves or a red not found |
| source duplicate / related work | the same canonical source request/revision is a delivery duplicate; a shared handle/object only identifies related work | duplicate source delivery attaches once; separate requests remain separate unless their request identity is confirmed |
| proposed | owning module · case type · contract section and severity or priority · the two clocks · customer | a one-row table — the classification is auto by design (SG-11) |
| precedents | closed cases and active knowledge that match the symptom | blue chips that open them |
| initiator | who started it — a channel, a person on the client app (D97) — and the fact that no person has yet seen it | one line |
P Authorised intake opens automatically; triage and the configured H1 policy record classification, and the clock service uses the applicable arrival time. The operator may Open case, Correct & route (a revision and evaluation example), Merge into #… after confirming the same source request, or Dismiss policy noise. Missing initiation authority waits visibly. A shared policy handle alone does not make two different requests duplicates.
4. Workflows
P Thirteen workflows; each names its trigger, its actors, the screens it crosses and where it ends. Together they cover every human action the platform asks for — anything not listed here is either the agent's own work or a defect of this page.
| # | Workflow | Trigger | Actors | Screens | Steps | Ends in |
|---|---|---|---|---|---|---|
| W1 | Intake and brief | an arrival on any door | connector intake software, Support root, optional classification adviser, Operator | Inbox → Case chat | software normalises/correlates and opens the case; the same root classifies and retrieves precedents before routing; Operator inspects / corrects / merges / dismisses | a case at S1 with clocks from arrival; or an explicit authority wait |
| W2 | Follow a case | anyone opens a case | Viewer, any role | Cases → Case chat → Where | read the thread as it grows (realtime); open a card one level deeper; open Where | nothing changes; many read, one controls |
| W3 | Steer, answer, stop | a running case | Operator (controller) | Case chat | /steer; answer a question card (park question → resume); /stop and /resume a session; Take over (needs Operator, notifies the previous controller) and Hand over (recorded) |
the case continues under one controller |
| W4 | Decide a gate | a decision card appears | the holder of the role for this gate and target | Decisions → Case at a gate → Plan gate | read who proposes what; Approve → for a plan, H3; for a write, a grant env × system × target × mode bound to the artefact hash, with expiry; Approve and pre-approve a step where policy permits; Reply with a different approach → the agent re-plans and returns with the next plan version; Refuse with reason → park gate |
a verdict card; on an approved write, the executor runs (W6) |
| W5 | Train a shape | a clean, person-confirmed write instance | Approver | Packet › Shape · Decisions › Shapes · Control › Policies | each HW-instance verdict counts; three consecutive clean instances propose lifting the shape to HW-approve (D112); the Approver for the target class confirms at HW-approve (D133); any refusal or failed verify resets; any Approver may suspend |
a shape in draft · approved · suspended; H5, HW-shared, HW-irreversible, HW-ddl never lift |
| W6 | Apply, verify, reply | an approved write or send | effect applier, agent, Approver | Case chat | the executor applies under the grant (5-step write) → write card with ids; S6 re-checks the customer's symptom on both systems; the reply is drafted in customer words → H5-send on a customer-facing environment (D114) → sent; a configuration delivery asks the customer to accept (CG-11, W12); held batches wait as cases of their own until released, refused or split | resolved · closed; or S7 reversal (H7) |
| W7 | Hand over, consult, sub-case | the plan needs another module or another node's knowledge | Operator, receiving module | Case chat → sub-case chat | /handover ⟨module⟩ opens Hd (always human, prior confirmation); the receiving root accepts (a sub-case with its own ladder and gates inside the same case) or rejects with a reason (D66); /consult ⟨node⟩ is read-only and returns an answer card |
a handover card; Where lists the sub-case |
| W8 | Park, recover, kill | a connector or provider fails, a budget is reached, a question waits, the estate must stop | runtime, Operator, Administrator | Case chat (status cards) · Control › Exceptions | parks name one class (question · gate · sub-case · connector-down · provider-down · budget · capability-gap); connector-down resumes when the probe is green; budget asks extend or stop; the kill switch refuses every write, send, ddl and push at once and parks running cases — reads continue; turning it off is a second decision | resumed cases; or a stopped estate with readable papers |
| W9 | Author and publish | a prompt, skill or eval set needs to change | the prompt's owner (author), Prompt publisher | Studio → Studio version → (Case chat /try) |
the owner drafts with a reason → tries it on one case (/try v13) → runs the eval set → compares v12 / v13 per case → publish (a gate: green eval set, the publisher role for this stage, rollback point recorded — a role, not a review) → new sessions get the version, running ones stay pinned → rollback is itself a publish |
a published version; eval failures become cases |
| W10 | Curate knowledge | a case closes with a proposal; the nightly consolidation pass proposes | agent, curator (an Operator with the duty for a branch) | Knowledge | case-local finding → proposed → confirmation (D56): a curator's review, or two independent cases used it without contradiction → active (read by agents) → retired per the retention class; the consolidation ("dreaming") pass only proposes | an article that names the cases that taught it |
| W11 | Administer | a scope, role, policy or budget must change | Administrator | Control › Connectors · Roles & policies · Exceptions | edit a connector scope (the ceiling a grant can never exceed) · probe · mark customer-facing; the roles → capabilities matrix (roles, not names — D107, D110); retention per artefact class with gated manual actions (D109); gate policy thresholds (D112); budgets in minutes (D117); every change lands in AUDIT_LEDGER with a reason | a policy row; a decision in the audit |
| W12 | The customer's journey | a customer starts or is written to | Customer representative | Client app: Start a request → My requests → One request → Acceptance | start (kind · words · references resolved · attachments · urgency as a proposal) or arrive by any channel → brief (W1) → follow in plain words → answer the one question we cannot answer for them → Accept (CG-11, recorded with name and artefact hash) or Ask for changes (re-opens); a representative whose role set includes Viewer may open the case view — the operator thread, read-only, handles instead of identifiers | done; or re-opened with the customer's note |
| W13 | Observe | any time | everyone | Metrics | read human minutes per case, first-person time, gate waits, cases by state and module, targets with their basis (D111); breaches link to the case | nothing is edited; a target is a claim with a basis |
P Three properties hold across all thirteen: every human action is a verdict or a human card in some case's thread (or a row in AUDIT_LEDGER for Control), so nothing is decided off-record; every workflow that changes an environment passes through a grant issued by a gate and executed by the effect applier, never by the agent; and every workflow is role-checked by the front door, not by a hidden button.
5. Screen inventory
P Case content and response path. The 68 case journeys bind five adaptive patterns to module stages, backend and agent work. One request uses its existing question/action card for external work: who must act, a plain-language instruction, when requested, the evidence needed, Report completed, Cannot perform and Add evidence. Reporting calls the scoped response API, not the acceptance API, and changes the display to “Checking your result”. An ordinary business answer uses the same API with response_kind=answer. A required action still waiting is waiting_for_you; an external organisation waiting is in_progress with the waiting party and age stated in the summary. Cases and Where show the full obligation/member matrix; Acceptance states instructions, preview or delivery scope. No new screen or client-visible technical transcript is introduced.
5a. The operator surface
| # | Screen | Renders | Backed by | Who acts, how |
|---|---|---|---|---|
| 01 | Inbox | arrivals newest first with source, time and proposed classification; the selected brief (§ 3) | arrivals → intake briefs (origin key, handles, duplicate verdict, classification, precedents) | Operator: open existing case · correct & route · merge · dismiss; automatic H1 is already recorded |
| 02 | Cases | one row per case: id and title, module · stage, state chip, where chips, controller, waiting on, clock; who is waited on, clocks at risk, keyboard | CASES ⋈ SESSIONS ⋈ GATES ⋈ the classification's clocks |
Operator: open, park, take control, hand over; Approver: same list filtered to waiting on: Approver |
| 03 | Case chat | the thread of cards, the stage ladder with gates, the sessions, the status line, the composer, the Where rail (§ 2) | ledger events over SignalR; TASKS; PAPERS; GATES |
controller steers, answers, stops; everyone reads |
| 04 | Case at a gate | the same chat with a decision card carrying the packet and the buttons for the holding role; waiting for Approver for everyone else | GATES, GATE_DECISIONS, GRANTS, WRITE_SHAPES, HELD_BATCHES |
the holder of Approver for this target: approve · refuse · ask |
| 05 | Where | the full map: environments as columns, systems as boxes, objects with mode chips; papers; sessions; sub-cases, consults, precedents, held batches | TASKS (env · system · object · mode per tool call), PAPERS, SESSIONS, CONNECTOR_SCOPES |
read only; reached from any where-chip |
| 06 | Decisions | every waiting gate: kind, case, proposed by (module › agent), what, where, age, waits on (person · role); held batches; shapes with their clean-instance count; history of decisions with the person, the role and the reason | GATES, HELD_BATCHES, WRITE_SHAPES, GATE_DECISIONS |
Approver: row → the case at its gate or the plan gate; release · refuse · split a held batch; the Approver for the target class: confirm a shape proposal at HW-approve (D133) |
| 07 | Plan gate | header: module › agent › case · proposes plan vN · to whom · controller · customer · clocks; the plan as numbered steps, each with where-chips and the gate it needs, done/now/next; why this plan; the alternatives the agent rejected; your decision — approve · approve and pre-approve a step (disabled with the reason where policy forbids) · reply with a different approach · refuse; Details collapsed: evidence, statement, reversibility, blast radius, policy checks, shape, grant, history | GATES (H2 presents at S3, H3 confirms at S4), the Plan paper, GATE_DECISIONS, WRITE_SHAPES, GRANTS (issued when a write step runs) |
the holder of the role: approve · reply · refuse |
| 08 | Studio | artefacts by module › stage (prompts, skills, eval sets) with state; the selected artefact's versions with eval results; where it is used; the eval set with its failures | SKILLS, EVAL_SETS, prompt governance tables (Agent Framework § 6) |
the prompt's owner: new draft, run eval; Prompt publisher: publish, rollback |
| 09 | Studio version | the diff between the draft and the published version; cases it was tried on; publish checks; the eval run per case (expected · old · new · verdict); roll-out and rollback rules | prompt governance tables, eval runs, GATE_DECISIONS (publish) |
Prompt publisher: publish · return to author · retire draft |
| 10 | Knowledge | the memory tree of Agents Memory § 1 — platform/ (intake · experience · handovers), connectors/<system>, configuration/ (normalization · abacus · ipal · offer · serdica), source/ (serdica-backend › microservices · serdica-ui · intentgpt · db-plsql), support/ (methodologies · experience) — one AGENTS.md per node with active-entry counts; the proposals queue with source case and target node; the state ribbon (case-local → proposed → active → retired); one experience entry (symptom signature · systems/env · mechanism · fix shape · links · reusable artefacts · taught by · read by); search by symptom |
the memory tree, entries, consolidation-pass proposals, AUDIT_LEDGER memory events |
the node's curator: confirm → active · return · retire · edit as a new version |
| 11 | Metrics | tiles (human minutes per case, first person on an arrival, gate wait, gates per case, writes without a person, thin shapes); cases by state and module; gate throughput; targets with their basis | ledger parsers (Metrics) | read only |
| 12 | Control › Connectors | env × system × kind × allowed modes × customer-facing × health × credential × last probe; effects; what is down right now | CONNECTOR_SCOPES, health probes, environments.<env>.customer_facing |
Administrator: probe · edit scope · add connector |
| 13 | Control › Roles & policies | roles → capabilities matrix; retention policy per artefact class (keep · then · manual action · gate); gate policy (threshold · window · confirmer); budgets in minutes | the role map (Trust and Data § 3); the catalogue rows retention.per_class (D109), gates.auto_confirm and gates.escalation_intervals (D112) and budget.* (D117) — Whitelabel Catalogue § 5 |
Administrator edits; manual retention actions land in Decisions with a packet |
| 14 | Control › Exceptions & kill switch | the kill switch with its state and consequence; grants in force (case · gate · env · system · target · mode · hash · issued by · expires); exceptions (parked cases by class, capability gaps, orphaned sessions); the audit tail | kill-switch state, GRANTS, HELD_BATCHES, CASES (park classes), AUDIT_LEDGER |
Administrator: turn on / off (two decisions), revoke a grant, resume · extend · stop & hand over |
5b. The client surface
P The customer is not a second class of operator; they see a different application built from the same case (D91). Four screens; What you may start is a panel of screen 18 (D91):
| # | Screen | Renders | Backed by | The customer's job here |
|---|---|---|---|---|
| 15 | My requests | every request of theirs with the state in their words (received · we are looking into it · we need something from you · being fixed · checking the fix · ready for your acceptance · done), last update, their ticket, whose turn it is | CASES ⋈ GATES ⋈ the contract's clocks, filtered to the customer |
see whether anything waits on them |
| 16 | One request | a plain-words timeline (received → understood → your confirmation → being done → checking → ready), the one open question with an answer box, where it stands, attachments, a message box to the same people; Open the case view when the person's role set includes Viewer | the case's statement — drafted and gated — never its papers; question parks addressed to the customer; the case view is the operator thread, read-only |
answer what only they can answer; open the working thread if their role allows |
| 17 | Acceptance | what changed in their words, how a person checked it, the decision (Accept approves the shown scope; delivery acceptance closes when all requested work is verified; Ask for changes reopens affected work), the accept-by date; See how it was done → the case view when the role allows | GATES H1/H3 for assigned business confirmation or CG-11 for acceptance, the artefact hash, the report paper |
accept, or ask for changes with a reason |
| 18 | Start a request | the kind (something is wrong · a configuration change · a question), their words, references we resolve for them, attachments, urgency as their proposal for severity; what happens next; what is not started here — target state (D81) | the intake contract, the same one a connector fills; intake.initiation |
begin work, send it for their organisation's approval, or understand a refusal |
P Three fields the client surface carries that a channel cannot (D97). Origin — every request shows whether it arrived by mail, from the ticket system, from the customer's help desk, or was started in place; one case model, four doors, and the list reads the same whichever was used. Modules involved — the parts of the platform a request actually engaged, so a support case that grew a configuration sub-case says so instead of going quiet. Initiator — who started it and when, because a client who starts work is a different fact from a client who was written to.
P Screen 18 shows the initial client entitlement, so the wireframe fixes all three outcomes rather than the happy one: granted opens the case, may request opens an authorisation request that parks visibly, not granted refuses with the clause and keeps the description for the commercial counterpart (Agents § 5c, Trust and Data § 3b). The kind list offers only what this role may start or request, and a refusal is shown with its reason — never hidden, never silently re-routed to a module the person happens to be allowed to start.
P Screen 18 is the target state and is not the first build (D81, formerly non-goal N-9). What is excluded is building a self-service form before the operator surface and the gate protocol exist, because a form over gates no work type has earned puts a customer in front of an untrained system. The wireframe exists now so that the intake contract is designed for rather than discovered.
P What is deliberately absent from every client screen, and why the absence is a design rule and not an omission:
| Absent | Why |
|---|---|
| the transcript | the operator surface shows plans, tool calls and stated reasoning; a customer reads the case's statement. Working papers are not customer-visible output. A representative whose role set includes Viewer may open the case view from a request — that is the operator thread, read-only, behind the role check; the client screens themselves never embed it |
| table names, environments, agent names, handles | customer-visible text is written in the register's language (Stage Application and Verification); a screen that leaks a schema has leaked the estate. The backs: lines in the footers of the wireframes are design annotations, not rendered text (#54) |
| any gate an operator owns | approval is a permission, not a second person (Trust and Data § 3); the only gate here is the acceptance the representative owns |
| anything that widens a role | nothing on a client screen grants, escalates or re-identifies — re-identification is an operator action and it is audited (Trust and Data § 4) |
| internal runtime/model cost, token budget, provider and control internals | hidden from the client. Approved commercial offer price/rate basis, currency, delivery terms and conditions are explicitly shown for offer review and acceptance; they are not internal execution metrics. |
P The Customer representative role may start support, may request configuration, may not start the customer-specific development module (id source), and views and accepts through CG-11 (D97). Acceptance records the person's name and the artefact hash; a later change re-opens the acceptance rather than reusing it.
6. The shared interactive screens
P The case chat is the working surface. Select an example below. Case chat shows DC-02 with Mira D., the Ablera operator/controller, the main agent and the investigation. Configuration sub-plans shows CF-05 with the Abacus stage and separate partner-template task conversations. Operator approval shows Georgi S. deciding the target packet in context. The customer has a conversation with their Ablera contact and sees the scoped result. These are illustrative names, messages and role assignments, not recorded live sessions.
P The sample data progresses with the work. In the main SD-1598-based example, the initial take distinguishes possible causes of the blank fifth year; investigation finds five existing policies but only four print-register entries; the selected solution is one missing entry, not a family retransfer. Application names Bulstrad IT and its receipt; verification checks the five-to-five join and regenerated document. Learning retains the discriminator and a family-inventory tool candidate. Other cases carry their own authored findings and checks from Case Journeys, rather than this case's data or generic placeholder text.
Open the full preview · DC-02 case chat · CF-05 stage and sub-plans · CF-01 temporary-exception route
P Conversations have scope. The main case conversation stays with the root. A stage conversation exposes its task, plan and relevant messages. A bounded sub-plan has its own parent/task identity and selected input revision, not a separate customer request. In CF-05, each partner template is an independently checked work item; a row or a message is not automatically another agent. Selecting a conversation changes the visible context, not the case's authority.
P Parent confirmation and human approval are separate. The child proposes a plan to its immediate parent; the parent confirms permitted preparation. The stage joins the child results into its own H2/H3 packet. The main root presents any unresolved human decision. A parent-confirmed read/preparation task cannot apply a target change, and an operator's chat message is not a gate decision. The prototype shows both the parent confirmation in the sub-plan conversation and the human packet in context.
P The composer is an operation. Mira, the illustrated controller, can send a message to the main agent against the selected task/sub-plan. It is appended to the conversation with an acknowledgement that scope must be reconciled. The existing POST /cases/{caseId}/commands carries command=steer, text and the exact task/plan context. The server checks controller rights, visibility in the controlling case or its accepted descendants and the current revision. Georgi's illustrated approver view can decide its packet but has no general controller composer. Customer replies use their scoped response/result actions.
P Same components, different presentation. The homepage retains its expandable accordion with case-chat, configuration-plan, approval and learning examples. The UI chapter exposes the example chooser. The full walkthrough adds the route, stage-state selection and developer contracts. All use the same conversation renderer, operator identities, plan cards and local action handlers. The shared five patterns organize queue, work, decisions, results and learning; they do not replace chat with five isolated summary cards.
7. Rules the screens enforce
P Approval is a permission, not a second person (Trust and Data § 3). A decision card the viewer may decide shows the decision actions; one they may not shows who can, and a notify action. An Operator who holds the role for the gate and the target decides their own case in one action; where the organisation wants four eyes on a target it withholds the role from its operators — a role-set choice, not a platform rule. Nothing on screen lets a viewer widen their own role.
P Many viewers, one controller (Agent Runtime). The case header always shows the controller and the viewer count; Hand over is a recorded handover; Take over needs the operator role and notifies the previous controller. Viewers have no composer.
P The thread shows stated reasoning, not chain-of-thought — each agent's declared reasoning for a step, its tool calls and their result summaries, and every memory read and write (Architecture § 1). Raw model reasoning is neither a dependable API nor appropriate operational output.
P Every decision card is a packet, not a chat — the mechanism (with the validator's verdict), the kind and the rejected alternatives, the exact change with expected counts, the revert path and effect classes, the replay, what remains uncertain (Stage Solution Take § 3). A decision binds the shown artefact and revision; an eligible effect grant is issued only when all required decisions pass. A changed artefact re-opens affected gates. Cards show named check summaries; raw database rows remain in the protected evidence store.
P Every card says where. A card without a where-chip is a defect of the card, not a style choice; the Where rail is derived from the cards, never typed.
P A brief before a case. The brief names its source; authorised intake already opened the case. Opening it is a read. An operator corrects classification when needed, creating a recorded revision (SG-11).
P Held batches are cases so that their age is visible on the first screen — the direct answer to the 12-week HDesk plateau (Baseline § 5). They appear in Cases and in Decisions alike.
P Hours only. Human minutes, elapsed time, budgets in minutes, clocks in hours and business days; no currency on any screen (D117).
8. Realtime and auth
F SignalR is the estate's proven realtime transport — hub + one-use Redis ticket + HMAC group alias + Rabbit fan-out + transactional outbox, working tested code on the health path (verified 01.09.2026, Platform Details PG-5). P The case chat subscribes per case/session with its own ticket shape and role set; the list screens poll or subscribe to the workflow-generic change event. Authentication is Authority; the roles are the six LT_USER_ROLES rows, issued as role claims by Authority (Trust and Data § 3, D134).
Challenges
- P Visual design follows serdica-ui's administration look; the wireframes fix shell, regions, vocabulary and data, not styling — settled with the T1 skeleton.
- P Thread volume — a configuration stage runs for hours and produces thousands of events; the chat needs collapse-by-agent and follow-mode, and the SignalR payload must stay a reference to ledger rows, not the rows. Tool cards carry summaries; results stay one click deeper.
- P Where-chip resolution — a handle that does not resolve (a policy number with a typo, an object in an environment the connector cannot reach) must render as a red not found chip and park the brief as
question, never as a silent blank. - P The curator duty is a duty of the Operator role per branch of the tree, not a seventh role, until the measured proposal throughput (Metrics) says otherwise.
- P Control's policy tables render the catalogue rows
retention.per_class,gates.auto_confirm,gates.escalation_intervalsandbudget.*(Whitelabel Catalogue § 5; D109 / D112 / D117); what stays open is where the T1 skeleton fixes their storage.
P Implementation alignment. Intake, classification and routing follow Agents § 5c. A permitted arrival opens before an operator clicks it; Inbox is an inspection/correction queue. Gate commands carry the shown artefact hash and expected version; stale decisions return conflict. The same Acceptance screen states preview or delivery, target and revision; preview acceptance cannot close outstanding deployment. Reconnection reloads committed resources by ledger cursor. The backend enforces customer/role filtering on every read and command.
P Client-led Configuration. Reuse the existing request/Acceptance card for H1 business scope and H3 business results when CASE_TYPES.GATE_PLAN assigns required_role=customer_representative. It shows the business projection and exact revision, never a technical SQL packet. The same card uses CG-11 for preview/delivery. Each command names the gate id, scope, hash and version. Scope/result/preview confirmation continues work; only completed-delivery acceptance closes the case. This removes a vendor queue without adding a screen or implying write authority.
P Offer view. Assessment & Offers presents the requested scope, effort/assumptions, owner-approved commercial terms and delivery proposal, missing items and exact offer revision. O3 is customer acceptance with scope offer; it is unavailable while required terms are missing and never authorises implementation. Offer workflow.