mirror of
https://github.com/okieselbach/AutopilotMonitor.git
synced 2026-10-24 20:53:06 +00:00
c0585133be
A device that reaches the desktop is enrolled regardless of an earlier sweep timeout guess, so a genuine completion must be able to heal a prior verdict. - Replace the terminal idempotency guard with pure IsTerminalTransitionAllowed: Succeeded UPGRADES any non-Succeeded state (Failed/Incomplete/AwaitingUser → Succeeded); Failed/Incomplete and AwaitingUser never overwrite an existing terminal. Ingest already calls UpdateSessionStatusAsync(Succeeded) on a late enrollment_complete without a pre-terminal skip, so the relaxed guard wires the reconcile end-to-end. - Clear stale FailureReason + FailureSnapshotJson on Succeeded (reconcile hygiene). - Preserve admin-marked terminals: a late completion never auto-overrides a hand-marked Failed/Incomplete. - Tests: SessionStatusTransitionTests (full matrix, 20). Suite: 2705 pass.