core/workbench
Shay f68b395620 feat(workbench): Wave M C2-b — contemplation as a legible staged process
C2-a surfaced contemplation runs but rendered each scene as a flat JSON dump —
outputs, not process. C2-b makes the loop legible: every scene is now a typed
stage in the canonical ADR-0172 arc.

Reader-first (no theater):
  - schemas.py: ContemplationScene gains a typed loop projection — stage_role
    (cold_attempt | engine_enrichment | engine_proposal | operator_ratifies |
    grounded | other) plus the connective ids (proposal_id, candidate_id,
    proposal_state, grounding_source). New ContemplationStageRole Literal.
  - readers.py: _contemplation_scenes derives stage_role from the scene id
    (closed set, "other" fallback) and pulls the connective ids out of the raw
    detail. schema-snapshot.json regenerated.

UI:
  - ContemplationRoute: the run detail now renders the arc as a staged process —
    "attempt → enrich → propose → ratify → grounded" with named stage roles,
    cold→grounded bookends (surfaces pulled out of before/after), the connective
    ids as evidence, and the raw detail tucked into a collapsible (not lost).

Honest wrinkle (surfaced, not faked): the fixture proposals do NOT resolve in
the live proposal log (source_kinds exemplar_corpus/operator, none
contemplation), 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 to reader-verified linking once
real contemplation proposals reach the log.

Validation: 128 workbench Python tests + new reader-projection tests (canonical
arc → roles, unknown → "other", id extraction, detail preserved); 466/466
frontend incl. schemaDrift + the staged-process / no-dead-link test; pnpm build
clean; git diff --check clean. No serving-path imports.
2026-06-13 16:58:26 -07:00
..
__init__.py feat(W-026): read-only workbench API (ADR-0160 Phase 1) (#292) 2026-05-26 10:16:35 -07:00
api.py feat(workbench): Wave M C3 field substrate — persist-first field evidence 2026-06-13 16:26:46 -07:00
calibration.py feat(workbench): land B3.5-b/c/d/e — calibration evidence subject, B4a leeway gate, docs; runner-reproducible practice artifact 2026-06-13 07:36:44 -07:00
field_evidence.py feat(workbench): Wave M C3 field substrate — persist-first field evidence 2026-06-13 16:26:46 -07:00
journal.py feat(workbench): Wave M C3 field substrate — persist-first field evidence 2026-06-13 16:26:46 -07:00
pipeline_record.py feat(workbench): Wave M Phase C legibility — pipeline record, contemplation, identity continuity 2026-06-13 15:44:31 -07:00
readers.py feat(workbench): Wave M C2-b — contemplation as a legible staged process 2026-06-13 16:58:26 -07:00
replay.py feat(workbench): Wave M C3 field substrate — persist-first field evidence 2026-06-13 16:26:46 -07:00
schemas.py feat(workbench): Wave M C2-b — contemplation as a legible staged process 2026-06-13 16:58:26 -07:00
server.py feat(workbench): Wave M Phase C legibility — pipeline record, contemplation, identity continuity 2026-06-13 15:44:31 -07:00