You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Close the demonstrability gap surfaced in INITIAL-14.md and detailed in PRPs/PRP-15-e2e-demo-pipeline.md: examples/e2e_smoke.sh only asserts /health, and Phase-2 seeder/featureset work (PRs #111/#112/#114/#115/#127) has no scripted exit channel. Land a single make demo command that drives the published HTTP surface end-to-end in ≤ 180 s on a developer laptop.
Scope (additive only)
New scripts/run_demo.py — async, httpx-driven, RFC-7807-aware; walks seed → status → features → train ×3 → backtest → register → alias → verify → agent-roundtrip.
New top-level Makefile with demo, demo-quick, demo-clean targets.
New seeder preset (demo_minimal or pinned retail_standard subset — see PRP Open Question Q1).
Summary
Close the demonstrability gap surfaced in
INITIAL-14.mdand detailed inPRPs/PRP-15-e2e-demo-pipeline.md:examples/e2e_smoke.shonly asserts/health, and Phase-2 seeder/featureset work (PRs #111/#112/#114/#115/#127) has no scripted exit channel. Land a singlemake democommand that drives the published HTTP surface end-to-end in ≤ 180 s on a developer laptop.Scope (additive only)
scripts/run_demo.py— async, httpx-driven, RFC-7807-aware; walksseed → status → features → train ×3 → backtest → register → alias → verify → agent-roundtrip.Makefilewithdemo,demo-quick,demo-cleantargets.demo_minimalor pinnedretail_standardsubset — see PRP Open Question Q1).tests/test_run_demo_unit.py.tests/test_e2e_demo.pymarked@pytest.mark.integration.README.md,docs/DAILY-FLOW.md,docs/_base/REPO_MAP_INDEX.md,docs/_base/RUNBOOKS.md..github/workflows/e2e-nightly.yml— cron +workflow_dispatch, not PR-blocking.Non-goals
Acceptance Criteria
make demoexits 0 on a freshdocker compose up -d && uv run alembic upgrade headhost.runs=3 winner=<model_type> alias=demo-production wall_clock=<t>s.GET /registry/aliases/demo-productionreturns the winningrun_id.GET /registry/runs/{winning_run_id}/verifyreturnsverified=true.⏭️ [SKIP]when no LLM key is set.tests/test_run_demo_unit.pyandtests/test_e2e_demo.py(integration) pass.ruff check+ruff format --check+mypy --strict app/+pyright app/clean.References
INITIAL-14.mdPRPs/PRP-15-e2e-demo-pipeline.md.claude/rules/product-vision.md§ Core Principle 1, § Litmus Test sync: merge main into phase-0 #5.claude/rules/output-formatting.md