Files
AutopilotMonitor/src
Oliver Kieselbach 9582ad8d8b fix(agent-v2): termination, recovery and lifecycle LOWs (L2-L4, L6, L7, L9, L16, L18, L19, L21)
Delta-review 2026-07-02 findings:
- L2: HelloTracker wait-timer re-arm races Stop()`s lock-free timer dispose —
  an ObjectDisposedException on a threadpool timer thread kills the process
  on net48. Swallowed with a debug log (shutdown is winning anyway).
- L3: MaybeEmitAgentLateStart gets the same _post==null guard as its siblings.
- L4: agent_late_start / lowObservationCoverage mixed clock epochs (boot =
  now-minus-uptime at termination vs wall-clock agentStartUtc). The handler
  now captures a (tick, wall) anchor pair at construction and derives boot in
  that epoch, so NTP corrections between start and termination no longer skew
  bootToStartSeconds.
- L6: terminal starved-app sweep TOCTOU — snapshot-then-emit could race a
  concurrent live app_install_starved and double-report. Replaced the
  read-model snapshot property with an atomic TryClaimStarvedUserEspAppReport
  against the live path`s dedupe set (tracker → host → surfaces → read model).
- L7: a quarantine marker whose delete persistently fails (AV/ACL) re-wiped
  the FRESH run`s state on every restart. After a successful quarantine the
  stuck marker is neutralized with a processed-sentinel; the next start only
  retries the delete.
- L9: DeviceInfoHost is created (and thus subscribes) BEFORE EspAndHelloHost,
  whose Start can immediately post EspPhaseChanged(DeviceSetup) — the
  enrollment-start re-collect trigger was missed on sessions failing before
  the end trigger.
- L16: UserEspKeepAwakeHost no longer holds _gate across the blocking
  controller Engage (Idle→Engaging→Engaged claim; a racing Release wins and
  the engage path rolls the OS hold back).
- L18: Office preinstalled short-circuit — accepted-risk comment documenting
  the silent-miss window (never a false office_install_failed).
- L19: durationSeconds carries a durationBasis discriminator (script_runtime
  vs cycle_including_reporting_latency) so platform and remediation durations
  are never compared as equals.
- L21: stale ShellCoreTrackerAdapter comment reference removed (ARCH-F7).

(L8 was fixed with M1 in the parked-tripwire commit; L11 is moot since M6
made the prefetch fingerprint static.)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-03 11:19:11 +02:00
..