mirror of
https://github.com/okieselbach/AutopilotMonitor.git
synced 2026-10-24 12:42:38 +00:00
bba5761d14
V2 had drifted to a renamed bucket schema (installedApps/failedApps/...) plus nested perApp/byPhase. The nested objects were dead — no Web component or rule consumed them — and the renamed counters needed a fallback chain in every reader. Single flat schema is simpler: - Builder rewritten to emit only the flat V1 keys: installed/failed/ skipped/postponed (final), downloading/installing/pending (live), errorCount/deviceErrors/userErrors/hasErrors/isAllCompleted/ ignoredCount (aggregate helpers), plus name lists per bucket (installedNames/failedNames/skippedNames/postponedNames/pendingNames). perApp + byPhase removed. The includePerAppDetail flag is gone — all emits ship the same shape (live snapshots stay cheap because the names lists are short strings, not per-app timing objects). - ignoredCount needed a separate accessor: it lives on the live AppPackageStateList, not on the deduped phase-snapshot+live union used by the termination accessor. New ImeIgnoredCount property on DefaultComponentFactory + ignoredCountAccessor parameter on EnrollmentTerminationHandler.ctor (default () => 0 keeps existing test rigs unaffected). - ANALYZE-APP-007.dataField back to errorCount (flat), dist regenerated. - Web hooks (useSessionDerivedData, useProgressDerivedData) drop the V2 fallback chain — single-schema reads only. - Tests rewritten for V1 schema: counter validation, device/user error split, hasErrors/isAllCompleted bool helpers, name-list population per bucket. EnrollmentTerminationHandlerTests collapsed the three V2-perApp tests into one V1-counts+split-errors test; per-app timing detail now lives only in FinalStatusBuilder / final-status.json, not in the event payload. Per-transition emit cadence and ImmediateUpload=false on live snapshots are unchanged from the previous commit. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>