Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
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+ thedrHostHalftest fixture — dropped therolekey fromdrives[0]to match the v1 shape the agent emits.internal/api/testdata/host-report.golden.json— re-synced byte-identical with the agent'sinternal/hub/testdata/host-report.golden.json(sha25657f2a5e7…18b2f2b5). The hub copy previously lacked thedr_recipesection entirely; it is now a verbatim copy, so the cross-repo golden truly matches and POSTing it through/host-reportexercises theSaveDRRecipeHostHalfingest path.- New
internal/store/dr_recipe_test.go::TestAssembleDRRecipe_V1DriveShape— the regression guard: a stored host half whosedrives[]carry NEITHER dropped field but WHICH HAS apbsblock assembles cleanly (pbs carried through, drives passed through verbatim, neitherrolenorrestic_repo_coordpresent). Demonstrated to FAIL when the fixture re-addsrole, 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
AssembleDRRecipeover a copy of the live/data/hub.dbproduced thedemo-felhomrecipe —recipe_version 1, 3 guests w/ sizing,pbspresent (felhom-pbs/root/9201), 2 drives clean (norole/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.json ≡ felhom-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.