infospace-bench/tests
tegwick f818acfc62 IB-WP-0018-T03+T04: shadow sampling + report/CLI surfacing; close IB-WP-0018
T03 — wrap_with_shadow_sampling() helper in routing.py: builds a
llm-connect ShadowingAdapter around any candidate LLMAdapter with a
caller-supplied baseline, grader, and QualityLedger. async_shadow=True
by default so production load is not doubled; on_shadow_error escape
hatch keeps caller logs informed when a baseline outage swallows the
shadow path. The returned adapter is still an LLMAdapter so it slots
into a RoutingPolicy rule without further code change.

T04 — generation report enrichment plus a small CLI helper:

- _collect_adapter_choices walks artifact provenance, groups by
  (stage_id, adapter_id), and surfaces calls + prompt/completion tokens
  per (stage, adapter) pair in a new ## Per-stage adapter choices
  section. Runs that did not go through the bridge have no
  provider_metadata.adapter_id and emit an empty list, so fixture-only
  reports stay terse.
- summarise_quality_ledger() rolls a llm-connect QualityLedger up by
  (task_type, adapter_id) with mean quality, mean cost, observations,
  and cumulative tokens.
- infospace-bench routing ledger <path> CLI prints the rollup as JSON.

Five new tests cover shadow happy-path, shadow failure isolation,
ledger rollup, the routing CLI, and the report's adapter-choice
aggregation. Closes IB-WP-0018: T01-T05 are all done and the workplan
status flips from blocked to done now that LLM-WP-0004's primitives
have shipped.

144 tests pass, 1 skipped (the OpenRouter live smoke, gated as before).

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-18 11:52:05 +02:00
..
fixtures/lefevre IB-WP-0016-T05: deterministic Lefevre acceptance fixture 2026-05-17 22:31:17 +02:00
test_agentic_memory_profile.py Agentic memory profile 2026-05-15 16:01:35 +02:00
test_archive.py archive: include contracts/, schemas/; report skipped top-level dirs 2026-05-17 12:21:19 +02:00
test_budget_registry.py IB-WP-0019-T07: archive integration; close IB-WP-0019 2026-05-17 21:53:28 +02:00
test_cli.py IB-WP-0014: archive-list, restore, retention annotation, docs (T03-T05) 2026-05-17 11:46:23 +02:00
test_engine_boundary.py engine and lifecycle 2026-05-14 16:26:42 +02:00
test_epub3_intake.py IB-WP-0016-T02: chapter-aware chunking and stable IDs 2026-05-17 15:52:47 +02:00
test_evaluation.py Initial implementation 2026-05-14 11:32:25 +02:00
test_evaluation_history.py eval history and metrics 2026-05-14 15:35:04 +02:00
test_generic_generator.py generic source-to-infospace generator 2026-05-14 19:33:22 +02:00
test_inspection.py Initial implementation 2026-05-14 11:32:25 +02:00
test_lefevre_fixture.py IB-WP-0016-T07: review report and output policy; close IB-WP-0016 2026-05-18 01:22:41 +02:00
test_legacy_pilot.py Kontextual Engine Integration Boundary 2026-05-14 16:43:29 +02:00
test_lifecycle.py Initial implementation 2026-05-14 11:32:25 +02:00
test_markdown_adapter.py markitect-tool integration 2026-05-14 14:53:16 +02:00
test_openrouter_live.py IB-WP-0016-T06: OpenRouter live-run guardrails 2026-05-17 23:04:19 +02:00
test_plan_scale.py IB-WP-0016-T03: scale-aware planning 2026-05-17 18:18:09 +02:00
test_reference_pilot.py Initial implementation 2026-05-14 11:32:25 +02:00
test_replacement_readiness.py command parity and migration guide 2026-05-14 17:16:39 +02:00
test_routing_adapter.py IB-WP-0018-T03+T04: shadow sampling + report/CLI surfacing; close IB-WP-0018 2026-05-18 11:52:05 +02:00
test_semantics.py entity relationship model 2026-05-14 15:06:17 +02:00
test_trading_literature_profile.py IB-WP-0016-T04: trading-literature profile 2026-05-17 18:59:45 +02:00
test_wealth_vsm_generation.py infospace pipeline for wealth of nations example 2026-05-14 18:04:38 +02:00
test_workflow.py acceptance matrix and workflow generation 2026-05-14 16:01:32 +02:00