Repository navigation
Closed
Description
[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 afleet_heartbeatsring buffer plus the latest snapshot in
fleet_clients. Activated by settingCARETAKER_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_registryblock insetup-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_SECRETenv wiring insetup-templates/templates/workflows/maintainer.yml
— exported in all threeenv: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 indocs/fleet.ymlwith per-repo
caveats and a four-step opt-in checklist.caretaker fleet statusCLI command — local config inspector;
prints the resolvedfleet_registryblock and notes whether the
signing secret is populated.caretaker fleet register-selfCLI command — sends one
signed heartbeat to verify a repo's registration round-trip;
echoes the dashboard's HTTP response for fast diagnosis.- Frontend
Alertspage (/alerts) — consumes
/api/admin/fleet/alertswith an "open only" toggle, severity
badges, and links back to per-repo detail. Closes the dead link
fromAlertsBanner.tsx. - Frontend
FleetDetailpage (/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,
FleetAlertListtypes — added tofrontend/src/lib/types.tsso
TypeScript builds no longer rely on an implicitFleetAlertimport.
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.pyget_store()— picks SQLite backing when
CARETAKER_FLEET_DB_PATHis 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-exportsSQLiteFleetRegistryStore,
resolve_db_path, andDEFAULT_DB_PATH_ENV.docs/fleet-registry.md— example endpoint replaced with the
production URLhttps://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_api—GET /health/doctornow reachable;
configured with the liveadmin_data, optional graph store, and
fleet store on lifespan.caretaker.admin.webhooks_api—GET /api/admin/webhooks/deliveries
now reachable, and thegithub_webhookhandler calls
register_delivery()after each ack so the dashboard can show
delivery history.
- Frontend
/alerts404 —AlertsBanner.tsxlinked to a route
that did not exist; the newAlertspage closes that gap. - Workflow YAML indentation —
setup-templates/templates/workflows/maintainer.yml
had inconsistent 7/9-space indentation on three- name:step
headers and theirenv:maps. Normalised to 2-space nesting; YAML
now parses cleanly without GitHub Actions' lenient mode.
@copilot Please apply this upgrade.
See .github/agents/maintainer-upgrade.md for instructions.
FROM: 0.19.4
TO: 0.19.6
BREAKING: False
Steps:
- Update version pins in
pyproject.toml/requirements.txt - Update any workflow references
- Run tests to verify compatibility
- Update the version in config if applicable
Acceptance criteria:
- Version updated to target
- All tests pass
- No regressions
Reacted by Copilot
Activity