Estimate: 18m · Depends on: 2.4.1, 2.4.2, 2.4.3, 2.4.4, 2.4.5, 2.4.9, 2.4.10
The Story-closing Playwright suite at tests/e2e/issue-detail-flow.spec.ts, driving the real shell. Setup uses the 2.2.7 _test harness + shell-session helpers (create project, create items, link, transition) so it has no ordering dependency on the create-modal/edit-form specs. Mirrors the 1.6.6 lesson — real-stack E2E catches UI↔service seam bugs the unit tests structurally can't.
This is the Story CLOSER, so it covers EVERY Story-2.4 surface end to end — the read + inline-edit surfaces (2.4.1–2.4.5) AND the link-management surface (2.4.9): adding/removing a link through the relationships panel is a real UI↔service seam (Server Action → linkWorkItems/unlinkWorkItems → trigger → revalidate → the panel + readiness banner re-render) exactly the kind of path unit tests can't exercise, so it earns a driven scenario rather than living only in 2.4.9's component/service tests.
Scenarios (single specs):
/issues/PROD-N; assert header (icon + identifier + title + status), the Markdown description (bold/link/code rendered), the core-fields panel, and the "Edit" link → /issues/PROD-N/edit.blocked_by link to another issue via the combobox → the row appears under "Blocked by" and the readiness banner flips Ready→Blocked (driven through the UI, then asserted to persist across reload).relates_to link drops both reciprocal rows.pnpm test:e2e --grep issue-detail-flow passes locally + in CI against a fresh-DB run; no flake under 10 consecutive CI runs._test harness helpers for setup (extends them if needed — no parallel helper); selectors target stable data-testid/role hooks added in 2.4.1–2.4.5 + 2.4.9, not brittle text./issues/[key] route stays in the STRICT shell-a11y sweep (added in 2.4.1), confirmed populated INCLUDING the open add-link combobox/dialog (reuses the 2.3.4 Combobox a11y).tests/e2e/_helpers/workflow.ts (2.2.7 — createItem/transition/linkBlockedBy) + shell-session.ts (1.5.6)tests/e2e/workflow-delete-reassign.spec.ts (2.3.2) + issue-create-edit-flow.spec.ts (2.3.8) — sibling conventions to mirrordata-testid hooks from 2.4.1–2.4.5 + 2.4.9's add-link control / per-row remove hooks; playwright.config.ts webServer blockRelationshipsPanel add control + createLinkAction/removeLinkAction + the typed link errors (lib/workItems/linkErrors.ts) the guardrail spec asserts