Background
Backfill of a CHANGELOG-narrated deferral from Phase 12c that never made it to an issue.
From CHANGELOG.md line 36:
Per-route store swapping for the experiment switcher (plan §3.6) deferred: the switcher requires every existing per-experiment route (ideator, executor, evaluator, /admin/tasks, /admin/variants, /admin/workers, /admin/groups, …) to look up the active experiment from session state. The refactor is ~12 route files + their tests; out of scope this chunk. Wave 5 surfaces the session field + the cross-experiment dashboard records the selection; per-route store swapping is a follow-up, with a footer note on the dashboard explaining the v0 limitation to operators.
What it is
Phase 12c shipped the cross-experiment dashboard (/admin/experiments/) with a selected_experiment_id session field, but selecting an experiment doesn't actually rebind the web-ui's per-route store lookups to the new experiment's task-store. The session records the selection; the rest of the routes ignore it and continue to use the startup --experiment-id for store lookups.
What it would take
Refactor every per-experiment route handler to read session.selected_experiment_id (falling back to the deployment-level startup id) and pass that into the store call. Roughly 12 route files plus tests. Per-route StoreClient instantiation against the selected experiment's --task-store-url (which must be discoverable per #141 deployment-level worker inventory or similar).
Why this matters
Without this, "select experiment" in the UI is a UX placeholder — the page label updates, but the actual data shown across /ideator/, /executor/, /admin/tasks/, etc. is still scoped to whichever experiment the web-ui process was started with. Multi-experiment usability is structurally broken.
Dependencies
Out of scope
- Cross-experiment views (e.g., "show me tasks across all experiments") — different concern, not this issue.
- Caching the selected experiment's task-store client (an optimization).
Estimated effort
Medium. ~12 routes × small handler edit + tests. Plus the StoreClient-by-selected-experiment plumbing. ~1 week.
Filing notes
This issue is a backfill of a deferral from Phase 12c that was documented only in CHANGELOG.md and was never tracked in GitHub. Filed as part of the broader audit-of-deferred-items effort (see the meta-process issue).
Background
Backfill of a CHANGELOG-narrated deferral from Phase 12c that never made it to an issue.
From CHANGELOG.md line 36:
What it is
Phase 12c shipped the cross-experiment dashboard (
/admin/experiments/) with aselected_experiment_idsession field, but selecting an experiment doesn't actually rebind the web-ui's per-route store lookups to the new experiment's task-store. The session records the selection; the rest of the routes ignore it and continue to use the startup--experiment-idfor store lookups.What it would take
Refactor every per-experiment route handler to read
session.selected_experiment_id(falling back to the deployment-level startup id) and pass that into the store call. Roughly 12 route files plus tests. Per-route StoreClient instantiation against the selected experiment's--task-store-url(which must be discoverable per #141 deployment-level worker inventory or similar).Why this matters
Without this, "select experiment" in the UI is a UX placeholder — the page label updates, but the actual data shown across
/ideator/,/executor/,/admin/tasks/, etc. is still scoped to whichever experiment the web-ui process was started with. Multi-experiment usability is structurally broken.Dependencies
Out of scope
Estimated effort
Medium. ~12 routes × small handler edit + tests. Plus the StoreClient-by-selected-experiment plumbing. ~1 week.
Filing notes
This issue is a backfill of a deferral from Phase 12c that was documented only in CHANGELOG.md and was never tracked in GitHub. Filed as part of the broader audit-of-deferred-items effort (see the meta-process issue).