feat(gatorwalk-factory): a factory chooses its tracker, and status shows the lag (swamp-club #2795) #399
Loading…
Reference in a new issue
No description provided.
Delete branch "cue/2795-gatorwalk-factory-lifecycle"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Closes swamp-club #2795, and takes over part 2 of #2771 (making publish lag visible).
What changes
tracker: { kind: builtin | swamp-club | linear }, defaulting to the built-in tracker.trackerargument. Tracker settings (prefix,statuses,types, Linear'steamId) stay on the instance.validateandstartcheck the binding. They refuse a factory with no tracker, a tracker instance that doesn't exist, or one of the wrong type for the kind (for example, a Lab definition bound to a Linear instance).startpins{ instance, kind }in the run record. It also refusesexternalRefswhose tickets are all on another kind of tracker.statusshows how far behind the ticket is:tracker '<instance>' behind by N event(s): run publish on it. It reads the bound instance's publish cursor as data, with no network call.publishruns only on the pinned tracker instance.projectionblock is nowtracker, and the code and docs follow.projection.tsis nowticket_view.ts, and "the projection publisher" is now "the publisher"._lib/engine/tracker_binding.ts, and still imports no tracker code. DESIGN.md's seam section and a new "The factory's tracker" section say so.Checking stage status keys and entries against the bound tracker is a follow-up: a tracker-side method, #2847.
Docs and skill
status, thenpublishwhen the ticket is behind.Verification
verify-build and verify-reviews both passed on
d9a55172(609 unit tests, 38 integration tests). Both reviews gave a pass verdict. The attestation is posted (617df9ac).🤖 Generated with Claude Code
A factory definition names the kind of tracker it is written for (tracker: { kind }, the built-in tracker by default), and the factory names the tracker instance in a required tracker argument. validate and start refuse a missing instance or one of another type than the kind needs; start pins { instance, kind } in the run record; status reads the bound instance's publish cursor as data and says how many journal events the ticket is behind. publish runs only on the pinned instance. Tracker settings (prefix, statuses, types, teamId) stay on the instance. The stage-level projection block is renamed tracker, and the code and docs follow: projection.ts is ticket_view.ts, and "the projection publisher" is "the publisher". Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>