mirror of
https://github.com/okieselbach/AutopilotMonitor.git
synced 2026-10-24 12:42:38 +00:00
56d378f2b2
Wire EnrollmentTimeoutClassifier into MarkStalledSessionsAsTimedOutAsync so the 5h inactivity sweep stops blindly failing silent-but-provisioned sessions (docs/design/enrollment-status-reclassification.md). Forward-only. - TenantConfiguration.SessionGraceHours (default 72h) + default config. - Sweep Stage 2: classify from the ESP subcategory rollup instead of hard Failed. Fast-path skips within-grace AwaitingUser sessions with NO event read (grace is time-based; late completions are caught by ingest). Per-outcome counters; audit + ops event only when the pass actually terminalized/transitioned something. - session_timeout event + auto-analyze kept ONLY for Failed/Incomplete (parity with the agent max-lifetime path); AwaitingUser is non-terminal, Succeeded is a reconcile. - GetStalledSessionsAsync includes AwaitingUser so it graduates to Incomplete once grace elapses; agent-silent (Stage 1) stays InProgress-only. - UpdateSessionStatusAsync: Incomplete is terminal (idempotency); AwaitingUser can't regress a terminal; CompletedAt stamped for Incomplete (no skewing duration); reason + snapshot persisted for Incomplete/AwaitingUser. Full Functions.Tests suite: 2670 pass.