Milestone v0.2.3 — Result packs, fingerprint reporting, readability, drift, honest browser/MCP bounds¶
Milestone theme¶
v0.2.3 closes a coherence lap after v0.2.2: make campaign outputs publishable as result packs, make fingerprints drive reporting (not only raw dumps), keep reports readable, prevent schema/runtime drift under default CI, and keep browser and MCP story realistic with honest capability boundaries.
Status: Complete — v0.2.3 is shipped (git tag v0.2.3, CHANGELOG [0.2.3], docs/releases/v0.2.3.md). Later milestones: v0.2.4 (shipped) · v0.2.5 (shipped).
Arc context: v0.2.0 · Closed tracking: docs/tracking/v0.2.3-campaign.md.
Delivered (current tree)¶
| Theme | What shipped |
|---|---|
| Verification surface hardening | docs/workflows/verification.md — matrix of just ci, just validate-artifacts, just test, live/smoke, with uv run fallbacks; README/AGENTS cross-links. |
| Drift checks | tests/test_schema_drift_contracts.py (+ collect_committed_artifact_drift_errors) sweeps committed examples/ / fixtures/; just validate-artifacts recipe; docs/audits/schema-drift-contracts-inventory.md inventory and exclusions. |
| Campaign result-pack refinement | alwm benchmark campaign pack / pack-check; campaign_result_pack schema; examples/campaign_result_packs/ (e.g. minimal_offline, multi_suite); workflow in docs/workflows/benchmark-campaigns.md. |
| Fingerprint interpretation | fingerprint_axis_interpretation (and related blocks) in campaign-analysis.json / longitudinal summaries; comparative Markdown (fingerprint compare, axis interpretation, ranked spreads/instability hints) aligned with alwm benchmark longitudinal keys. |
| Browser reporting realism | Fixture-backed browser benchmarks; browser evidence surfaced in benchmark/campaign report Markdown where applicable; docs/architecture/browser.md + capability taxonomy stay aligned with partial Playwright / partial MCP. |
| Pack comparison | alwm benchmark campaign compare-packs → pack-compare.json (kind campaign_result_pack_comparison) + pack-compare-report.md; example examples/campaign_result_packs/compare_minimal_vs_multi/; optional --repo-root for portable paths. |
Related (cross-cutting): Report readability passes on campaign summary, comparative report, and semantic summary; judge/semantic sections where applicable—see implementation log for file-level notes.
Goals (original scope — largely satisfied)¶
1. Campaign result pack publication¶
- Publication workflow for git-friendly bundles:
alwm benchmark campaign pack,campaign-result-pack.json,INDEX.md, mirrored layout—documented in docs/workflows/benchmark-campaigns.md and examples/campaign_result_packs/. - Validation:
alwm validate … campaign_result_pack;alwm benchmark campaign pack-check(optional--strictportability).
2. Fingerprint-driven reporting¶
comparison_fingerprintsandcampaign_experiment_fingerprintsinform comparative and campaign Markdown and JSON mirrors; terminology aligns withalwm benchmark longitudinal.
3. Report readability¶
- Scannable campaign-summary, comparative, semantic outputs; reduced gratuitous duplication (see implementation log for campaign/reporting edits).
4. Schema / runtime drift prevention¶
- JSON Schema, Pydantic,
artifacts.py,alwm validate, and committed examples guarded byjust ciandjust validate-artifacts/ drift tests.
5. Browser / MCP realism with honest capability boundaries¶
- Default CI offline; fixture-backed browser and partial MCP documented; docs/audits/capability-classification.md remains the honesty bar.
Non-goals¶
- Hosted dashboards, SaaS, or cloud campaign runners as exit criteria.
- Remote / IDE-hosted MCP or full remote browser protocol as a milestone deliverable (see v0.2.0 non-goals).
- Changing default rubric scoring math unless explicitly scoped in release notes.
- Replacing Docker / Compose / Bake as the reproducible runtime story.
- Large refactors outside benchmarks, campaigns, schemas, reporting, validation, browser evidence, and MCP documentation/tests aligned to the goals above.
Exit criteria¶
| Area | Status |
|---|---|
| Result pack publication | Done — workflow + examples + validation commands documented. |
| Fingerprint-driven reporting | Done — comparative/longitudinal artifacts use fingerprint context; docs describe run vs campaign fingerprints. |
| Report readability | Done — shipped passes; examples under examples/campaign_runs/ reflect current reporting. |
| Drift prevention | Done — drift tests + validate-artifacts + inventory doc; uv run just ci green. |
| Browser / MCP boundaries | Done — docs + audits aligned; no mandatory live stack in default CI. |
| Pack comparison | Done — CLI + campaign_result_pack_comparison kind + committed example. |
| Release hygiene | Done — tag v0.2.3, CHANGELOG [0.2.3], docs/releases/v0.2.3.md, README/AGENTS aligned at rollover. |
Dependencies¶
- v0.2.2 baseline.
- Offline-first tests: default
tests/; livetests/integration/behind env gates.
Verification commands¶
Baseline (required for merge):
uv run just ci
Committed artifact contracts (JSON Schema + Pydantic, deterministic):
just validate-artifacts
See docs/audits/schema-drift-contracts-inventory.md for swept filenames and explicit exclusions. Full matrix: docs/workflows/verification.md.
Campaign trees and result packs (spot checks):
uv run alwm validate examples/campaign_runs/minimal_offline/manifest.json campaign_manifest
uv run alwm validate examples/campaign_runs/minimal_offline/campaign-summary.json campaign_summary
uv run alwm validate examples/campaign_runs/minimal_offline/campaign-semantic-summary.json campaign_semantic_summary
uv run alwm validate examples/campaign_result_packs/minimal_offline/campaign-result-pack.json campaign_result_pack
uv run alwm validate examples/campaign_runs/multi_suite/manifest.json campaign_manifest
Pack comparison (example):
uv run alwm validate \
examples/campaign_result_packs/compare_minimal_vs_multi/pack-compare.json \
campaign_result_pack_comparison
Longitudinal (offline smoke):
uv run alwm benchmark longitudinal \
--runs-glob 'examples/campaign_runs/minimal_offline/runs/*/manifest.json' \
--out-dir /tmp/alwm-long-v023-smoke
Prompt registry (when registry work is in scope):
uv run alwm prompts check
Optional integration (not default CI): live benchmarks, Playwright—see AGENTS.md.