MOTIR-3348Done
E2E — retire from the list, see it marked and attributed, un-retire it back
The acceptance walk in a browser, following the access path rather than a deep link.
- Sign in as an admin, navigate to AI-planning settings, reach the lessons.
- Retire one from its row. It takes the designed retired treatment and does not flicker back — the revert-on-refresh bug is visible only in a browser, which is why it is asserted here rather than in a unit test.
- Open its detail: it shows who retired it and when.
- Un-retire it; it returns to the live treatment.
- Sign in as a user with view but not retire: the lesson list renders, and no retire control appears.
Step 5 is the one that would be dropped for looking redundant, and it is the only place the two-key split is exercised as a user experience rather than a route assertion.
Seed through the service, not by raw insert.
Acceptance criteria
- The walk passes, navigating from settings rather than a deep link.
- The retired row holds its state after the action — no visible revert.
- The detail shows actor and timestamp.
- Un-retire returns the row to live.
- The view-only user sees the list and no retire control.
- Lessons are seeded through the service; selectors follow the repo's existing convention.
- The spec runs in the E2E lane and passes in CI.
Context refs
motir-coretests/e2e/— the lane, fixtures, sign-in helpers, selector conventions.motir-coredesign/ai-settings/— the access path and the retired treatment.- MOTIR-3346 — the control under test.
- MOTIR-3340 — the sibling story's walk; share fixtures rather than building a second harness.