Estimate: 26m · Depends on: 6.9.2
The story-closing verification (Principle #18).
Vitest (integration, real Postgres): quick-search correctness (key prefix/exact + title trgm, relevance order, bound), the permission scope (a user cannot find issues in a project they cannot read — per 6.4 role), the link-candidate composition (exclusions preserved under search), and the #98 regression guard: seed a large item set, prove an EARLY-created issue is returned by a search from a LATE issue’s picker (the exact case the newest-50 cap broke).
Playwright E2E (extend tests/e2e/*link*): open a late issue’s relationships panel → Link issue → type an early issue’s key → it appears → link it → it renders in its group; assert the no-results state; assert the create-modal link control searches the same way. a11y: strict axe sweep over the link form (empty / typing / no-results / selected).
pnpm test:coverage keeps all 6.9 files ≥ 90%.tests/integration/ + tests/e2e/ conventions; the E2E harness / selector memories