7.6 KiB
ADR-0160 — CORE Workbench v1: operator/auditor UI before public chat
Status: proposed Date: 2026-05-26
Context
CORE now has the first complete contemplation/review corridor:
- ADR-0152 — learning-arc proof corridor
- ADR-0155 — CI contemplation reports
- ADR-0156 — atomic checkpoint writes
- ADR-0157 — revision-mismatch warning
- ADR-0158 — reboot-event audit trail
- ADR-0159 — contemplation-quality eval lane
The next surface should not be a generic chatbot clone. CORE's distinction is not merely that it can answer prompts; it is that its cognition can be inspected, replayed, audited, reviewed, and ratified under explicit trust boundaries.
A UI that hides this machinery would erase the strongest architectural evidence. A UI that exposes everything by default would become cognitive noise.
The correct first UI is therefore an operator/auditor workbench with a small chat surface and deep progressive disclosure.
Decision
Build CORE Workbench v1 as the first UI/UX surface.
The v1 product is an admin/engineer/dev/auditor interface with five primary modules:
- Chat Surface — minimal prompt/response interface for live turns.
- Trace Drawer — per-turn inspection of surfaces, trace hashes, grounding, replay indicators, proposal/candidate metadata, and telemetry.
- Proposal Review Queue — pending proposals, contemplation provenance, replay evidence, downstream effect, and accept/reject readiness.
- Eval Center — run/read deterministic eval lanes including cognition, learning-arc, and contemplation-quality.
- Replay Theater — select an artifact or turn and compare deterministic replay evidence against the original.
The first implementation phase is planning + read-only observability. Mutating actions (proposal acceptance, corpus mutation, workflow dispatch) require a later ADR and explicit operator confirmation gates.
Product doctrine
Calm default, infinite depth
The UI must be quiet by default. The first screen should show a response and small trust badges, not a wall of internal machinery. Deep evidence is revealed through drawers, split panes, and artifact inspectors.
Audit-native, not analytics theater
The workbench is not a generic dashboard. Every panel must answer one of these questions:
- What happened?
- Why was it allowed?
- What evidence supports it?
- Can it be replayed?
- Did it mutate anything?
- Who/what has authority to ratify the next step?
If a panel cannot answer one of those questions, it does not belong in v1.
Proposal before mutation
The workbench may visualize proposals and review readiness. It must not add a parallel learning path. Proposal acceptance remains governed by teaching review and existing ADR-0057/0151 doctrine.
Replay before persuasion
The UI should never ask the operator to trust an impressive answer. It should show replay status, trace identity, provenance, and mutation boundaries first.
Architecture choice
Frontend
Adopt a thin React/Vite/TypeScript workbench:
- React + Vite + TypeScript
- TanStack Query for API state
- Zustand or Jotai for local UI state
- Tailwind + shadcn-style primitives for consistent low-noise UI
- Monaco only where structured JSON/editor inspection is necessary
- xterm-like console only where raw CLI/replay output genuinely helps
No Electron in v1. No heavy design system. No plugin marketplace. No agent workflow builder.
Backend
Expose a narrow local API over the existing runtime surfaces:
- chat turn endpoint / stream endpoint
- trace/artifact read endpoints
- proposal-log read endpoint
- eval lane run/read endpoint
- replay artifact read/compare endpoint
- telemetry read endpoint
The backend must remain local-first and deterministic. Any endpoint that can mutate corpus, packs, proposals, engine_state, or workflows is out of scope for v1 unless a later ADR explicitly admits it.
Trust boundary
V1 is read-only by default.
Allowed:
- read telemetry JSONL
- read proposal logs
- read contemplation run artifacts
- read eval results
- run read-only eval lanes
- execute chat turns against existing runtime APIs
- display trace/replay metadata
Forbidden in v1:
- accepting proposals
- rejecting proposals as durable state
- mutating teaching corpus
- mutating packs
- writing engine_state except through normal runtime checkpoint path already governed by ADR-0146/0150
- workflow dispatch that commits to main
- hidden background jobs
- remote network dependencies for cognition
Module contracts
1. Chat Surface
Purpose: live interaction with visible trust badges.
Required visible signals:
- grounding source
- replay/trace id when available
- refusal/review state when applicable
- mutation status: none / transient / proposal-only / ratified
2. Trace Drawer
Purpose: expose one turn's evidence stack.
Should display:
- final
surface articulation_surfacewhen presentwalk_surfaceas telemetry/evidence only- trace hash / replay digest
- grounding source
- proposal/candidate references
- rejected/admissibility evidence when available
Must preserve the runtime surface contract: user surface and telemetry evidence remain distinct.
3. Proposal Review Queue
Purpose: make proposal lifecycle legible.
V1 displays only:
- pending proposal id
- source.kind / source_id
- replay-equivalence evidence
- proposed chain
- candidate evidence
- review state
- downstream quality signal if present
V1 does not accept/reject. It can show exact CLI command suggestions for local operator review, but must not execute them.
4. Eval Center
Purpose: make deterministic quality lanes discoverable.
Required initial lanes:
- cognition
- learning-arc demo report view
- contemplation-quality
Eval Center must distinguish:
- lane execution
- stored result inspection
- failure details
- mutation boundary
5. Replay Theater
Purpose: demonstrate deterministic replay as an experience, not a footnote.
V1 should support:
- selecting a run/turn/report
- showing original artifact hash
- showing replay result hash
- comparing metrics and surfaces
- highlighting divergence, if any
Non-goals
- public marketing site
- multi-tenant SaaS
- hosted cloud service
- auth system beyond local operator mode
- background daemon requirement
- arbitrary plugin execution
- agent marketplace
- broad chat polish before audit polish
- replacing CLI lanes
Acceptance criteria
The first implementation PR after this planning ADR should include only the minimal skeleton necessary to prove the workbench shape:
- local API skeleton or documented endpoint contract
- frontend shell with navigation
- static/mock-free read-only panels wired to real local files or real local API where practical
- no corpus/packs/proposals mutation path
- no hidden background jobs
- no remote dependencies
- README/runbook for local launch
A future implementation PR may add proposal mutation only after a separate ADR ratifies the operator confirmation flow.
Consequences
Positive:
- Gives CORE a surface that matches its actual strengths.
- Makes replay/audit/proposal boundaries visible.
- Creates an investor/engineer demo that is not reducible to chatbot fluency.
- Preserves existing ADR trust boundaries.
Negative:
- More work than a simple chat UI.
- Requires careful API design to avoid accidental mutation paths.
- Forces discipline in telemetry and artifact schemas.
Follow-up work
- W-026: Workbench endpoint contract and local read-only API.
- W-027: Workbench frontend shell and navigation.
- W-028: Chat Surface + Trace Drawer read-only wiring.
- W-029: Proposal Review Queue read-only wiring.
- W-030: Eval Center + contemplation-quality display.
- W-031: Replay Theater artifact comparison.