Skip to content

[Maintainer] Upgrade to v0.19.6 #58

@github-actions

Description

@github-actions

[Maintainer] Upgrade to v0.19.6

Current version: 0.19.4
Target version: 0.19.6

Upgrade Notes

Wires the fleet registry into the admin dashboard end-to-end so that
production deployments at https://caretaker.cat-herding.net light up
with real heartbeat, alert, webhook, and doctor data. Closes the gap
where every child repo in docs/fleet.yml was effectively invisible to
the admin UI even when it ran caretaker on schedule.

Added

  • Persistent SQLiteFleetRegistryStore (src/caretaker/fleet/sqlite_store.py)
    — SQLite-backed implementation of the registry with the same async API
    as the in-memory store. Keeps the most recent 32 heartbeats per repo
    in a fleet_heartbeats ring buffer plus the latest snapshot in
    fleet_clients. Activated by setting CARETAKER_FLEET_DB_PATH
    (default location ~/.local/state/caretaker/fleet-registry.db); the
    legacy in-memory store remains the default to avoid surprising tests.
    Survives backend restarts so dashboard data no longer evaporates on
    every pod recycle.
  • fleet_registry block in setup-templates/templates/config-default.yml
    — opt-in template (enabled: false) that points at the production
    endpoint with HMAC and timeout pre-wired. Includes a 22-line comment
    block explaining the contract.
  • CARETAKER_FLEET_SECRET env wiring in setup-templates/templates/workflows/maintainer.yml
    — exported in all three env: blocks (bootstrap-check, run, and
    self-heal-on-failure). Indentation across the workflow normalised to
    2-space nesting at the same time.
  • Step 2.8 in setup-templates/SETUP_AGENT.md — guides Copilot
    through enabling the fleet registry on each child repo (config edit
    • secret + verification command).
  • docs/fleet-opt-in-runbook.md — operator-facing runbook
    enumerating the 12 child repos in docs/fleet.yml with per-repo
    caveats and a four-step opt-in checklist.
  • caretaker fleet status CLI command — local config inspector;
    prints the resolved fleet_registry block and notes whether the
    signing secret is populated.
  • caretaker fleet register-self CLI command — sends one
    signed heartbeat to verify a repo's registration round-trip;
    echoes the dashboard's HTTP response for fast diagnosis.
  • Frontend Alerts page (/alerts) — consumes
    /api/admin/fleet/alerts with an "open only" toggle, severity
    badges, and links back to per-repo detail. Closes the dead link
    from AlertsBanner.tsx.
  • Frontend FleetDetail page (/fleet/:owner/:repo) — per-repo
    drill-down with the last 32 heartbeats, enabled-agent pills, and
    goal-health/error trends. Reachable from any row of the Fleet page.
  • FleetClient, FleetClientDetail, FleetAlert,
    FleetAlertList types
    — added to frontend/src/lib/types.ts so
    TypeScript builds no longer rely on an implicit FleetAlert import.

Changed

  • GET /api/admin/fleet/{owner}/{repo} — now accepts
    ?include_history=true&history_limit=N (max 32) and returns the
    per-repo heartbeat ring buffer alongside the client snapshot. Used
    by the new Fleet detail page.
  • fleet/store.py get_store() — picks SQLite backing when
    CARETAKER_FLEET_DB_PATH is set; otherwise keeps the in-memory
    default. reset_store_for_tests(store=None) accepts an explicit
    store override for SQLite test fixtures.
  • fleet/__init__.py — re-exports SQLiteFleetRegistryStore,
    resolve_db_path, and DEFAULT_DB_PATH_ENV.
  • docs/fleet-registry.md — example endpoint replaced with the
    production URL https://caretaker.cat-herding.net/api/fleet/heartbeat;
    persistence section rewritten to describe the new SQLite seam.

Fixed

  • Dead admin routers wired into the FastAPI app
    (src/caretaker/mcp_backend/main.py):
    • caretaker.admin.health_apiGET /health/doctor now reachable;
      configured with the live admin_data, optional graph store, and
      fleet store on lifespan.
    • caretaker.admin.webhooks_apiGET /api/admin/webhooks/deliveries
      now reachable, and the github_webhook handler calls
      register_delivery() after each ack so the dashboard can show
      delivery history.
  • Frontend /alerts 404AlertsBanner.tsx linked to a route
    that did not exist; the new Alerts page closes that gap.
  • Workflow YAML indentationsetup-templates/templates/workflows/maintainer.yml
    had inconsistent 7/9-space indentation on three - name: step
    headers and their env: maps. Normalised to 2-space nesting; YAML
    now parses cleanly without GitHub Actions' lenient mode.

📋 Full Changelog

@copilot Please apply this upgrade.
See .github/agents/maintainer-upgrade.md for instructions.

FROM: 0.19.4
TO: 0.19.6
BREAKING: False

Steps:

  1. Update version pins in pyproject.toml / requirements.txt
  2. Update any workflow references
  3. Run tests to verify compatibility
  4. Update the version in config if applicable

Acceptance criteria:

  • Version updated to target
  • All tests pass
  • No regressions

Metadata

Metadata

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions