Relationships
#2664 gatorwalk-factory: tracker adapter contract and Linear adapter (GW-16)
Opened by skunk-ape · 9/29/2026· Shipped 9/29/2026
Part of the gatorwalk-factory rebuild of @swamp/software-factory (gatorwalk-factory/ in swamp-extensions; GW-1..GW-9 shipped: #2576, #2584, #2588, #2598, #2611, #2619, #2599, #2633). Read gatorwalk-factory/README.md and DESIGN.md first. Linear is the launch tracker (tier 2: a developer working their employer's tickets; tier 3: teams).
Two adapters are wanted: Linear (this issue) and swamp-club Lab (#2631, so gatorwalk can run work in this repo). They are the same shape, so design the contract once and build Linear on it; #2631 then builds Lab on the same contract.
Order:
- Fix #2640 first: start's externalRefs cannot be passed with --input, so a work item cannot yet be linked to a ticket from the CLI.
- A tracker adapter contract, written down in DESIGN.md: swamp owns the facts and the tracker is a view; the state piece makes no network calls, so adapters run outside it as their own model or methods; one writer per tracker field; tracker ids are kept as data (externalRefs), never as instance names; credentials come from a vault reference or swamp auth, never from lifecycle data; delivery is idempotent on (work item, journal version).
- The Linear adapter, from the plan: fetch an issue, comment on it, set its status (the single writer of status), with the API token from a vault. Linear identifiers change when an issue moves team; key on the issue UUID and keep the identifier only for display.
Design with the next two Linear issues in mind but do not build them: the projection publisher that replays a work item's journal to the ticket (GW-17), and starting a work item from a ticket with a ticket-to-work-item index (GW-18).
Tests use a local HTTP server standing in for Linear's API; never the live service. Nothing is published.
Shipped
Click a lifecycle step above to view its details.
system commented 9/29/2026, 1:34:38 AM
Classified automatically when this issue was filed.
- Source: Extensions
If you feel this classification is incorrect, add a ripple to tell us so.
Sign in to post a ripple.