Files
felhom.eu/REPORT.md
T

3.2 KiB

felhom.eu — task reports

Overwrite this file with a summary of the most recent task only (uniform with the other repos; not cumulative). The cumulative hub history lives in hub/CHANGELOG.md.


REPORT — hub v0.13.1: DR recipe v1 drive-shape sync (test-data + regression guard only)

TASK — DR-recipe completion (hub side of a cross-repo change). The agent's v0.39.0 dropped two fields from the host-half drives[] (role, restic_repo_coord) and now resolves the pbs coord live. The hub change is test-data + a regression guard only — NO behavior change; redeploy optional, because the hub already reads drive sections as json.RawMessage (verbatim passthrough): dropping fields needs no store/handler/struct change.

Baseline: v0.13.0 (5f5e3c5) → v0.13.1 (149a3b0, pushed to main).

Changes

  • internal/store/testdata/dr-recipe.golden.json + the drHostHalf test fixture — dropped the role key from drives[0] to match the v1 shape the agent emits.
  • internal/api/testdata/host-report.golden.json — re-synced byte-identical with the agent's internal/hub/testdata/host-report.golden.json (sha256 57f2a5e7…18b2f2b5). The hub copy previously lacked the dr_recipe section entirely; it is now a verbatim copy, so the cross-repo golden truly matches and POSTing it through /host-report exercises the SaveDRRecipeHostHalf ingest path.
  • New internal/store/dr_recipe_test.go::TestAssembleDRRecipe_V1DriveShape — the regression guard: a stored host half whose drives[] carry NEITHER dropped field but WHICH HAS a pbs block assembles cleanly (pbs carried through, drives passed through verbatim, neither role nor restic_repo_coord present). Demonstrated to FAIL when the fixture re-adds role, then reverted.

Verification

  • go build ./... && go vet ./... && go test ./...green.
  • Live (the real acceptance): after deploying the daemon (agent v0.39.0) and its startup host-report landing in the hub DB, the real AssembleDRRecipe over a copy of the live /data/hub.db produced the demo-felhom recipe — recipe_version 1, 3 guests w/ sizing, pbs present (felhom-pbs/root/9201), 2 drives clean (no role/restic_repo_coord), 5 pve_storage, 14 apps. Secret scan over the full assembled recipe AND both raw stored halves = 0 hits (nothing to redact — the point of the arc). (Operator HTML panel not browser-rendered: no dashboard password in this env; the server pipeline + exact stored/assembled bytes were verified.)

Cross-repo golden checksum

hub/internal/api/testdata/host-report.golden.jsonfelhom-agent/internal/hub/testdata/host-report.golden.json: 57f2a5e7154ece1be94a79fd327f2924762e70c3ee388d6e375df7c918b2f2b5 (both).

BACKLOG flagged (not acted on)

External-drive bulk data has no offsite / second-failure-domain backup — cross-drive (Tier-2) rsync lands on the same internal SSD in the same guest. This is why restic_repo_coord named nothing real and was dropped from v1. Design a genuine off-host bulk-data tier before re-introducing a drive backup coord. Full detail in felhom-agent/REPORT.md §8.