Skip to main content
← Back to list
01Issue
FeatureShippedExtensionsPublic
Assigneesskunk-ape

Relationships

⊘ blocked by #2794⊘ blocks #2797⊘ blocks #2799⊘ blocks #2800⊘ blocks #2847⊘ blocks #2832

#2796 gatorwalk-factory: parent, blocked-by, related and duplicate relations in every tracker

Opened by skunk-ape · 9/30/2026· Shipped 10/1/2026

Part of the tracker-seam decision (https://claude.ai/artifact/TDidgyVjxKXU7JsNH1baNy). Needs #2794.

gatorwalk has no issue relations at all. The Lab already stores four: swamp-club/lib/domain/lab/relationship.ts:3-21, with routes GET|POST|DELETE /api/v1/lab/issues/{n}/relationships. issue-lifecycle's root client writes them (extensions/models/_lib/swamp_club.ts:525-537). gatorwalk's Lab fork and its Linear adapter touch none.

Change

  • The contract gets relate(from, type, to) and unrelate(...) for parent_of | blocked_by | related_to | duplicate_of. fetch returns the issue's relations with a direction. Every write is idempotent; a write through publish or breakdown is also ledgered.
  • The built-in backend enforces the Lab's invariants, so all three backends mean the same thing by each relation: one parent per child, one canonical per duplicate, no duplicate chains (a canonical may not itself be a duplicate), no parent cycles (depth 10). See relationship.ts:46-116.
  • Lab: port the relationship calls from the root client into gatorwalk's fork (_lib/swamp_club.ts), keeping the fork's TrackerError model. blocked_by needs an admin key; without one the error is auth. Note that duplicate_of does not change the Lab status.
  • Linear: parent via issueUpdate(parentId), and issueRelationCreate / issueRelationDelete for blocks, duplicate and related. Relations are read through the issue query.
  • The fakes and the conformance suite gain the relation checks, including every invariant refusal.

Done when

  • Conformance covers relate, unrelate, read-back and the invariants for all three backends against their fakes.
  • DESIGN.md "Trackers" records that the tracker owns relations: swamp reads them at decision points, never reconciles them, and a relation changed in the tracker is seen at the next read.
02Bog Flow
✓OPEN✓TRIAGED✓IN PROGRESS✓SHIPPED+ 1 MOREASSIGNED+ 5 MOREREVIEW+ 9 MOREPR_LINKED+ 2 MORESESSION_SUMMARIZED

Shipped

10/1/2026, 2:49:49 AM

Click a lifecycle step above to view its details.

03Sludge Pulse
skunk-ape assigned skunk-ape10/1/2026, 1:09:06 AM
skunk-ape linked blocked by #27949/30/2026, 3:45:55 PM
skunk-ape marked as blocked9/30/2026, 3:45:55 PM
skunk-ape linked blocks #27979/30/2026, 3:45:55 PM
skunk-ape linked blocks #27999/30/2026, 3:45:56 PM
skunk-ape linked blocks #28009/30/2026, 3:45:56 PM
skunk-ape unblocked automatically9/30/2026, 7:27:31 PM
skunk-ape linked blocks #284710/1/2026, 1:00:31 AM
skunk-ape linked blocks #283210/1/2026, 1:00:31 AM

Sign in to post a ripple.