From bfb54fb015d445ff0bb2b3adb1e58713bbdf9b39 Mon Sep 17 00:00:00 2001 From: Shay Date: Thu, 21 May 2026 19:44:48 -0700 Subject: [PATCH] =?UTF-8?q?feat(demos):=20implement=20ADR-0099=20=E2=80=94?= =?UTF-8?q?=20Public=20Showcase=20Demo?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Single 30-second artifact composing four CORE invariants (determinism, honest unknown, reviewed learning, multi-hop with trace) by delegating to existing DemoCommand adapters. **No new mechanism** — every claim is backed by an already-shipped, separately-tested adapter. Closes the 8-ADR scale-up slate. - new core/demos/learning_loop_adapter.py: LearningLoopDemo wraps ADR-0056 reviewed-teaching loop; _strip_volatile_paths drops transient temp-dir paths from raw before serialization so the adapter's report_sha256 is content-stable across runs - new core/demos/showcase_adapters.py: - FabricationControlPublicDemo: re-runs ADR-0096 public split, produces 3 claims (refusal_recall_meets_threshold, fabrication_rate_below_threshold, trace_evidence_present) - MultiHopTraceDemo: runs 'Does light reveal truth?' with transitive_surface=True + composed_surface=True against cognition pack; surfaces a 3-hop walk light→truth→knowledge→ evidence; produces 3 claims (grounded_answer, depth_two_or_more, walk_evidence_present) - new core/demos/showcase.py: run_showcase() composes 4 scenes, emits showcase.json + per-scene artifacts; render_html() produces presentation-only static HTML with no JS injection vector; ShowcaseScene dataclass; MAX_RUNTIME_SECONDS=30 hard ceiling with DemoContractError if exceeded - CLI: 'showcase' added to demo target choices; --output-dir flag added; cmd_demo dispatch branch writes showcase.json + showcase.html - new evals/public_demo/ lane with 4 cases: - all_claims_supported (each scene + composite) - determinism_run_to_run_byte_equality (two runs identical after stripping volatile keys: total_runtime_ms, json_path, transient_corpus) - runtime_under_budget (≤30s) - pure_composition_no_new_mechanism (grep gate over showcase imports — must come from core/chat/generate/language_packs/ teaching/evals or allowed stdlib only) - lane is itself byte-identical across runs (sha256 5707db8efc6a..); runtime case omits exact runtime_ms (it varies near bucket boundaries) but still asserts ≤ budget - 8 unit tests with module-scoped fixture (showcase runs once, ~13s total) covering payload shape, scene order, runtime budget, HTML render absence of