The "they'd want to use it" first-run surface: a curated narrative that makes
the engine's discipline legible to a newcomer — bring a claim from any model and
watch it get decided, refused, or replayed. Proposer authority ignored.
Honest by construction (the risk with a narrative surface is theater):
- workbench/tour.py determinism_tour() is a curated ordered narrative BOUND to
the real demo registry. Intro (provider-agnostic thesis) → three demo steps
(deductive entailment decides only on engine+oracle agreement; epistemic
truth-state refuses a wrong proposer; proof-carrying promotion ignores
proposer authority) → payoff (replay-to-same-hash + the citable evidence
bundle).
- Each demo step's what_this_proves / what_this_does_not_prove cards and the
demo title are PULLED FROM THE REAL DEMO SPEC — never re-authored — so the
tour can never claim more than the demo it points at.
- A step referencing a missing demo FAILS CLOSED (KeyError), not a dead link.
Tests assert both (cards == spec; phantom demo raises).
Backend: schemas.py DeterminismTour/TourStep; GET /tour. schema-snapshot regen.
Frontend: /tour route registered in the registry (Determinism section, 14
routes; nav/palette/guide counts updated); TourRoute — thesis hero + ordered
step cards with the honesty cards + links to the real demos / replay.
Validation: 140 workbench Python tests incl. tour drift guards; 472/472 frontend
incl. routes/routeConformance/routes.docs (guide↔registry), Shell+palette counts
(14), schemaDrift, and the tour UI test; pnpm build clean; git diff --check
clean. No serving-path imports.
19 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 (pipeline), C2-a (contemplation), C3-a (field substrate), and a first C4 run-level identity projection now exist. 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. C2-b implementation note (2026-06-13): the run detail is no longer a flat JSON dump — each scene is now a typed loop stage. The reader (_contemplation_scenes) projects every scene onto a canonicalstage_role(cold_attempt/engine_enrichment/engine_proposal/operator_ratifies/grounded/other) and pulls the loop's connective ids (proposal_id,candidate_id,proposal_state,grounding_source) out of the raw detail; the UI renders the arc "attempt → enrich → propose → ratify → grounded" with named stages, cold→grounded bookends, and the ids as evidence. Honest wrinkle (surfaced, not faked): the fixture proposals do NOT resolve in the live proposal log (source_kindsexemplar_corpus/operator, nonecontemplation), so the proposal id is shown as evidence but is intentionally NOT a clickable cross-route link — a dead link would be theater. Live Proposals/Calibration navigation is deferred until real contemplation proposals reach the log (reader-verified linking is the follow-up). - C3 — Field substrate (honest, read-only, hard): real
FieldState+versor_conditionfor a turn, rendered as inspectable exact numbers and invariant status —versor_condition < 1e-6as a live "field is valid" assertion,cga_inneras an exact transition value. 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." C3-a implementation note (2026-06-13): BUILT persist-first. Per-turnFieldEvidence(exactversor_condition,field_validvs the1e-6ceiling, a content-addressedfield_digest, andcga_inner(before, after)) is computed inworkbench/field_evidence.pyfrom the engine result and persisted on the journal entry atfrom_chat_turn— the raw multivector never crosses the boundary, only scalars + digests. The read endpoint is a trace facet (GET /trace/{turn_id}/field, consistent with/pipeline) and the surface is the Trace route's Field tab.field_validis consistency-checked against the ceiling at construction, so it can never claim validity whileversor_conditionbreaches1e-6(the wrong=0 analogue). Honestmissing_evidencefor pre-widening journal rows. Deferred: cross-turn field-coherence trends and session-level field persistence. - 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.
D1+D2 implementation note (2026-06-13): BUILT as the first-class
/tourroute.workbench/tour.py::determinism_tour()is a curated, ordered narrative bound to the real demo registry: intro (the provider-agnostic thesis) → three demo steps (deductive entailment decides; epistemic truth-state refuses a wrong proposer; proof-carrying promotion ignores proposer authority) → payoff (replay-to-the-same-hash + the citable evidence bundle). Honesty by construction: each demo step'swhat_this_proves/what_this_does_not_provecards are pulled from the real demo spec (never re-authored), and a step that references a missing demo fails closed (KeyError) rather than becoming a dead link — a test asserts both. The spine is the three substrate-capability demos that exist today (the named Tool-Authority/Hybrid demos are not in the registry); the thesis carries the bring-your-model framing. Read endpointGET /tour; route registered in the registry (Determinism section, 14 routes). - Shareable evidence bundles — deterministic export of a turn + its
trace + replay + calibration verdict as a single citable artifact.
Reproducibility as a deliverable.
D3 implementation note (2026-06-13): BUILT.
workbench/evidence_bundle.pyassembles a turn journal entry into a content-addressedEvidenceBundlecomposing the Phase-C evidence (pipeline + field) with the trace and the calibration leeway verdict. Thebundle_digestcontent-addresses the deterministic cognitive evidence only — journal position + wall-clock (turn_id,journal_digest,replay_reproducer) are carried for provenance but excluded, so the same turn content reproduces the same digest (verified by test: identical content → identical digest; different journal position → same digest; any evidence change → different digest). Read endpointGET /trace/{turn_id}/bundle; surfaced as the Trace Bundle tab (citable digest, "what this proves / does not prove" honesty note, reproducer command, deterministic JSON download). Read-only, no engine execution. The bundle carries the replay reproducer rather than a live-run replay so the artifact itself stays deterministic — verification is the consumer's step. Phase D remaining: guided determinism tour (D1) + provider-agnostic framing (D2).
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.