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
Fresh-DB showcase_rich can hit a documented cascade where safer_promote_flow writes a placeholder artifact_uri that _parse_artifact_key cannot parse, causing downstream scenario_simulate_and_save to fail. This is documented in docs/_base/RUNBOOKS.md entry 18 and tolerated by the PRP-41 E2E test, but it should be fixed before the next release/demo.
Reproduction
Reset to a fresh DB: docker compose down -v && docker compose up -d && uv run alembic upgrade head.
Run /showcase with scenario=showcase_rich, Re-seed first + Reset database ticked.
Pipeline fails at step 16 (scenario_simulate_and_save) with Cannot parse artifact-key from artifact_uri: 'demo/safer-promote-placeholder.joblib'.
Scope options
Option A: make safer_promote_flow (PRP-39 step in app/features/demo/pipeline.py) write a real-shape artifact_uri compatible with _parse_artifact_key (the V1 demo/{model_type}-model_{KEY}.joblib or V2 artifacts/models/model_{KEY}.joblib shapes).
Option B: make scenario_simulate_and_save (or the underlying _parse_artifact_key in app/features/scenarios/) tolerate the placeholder and resolve the model artifact through another path (e.g. fall back to the alias's run row).
Acceptance
Fresh-DB /showcaseshowcase_rich run reaches the PRP-41 agents + ops phases without the cascade firing.
tests/test_e2e_demo.py::test_run_demo_showcase_rich_full_epic no longer needs the KNOWN_PREEXISTING_FAILURES = {\"scenario_simulate_and_save\"} tolerant-cascade handling — remove that set as part of this fix.
No cross-slice imports into app/features/demo/ (the demo slice must keep going through HTTP / public surfaces, per repo conventions).
References
docs/_base/RUNBOOKS.md § "Showcase page (`/showcase`) pipeline fails at step X" — entry 18 ("`scenario_simulate_and_save` step fails with `Cannot parse artifact-key from artifact_uri` (PRP-40, `showcase_rich` only)").
Memory anchor: scenario-run-id-vs-registry-run-id — the /scenarios/*run_id is the forecast artifact key, NOT the registry's model_run.run_id; this ID-space confusion sits at the root of the cascade.
Fresh-DB
showcase_richcan hit a documented cascade wheresafer_promote_flowwrites a placeholderartifact_urithat_parse_artifact_keycannot parse, causing downstreamscenario_simulate_and_saveto fail. This is documented indocs/_base/RUNBOOKS.mdentry 18 and tolerated by the PRP-41 E2E test, but it should be fixed before the next release/demo.Reproduction
docker compose down -v && docker compose up -d && uv run alembic upgrade head./showcasewithscenario=showcase_rich, Re-seed first + Reset database ticked.scenario_simulate_and_save) withCannot parse artifact-key from artifact_uri: 'demo/safer-promote-placeholder.joblib'.Scope options
safer_promote_flow(PRP-39 step inapp/features/demo/pipeline.py) write a real-shapeartifact_uricompatible with_parse_artifact_key(the V1demo/{model_type}-model_{KEY}.joblibor V2artifacts/models/model_{KEY}.joblibshapes).scenario_simulate_and_save(or the underlying_parse_artifact_keyinapp/features/scenarios/) tolerate the placeholder and resolve the model artifact through another path (e.g. fall back to the alias's run row).Acceptance
/showcaseshowcase_richrun reaches the PRP-41agents+opsphases without the cascade firing.tests/test_e2e_demo.py::test_run_demo_showcase_rich_full_epicno longer needs theKNOWN_PREEXISTING_FAILURES = {\"scenario_simulate_and_save\"}tolerant-cascade handling — remove that set as part of this fix.app/features/demo/(the demo slice must keep going through HTTP / public surfaces, per repo conventions).References
docs/_base/RUNBOOKS.md§ "Showcase page (`/showcase`) pipeline fails at step X" — entry 18 ("`scenario_simulate_and_save` step fails with `Cannot parse artifact-key from artifact_uri` (PRP-40, `showcase_rich` only)").tests/test_e2e_demo.py::test_run_demo_showcase_rich_full_epicintroduced theKNOWN_PREEXISTING_FAILURESallow-list that tolerates this cascade.scenario-run-id-vs-registry-run-id— the/scenarios/*run_idis the forecast artifact key, NOT the registry'smodel_run.run_id; this ID-space confusion sits at the root of the cascade.