Expand description
Why a ticket is not being dispatched right now: the reporting decision,
built only by the daemon’s show/list handlers. The dispatcher does not
call this module — scheduler::reconcile checks its own gates inline — so
the global gates here mirror the dispatcher’s by construction and must be
kept in step with them by hand.
The two paths are not unifiable: the dispatcher asks “given this trigger, which ticket does it select?” while the report asks “given this ticket, is there a trigger that could select it?”. Those are inverse questions, and no single function answers both.
Structs§
- Gates
- The gates behind a report. All but
has_queued_triggerare global; that one is answered per ticket, since a queued trigger may be pinned to a ticket other than the one being described.
Enums§
Functions§
- display_
state - Blocked is derived from dependency state rather than persisted on the ticket, so display state changes as soon as the last blocker merges.
- ticket_
ineligibility - Ticket-level reasons win over global gates: a failed ticket is failed whether or not the scheduler is paused.