Root cause of demo_composition pin thrash was not cancelled CI runs: verify_no_global_state_mutation dumped full env_subset before/after tuples into the lane report, embedding CORE_ENGINE_STATE_DIR temp paths (and any ambient CORE_* host values). Each hermetic run then produced a different report SHA. Fix for good: - Report key-level env deltas only (+/- / changed), with path-like CORE_* values redacted to <path> in the message text. - Detection still uses raw snapshots (mutations are not ignored). - Hermetic CORE_ENGINE_STATE_DIR for demo_composition and all verify_lane_shas invocations. - Dual-run-stable re-pin: demo_composition e2ba2314…, public_demo 7d8ba0db… (matches CI-observed soft-budget SHA). - Drop dead CORE_SHOWCASE_SKIP_BUDGET workflow env (soft is default). - Tests pin the delta format and hermetic-path stability. Lane: python scripts/verify_lane_shas.py → 9/9 match. |
||
|---|---|---|
| .. | ||
| __init__.py | ||
| audit_tour_adapter.py | ||
| contract.py | ||
| expert_demo.py | ||
| learning_loop_adapter.py | ||
| README.md | ||
| showcase.py | ||
| showcase_adapters.py | ||
| tour_adapters.py | ||
Demo Composition Layer
core/demos/ contains the typed composition surface for demos:
contracts, adapters, showcase rendering, and expert-demo packaging.
It does not own standalone scenario fixtures. Those live under top-level
demos/, where each demo package can pin its inputs, expected artifacts, and
honesty ledger.
Boundary:
demos/proves a narrow claim inside a deterministic local envelope.core/demos/adapts proven demos into shared presentation and Workbench surfaces.