Skip to content

Backfill: per-route store swapping for the experiment switcher (Phase 12c §3.6 deferral) #145

Description

@ealt

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).

Metadata

Metadata

Assignees

No one assigned

    Labels

    cluster:identityOperator / worker identity, auth, multi-experimentenhancementNew feature or requestpriority:2-plannedPlanned roadmap work; well-scoped, not urgenttriage:needs-planIssue triage disposition

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions