Skip to content

[epic] ActiveSync operations monitor (CLI + admin signals) #99

Open
6 of 8 issues completed
Open

Description

@TDannhauer

Summary

Operator-facing ActiveSync operations monitor: live “top-like” CLI plus health signals on the existing Horde admin device page. Shared read-only health model — not a protocol-library dashboard.

Design (to be committed with docs issue): doc/ops-monitor.md in horde/ActiveSync.

Goals (v1)

  1. Which devices are active right now?
  2. Which sync keys / collections look stuck?
  3. Where are loop-guard / heartbeat problems concentrating?
  4. How to jump from a bad device to per-device logs and admin actions?

Non-goals (v1)

  • Historical metrics / alerting / webhooks
  • HTTP 503 / X-MS-Throttle
  • Replacing logging.type = perdevice
  • Mutating protocol behaviour
  • CLI wipe/block (Web already has those)

Architecture

Piece Package / repo
Health heuristics + DTOs horde/ActiveSync
Snapshot service horde/Core
CLI horde-activesync top|show|summary horde/base (standalone bin; not hordectl)
Admin badges horde/base

CLI-first for live watch; Web reuses the same snapshot. CLI ships with the install (horde-* family), not via optional hordectl.

Implementation order

A (evaluator) → B (snapshot) → C (summary/show) → D (top)
                              ↘ E (admin UI)     → F (docs)

Follow-ups after v1 use: G (request touchpoints), H (log-scan).

Sub-issues

v1

Follow-ups

Closed (wrong home)

  • hordectl#20–22 → moved to horde/base #145–#147

Epic acceptance

  • horde-activesync top --watch shows active vs stuck during real Ping/Sync
  • summary exits non-zero on critical health (cron-friendly)
  • Admin device page shows the same signals without duplicating rule code
  • Per-device logs remain the deep-dive path
  • No protocol behaviour change; no DB migrations for v1

Target

Additive on FRAMEWORK_6_0. Keep the read model thin so FRAMEWORK_6_1 storage work can make fleet queries cheaper later.

Activity

  1. self-assigned this
    on Jul 31, 2026
  2. TDannhauer commented on Sep 18, 2026

    @TDannhauer
    ContributorAuthor

    Implementation PRs are open in dependency order:

    The CLI and admin paths reuse the same read-only health model. Follow-ups G/H remain out of scope for this v1 series. Epic checkboxes remain open until their PRs merge.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions