14 KiB
Workbench/UI Alignment Scope Note: Proposal-First Construction & Governance
Status: Approved & Registered Scope Note
Date: 2026-06-20
Author: Gemini 3.5 Flash (docs-only Workbench scope auditor)
Governing Doctrine: ADR-0223, ADR-0224, and the PR #841-#849 reconciliation baseline
1. Current Workbench Baseline
The CORE Workbench is established as a local operator/auditor surface, not a mutation console. Every visual claim displayed on the UI must trace to a backend read model, committed artifact, or allowlisted execution path.
1.1 Route Registry & Shortcuts
The single source of truth for all routes is workbench-ui/src/app/routes.ts. There are currently 16 registered routes grouped into 7 wayfinding sections:
| Section | Route | Path | Shortcut | Purpose |
|---|---|---|---|---|
| Converse | Chat | /chat |
⌘1 |
Execute a normal CORE turn and journal evidence. |
| Cognition | Trace | /trace |
⌘2 |
Inspect turn surfaces, grounding, stage rail, propagation, and trace hashes. |
| Cognition | Contemplation | /contemplation |
Palette | Inspect persisted contemplation process traces. |
| Determinism | Tour | /tour |
Palette | Guided determinism tour over the real demos with honesty cards. |
| Determinism | Replay | /replay |
⌘3 |
Re-run a turn in a sealed fresh runtime and compare envelopes. |
| Determinism | Demos | /demos |
Palette | Run registered determinism demos. |
| Evidence | Proposals | /proposals |
⌘4 |
Review the teaching proposal queue and HITL ratification. |
| Evidence | Runs | /runs |
⌘6 |
Browse recorded session runs, identity continuity, and checkpoint gaps. |
| Evidence | Lived Life | /lived-life |
Palette | Watch always-on heartbeat loop closure (versor_condition < 1e-6) evidence. |
| Evidence | Vault | /vault |
⌘8 |
Inspect persisted vault entries with exact CGA recall evidence. |
| Evidence | Audit | /audit |
⌘9 |
Read deterministic audit events (digests, mutation boundary flags). |
| Discipline | Evals | /evals |
⌘5 |
Run/read allowlisted eval lanes and wrong=0 ledgers. |
| Discipline | Calibration | /calibration |
Palette | See gold-tether arena practice classes and license verdicts. |
| Substrate | Packs | /packs |
⌘7 |
Browse language/identity pack manifests, checksums, and metadata. |
| Substrate | CORE-Logos | /logos |
Palette | Inspect CORE-Logos pack overview, lexicon, glosses, morphology, alignment, and safety. |
| Settings | Settings | /settings |
⌘0 |
Manage local UI preferences; engine config remains CLI-only. |
1.2 EvidenceSubject Grammar
The RightInspector and Evidence Chain Rail render details dynamically based on a canonical EvidenceSubject structure:
turn->/trace/<turnId>proposal->/proposals/<proposalId>eval_result->/evals/<laneId>artifact->/replay/<artifactId>run->/runs/<sessionId>pack->/packs/<packId>vault_entry->/vault?inspect=vault:<entryIndex>audit_event->/audit?inspect=audit:<eventId>calibration_class->/calibration?inspect=calibration:<className>
1.3 Baseline Absences from UI-UX-GUIDE
- Leeway Evidence: Full B4 leeway annotations are not admitted; only B4a nullable
LeewayEvidenceread models are exposed. - CORE-Logos Studio: Only the read-only
/logosviewer is supported. No patch-forge, draft-state editing, or pack-mutation UI is authorized. - Universal Proposal Envelope: Designed conceptually, but the UI lacks a unified artifact display template.
2. Architecture Pivots Since Latest Workbench Guide
Several critical back-end pivots have landed since the last UI-UX Guide update (Wave M B3.5). The UI must align with these boundaries:
2.1 The Proposal-First Construction Seam (ADR-0223 / ADR-0224)
The back-end math and quantitative reasoning pipelines have transitioned to a strict one-way authority gradient:
surface/process cue
→ ConstructionProposal(status="proposed")
→ exact mention/entity/quantity bindings
→ ContractAssessment
→ diagnostic runnable/refused
- Closeness Proposes: Surface text matching or process-frame triggers authorize the creation of a
ConstructionProposal(status="proposed"). This proposal is a pure hypothesis and is created before role binding or validation. - Bindings Ground: Spans from the text are bound to roles (e.g.
base_quantity,scale,state_entity). - Contracts Determine: The organ-specific
ContractAssessmentevaluates these bindings and decides if the contract isrunnableorrefused(with typed blocker codes). - Diagnostic Posture: All proposal-first families (such as
proportional_change.decrease_to_fractionandpartition.percent_partition) enforcediagnostic_only=Trueandserving_allowed=False. The UI must never display these constructions as runnable in serving or active in response generation.
2.2 Quantity-Entity Upcoming Seam
The authorized foundational slice binding.quantity_entity introduces local quantity-to-entity grounding:
- Quantities are bound to entities (
MentionBinding(binding_type="quantity_entity")) and optionally to units (MentionBinding(binding_type="quantity_unit")). - Spans must match the source text exactly.
- The UI must render these relations as diagnostic grounding facts in the frame, rather than generic entity extractions or semantic ontology mappings.
2.3 Governed Report Rebaseline Discipline (#847 / #848)
- Ephemeral live runner outputs (e.g., train accuracy shifts from
6/44/0to30/20/0after a capability change) must not be committed casually within capability PRs. - The committed
report.jsonis a sealed, governed artifact. - Any modification to
report.jsonmust occur in a dedicated rebaseline PR, explicitly authorized by a governance/rebaseline role, to preserve the sacredwrong_ids == []invariant.
2.4 Fresh-Base Agent Startup Guard (#849)
scripts/agent_startup.shenforces workspace hygiene before any agent edits.- It prevents stale worktrees from causing conflict-prone PRs by validating HEAD alignment with
origin/main(or requiring explicit ancestral alignment override viaCODEX_ALLOW_NON_MAIN_BASE=1for PR-resumption).
3. UI Gaps
The current Workbench UI contains several conceptual and routing gaps relative to the backend pivots:
- Proposals Route Collision: The
/proposalsroute reads primarily like a Human-In-The-Loop (HITL) teaching/memory proposal queue. It needs to distinguish:- Teaching Proposals: Persisted corrections in the teaching loop awaiting review.
- Construction Proposals: Ephemeral/diagnostic structural hypotheses extracted from a turn's
ProblemFrame(withstatus="proposed","partial","closed", or"refused"). - Contract Assessments: The runnable/refused evaluations that prove or refuse a construction proposal.
- Trace Route Deficit: The
/tracedetail view lacks visual support forProblemFrameconstructions. It needs a dedicated Construction or ProblemFrame panel displaying the entire pipeline:proposals→evidence spans→mention bindings→contract assessments→dispatch status/blockers. - Evals Route Ambiguity: The
/evalsview shows live runs and wrong counts but does not differentiate:- Committed/ratified report pins (stable in git).
- Ephemeral live runner outputs (which may show capability lifts not yet committed to report pins).
- Unratified artifact mutations and historical rebaseline events.
- Audit Route Gaps: The
/auditlog should display artifact and rebaseline governance events (e.g., when a report pin is ratified, or when an unauthorized file modification is blocked) as distinct, flagged events. - Read-Only Enforcements: The CORE-Logos and Packs routes must remain read-only; no "Studio" or "mutation" affordances can be simulated.
- Registry / Command Palette Parity: The command palette must not advertise route shortcuts or commands for un-shipped pages. No route registry paths or command counts may change until the underlying page and read models are implemented.
- Evidence Chain Rail Grammar: If the backend exposes them, the Evidence Chain Rail needs address mappings for construction proposals and assessments (e.g.,
/proposals/construction:<familyId>or/trace/<turnId>?inspect=assessment:<organName>).
4. Recommended UI Update Sequence
To address these gaps safely, future UI PRs should follow a sequential, decoupled path:
graph TD
A["PR A: Docs-Only UI Guide Update"] --> B["PR B: Construction Read Models"]
B --> C["PR C: Trace ProblemFrame Panel"]
C --> D["PR D: Proposals Route Tab Split"]
D --> E["PR E: Evals Rebaseline Provenance Card"]
E --> F["PR F: Audit Governance Event Logger"]
F --> G["PR G: (Optional) Dedicated Construction Route"]
A. Docs-Only Workbench Doctrine Update
- Scope: Align
docs/workbench/UI-UX-GUIDE.mdwith proposal-first semantics, clarifying that proposals are hypotheses and contracts are the runnable authority. - Constraint: No code changes.
B. Read-Model Inventory for Construction Proposals and Assessments
- Scope: Add backend API read-model endpoints to expose
ProblemFrame.proposalsandassess_contracts()results for a given turn ID. - Constraint: Read-only endpoints; no execution paths.
C. Trace ProblemFrame/Construction Read-Only Panel
- Scope: Add a sub-tab in
/traceto visualize the grounded mentions, bindings, and active construction proposals for the selected turn. Highlight exact text spans on hover and display contract refusal blocker codes clearly.
D. Proposals Route Tab Split / Filter Split
- Scope: Introduce clear UI tabs or filters in
/proposalsto separate "Teaching & Memory Proposals" (which require HITL operator ratification) from "Diagnostic Construction Proposals" (which are immutable, turn-scoped hypotheses).
E. Evals Rebaseline Provenance Card
- Scope: Add a metadata card to
/evalsthat displays the current committed report pin status vs. live output, referencing the controlling rebaseline session document and ratification PR hash.
F. Audit Route Artifact-Governance Reader
- Scope: Integrate governance events (such as rebaselines, startup guard outcomes, and reconciliation audits) into the
/auditstream.
G. Dedicated Construction Route (Only under Evidence Pressure)
- Scope: If diagnostic families grow beyond the capacity of the Trace panel, introduce a dedicated
/constructionsroute showing global catalog families, role obligations, and test-suite adequacy. - Constraint: Do not add this route early; route counts and shortcuts must remain locked at 16 until evidence demands it.
5. Non-Goals
The following patterns violate CORE architecture and are explicitly forbidden from future UI work:
- No Mutation UI: The UI must never allow editing, adding, or deleting files, packs, or database records.
- No Applying Proposals: The UI cannot provide button triggers to apply or run a construction proposal.
- No Generic Entity Extraction: Do not build arbitrary NLP extraction views or taggers. Only display the exact bindings generated by the backend
ProblemFrame. - No Serving Admission Controls: The UI must not provide toggle switches to promote diagnostic families to serving or modify the
serving_allowedstate. - No Hidden Normalization: The UI must display raw, un-repaired values. It must never normalize floating-point values or massage
versor_conditionreadouts. - No CORE-Logos Studio: The
/logosroute is a viewer; no interactive "Studio" features (pack editing, patch-forge creation) may be implemented.
6. Acceptance Criteria for Future UI Work
Every future UI contribution must satisfy:
- Evidence-Driven Only: The UI must only render committed, backend-provided JSON payloads. No mock data or UI-synthesized states.
- Honest Empty States: If a turn has no construction proposals, show "No construction proposals in this frame" rather than implying the pipeline failed.
- Exact Span Mapping: Spans shown in the UI must map exactly to character offsets in the raw problem text.
- Diagnostic Integrity: Visual elements for diagnostic-only families must carry clear "Diagnostic Only / Serving Disallowed" tags.
- Honest Evals: If
wrong_idsis non-empty, the count of wrong answers must be highlighted in red; do not hide errors behind generic success badges. - Registry Conformance: Any new route must be registered in
WORKBENCH_ROUTESand satisfy route conformance (loading, error, and empty state handles).
7. Recommended Next Implementation Briefs
For the next sessions, the following PR briefs are recommended:
Brief 1: Align UI Guide with Proposal-First Doctrine
PR Title: docs(workbench): align UI guide with proposal-first construction doctrine
Task:
- Update docs/workbench/UI-UX-GUIDE.md to document the proposal-first construction seam.
- Define the separate roles of ConstructionProposal (status="proposed", diagnostic) and ContractAssessment (runnable authority).
- Document the governance rules for evals rebaselines and the startup guard.
Constraints:
- No changes to workbench-ui/*, generate/*, or tests/*.
- Docs-only alignment pass.
Brief 2: Read ProblemFrame Construction Evidence in Trace
PR Title: feat(workbench): read ProblemFrame construction evidence in Trace
Task:
- Expose initial_frame.proposals and ContractAssessment results in the turn read model API.
- In the Trace route UI, add a "Construction" tab next to the "Pipeline" and "Field" tabs.
- Render a list of active construction proposals, their role obligations, and their ContractAssessment status (runnable vs refused blocker codes).
- Highlight the corresponding SourceSpans in the problem text when a role or proposal is hovered.
Constraints:
- UI must remain read-only.
- Expose diagnostic_only=True and serving_allowed=False flags.
- Do not add new routes or change the route registry in routes.ts.
- Ensure the route count remains 16.