Context
Tracker v1 is write-mostly (Get for spawn-bootstrap, Comment for session updates, Transition for state changes). Pull-on-demand from SM, no goroutine, no facts-into-LCM.
This issue tracks the v2 work: an observer loop that polls tracker state and pushes facts into LCM, mirroring adil's SCM observer pattern (PR #28) and our reaper pattern (PR #29).
Scope
- New goroutine per project that polls each tracker on a configurable cadence.
- New typed
ApplyTrackerFacts(...) method on LifecycleManager.
- DECIDE consumes tracker facts (e.g., issue reassigned -> session-orphaned reaction; issue closed externally -> session-cancelled; new comment with bot mention -> nudge reaction).
- Per-project enable/disable config (some users won't want polling overhead).
- Rate-limit / backoff strategy for each provider.
Why deferred
- LCM doesn't currently consume tracker state; no reactions are defined.
- Polling cadence + rate-limit design needs its own design pass.
- Webhook alternative may be better for some providers (Linear has webhooks; GitHub does too) — needs the HTTP daemon (aditi's lane).
Related
Context
Tracker v1 is write-mostly (
Getfor spawn-bootstrap,Commentfor session updates,Transitionfor state changes). Pull-on-demand from SM, no goroutine, no facts-into-LCM.This issue tracks the v2 work: an observer loop that polls tracker state and pushes facts into LCM, mirroring adil's SCM observer pattern (PR #28) and our reaper pattern (PR #29).
Scope
ApplyTrackerFacts(...)method onLifecycleManager.Why deferred
Related
Trackerinterface inports/outbound.go).