Estimate: 35m · Depends on: 2.6.1
Add tests/e2e/epic2-acceptance.spec.ts — the card’s "Playwright over the create → detail → status-change flow" as ONE consolidated, user-visible epic-acceptance journey through the real shell, where the existing e2e specs are per-feature smoke tests. It proves the type-parent rule + the full status lifecycle + list/tree reflection compose for a real user.
The journey (one signed-in session, against the seeded shell):
kind, then confirm the parent picker offers only LEGAL parents for that kind (e.g. a subtask requires a story/task/bug parent and is never offered an epic; the type-parent rule surfaced in the UI), select a legal parent, submit.todo → in_progress → in_review → done), confirming at each step that illegal targets are not offered / are blocked under the restricted default policy (e.g. no direct todo → done).Reuse the existing e2e patterns and selector conventions; this file owns the cross-feature journey, the per-feature specs keep their focused smoke coverage (do not duplicate them). Heed the known E2E selector gotchas: a Combobox option’s accessible name is label + secondary text (match the substring, not an exact name), and the /issues empty state has an h1 Issues + an h2 "No issues yet" (use exact/level on heading selectors). Branch is subtask/PROD-2.6.5-* (a subtask/* branch → CI runs Playwright; E2E is NOT skipped, unlike seed/* / design/*).
tests/e2e/epic2-acceptance.spec.ts, grep-taggable as epic2-acceptance; passes under pnpm test:e2e.e2e job (subtask/* branch — Playwright not skipped).tests/e2e/{issue-create-edit-flow,issue-detail-flow,workflow-flow}.spec.ts — the per-feature specs this journey composes (patterns to reuse, not duplicate)tests/e2e/work-items-isolation.spec.ts, playwright.config.ts, the e2e auth/sign-in helper/issues empty-state headings)motir-core/CLAUDE.md — manual merge mode; real-stack E2E