Oliver Kieselbach 12fe945289 fix(backend/backup): PR1 hotfixes — lease renewal, retry-rollback clock reset, list-backups manifest filter
Three Codex-review findings in PR1, all real:

* HIGH — Maintenance lease expires after 60 s but the per-run budget is 50 min.
  Without renewal a parallel worker / timer / restore could enter the same
  "exclusive" section after one minute, and the watchdog would see a free
  lease while a job is still running. New MaintenanceLeaseHolder spins a
  renewal task on a 45 s cadence and cancels the handler's CTS on any
  renewal failure; the in-flight backup then bails via OperationCanceledException
  and the worker/timer route the job to a clean Failed state without
  queue-deleting the message.

* HIGH — Retry-rollback resets State=Queued + BackupId=null but left QueuedAtUtc
  on the original wall-clock value. After a retryable service throw the
  watchdog's 60 min "Queued without pickup" rule could fire mid retry-cycle
  and call the job dead. Fix: stamp QueuedAtUtc=now on the rollback so the
  watchdog respects the fresh retry budget.

* MEDIUM — ListBackups returned every top-level prefix including runs that
  never reached manifest.json. Calling GetBackupManifest on such an id returned
  404 — confusing UI signal for incomplete runs. Fix: ListBackupIdsAsync now
  Exists()-checks manifest.json per prefix. New ListAllBackupPrefixesAsync
  yields (id, hasManifest) tuples for a future admin UI that wants to
  surface incomplete runs as their own status.

Tests: 1952/1952 backend xUnit still green — no regressions, no new test
coverage needed because the hotfix paths are exercised indirectly by the
existing happy/partial/budget tests + the production storage SDK semantics.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-26 15:38:27 +02:00
2026-05-15 09:39:37 +02:00
2026-03-17 18:24:01 +01:00
2026-03-26 07:02:33 +01:00
2026-05-07 08:51:22 +02:00

Autopilot Monitor

Status License Website

Advanced monitoring and troubleshooting solution for Windows Autopilot deployments. Gain full visibility into every enrollment session with a detailed event timeline, fleet health dashboards, and session reporting. Define custom analysis rules to automatically detect issues and gather rules to collect targeted evidence. Retrieve diagnostics packages on demand, configure agent settings like auto-reboot behavior and automatic timezone adjustment — all managed centrally from the web dashboard.

Private Preview

Autopilot Monitor is currently running as a Private Preview. Visit autopilotmonitor.com to request access and learn more.

Overview

Autopilot Monitor provides real-time tracking, intelligent diagnostics, and automated troubleshooting for Windows Autopilot enrollment processes. It consists of:

  • Bootstrap Script — PowerShell script deployed via Intune that starts monitoring early in the enrollment process
  • Monitoring Agent — Lightweight .NET application that collects telemetry and evidence during enrollment
  • Backend API — Azure Functions-based ingestion and processing pipeline
  • Web Dashboard — Next.js application for real-time monitoring and fleet analytics

Architecture

For detailed information about the system architecture, components, and data flow, see Architecture Documentation.

Documentation

Full documentation is available at autopilotmonitor.com/docs

License

This project uses a split licensing model:

  • MIT License — Agent (src/Agent/) and Shared library (src/Shared/) — unrestricted use on end-user devices
  • AGPL-3.0 — Backend (src/Backend/), Web Dashboard (src/Web/), and MCP Server (src/McpServer/) — server-side components remain open source

See LICENSE for full details.

S
Description
Windows Autopilot & Intune enrollment monitoring: live session timelines, fleet health, diagnostics, and an MCP server for AI-assisted troubleshooting.
Readme AGPL-3.0 60 MiB
Languages
C# 72.7%
TypeScript 25.7%
PowerShell 1%
JavaScript 0.5%