Lands the Phase C "make cognition legible" slice plus Phase A residue, all backend-reader-first over real engine data (no theater, read-only doctrine intact, zero serving-path imports). C1-a — Cognitive pipeline record (persistence-first, per #729 worthiness edit): - workbench/pipeline_record.py: curated CognitivePipelineRecord over the real CognitiveTurnResult (input → intent → proposition_graph → articulation_target → realizer → walk_telemetry → trace_hash). Raw field multivectors are DELIBERATELY excluded; _assert_no_raw_field_payload recursively rejects raw field keys, and validate_pipeline_record fails closed on missing/duplicate stages, non-recorded status, or dangling edges — the UI can never receive a partial record that claims to be complete. - test_workbench_pipeline_record.py: non-vacuous guards — missing stage, monkeypatched new required stage, and injected raw {"F": [...]} each raise. C2-a — Contemplation as a process: /contemplation route over real persisted contemplation/runs/*.json (glob reader; honest-empty when absent). C4-a — Identity continuity (L10/L11): RunDetail.identity_continuity + Runs Identity tab, sourced from the real core.engine_identity (engine_identity / parent_engine_identity lineage relation, re-derived to verify). Demo Theater: renders backend-owned proof-promotion + entailment DAGs. Phase A residue: density preference wired end-to-end (settings → shell → tokens); cross-route consistency touch-ups. Infra: local API CORS now echoes only validated 127.0.0.1/localhost origins (hostname-checked, not arbitrary reflection) so Vite fallback ports work. Route chunk-split keeps the build warning-free. Cleanup: corrected the stale ADR-0175 practice-lane assertions (build_report is 6 correct / 0 wrong / 44 refused after the current serving lane; wrong=0 held) and the two registry-derived count tests (LeftNav + CommandPalette 12 → 13 for the new Contemplation route). Docs: runtime_contracts.md (pipeline-record contract), UI-UX-GUIDE, api-contract-v1, data-shapes-v1, wave-M-worthiness, phase-a-residue-ledger. Validation: 106 workbench/practice Python tests green (incl. wrong=0 lane + pipeline-record fail-closed guards); 459/459 frontend; pnpm build clean; git diff --check clean. No generate.derivation / reliability_gate / stream / field.propagate / vault.store imports.
15 KiB
Wave M — CORE Workbench: Mastery & Worthiness
Date: 2026-06-13
Status: approved plan (Shay, 2026-06-13). Predecessor: Wave R complete
(#702–#723; 11 routes real, Replay Moment, trace integrity, DAG/Demo/wrong=0).
Execution: committed brief packs in docs/handoff/, parallel-safe DAGs,
dispatched between Fable 5 and GPT5.5 — the same production line that
shipped R2 + R3.
Thesis
Two asks, one lens.
- Mastery — take the shipped surface from very good to best-in-class.
- Worthiness — add what's missing so the workbench is undeniably worthy of the deterministic cognitive engine beneath it.
The lens: Anthropic and xAI as target users who would want to use it. They build the opaque transformer this engine defines itself against. What impresses them is not prettier charts — it is a UI that makes determinism, refusal-discipline, and geometric coherence inspectable and felt. Standard: ADR-0160's three pillars — audit-native (not analytics theater), calm default / infinite depth, replay before persuasion.
Diagnosis — the two blind spots
The workbench today is excellent at evidence browsing: every route projects an evidence manifold, the Evidence Chain Rail threads provenance, the Replay Moment makes hash-equality felt. But it is blind to the two most distinctive parts of the organism:
- It shows the teaching/ratification loop and is blind to the calibrated-learning / serving-discipline loop. You can ratify a proposal, but you cannot see the gold-tether arena, the reliability gate, the Wilson floor vs the θ ceiling, or the moment "the engine earns the right to guess." That discipline — the engine refuses rather than guesses wrong — is the single most impressive idea in the project, and it is invisible.
- It shows outputs and evidence but not cognition itself. The
CognitiveTurnPipelinestages, the contemplation process, the CL(4,1) field substrate,versor_condition, identity continuity. C1 and a first C4 run-level identity projection now exist; C2/C3 remain the major blind spots. For an audience that lives inside opaque models, legible deterministic cognition is the wow.
Everything below closes those two gaps on top of a mastery polish.
Non-negotiable disciplines (bind every phase)
- Backend-reader-first, no theater. Every new surface reads real engine data through a new read-only reader; no dashboard over invented or recomputed numbers. The calibration and field readers do not exist yet — that gating work is Python, not React.
- Never re-implement engine math in the workbench. The calibration
reader imports and uses
core.reliability_gate(conservative_floor,license_for,Ceilings,Action); the field reader uses the engine's realversor_condition/cga_inner. The workbench computes nothing the engine owns. - Read-only doctrine holds. No new mutation endpoints; execution stays
the existing allowlisted set (
/evals/run, ratify,/demos/{id}/run). A calibration view never changes a license. - Determinism in the UI too. No force-directed / nondeterministic layout, no decorative motion-as-cognition. Golden-file layout tests for every new visualizer (like the DAG). The honesty is the impressiveness.
- Doctrine gates extend to every new surface: schema mirrored, enums covered, route conformant, readers SHA-pinned where they assert a metric.
Phases (priority-ordered)
Phase A — Mastery polish of the shipped surface (scope: M; parallel)
No new concepts; make the 11 routes undeniable.
- Design-system full expression: semantic token roles, elevation, density
modes actually wired (the deferred Settings density pref),
tabular-numson all numerics,[text-wrap:balance]on all statements, motion-discipline audit (only state-transition affordances). - Cross-route consistency sweep: every list =
VirtualizedList+useListNavigation+SearchInput+ selection tokens; every detail =Panel+TabBar; calm-honest prose audit on every state. - DAG viewer: finish its consumers. It shipped wired only to proposal
chains; wire the PCCP proof-promotion 8 scenarios and entailment
traces (the other two the brief named). A primitive with one consumer is
half-built.
Implementation note (2026-06-13): Demo Theater now renders backend-owned
DemoEvidenceDagprojections for all proof-carrying promotion scenarios and deductive-entailment traces. The shared DAG primitive now has proposal, cognitive-pipeline, PCCP, and entailment consumers. - Command/keyboard completeness: a palette verb for every route action; registry-driven help stays the exhaustive contract.
- Accessibility pass: focus-visible audit, SR labels on every evidence badge, reduced-motion honored.
Phase B — Calibrated-Learning / Serving-Discipline surfaces (scope: L) ← the heart
The "worthy of the model" core. Backend-reader-first (none exist; data lives
in core/reliability_gate/ + the committed evals/gsm8k_math/*/report.json).
Detailed brief pack: docs/handoff/wave-M-phaseB-calibration-briefs-2026-06-13.md.
- B1 (Python): read-only readers/endpoints over the real ledger —
GET /calibration/classes(per-classClassTallycounts + the Wilsonconservative_floorreliability + PROPOSE/SERVElicense_forverdicts via the realcore.reliability_gate),GET /serving/metrics(the committedtrain_sample/v1/report.jsonnumbers — read the artifact, never re-run an unsafe lane). Schema mirrors + snapshots + drift gate. - B2 — Calibration / Gold-Tether route: per class, a coverage-vs-Wilson-floor bar, the θ ceiling, and a plain-language "earned PROPOSE / SERVE / neither" verdict. Failures-first. Where you see "the engine earns the right to guess."
- B3 — wrong=0 as a felt global presence: an always-present invariant element (N correct / N refused / 0 wrong, the zero load-bearing), elevating the per-run Evals ledger to the project's thesis made constant.
- B4 — the leeway story: wire the calibration verdict into the Proposals
/ Replay rails so a reviewer sees why a turn was granted latitude (which
class license, which θ, the
[approximate]disclosure) — connecting the HITL ratification you already have to the calibration that grants it.
Phase C — Make cognition legible (scope: L) ← the wow for Anthropic/xAI
- C1 — Cognitive Pipeline visualizer: for a selected turn, render the
real
CognitiveTurnPipelinestages (intent → PropositionGraph → ArticulationTarget → realizer → walk telemetry → trace hash) as a deterministic staged view (reuse the DAG primitive). The "real, replayable path, not animated fake cognition" surface. Persistence-first constraint (verified 2026-06-13): this is NOT reader-first over existing telemetry — the journal does not persist the stage internals.CognitiveTurnResultcarries ~25 fields (field_state, proposition, proposition_graph, intent, admissibility_trace, operator_invocation, dropped_compound_clauses, versor_condition, …) butTurnJournalEntrypersists only ~12 surface fields, and_run_chat_turndiscards the rest; there is no/trace/{id}/pipelineendpoint and the data was never written. So C1-a's real first deliverable is a persistence change, not an API route: persist a curatedCognitivePipelineRecordat turn-write time, then the endpoint is a trivial read-only projection. Two hard constraints: (1) persist the cheap structured stage records +versor_conditionas a scalar (and at most a field digest) — never the rawfield_state_before/aftermultivectors, which would resurrect the deferred per-turn O(n²) persistence cost and contradict the L10 discard-on-exit design; (2) it touches the runtime surface contract (CognitiveTurnResult → ChatTurnResult → TurnJournalEntryis two narrowing hops), so the PR updatesdocs/runtime_contracts.md+ a non-vacuous fail-closed test that a silently-dropped stage fails loudly (CLAUDE.md Schema-Defined Proof Obligations), and pre-widening turns showmissing_evidence, not green. The replay-reconstruction fallback (Option B) recomputes rather than reads recorded state — fallback only, never primary. C1-a implementation note (2026-06-13): new/chat/turnjournal rows now carryCognitivePipelineRecordwith input → intent → PropositionGraph → ArticulationTarget → realizer → walk telemetry → trace hash stages;/tracerenders it as a deterministic DAG and renders pre-widening rows asmissing_evidence. Full C1 still needs richer readers/inspection beyond this first persisted substrate. C1-b/C1-c implementation note (2026-06-13):/trace/{turn_id}/pipelineis now the canonical read-only projection over the persisted record, and the Trace route renders a deterministic stage rail + DAG + selected-stage detail inspector. This completes the first usable pipeline visualizer over recorded stage evidence; later C1 expansion should add new engine-owned stage facts only by wideningCognitivePipelineRecord, not by replay recomputation or UI inference. - C2 — Contemplation as a process, not just outputs: the contemplation
loop (attempt → gold-tether → ClassTally → propose), connecting
Demos/Proposals/Calibration into one story.
C2-a implementation note (2026-06-13): Workbench now exposes persisted
contemplation/runs/*.jsonprocess reports through/contemplation: cold attempt, checkpoint enrichment, engine-authored proposal boundary, ratification boundary, and grounded-after scenes remain report-authored evidence. This is the first process trace; the fuller Calibration/Proposal integrated loop is still open. - C3 — Field substrate (honest, read-only, hard):
GET /field/stateover realFieldState+versor_conditionfor a turn, rendered as inspectable exact numbers and invariant status —versor_condition < 1e-6as a live "field is valid" assertion,cga_innercoherence as exact values. NOT a decorative 3D blob; no force-directed/nondeterministic motion. The honesty is the impressiveness: "this is the geometry, it's exact, it can't fake coherence." - C4 — Identity continuity (L10/L11): surface the engine-identity hash,
lineage chain, reboot-verification status — "the same continuous life
across restart," the deepest telos.
C4-a implementation note (2026-06-13):
RunDetailnow carries a typedIdentityContinuityprojection fromengine_state/manifest.jsonand the current ratified substrate identity. Runs renders an Identity tab with engine/current/parent digests, lineage relation, revision pair, verified vs break vs missing-evidence status, and no frontend manifest inference.
Phase D — The "they'd want to use it" layer (scope: M)
- Guided Determinism Tour — elevate Demo Theater into a first-run narrative: pick a demo, watch the proposer get disciplined, see hash-to-hash replay, see a wrong answer refused. "What this proves / what this does not prove" honesty cards on every scenario.
- Provider-agnostic framing — the pitch for Anthropic and xAI: "bring your own model's claim; watch the deterministic engine decide, refuse, and replay it." The Tool-Authority / Hybrid-Verification demos already embody this; make it the tour's spine.
- Shareable evidence bundles — deterministic export of a turn + its trace + replay + calibration verdict as a single citable artifact. Reproducibility as a deliverable.
Phase E — Robustness pillars (scope: S; continuous)
- Extend doctrine gates to every new surface; SHA-pin the calibration/field readers where they assert a metric.
- Performance budget (resolve the Vite chunk-size warning via route
code-split), error-boundary discipline, golden-file regime for the
pipeline/field visualizers.
Route chunk-split implementation note (2026-06-13): Workbench routes now
load through React lazy route elements while preserving the registry contract.
pnpm buildemits route chunks and the entry bundle is below the 500 kB Vite warning threshold without raising the budget.
What's missing in the design (the second ask, distilled)
| Missing surface | Why it matters for worthiness | Reader exists? |
|---|---|---|
| Calibration / gold-tether arena | Makes wrong=0 earned, not asserted — the most distinctive idea, invisible | No — build first |
| Serving-vs-learning regime frame | Names the two-regime architecture; without it the UI reads as a chatbot | No |
| wrong=0 as a felt global presence | The thesis itself; today only per-eval-run | Partial (ledger) |
| Cognitive pipeline visualizer | "Real replayable cognition" vs animated fake — the core wow | Trace exists; needs staging reader |
| Contemplation-as-process | The learning flywheel, today only its outputs | Partial — persisted process reports |
| Field substrate / versor_condition | The geometry that can't fake coherence — honest, exact | No — build first |
| Identity continuity (L10/L11) | "One continuous life" — the deepest telos | Partial — run-level manifest projection |
| Serving metrics reachable | The actual capability numbers (gsm8k) aren't viewable | No |
Risks
- Theater is risk #1 — mitigated by backend-reader-first + never re-implementing engine math. The gating work (B1, C1, C3 readers) is Python and parallel-safe.
- The field surface must stay honest — read-only over real
versor_condition/cga_inner, no decorative geometry, no motion theater. - Scope is large — several PR trains. Sequences as readers → routes → cross-wiring → tour. Phase A runs in parallel as polish.
- No timelines — phases/priorities/scope-sizes; sequencing is the dependency DAG, not a clock.
Consolidation & re-sequencing — see B3.5
Phase B's heart is done (B1 #724 / B2 #725 / B3 #726). The consolidation that
must happen before Phase C — route-registry unification (kills the
command-palette drift), calibration becoming evidence-native, the B4
feasibility gate, the UI/UX guide, and the Phase-A residue ledger — is
governed by wave-m-consolidation-b3.5.md (deliverables B3.5-a … e). That
doc is authoritative for the consolidation slice; this plan's Phase A items
fold into B3.5-e (the residue ledger). The grouped-navigation idea and the
Calibration earned-state fix are folded into B3.5 (D1 section field; D2
acceptance). Related parallel tracks: core-logos-studio-plan.md (the
language/manifold Substrate surface) and proposal-artifact-substrate-v1.md
(the universal proposal envelope).
Order: B3.5 (consolidation) → resume Phase C (cognition legibility) → D (tour) → E (continuous). B4 stays parked behind B3.5-c's feasibility gate.