hub v0.7.4: ingest agent pbs_snapshots (slice 6 Phase B)

Accept + persist the now-populated host-report pbs_snapshots. hostPBSSnapshot mirror in
hostReportPayload (persisted via report_json, no schema change); a FAILED PBS verify is
logged prominently (loudest offsite-DR signal). Shared golden updated byte-identical with
felhom-agent; TestHostPBSSnapshot_GoldenContract added. Build/deploy deferred (backward-compatible).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-06-09 17:15:58 +02:00
parent 8db15bac16
commit 5bc4c3d967
5 changed files with 104 additions and 23 deletions
+16 -18
View File
@@ -4,35 +4,33 @@
---
# REPORT — Hub: ingest agent backups + restore_tests (v0.7.3) (2026-06-09)
# REPORT — Hub: ingest agent pbs_snapshots (v0.7.4) (2026-06-09)
## Outcome
**Code committed + pushed (changelogged as `v0.7.3`); image build/deploy deferred to an
operator decision.** The felhom-agent slice-6 Phase A work populates the host-report's
`backups` + `restore_tests`. This change is the hub half: accept + persist them. Minimal —
the authoritative backup policy is hub-owned (slice 10); this mirrors what the agent reports.
**Code committed + pushed (changelogged as `v0.7.4`); image build/deploy deferred to an
operator decision.** The felhom-agent slice-6 Phase B work populates the host-report's
`pbs_snapshots` (PBS offsite inventory + per-snapshot verify-state). This is the hub half:
accept + persist them. Minimal — the authoritative offsite policy is hub-owned (slice 10).
## What landed (`hub/internal/api/handler.go`, `host_test.go`, golden)
- `hostReportPayload` gains `hostBackup` / `hostRestoreTest` mirror structs matching the
agent's `hub.Backup` / `hub.RestoreTest` field-for-field.
- Persistence via the existing `report_json` column (no schema change). The handler logs a
**FAILED restore-test prominently** (`[WARN]` — the loudest DR signal) and a failed backup;
the host-report info line counts backups + restore-tests.
- The shared `testdata/host-report.golden.json` now carries a populated `backups[0]` /
`restore_tests[0]`, **byte-identical** with felhom-agent's copy.
- `TestHostBackup_GoldenContract` / `TestHostRestoreTest_GoldenContract` are the hub half of
the bidirectional key-set test. `go test ./internal/api/ ./internal/store/` is green.
- `hostReportPayload` gains a `hostPBSSnapshot` mirror struct matching the agent's
`hub.PBSSnapshot` field-for-field, persisted via the existing `report_json` column.
- The handler logs a **FAILED PBS verify prominently** (`[WARN]` — the loudest offsite-DR
signal); the host-report info line now counts pbs-snapshots too.
- The shared `testdata/host-report.golden.json` carries a populated `pbs_snapshots[0]`,
**byte-identical** with felhom-agent's copy; `TestHostPBSSnapshot_GoldenContract` is the
hub half of the bidirectional key-set test. `go test ./internal/api/` is green.
## Backward compatibility
An agent that omits/empties `backups`/`restore_tests` is accepted unchanged. The legacy
controller report path is untouched (frozen until the slice-10 cutover).
An agent that omits/empties `pbs_snapshots` is accepted unchanged. The legacy controller
report path is untouched (frozen until the slice-10 cutover).
## Deploy
> Per the GitOps flow (`CLAUDE.md`): build+push `gitea.dooplex.hu/admin/felhom-hub:v0.7.3`,
> Per the GitOps flow (`CLAUDE.md`): build+push `gitea.dooplex.hu/admin/felhom-hub:v0.7.4`,
> bump `manifests/hub.yaml`, commit, then sync the `felhom` ArgoCD app. **Deferred** at this
> checkpoint — the change is backward-compatible, so the live hub (v0.7.2) keeps ingesting
> checkpoint — the change is backward-compatible, so the live hub (v0.7.3) keeps ingesting
> host-reports fine until then.