Pulse/pkg
courtmanr@gmail.com a402d23503 fix(backups): synthesize per-guest task status from vzdump job logs
Scheduled multi-guest vzdump jobs run under a single UPID whose VMID slot
is empty, so pollBackupTasks stored them with VMID 0 and the guest-centric
backups coverage view dropped them entirely: only individually backed-up
guests ever showed task status. (Regressed with the v6.0.0 guest-centric
redesign, which removed the flat task table that used to render job runs.)

pollBackupTasks now fetches the job task's log and parses the per-guest
markers ("Starting Backup of VM", "Finished Backup of VM (duration)",
"Backup of VM failed - reason") into synthetic per-guest BackupTask
entries. Their IDs embed the parent UPID, keeping them stable across polls
and distinct from individually-run backups; per-guest times are
reconstructed from the job start plus the printed durations. Finished
jobs' logs are immutable, so results are cached per instance|UPID and each
finished run is fetched at most once, with a per-cycle fetch cap so a
historical backlog trickles in without stalling the backup poll budget.

The task listing now uses source=all + typefilter=vzdump, so running jobs
are visible too: guests covered by an in-progress job get a "running"
synthetic task, which also feeds resolveBackupIntentContext and
suppresses offline/backup alerts for guests the job is actively backing
up. The frontend needs no changes - synthetic tasks carry real VMIDs and
flow through the existing coverage model, recovery mapper, and alert
intent paths.

Contract: monitoring.md completion obligation 13 records the per-guest
synthesis boundary; proofs land in monitor_backup_job_tasks_test.go,
monitor_alert_intent_test.go, and cluster_client_api_test.go.

Reported by Johannes Strasser (support thread "PBS Bug").

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-26 20:03:46 +01:00
..
agents Fix Docker report size contract drift 2026-07-23 23:57:42 +01:00
aicontracts Add coverage tests for agentexec lifecycle codec and aicontracts pure helpers 2026-07-17 06:53:16 +01:00
audit Cover the alert-spec matchers and the audit, email and update guards 2026-07-25 02:17:36 +01:00
auth Keep admin recovery reachable when the legacy RBAC import fails 2026-07-24 22:56:09 +01:00
cloudauth fix(hosted): preserve direct handoff membership continuity 2026-03-26 23:40:02 +00:00
db Cover cloud tenant registry queries, unified views and slowlog wrappers 2026-07-22 21:41:02 +01:00
discovery Harden remaining CodeQL security boundaries 2026-07-09 19:46:40 +01:00
diskinventory Fix Proxmox physical disk inventory continuity 2026-07-23 22:05:09 +01:00
edition Block in-app self-update on the Pro binary to prevent silent downgrade 2026-07-08 10:02:04 +01:00
extensions Fix audit storage migration and viewer races 2026-07-24 10:33:57 +01:00
fsfilters Improve Machines disk summaries 2026-06-03 11:09:58 +01:00
licensing Add Go branch-coverage tests for twelve pure backend helpers 2026-07-19 15:10:09 +01:00
metrics Expand metrics checkpoint profiling 2026-07-24 10:07:33 +01:00
pbs Fix PBS job task history filters 2026-05-13 17:09:45 +01:00
pmg Harden outbound URLs and file-backed storage 2026-03-29 12:47:55 +01:00
proxmox fix(backups): synthesize per-guest task status from vzdump job logs 2026-07-26 20:03:46 +01:00
pulsecli Enforce server-owned action approval authority 2026-07-11 19:49:17 +01:00
reporting Make report branding PDF assertion case-insensitive 2026-07-21 10:23:06 +01:00
securityutil Cover the missing arms of the SSRF, clone and classifier guards 2026-07-25 00:39:15 +01:00
server Fix agent command channel admission 2026-07-24 13:00:03 +01:00
tlsutil fix(tlsutil): discard the subprocess kill error explicitly 2026-07-17 17:26:55 +01:00