pub struct LoopState {Show 15 fields
pub iteration: u32,
pub consecutive_failures: u32,
pub cumulative_cost: f64,
pub started_at: Instant,
pub last_hat: Option<HatId>,
pub consecutive_blocked: u32,
pub last_blocked_hat: Option<HatId>,
pub task_block_counts: HashMap<String, u32>,
pub abandoned_tasks: Vec<String>,
pub abandoned_task_redispatches: u32,
pub consecutive_malformed_events: u32,
pub completion_requested: bool,
pub hat_activation_counts: HashMap<HatId, u32>,
pub exhausted_hats: HashSet<HatId>,
pub last_checkin_at: Option<Instant>,
}Expand description
Current state of the event loop.
Fields§
§iteration: u32Current iteration number (1-indexed).
consecutive_failures: u32Number of consecutive failures.
cumulative_cost: f64Cumulative cost in USD (if tracked).
started_at: InstantWhen the loop started.
last_hat: Option<HatId>The last hat that executed.
consecutive_blocked: u32Consecutive blocked events from the same hat.
last_blocked_hat: Option<HatId>Hat that emitted the last blocked event.
task_block_counts: HashMap<String, u32>Per-task block counts for task-level thrashing detection.
abandoned_tasks: Vec<String>Tasks that have been abandoned after 3+ blocks.
abandoned_task_redispatches: u32Count of times planner dispatched an already-abandoned task.
consecutive_malformed_events: u32Consecutive malformed JSONL lines encountered (for validation backpressure).
completion_requested: boolWhether a completion event has been observed in JSONL.
hat_activation_counts: HashMap<HatId, u32>Per-hat activation counts (used for max_activations).
exhausted_hats: HashSet<HatId>Hats for which <hat_id>.exhausted has been emitted.
last_checkin_at: Option<Instant>When the last Telegram check-in message was sent.
None means no check-in has been sent yet.