Relationships
#2700 issue-lifecycle: link issues that ship together and ship duplicates
Opened by stack72 · 9/29/2026· Shipped 9/29/2026
The @swamp/issue-lifecycle model drives exactly one swamp-club issue per lifecycle. When one piece of work fixes several issues, or an issue duplicates one that is already fixed, the only option today is to close the extra issues by hand. Their reporters never see them shipped, and nothing records the connection.
1. Linked issues move through the lifecycle together
Add a link_issue method to the primary issue N's lifecycle.
- It creates a
related_to("Sibling of") relationship in swamp-club from N to the linked issue M. - Every status transition on N is applied to each linked issue too (
triaged → in_progress → shipped). swamp-club only accepts one step at a time, so an issue linked late is walked step by step until it reaches N's status. - Milestone (non-verbose) lifecycle entries are copied onto linked issues with a pointer back to N. Verbose working entries (plan, reviews) stay on N only.
- The attestation is posted once. It is keyed by commit, not by issue.
notifyandsummarizecover each linked issue.- Linking is refused if M already has an active lifecycle of its own.
2. Mark an issue as a duplicate and ship it
Add a mark_duplicate method to the duplicate issue M's own lifecycle. It uses the duplicate_of relationship added in swamp-club#2682.
- If the canonical issue N has already shipped: link
duplicate_of, walk M toshippedwith N's PR URL, thennotifyandsummarize. - If N is still in progress: attach M to N's lifecycle as a linked issue.
- If N never shipped: refuse.
3. Send the PR URL when shipping
ship/complete currently PATCH only {status: "shipped"}. Send githubPrUrl/githubPrNumber too, so swamp-club records the PR on each issue and the reporter's automatic "issue shipped" notification includes a View PR link.
Shipped
Click a lifecycle step above to view its details.
Sign in to post a ripple.