Estimate: 14m · Depends on: 2.4.8, 2.4.9
Closes a real design-vs-built gap: create.pen designs a "Linked issues" section in the CREATE modal (a relationship-kind chip + a linked row + "Add link" + "Choose a relationship") but it was never built — 2.3.3/2.3.4 shipped the modal without it. This adds it, designed in 2.4.8's links.mock.html (panel 5) and reusing 2.4.9's AddLink control (kind selector + issue-search Combobox + remove) — NO parallel control.
The one real difference from 2.4.9 (why it's its own subtask): at create the issue has no id yet, so chosen links can't be written immediately. They are collected in the modal's form state (rendered as pending rows with a relationship-kind chip) and written WHEN the issue is created — inside createWorkItem's existing $transaction, right after the item insert, atomically with it (issue + links commit or roll back together). Extend CreateWorkItemInput with a links: {toId, kind}[]; createWorkItem writes the work_item_link rows via the same repo + trigger backstop (reciprocal relates_to handled as in 1.4.4); createIssueAction threads the collected links. Cycle is validated on create (the new id exists by then); self-link is impossible (no id to self-link); duplicate is prevented in the pending list. Edit-page + detail-panel adds stay 2.4.9 (immediate write).
createWorkItem with links writes them in the same tx + rolls back on a bad link; a component test for the modal's pending-link collect/remove; shell-a11y stays green (the modal combobox reuses 2.3.4 a11y).design/work-items/links.mock.html panel 5 + design-notes.md "Create modal — Linked issues" (2.4.8 — REQUIRED)createLinkAction (reuse, don't fork)components/issues/CreateIssueModal.tsx + app/(authed)/issues/actions.ts (createIssueAction, 2.3.3)workItemsService.createWorkItem + linkWorkItems + lib/dto/workItems.ts (CreateWorkItemInput) + lib/dto/workItemLinks.ts