39 lines
187 KiB
JSON
39 lines
187 KiB
JSON
{
|
|
"schema_version": 1,
|
|
"channel": "homelab-runtime",
|
|
"command_id": "SUPPORT-260927-HOMELAB-BACKUP-V2-CURRENT-FAILURE-RCA-1221R1",
|
|
"status": "OK",
|
|
"rc": 0,
|
|
"host": "pve01",
|
|
"mode": "read-only",
|
|
"component": "homelab-backup-v2-current-failure-rca",
|
|
"started_at_utc": "2026-09-27T18:22:59Z",
|
|
"finished_at_utc": "2026-09-27T18:23:07Z",
|
|
"reference_register_checked": true,
|
|
"reference_sha256": "5a3d8e5154c41cb582a4e0aca68090be1f0138918bf82131a948df326f9d8d66",
|
|
"error_register_checked": true,
|
|
"error_register_sha256": "3b09a553ec0f527ed3afeed4753f52a74ee3036045bbfb3c685e9f8af4ba7ba0",
|
|
"command_sha256": "d4cfa85a3f59165d51b64505096167a15ce486f1a2105a55cd0c206b16d5353a",
|
|
"duplicate_failed_command_blocked": false,
|
|
"block_reason": null,
|
|
"execution_started": true,
|
|
"change_declared": false,
|
|
"result_contract_valid": true,
|
|
"result_contract_status": null,
|
|
"result_contract_error": null,
|
|
"command_rc": 0,
|
|
"changes_made": false,
|
|
"rollback_started": false,
|
|
"rollback_restored": null,
|
|
"mutation_outcome": "NO_MUTATION",
|
|
"sanitized": true,
|
|
"secrets_included": false,
|
|
"private_addresses_included": false,
|
|
"raw_evidence_retained_locally": true,
|
|
"raw_evidence_sha256": "de7467ab7d2c1584968349e75f34c054b7b406741bd4ab8a3a6e0e559ecf7d2a",
|
|
"sanitized_output_sha256": "ebca4b307aeed79780cce791fc44145115b68a88d817904d875aaae99b5dbbef",
|
|
"output_truncated_in_json": false,
|
|
"full_sanitized_output_url": "https://git.gram1.ru/.well-known/homelab-runtime/latest.txt",
|
|
"output": "BACKUP_V2_CURRENT_FAILURE_RCA_BEGIN=true\nCOMMAND_ID=SUPPORT-260927-HOMELAB-BACKUP-V2-CURRENT-FAILURE-RCA-1221R1\nMODE=read-only\nCOMPONENT=homelab-backup-v2-current-failure-rca\nMUTATION_BOUNDARY=NONE_READ_ONLY_NO_SYSTEMD_ACTION_NO_BACKUP_NO_AUDIT_RUN_NO_LOCK_BREAK_NO_RETENTION_NO_DELETE_NO_MAIL_NO_GIT_WRITE_NO_NETBIRD_SKLADCHIK_CHANGE\n=== AUTHORITY ===\nHOST=pve01\nCLUSTER_QUORATE=Yes\nREFERENCE_REGISTER_AUTHORITY=RUNNER_ENFORCED\nREFERENCE_SHA256_EXPECTED=5a3d8e5154c41cb582a4e0aca68090be1f0138918bf82131a948df326f9d8d66\nERROR_REGISTER_AUTHORITY=RUNNER_ENFORCED\nERROR_REGISTER_SHA256_EXPECTED=3b09a553ec0f527ed3afeed4753f52a74ee3036045bbfb3c685e9f8af4ba7ba0\nRUNNER_SHA256=b248a4c32c9cc64e5747e7dce6c7fc0a23f5124a77c71ce72e27a81aceae9d2d\n=== IMMUTABLE_HISTORY ===\nSOURCE_1211_STATUS=OK\nSOURCE_1211_RC=0\nSOURCE_1211_DECISION=PASS_BACKUP_RPO_ADAPTIVE_CLOSE\nSOURCE_1211_NEXT_GATE=NONE\nSOURCE_1211_TASK_RESULT=PASS_HOMELAB_BACKUP_RPO_ADAPTIVE_CLOSE\nSOURCE_1220_STATUS=OK\nSOURCE_1220_RC=0\nSOURCE_1220_DECISION=PASS_BACKUP_ALERT_DEBOUNCE\nSOURCE_1220_NEXT_GATE=NONE\nSOURCE_73337_STATUS=OK\nSOURCE_73337_DECISION=PASS_NETBIRD_SKLADCHIK_POSTREPAIR_FINAL_ACCEPTANCE\nSOURCE_73337_NEXT_GATE=NONE\nSOURCE_CONTEXT_PRESENT=true\nSOURCE_CONTEXT_BACKUP_V2_FAILED=true\nSOURCE_CONTEXT_BACKUP_AUDIT_FAILED=true\n=== CURRENT_FAILED_UNITS ===\n● homelab-backup-audit.service loaded failed failed Homelab unified backup and DR audit\n● homelab-backup-v2.service loaded failed failed Homelab Backup V2 manifest-driven scheduler\n=== BACKUP_V2_SERVICE_SHOW ===\nResult=exit-code\nExecMainStartTimestamp=Sun 2026-09-27 21:08:52 MSK\nExecMainExitTimestamp=Sun 2026-09-27 21:08:59 MSK\nExecMainCode=1\nExecMainStatus=1\nExecStart={ path=/usr/local/sbin/homelab-backup-v2 ; argv[]=/usr/local/sbin/homelab-backup-v2 scheduled ; ignore_errors=no ; start_time=[Sun 2026-09-27 21:08:52 MSK] ; stop_time=[Sun 2026-09-27 21:08:59 MSK] ; pid=19346 ; code=exited ; status=1 }\nId=homelab-backup-v2.service\nDescription=Homelab Backup V2 manifest-driven scheduler\nLoadState=loaded\nActiveState=failed\nSubState=failed\nFragmentPath=/etc/systemd/system/homelab-backup-v2.service\nDropInPaths=\nUnitFileState=static\nActiveEnterTimestamp=\nInactiveEnterTimestamp=Sun 2026-09-27 21:08:59 MSK\nBACKUP_V2_FRAGMENT_PATH=/etc/systemd/system/homelab-backup-v2.service\nBACKUP_V2_UNIT_SHA256=1ef3e6bc660767a1f29a6a0bfa8d1b7a2419370b2250764ca181c34c93188565\nBACKUP_V2_UNIT_META=644:root:root:2026-09-15 00:28:03.719796025 +0300\n=== BACKUP_V2_SERVICE_CAT ===\n# /etc/systemd/system/homelab-backup-v2.service\n[Unit]\nDescription=Homelab Backup V2 manifest-driven scheduler\nAfter=network-online.target\nWants=network-online.target\n\n[Service]\nType=oneshot\nUser=root\nGroup=root\nUMask=0077\nExecStart=/usr/local/sbin/homelab-backup-v2 scheduled\nNice=10\nIOSchedulingClass=best-effort\nIOSchedulingPriority=7\nTimeoutStartSec=8h\nBACKUP_V2_EXECSTART_RAW={ path=/usr/local/sbin/homelab-backup-v2 ; argv[]=/usr/local/sbin/homelab-backup-v2 scheduled ; ignore_errors=no ; start_time=[Sun 2026-09-27 21:08:52 MSK] ; stop_time=[Sun 2026-09-27 21:08:59 MSK] ; pid=19346 ; code=exited ; status=1 }\nBACKUP_V2_EXECSTART_PATH=/usr/local/sbin/homelab-backup-v2\nBACKUP_V2_EXECSTART_SHA256=5077444065c732451cb84898680f62361b21a24ef9eb4f191253e82ead524ea2\nBACKUP_V2_EXECSTART_META=750:root:root:2026-09-17 10:33:39.880371590 +0300\n=== BACKUP_V2_EXECSTART_SOURCE_BEGIN ===\n#!/usr/bin/python3\nfrom __future__ import annotations\nimport hashlib, importlib, os, pathlib, stat, sys\nACCEPTED=pathlib.Path('/opt/homelab-backup-v2/releases/backup-v2-overlay-504r1-ca6876fa9c3b')\nEXPECTED={'fresh_lxc_helper.py': 'dbb3e6dbb71b10797df736431d9501a752a0f8c439163c9a0bddb7f76747f011', 'producer_exec_helper.py': 'b3b97099bcd7126670f866e81faae6a42a96d869d9989e6a67f6ea6c871c90b3', 'lxc_adapter.py': '3fa7d194010d76f7c8bc95035ae8876262e9337903e310f45f45df88c266dc8d', 'qemu_adapter.py': '1906db42bd34bbe85eb46fd9797b3572d46e0a41c29d1c29be5f9df5e448f15b', 'scheduler_adapter.py': 'a6f67159a64067773323f028126e3109e15cf17a8142cea5e6129970f1d4da96', 'entry504.py': 'ca6876fa9c3b1465b045344a8ad46962de16972c7dadc4ac6257c7d225047793'}\ndef sha(p):\n h=hashlib.sha256()\n with open(p,'rb',buffering=0) as f:\n while True:\n b=f.read(1048576)\n if not b: break\n h.update(b)\n return h.hexdigest()\ndef main():\n st=os.lstat(ACCEPTED)\n if not stat.S_ISDIR(st.st_mode) or stat.S_ISLNK(st.st_mode) or st.st_uid!=0 or st.st_gid!=0 or stat.S_IMODE(st.st_mode)!=0o500: raise SystemExit('RELEASE_ROOT_IDENTITY')\n names=sorted(p.name for p in ACCEPTED.iterdir())\n if names!=sorted(EXPECTED): raise SystemExit('RELEASE_FILESET')\n for name,want in EXPECTED.items():\n p=ACCEPTED/name; s=os.lstat(p)\n if not stat.S_ISREG(s.st_mode) or stat.S_ISLNK(s.st_mode) or s.st_uid!=0 or s.st_gid!=0 or stat.S_IMODE(s.st_mode)!=0o400 or sha(p)!=want: raise SystemExit('RELEASE_FILE_IDENTITY_'+name)\n sys.dont_write_bytecode=True\n sys.path.insert(0,str(ACCEPTED))\n e=importlib.import_module('entry504')\n return int(e.main())\nif __name__=='__main__': raise SystemExit(main())\n=== BACKUP_V2_EXECSTART_SOURCE_END ===\n=== BACKUP_V2_TIMER_SHOW ===\nNextElapseUSecRealtime=\nLastTriggerUSec=Sun 2026-09-27 21:08:52 MSK\nResult=success\nId=homelab-backup-v2.timer\nLoadState=loaded\nActiveState=active\nSubState=waiting\nFragmentPath=/etc/systemd/system/homelab-backup-v2.timer\nDropInPaths=\nUnitFileState=enabled\nBACKUP_V2_TIMER_FRAGMENT_PATH=/etc/systemd/system/homelab-backup-v2.timer\nBACKUP_V2_TIMER_SHA256=5469057602452b303a01ccb8057085c1b0e447973e5ed198cebf7dd5daf58e9d\n=== BACKUP_V2_TIMER_CAT ===\n# /etc/systemd/system/homelab-backup-v2.timer\n[Unit]\nDescription=Homelab Backup V2 scheduler timer\n\n[Timer]\nOnActiveSec=20min\nOnUnitActiveSec=30min\nRandomizedDelaySec=10min\nUnit=homelab-backup-v2.service\n\n[Install]\nWantedBy=timers.target\n=== BACKUP_AUDIT_SERVICE_SHOW ===\nResult=exit-code\nExecMainStartTimestamp=Sun 2026-09-27 21:05:58 MSK\nExecMainExitTimestamp=Sun 2026-09-27 21:06:02 MSK\nExecMainCode=1\nExecMainStatus=1\nExecStart={ path=/usr/local/sbin/homelab-backup-audit ; argv[]=/usr/local/sbin/homelab-backup-audit scheduled ; ignore_errors=no ; start_time=[Sun 2026-09-27 21:05:58 MSK] ; stop_time=[Sun 2026-09-27 21:06:02 MSK] ; pid=16838 ; code=exited ; status=1 }\nId=homelab-backup-audit.service\nDescription=Homelab unified backup and DR audit\nLoadState=loaded\nActiveState=failed\nSubState=failed\nFragmentPath=/etc/systemd/system/homelab-backup-audit.service\nDropInPaths=\nUnitFileState=static\nActiveEnterTimestamp=\nInactiveEnterTimestamp=Sun 2026-09-27 21:06:02 MSK\nBACKUP_AUDIT_FRAGMENT_PATH=/etc/systemd/system/homelab-backup-audit.service\nBACKUP_AUDIT_UNIT_SHA256=7b64362ef0d0d7e59f5305afd642386082a275bba359c3c9b3def97dd6c2c4aa\nBACKUP_AUDIT_UNIT_META=644:root:root:2026-08-11 08:46:44.076278347 +0300\n=== BACKUP_AUDIT_SERVICE_CAT ===\n# /etc/systemd/system/homelab-backup-audit.service\n[Unit]\nDescription=Homelab unified backup and DR audit\nAfter=network-online.target\nWants=network-online.target\n\n[Service]\nType=oneshot\nExecStart=/usr/local/sbin/homelab-backup-audit scheduled\nUser=root\nGroup=root\nUMask=0077\nNice=10\nIOSchedulingClass=best-effort\nIOSchedulingPriority=7\nBACKUP_AUDIT_EXECSTART_RAW={ path=/usr/local/sbin/homelab-backup-audit ; argv[]=/usr/local/sbin/homelab-backup-audit scheduled ; ignore_errors=no ; start_time=[Sun 2026-09-27 21:05:58 MSK] ; stop_time=[Sun 2026-09-27 21:06:02 MSK] ; pid=16838 ; code=exited ; status=1 }\nBACKUP_AUDIT_EXECSTART_PATH=/usr/local/sbin/homelab-backup-audit\nBACKUP_AUDIT_EXECSTART_SHA256=f7b936fa997bdefdd0c3c5d1d96e496888ebebc8ea85a60ed3bf5bcc9bf4962a\nBACKUP_AUDIT_EXECSTART_META=755:root:root:2026-09-22 12:19:10.163905297 +0300\n=== BACKUP_AUDIT_EXECSTART_SOURCE_BEGIN ===\n#!/usr/bin/env python3\nimport sys,os,json,time,subprocess,pathlib,re,datetime\nMODE=sys.argv[1] if len(sys.argv)>1 else \"all\"\nif MODE not in (\"all\",\"write-health\",\"scheduled\",\"contract\"):\n print(\"AUDIT_ERROR=USAGE_all_write-health_scheduled_contract\",file=sys.stderr); sys.exit(64)\nif MODE==\"contract\":\n print(\"AUDIT_CONTRACT=v2-plus-sealed-quorum\")\n print(\"AUDIT_SCHEMA=homelab-backup-audit-v3\")\n sys.exit(0)\n\nREG=pathlib.Path(\"/etc/homelab-backup/targets.json\")\nSTATE=pathlib.Path(\"/var/lib/homelab-backup-v2/state\")\nQROOT=pathlib.Path(\"/var/lib/homelab-backup/cloud-quorum\")\nVMREST=pathlib.Path(\"/var/lib/homelab-backup/vm-restore-validation\")\nAPPREST=pathlib.Path(\"/var/lib/homelab-backup/app-restore-validation\")\nREGH=\"/usr/local/libexec/homelab-backup-target-registry\"\nAPPQ=\"/usr/local/sbin/homelab-app-cloud-quorum-queue\"\nGFSH=\"/usr/local/libexec/homelab-backup-gfs-policy\"\nGFSP=\"/etc/homelab-backup/gfs-retention.json\"\nRET=\"/usr/local/sbin/homelab-backup-retention-gc\"\nWT=\"/root/homelab-ops-cr-2026-1005\"\nBRANCH=\"cr-2026-1005-backup-v2-health-alerting-remediation\"\nDRSEAL=pathlib.Path(\"/var/lib/homelab-admin/seals/site-dr-final-acceptance-v1.json\")\nCLOUDB_HEALTH=pathlib.Path(\"/var/lib/skladchik-reports-monitor-backup/restore-check-health.txt\")\nHEALTHS=[pathlib.Path(\"/var/lib/homelab-health/backup-audit-v2.json\"),pathlib.Path(\"/var/lib/homelab-health/backup-audit.json\")]\n\ndef run(cmd,timeout=60,env=None):\n try:\n p=subprocess.run(cmd,text=True,stdout=subprocess.PIPE,stderr=subprocess.PIPE,timeout=timeout,env=env)\n return p.returncode,p.stdout,p.stderr\n except subprocess.TimeoutExpired as e:\n return 124,e.stdout or \"\",e.stderr or \"\"\n\ndef collect(obj,out):\n if isinstance(obj,dict):\n if isinstance(obj.get(\"logical_id\"),str): out.append(obj)\n for v in obj.values(): collect(v,out)\n elif isinstance(obj,list):\n for v in obj: collect(v,out)\n\ndef parse_epoch(obj):\n for k in (\"sealed_epoch\",\"last_success_epoch\",\"updated_epoch\"):\n v=obj.get(k)\n if isinstance(v,(int,float)) and v>0: return int(v)\n for k in (\"sealed_at_utc\",\"updated_at_utc\",\"completed_at_utc\"):\n v=obj.get(k)\n if isinstance(v,str) and v:\n try:\n return int(datetime.datetime.fromisoformat(v.replace(\"Z\",\"+00:00\")).timestamp())\n except Exception: pass\n return None\n\ndef latest_legacy(logical,kind):\n d=QROOT/logical\n best=None; best_epoch=-1\n if not d.is_dir(): return None\n for p in d.glob(\"*.json\"):\n try: obj=json.loads(p.read_text(encoding=\"utf-8\"))\n except Exception: continue\n epoch=parse_epoch(obj)\n score=epoch if epoch is not None else int(p.stat().st_mtime)\n if score>best_epoch:\n best_epoch=score; best=(p,obj,score)\n if not best: return None\n p,obj,epoch=best\n gen=obj.get(\"generation\")\n strict=(obj.get(\"status\")==\"SEALED\" and obj.get(\"cloud_quorum\")==2 and obj.get(\"cloud_a_verified\") is True and obj.get(\"cloud_b_verified\") is True and obj.get(\"part_hashes_verified\") is True and obj.get(\"seal_written\") is True and obj.get(\"local_payload_present\") is False and obj.get(\"local_cleanup\")==\"OK\")\n rroot=VMREST if kind==\"VM\" else APPREST\n rev=(rroot/logical/(str(gen)+\".json\")) if gen else None\n restore=False\n if rev and rev.is_file():\n try:\n rj=json.loads(rev.read_text(encoding=\"utf-8\"))\n restore=(rj.get(\"result\")==\"OK\")\n except Exception: pass\n age=max(0,int(time.time()-epoch)) if epoch else None\n return {\"generation\":gen,\"strict\":strict,\"restore_ok\":restore,\"age_seconds\":age,\"state_file\":str(p),\"obj\":obj}\n\ndef unit_ok(unit):\n a=run([\"systemctl\",\"is-active\",unit],10)[1].strip()\n e=run([\"systemctl\",\"is-enabled\",unit],10)[1].strip()\n return a==\"active\" and e==\"enabled\",a,e\n\ndef parse_app_plan(txt):\n d={}\n for line in txt.splitlines():\n if line.startswith(\"QUEUE_FRESHNESS_PLAN APP=\"):\n r={}\n for tok in line.split()[1:]:\n if \"=\" in tok:\n k,v=tok.split(\"=\",1); r[k]=v\n if r.get(\"APP\"): d[r[\"APP\"]]=r.get(\"DECISION\")\n return d\n\nissues=[]; targets=[]; now=int(time.time())\ntry: robj=json.loads(REG.read_text(encoding=\"utf-8\"))\nexcept Exception:\n print(\"AUDIT_ERROR=REGISTRY_UNREADABLE\",file=sys.stderr); sys.exit(69)\nrows=[]; collect(robj,rows)\nactive={}\nfor r in rows:\n lid=r.get(\"logical_id\")\n if lid and str(r.get(\"lifecycle\",\"\")).upper()==\"ACTIVE\":\n active[lid]={\"logical_id\":lid,\"kind\":str(r.get(\"kind\",\"\")).upper(),\"id\":str(r.get(\"id\")) if r.get(\"id\") is not None else None}\n\nvmrc,vmo,_=run([REGH,\"freshness-seconds\",\"VM\"],20)\naprc,apo,_=run([REGH,\"freshness-seconds\",\"APP\"],20)\nvm_sla=int(vmo.strip()) if vmrc==0 and vmo.strip().isdigit() else 72000\napp_sla=int(apo.strip()) if aprc==0 and apo.strip().isdigit() else 72000\n\nrrc,rout,_=run([\"pvesh\",\"get\",\"/cluster/resources\",\"--type\",\"vm\",\"--output-format\",\"json\"],30)\nresources={}\nif rrc==0:\n try:\n for x in json.loads(rout): resources[str(x.get(\"vmid\"))]=x\n except Exception: pass\n\nqrc,qout,qerr=run([APPQ,\"freshness-plan\"],180)\napp_dec=parse_app_plan(qout if qrc==0 else \"\")\nif qrc!=0: issues.append({\"severity\":\"CRITICAL\",\"code\":\"APP_FRESHNESS_PLAN_FAILED\",\"logical_id\":\"-\",\"root_cause\":\"APP_QUEUE_RC_\"+str(qrc)})\n\nfor lid,r in sorted(active.items()):\n kind=r[\"kind\"]; ident=r[\"id\"]; rec={\"logical_id\":lid,\"kind\":kind,\"state\":\"UNVERIFIED\"}\n if kind==\"VM\":\n typ=str(resources.get(ident,{}).get(\"type\",\"qemu\"))\n sid=(\"ct\"+ident) if typ==\"lxc\" else (\"vm\"+ident)\n v2=None\n try: v2=json.loads((STATE/(sid+\".json\")).read_text(encoding=\"utf-8\"))\n except Exception: pass\n v2_ok=False; v2_age=None; repcount=None\n if isinstance(v2,dict):\n ls=v2.get(\"last_success_epoch\")\n v2_age=max(0,int(now-ls)) if isinstance(ls,(int,float)) and ls>0 else None\n reps=v2.get(\"replicas\"); repcount=len(reps) if isinstance(reps,(list,dict)) else None\n v2_ok=(v2.get(\"result\")==\"SUCCESS\" and v2_age is not None and v2_age<vm_sla and repcount==2)\n cf=v2.get(\"consecutive_failures\")\n if isinstance(cf,int) and cf>=3:\n issues.append({\"severity\":\"HIGH\",\"code\":\"RETRY_EXHAUSTION\",\"logical_id\":lid,\"root_cause\":\"CONSECUTIVE_FAILURES_\"+str(cf)})\n legacy=latest_legacy(lid,\"VM\")\n legacy_ok=bool(legacy and legacy[\"strict\"] and legacy[\"restore_ok\"] and legacy[\"age_seconds\"] is not None and legacy[\"age_seconds\"]<vm_sla)\n fresh=v2_ok or legacy_ok\n source=(\"V2\" if v2_ok else (\"SEALED_QUORUM\" if legacy_ok else \"NONE\"))\n rec.update({\"state\":\"FRESH\" if fresh else \"STALE\",\"source\":source,\"v2_age_seconds\":v2_age,\"legacy_age_seconds\":legacy[\"age_seconds\"] if legacy else None,\"replica_count\":repcount,\"state_id\":sid,\"generation\":(v2.get(\"generation\") if v2_ok and isinstance(v2,dict) else (legacy[\"generation\"] if legacy else None))})\n if not fresh: issues.append({\"severity\":\"HIGH\",\"code\":\"RPO_BREACH\",\"logical_id\":lid,\"root_cause\":\"NO_FRESH_V2_OR_SEALED_QUORUM\"})\n if legacy:\n obj=legacy[\"obj\"]\n if obj.get(\"local_payload_present\") is True:\n issues.append({\"severity\":\"CRITICAL\",\"code\":\"LOCAL_PAYLOAD_LEAK\",\"logical_id\":lid,\"root_cause\":\"LATEST_STATE_LOCAL_PAYLOAD_PRESENT\"})\n if obj.get(\"status\")!=\"SEALED\" and legacy[\"age_seconds\"] is not None and legacy[\"age_seconds\"]<172800:\n issues.append({\"severity\":\"HIGH\",\"code\":\"INCOMPLETE_GENERATION\",\"logical_id\":lid,\"root_cause\":\"LATEST_RECENT_STATE_NOT_SEALED\"})\n elif kind==\"APP\":\n dec=app_dec.get(ident)\n fresh=(dec in (\"SKIP_FRESH\",\"BACKUP_FRESH\"))\n legacy=latest_legacy(lid,\"APP\")\n if legacy and legacy[\"age_seconds\"] is not None and legacy[\"age_seconds\"]<app_sla and legacy[\"strict\"] and legacy[\"restore_ok\"]:\n fresh=True\n rec.update({\"state\":\"FRESH\" if fresh else \"STALE\",\"decision\":dec,\"legacy_age_seconds\":legacy[\"age_seconds\"] if legacy else None,\"generation\":legacy[\"generation\"] if legacy else None})\n if not fresh: issues.append({\"severity\":\"HIGH\",\"code\":\"RPO_BREACH\",\"logical_id\":lid,\"root_cause\":\"APP_QUORUM_NOT_FRESH\"})\n if legacy:\n obj=legacy[\"obj\"]\n if obj.get(\"local_payload_present\") is True:\n issues.append({\"severity\":\"CRITICAL\",\"code\":\"LOCAL_PAYLOAD_LEAK\",\"logical_id\":lid,\"root_cause\":\"LATEST_STATE_LOCAL_PAYLOAD_PRESENT\"})\n if obj.get(\"status\")!=\"SEALED\" and legacy[\"age_seconds\"] is not None and legacy[\"age_seconds\"]<172800:\n issues.append({\"severity\":\"HIGH\",\"code\":\"INCOMPLETE_GENERATION\",\"logical_id\":lid,\"root_cause\":\"LATEST_RECENT_STATE_NOT_SEALED\"})\n elif kind==\"CONTROL\":\n try: obj=json.loads((STATE/(lid+\".json\")).read_text(encoding=\"utf-8\"))\n except Exception: obj=None\n fresh=False; age=None\n if isinstance(obj,dict):\n ls=obj.get(\"last_success_epoch\"); age=max(0,int(now-ls)) if isinstance(ls,(int,float)) and ls>0 else None\n fresh=(obj.get(\"result\")==\"SUCCESS\" and age is not None and age<86400)\n rec.update({\"state\":\"FRESH\" if fresh else \"STALE\",\"age_seconds\":age,\"generation\":obj.get(\"generation\") if isinstance(obj,dict) else None})\n if not fresh: issues.append({\"severity\":\"HIGH\",\"code\":\"RPO_BREACH\",\"logical_id\":lid,\"root_cause\":\"CONTROL_STATE_NOT_FRESH\"})\n targets.append(rec)\n\nif len(targets)!=len(active):\n issues.append({\"severity\":\"CRITICAL\",\"code\":\"LIFECYCLE_COVERAGE_GAP\",\"logical_id\":\"-\",\"root_cause\":\"ACTIVE_TARGET_COUNT_MISMATCH\"})\n\nfor unit,code in [\n (\"homelab-backup-v2.timer\",\"V2_TIMER_BAD\"),\n (\"homelab-app-cloud-quorum-queue.timer\",\"APP_TIMER_BAD\"),\n (\"homelab-backup-retention-gc.timer\",\"RETENTION_TIMER_BAD\"),\n (\"homelab-alertmanager-backup-health.timer\",\"ALERT_TIMER_BAD\"),\n]:\n ok,a,e=unit_ok(unit)\n if not ok: issues.append({\"severity\":\"HIGH\",\"code\":code,\"logical_id\":unit,\"root_cause\":\"UNIT_\"+a+\"_\"+e})\n\nfor lock in [\"/run/homelab-backup-heavy.lock\",\"/run/lock/homelab-app-cloud-quorum-queue.lock\",\"/run/lock/homelab-vm-cloud-quorum-queue.lock\",\"/run/lock/homelab-backup-dispatcher.lock\"]:\n p=pathlib.Path(lock)\n if p.exists():\n lrc,_,_=run([\"flock\",\"-n\",str(p),\"-c\",\"true\"],5)\n if lrc!=0: issues.append({\"severity\":\"HIGH\",\"code\":\"LOCK_BUSY\",\"logical_id\":lock,\"root_cause\":\"ACTIVE_OR_ORPHAN_LOCK\"})\n\nenv=os.environ.copy(); env[\"HOMELAB_BACKUP_GFS_POLICY\"]=GFSP; env[\"HOMELAB_BACKUP_TARGET_REGISTRY\"]=str(REG)\ngrc,gout,_=run([GFSH,\"validate\"],20,env)\nif grc!=0 or \"GFS_POLICY=OK\" not in gout:\n issues.append({\"severity\":\"CRITICAL\",\"code\":\"GFS_INVALID\",\"logical_id\":\"-\",\"root_cause\":\"GFS_VALIDATE_FAILED\"})\nrr,_,_=run([RET,\"contract\"],120)\nif rr!=0: issues.append({\"severity\":\"HIGH\",\"code\":\"RETENTION_CONTRACT_BAD\",\"logical_id\":\"-\",\"root_cause\":\"RETENTION_CONTRACT_RC_\"+str(rr)})\nrhp=pathlib.Path(\"/var/lib/homelab-health/backup-retention-safe-gc.json\")\nif not rhp.is_file():\n issues.append({\"severity\":\"HIGH\",\"code\":\"RETENTION_HEALTH_MISSING\",\"logical_id\":\"-\",\"root_cause\":\"RETENTION_HEALTH_FILE_MISSING\"})\nelse:\n try:\n rh=json.loads(rhp.read_text(encoding=\"utf-8\"))\n if rh.get(\"status\")!=\"OK\": issues.append({\"severity\":\"HIGH\",\"code\":\"RETENTION_HEALTH_BAD\",\"logical_id\":\"-\",\"root_cause\":\"RETENTION_HEALTH_NOT_OK\"})\n except Exception: issues.append({\"severity\":\"HIGH\",\"code\":\"RETENTION_HEALTH_BAD\",\"logical_id\":\"-\",\"root_cause\":\"RETENTION_HEALTH_UNREADABLE\"})\n\ncloud={}\nfor label,remote in [(\"A\",\"pve01-mail-01-crypt:homelab-backups\"),(\"B\",\"pve01-mail-02-crypt:homelab-backups\")]:\n lrc,lo,_=run([\"rclone\",\"lsf\",remote,\"--max-depth\",\"1\",\"--dirs-only\"],60)\n arc,ao,_=run([\"rclone\",\"about\",remote,\"--json\"],60)\n rec={\"readable\":lrc==0,\"top_dirs\":len([x for x in lo.splitlines() if x.strip()])}\n if arc==0:\n try:\n j=json.loads(ao); rec.update({k:j.get(k) for k in (\"total\",\"used\",\"free\")})\n if j.get(\"total\") and j.get(\"free\") is not None:\n frac=j[\"free\"]/j[\"total\"]; rec[\"free_fraction\"]=round(frac,6)\n if frac<0.15: issues.append({\"severity\":\"HIGH\",\"code\":\"CAPACITY_LOW\",\"logical_id\":\"cloud-\"+label,\"root_cause\":\"FREE_LT_15_PERCENT\"})\n except Exception: pass\n if lrc!=0: issues.append({\"severity\":\"CRITICAL\",\"code\":\"CLOUD_UNREADABLE\",\"logical_id\":\"cloud-\"+label,\"root_cause\":\"RCLONE_LSF_FAILED\"})\n cloud[label]=rec\n\ntry: dr=json.loads(DRSEAL.read_text(encoding=\"utf-8\"))\nexcept Exception: dr=None\nif not isinstance(dr,dict) or dr.get(\"status\")!=\"SEALED\":\n issues.append({\"severity\":\"CRITICAL\",\"code\":\"DR_SEAL_MISSING\",\"logical_id\":\"-\",\"root_cause\":\"SITE_DR_FINAL_SEAL_NOT_SEALED\"})\n\ncloudb_ok=False\ntry:\n import pathlib as _pathlib, json as _json, subprocess as _subprocess, hashlib as _hashlib\n _state_root=_pathlib.Path(\"/var/lib/homelab-backup/cloud-quorum/app-skladchik-reports-monitor\")\n _restore_root=_pathlib.Path(\"/var/lib/homelab-backup/app-restore-validation/app-skladchik-reports-monitor\")\n _states=sorted([p for p in _state_root.glob(\"*.json\") if p.is_file() and not p.is_symlink()],key=lambda p:p.stat().st_mtime,reverse=True)\n for _sp in _states:\n try: _st=_json.loads(_sp.read_text(encoding=\"utf-8\"))\n except Exception: continue\n if not (\n _st.get(\"schema\")==\"homelab-cloud-quorum-payload-v1\" and\n _st.get(\"logical_id\")==\"app-skladchik-reports-monitor\" and\n _st.get(\"status\")==\"SEALED\" and _st.get(\"cloud_quorum\")==2 and\n _st.get(\"cloud_a_verified\") is True and _st.get(\"cloud_b_verified\") is True and\n _st.get(\"part_hashes_verified\") is True and _st.get(\"seal_written\") is True and\n _st.get(\"cloud_a_seal_verified\") is True and _st.get(\"cloud_b_seal_verified\") is True and\n _st.get(\"local_payload_present\") is False and _st.get(\"local_cleanup\")==\"OK\"):\n continue\n _gen=_st.get(\"generation\"); _archive_sha=_st.get(\"archive_sha256\")\n _manifest_sha=_st.get(\"parts_manifest_sha256\"); _part_count=_st.get(\"part_count\")\n _archive_size=_st.get(\"archive_size_bytes\"); _remote_b=_st.get(\"remote_b_base\")\n if not (isinstance(_gen,str) and isinstance(_archive_sha,str) and len(_archive_sha)==64 and\n isinstance(_manifest_sha,str) and len(_manifest_sha)==64 and isinstance(_part_count,int) and\n _part_count>0 and isinstance(_archive_size,int) and _archive_size>0 and isinstance(_remote_b,str)):\n continue\n _evp=_restore_root/(_gen+\".json\")\n try: _ev=_json.loads(_evp.read_text(encoding=\"utf-8\"))\n except Exception: continue\n if not (\n _ev.get(\"schema\")==\"homelab-app-restore-validation-v1\" and\n _ev.get(\"logical_id\")==\"app-skladchik-reports-monitor\" and\n _ev.get(\"generation\")==_gen and _ev.get(\"transport_state\")==\"SEALED\" and\n _ev.get(\"restore_source\")==\"Cloud A\" and _ev.get(\"payload_sha256\")==_archive_sha and\n _ev.get(\"payload_sha256_verified\") is True and _ev.get(\"result\")==\"OK\"):\n continue\n _mp=_subprocess.run([\"rclone\",\"cat\",_remote_b.rstrip(\"/\")+\"/PARTS.tsv\"],stdout=_subprocess.PIPE,stderr=_subprocess.PIPE,timeout=60)\n if _mp.returncode!=0 or _hashlib.sha256(_mp.stdout).hexdigest()!=_manifest_sha: continue\n _rows=[]; _valid=True\n try:\n for _line in _mp.stdout.decode(\"utf-8\",\"strict\").splitlines():\n if not _line: continue\n _f=_line.split(\"\\t\")\n if len(_f)!=4: _valid=False; break\n _idx,_name,_size_s,_psha=_f\n if not (_idx.isdigit() and len(_idx)==8 and _size_s.isdigit() and len(_psha)==64):\n _valid=False; break\n _size=int(_size_s)\n _pp=_subprocess.run([\"rclone\",\"cat\",_remote_b.rstrip(\"/\")+\"/payload.parts/\"+_name],stdout=_subprocess.PIPE,stderr=_subprocess.PIPE,timeout=120)\n if _pp.returncode!=0 or len(_pp.stdout)!=_size or _hashlib.sha256(_pp.stdout).hexdigest()!=_psha:\n _valid=False; break\n _rows.append((_size,_pp.stdout))\n except Exception:\n _valid=False\n if not _valid or len(_rows)!=_part_count or sum(x[0] for x in _rows)!=_archive_size: continue\n _payload=b\"\".join(x[1] for x in _rows)\n if _hashlib.sha256(_payload).hexdigest()!=_archive_sha: continue\n cloudb_ok=True\n break\nexcept Exception:\n cloudb_ok=False\nif not cloudb_ok:\n issues.append({\"severity\":\"CRITICAL\",\"code\":\"CLOUD_B_RESTORE_DRILL_BAD\",\"logical_id\":\"app-skladchik-reports-monitor\",\"root_cause\":\"CANONICAL_CLOUD_B_PAYLOAD_OR_RESTORE_EVIDENCE_NOT_OK\"})\n\nsource={\"local_head\":None,\"remote_head\":None,\"pushurl_disabled\":False}\nhrc,ho,_=run([\"git\",\"-C\",WT,\"rev-parse\",\"HEAD\"],10)\nif hrc==0: source[\"local_head\"]=ho.strip()\nfrc,fo,_=run([\"git\",\"-C\",WT,\"config\",\"--get\",\"remote.origin.url\"],10)\nprc,po,_=run([\"git\",\"-C\",WT,\"config\",\"--get\",\"remote.origin.pushurl\"],10)\nsource[\"pushurl_disabled\"]=(prc==0 and po.strip()==\"DISABLED\")\nif frc==0 and fo.strip():\n lrc,lo,_=run([\"git\",\"ls-remote\",fo.strip(),\"refs/heads/\"+BRANCH],30)\n if lrc==0 and lo.strip(): source[\"remote_head\"]=lo.split()[0]\nif source[\"remote_head\"]!=source[\"local_head\"]:\n issues.append({\"severity\":\"MEDIUM\",\"code\":\"SOURCE_OFFHOST_MISSING\",\"logical_id\":\"-\",\"root_cause\":\"CR_BRANCH_SHA_NOT_EXACT\"})\n\nstatus=\"GREEN\" if not issues else \"RED\"\nfor t in targets:\n print(\"TARGET|\"+\"|\".join(f\"{k}={v}\" for k,v in t.items() if v is not None))\nfor i in issues:\n print(\"ISSUE|severity={severity}|code={code}|logical_id={logical_id}|root_cause={root_cause}\".format(**i))\nprint(f\"SUMMARY|AUDIT_STATUS=OK|BACKUP_STATUS={status}|ACTIVE_COUNT={len(active)}|ISSUE_COUNT={len(issues)}|CLOUD_A={'OK' if cloud.get('A',{}).get('readable') else 'BAD'}|CLOUD_B={'OK' if cloud.get('B',{}).get('readable') else 'BAD'}|CLOUD_B_DRILL={'OK' if cloudb_ok else 'BAD'}|DR_PROVEN={'YES' if isinstance(dr,dict) and dr.get('status')=='SEALED' else 'NO'}|SOURCE_OFFHOST={'OK' if source['remote_head']==source['local_head'] else 'PENDING'}\")\nhealth={\"schema\":\"homelab-backup-audit-v3\",\"status\":status,\"generated_at_epoch\":now,\"targets\":targets,\"issues\":issues,\"cloud\":cloud,\"source\":source,\"cloud_b_restore_drill\":cloudb_ok,\"dr_proven\":bool(isinstance(dr,dict) and dr.get(\"status\")==\"SEALED\")}\nif MODE in (\"write-health\",\"scheduled\"):\n for hp in HEALTHS:\n hp.parent.mkdir(parents=True,exist_ok=True)\n tmp=hp.with_name(hp.name+\".tmp\")\n tmp.write_text(json.dumps(health,separators=(\",\",\":\"),sort_keys=True)+\"\\n\",encoding=\"utf-8\")\n os.chmod(tmp,0o644); os.replace(tmp,hp)\nsys.exit(0 if not issues else 1)\n=== BACKUP_AUDIT_EXECSTART_SOURCE_END ===\n=== BACKUP_AUDIT_TIMER_SHOW ===\nNextElapseUSecRealtime=Sun 2026-09-27 21:36:58 MSK\nLastTriggerUSec=Sun 2026-09-27 21:05:58 MSK\nResult=success\nId=homelab-backup-audit.timer\nLoadState=loaded\nActiveState=active\nSubState=waiting\nFragmentPath=/etc/systemd/system/homelab-backup-audit.timer\nDropInPaths=\nUnitFileState=enabled\nBACKUP_AUDIT_TIMER_FRAGMENT_PATH=/etc/systemd/system/homelab-backup-audit.timer\nBACKUP_AUDIT_TIMER_SHA256=987695f83ee993bd4d716b8365308211110ac4c684f0bd9b17dfdb1e523e466a\n=== BACKUP_AUDIT_TIMER_CAT ===\n# /etc/systemd/system/homelab-backup-audit.timer\n[Unit]\nDescription=Run homelab unified backup and DR audit\n\n[Timer]\nOnCalendar=*-*-* *:05,35:00\nRandomizedDelaySec=2min\nPersistent=true\nAccuracySec=1min\nUnit=homelab-backup-audit.service\n\n[Install]\nWantedBy=timers.target\n=== BACKUP_V2_JOURNAL_LAST12H ===\n2026-09-27T16:56:08.780555+03:00 pve01 homelab-backup-v2[3412388]: lxc_adapter.AdapterError: FRESH_HELPER_FAILED\n2026-09-27T16:56:08.785999+03:00 pve01 systemd[1]: homelab-backup-v2.service: Main process exited, code=exited, status=1/FAILURE\n2026-09-27T16:56:08.786073+03:00 pve01 systemd[1]: homelab-backup-v2.service: Failed with result 'exit-code'.\n2026-09-27T16:56:08.786211+03:00 pve01 systemd[1]: Failed to start homelab-backup-v2.service - Homelab Backup V2 manifest-driven scheduler.\n2026-09-27T16:56:08.786299+03:00 pve01 systemd[1]: homelab-backup-v2.service: Consumed 7.475s CPU time, 159M memory peak.\n2026-09-27T17:32:01.150519+03:00 pve01 systemd[1]: Starting homelab-backup-v2.service - Homelab Backup V2 manifest-driven scheduler...\n2026-09-27T17:32:01.367425+03:00 pve01 homelab-backup-v2[3534166]: SELFTEST_REPLACEMENT486=PASS\n2026-09-27T17:32:08.781016+03:00 pve01 homelab-backup-v2[3534166]: SCHEDULE_TARGET=ct110\n2026-09-27T17:32:08.788194+03:00 pve01 homelab-backup-v2[3534166]: Traceback (most recent call last):\n2026-09-27T17:32:08.790489+03:00 pve01 homelab-backup-v2[3534166]: File \"/usr/local/sbin/homelab-backup-v2\", line 26, in <module>\n2026-09-27T17:32:08.790489+03:00 pve01 homelab-backup-v2[3534166]: if __name__=='__main__': raise SystemExit(main())\n2026-09-27T17:32:08.790489+03:00 pve01 homelab-backup-v2[3534166]: ~~~~^^\n2026-09-27T17:32:08.790489+03:00 pve01 homelab-backup-v2[3534166]: File \"/usr/local/sbin/homelab-backup-v2\", line 25, in main\n2026-09-27T17:32:08.790489+03:00 pve01 homelab-backup-v2[3534166]: return int(e.main())\n2026-09-27T17:32:08.790489+03:00 pve01 homelab-backup-v2[3534166]: ~~~~~~^^\n2026-09-27T17:32:08.790489+03:00 pve01 homelab-backup-v2[3534166]: File \"/opt/homelab-backup-v2/releases/backup-v2-overlay-504r1-ca6876fa9c3b/entry504.py\", line 186, in main\n2026-09-27T17:32:08.790489+03:00 pve01 homelab-backup-v2[3534166]: return wrapper.main([sys.argv[0],*argv])\n2026-09-27T17:32:08.790489+03:00 pve01 homelab-backup-v2[3534166]: ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^\n2026-09-27T17:32:08.790489+03:00 pve01 homelab-backup-v2[3534166]: File \"/opt/homelab-backup-v2/releases/backup-v2-accepted-486r1/wrapper.py\", line 94, in main\n2026-09-27T17:32:08.790489+03:00 pve01 homelab-backup-v2[3534166]: if cmd=='scheduled':return _scheduled_locked()\n2026-09-27T17:32:08.790489+03:00 pve01 homelab-backup-v2[3534166]: ~~~~~~~~~~~~~~~~~^^\n2026-09-27T17:32:08.790489+03:00 pve01 homelab-backup-v2[3534166]: File \"/opt/homelab-backup-v2/releases/backup-v2-accepted-486r1/wrapper.py\", line 85, in _scheduled_locked\n2026-09-27T17:32:08.790489+03:00 pve01 homelab-backup-v2[3534166]: try:return legacy.scheduled_run()\n2026-09-27T17:32:08.790489+03:00 pve01 homelab-backup-v2[3534166]: ~~~~~~~~~~~~~~~~~~~~^^\n2026-09-27T17:32:08.790489+03:00 pve01 homelab-backup-v2[3534166]: File \"/opt/homelab-backup-v2/releases/backup-v2-accepted-486r1/legacy_engine.py\", line 960, in scheduled_run\n2026-09-27T17:32:08.790489+03:00 pve01 homelab-backup-v2[3534166]: try: backup_target(t,green_verify=False)\n2026-09-27T17:32:08.790489+03:00 pve01 homelab-backup-v2[3534166]: ~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^\n2026-09-27T17:32:08.790489+03:00 pve01 homelab-backup-v2[3534166]: File \"/opt/homelab-backup-v2/releases/backup-v2-accepted-486r1/wrapper.py\", line 42, in backup_target\n2026-09-27T17:32:08.790489+03:00 pve01 homelab-backup-v2[3534166]: return _legacy_backup_target(t,green_verify)\n2026-09-27T17:32:08.790489+03:00 pve01 homelab-backup-v2[3534166]: File \"/opt/homelab-backup-v2/releases/backup-v2-accepted-486r1/legacy_engine.py\", line 908, in backup_target\n2026-09-27T17:32:08.790489+03:00 pve01 homelab-backup-v2[3534166]: payload,meta,cleanup=capture_target(t,gen,work); meta['generation']=gen\n2026-09-27T17:32:08.790489+03:00 pve01 homelab-backup-v2[3534166]: ~~~~~~~~~~~~~~^^^^^^^^^^^^\n2026-09-27T17:32:08.790489+03:00 pve01 homelab-backup-v2[3534166]: File \"/opt/homelab-backup-v2/releases/backup-v2-accepted-486r1/legacy_engine.py\", line 873, in capture_target\n2026-09-27T17:32:08.790489+03:00 pve01 homelab-backup-v2[3534166]: if typ=='pve_guest': return capture_pve_guest(t,gen,work)\n2026-09-27T17:32:08.790489+03:00 pve01 homelab-backup-v2[3534166]: ~~~~~~~~~~~~~~~~~^^^^^^^^^^^^\n2026-09-27T17:32:08.790489+03:00 pve01 homelab-backup-v2[3534166]: File \"/opt/homelab-backup-v2/releases/backup-v2-overlay-504r1-ca6876fa9c3b/lxc_adapter.py\", line 204, in capture_pve_guest\n2026-09-27T17:32:08.790489+03:00 pve01 homelab-backup-v2[3534166]: p=plan_only(legacy,t,scratch); local=pathlib.Path(work)/'payload.bin'; cap=int(p['job']['archive_cap_bytes'])\n2026-09-27T17:32:08.790489+03:00 pve01 homelab-backup-v2[3534166]: File \"/opt/homelab-backup-v2/releases/backup-v2-overlay-504r1-ca6876fa9c3b/lxc_adapter.py\", line 85, in plan_only\n2026-09-27T17:32:08.790789+03:00 pve01 homelab-backup-v2[3534166]: a=_helper(_live_inputs(legacy,node,vmid,scratch)); b=_helper(_live_inputs(legacy,node,vmid,scratch))\n2026-09-27T17:32:08.790789+03:00 pve01 homelab-backup-v2[3534166]: File \"/opt/homelab-backup-v2/releases/backup-v2-overlay-504r1-ca6876fa9c3b/lxc_adapter.py\", line 69, in _helper\n2026-09-27T17:32:08.790789+03:00 pve01 homelab-backup-v2[3534166]: _need(p.returncode==0 and not p.stderr and 0<len(p.stdout)<=262144,'FRESH_HELPER_FAILED')\n2026-09-27T17:32:08.790789+03:00 pve01 homelab-backup-v2[3534166]: ~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n2026-09-27T17:32:08.790789+03:00 pve01 homelab-backup-v2[3534166]: File \"/opt/homelab-backup-v2/releases/backup-v2-overlay-504r1-ca6876fa9c3b/lxc_adapter.py\", line 16, in _need\n2026-09-27T17:32:08.790789+03:00 pve01 homelab-backup-v2[3534166]: if not ok: raise AdapterError(code)\n2026-09-27T17:32:08.790789+03:00 pve01 homelab-backup-v2[3534166]: ^^^^^^^^^^^^^^^^^^^^^^^^\n2026-09-27T17:32:08.790789+03:00 pve01 homelab-backup-v2[3534166]: lxc_adapter.AdapterError: FRESH_HELPER_FAILED\n2026-09-27T17:32:08.796247+03:00 pve01 systemd[1]: homelab-backup-v2.service: Main process exited, code=exited, status=1/FAILURE\n2026-09-27T17:32:08.796375+03:00 pve01 systemd[1]: homelab-backup-v2.service: Failed with result 'exit-code'.\n2026-09-27T17:32:08.796599+03:00 pve01 systemd[1]: Failed to start homelab-backup-v2.service - Homelab Backup V2 manifest-driven scheduler.\n2026-09-27T17:32:08.796748+03:00 pve01 systemd[1]: homelab-backup-v2.service: Consumed 7.495s CPU time, 158.9M memory peak.\n2026-09-27T18:10:32.219042+03:00 pve01 systemd[1]: Starting homelab-backup-v2.service - Homelab Backup V2 manifest-driven scheduler...\n2026-09-27T18:10:32.428144+03:00 pve01 homelab-backup-v2[3649069]: SELFTEST_REPLACEMENT486=PASS\n2026-09-27T18:10:39.922344+03:00 pve01 homelab-backup-v2[3649069]: SCHEDULE_TARGET=ct110\n2026-09-27T18:10:39.924676+03:00 pve01 homelab-backup-v2[3649069]: Traceback (most recent call last):\n2026-09-27T18:10:39.926992+03:00 pve01 homelab-backup-v2[3649069]: File \"/usr/local/sbin/homelab-backup-v2\", line 26, in <module>\n2026-09-27T18:10:39.926992+03:00 pve01 homelab-backup-v2[3649069]: if __name__=='__main__': raise SystemExit(main())\n2026-09-27T18:10:39.926992+03:00 pve01 homelab-backup-v2[3649069]: ~~~~^^\n2026-09-27T18:10:39.926992+03:00 pve01 homelab-backup-v2[3649069]: File \"/usr/local/sbin/homelab-backup-v2\", line 25, in main\n2026-09-27T18:10:39.926992+03:00 pve01 homelab-backup-v2[3649069]: return int(e.main())\n2026-09-27T18:10:39.926992+03:00 pve01 homelab-backup-v2[3649069]: ~~~~~~^^\n2026-09-27T18:10:39.926992+03:00 pve01 homelab-backup-v2[3649069]: File \"/opt/homelab-backup-v2/releases/backup-v2-overlay-504r1-ca6876fa9c3b/entry504.py\", line 186, in main\n2026-09-27T18:10:39.926992+03:00 pve01 homelab-backup-v2[3649069]: return wrapper.main([sys.argv[0],*argv])\n2026-09-27T18:10:39.926992+03:00 pve01 homelab-backup-v2[3649069]: ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^\n2026-09-27T18:10:39.926992+03:00 pve01 homelab-backup-v2[3649069]: File \"/opt/homelab-backup-v2/releases/backup-v2-accepted-486r1/wrapper.py\", line 94, in main\n2026-09-27T18:10:39.926992+03:00 pve01 homelab-backup-v2[3649069]: if cmd=='scheduled':return _scheduled_locked()\n2026-09-27T18:10:39.926992+03:00 pve01 homelab-backup-v2[3649069]: ~~~~~~~~~~~~~~~~~^^\n2026-09-27T18:10:39.926992+03:00 pve01 homelab-backup-v2[3649069]: File \"/opt/homelab-backup-v2/releases/backup-v2-accepted-486r1/wrapper.py\", line 85, in _scheduled_locked\n2026-09-27T18:10:39.926992+03:00 pve01 homelab-backup-v2[3649069]: try:return legacy.scheduled_run()\n2026-09-27T18:10:39.926992+03:00 pve01 homelab-backup-v2[3649069]: ~~~~~~~~~~~~~~~~~~~~^^\n2026-09-27T18:10:39.926992+03:00 pve01 homelab-backup-v2[3649069]: File \"/opt/homelab-backup-v2/releases/backup-v2-accepted-486r1/legacy_engine.py\", line 960, in scheduled_run\n2026-09-27T18:10:39.926992+03:00 pve01 homelab-backup-v2[3649069]: try: backup_target(t,green_verify=False)\n2026-09-27T18:10:39.926992+03:00 pve01 homelab-backup-v2[3649069]: ~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^\n2026-09-27T18:10:39.926992+03:00 pve01 homelab-backup-v2[3649069]: File \"/opt/homelab-backup-v2/releases/backup-v2-accepted-486r1/wrapper.py\", line 42, in backup_target\n2026-09-27T18:10:39.926992+03:00 pve01 homelab-backup-v2[3649069]: return _legacy_backup_target(t,green_verify)\n2026-09-27T18:10:39.926992+03:00 pve01 homelab-backup-v2[3649069]: File \"/opt/homelab-backup-v2/releases/backup-v2-accepted-486r1/legacy_engine.py\", line 908, in backup_target\n2026-09-27T18:10:39.926992+03:00 pve01 homelab-backup-v2[3649069]: payload,meta,cleanup=capture_target(t,gen,work); meta['generation']=gen\n2026-09-27T18:10:39.926992+03:00 pve01 homelab-backup-v2[3649069]: ~~~~~~~~~~~~~~^^^^^^^^^^^^\n2026-09-27T18:10:39.926992+03:00 pve01 homelab-backup-v2[3649069]: File \"/opt/homelab-backup-v2/releases/backup-v2-accepted-486r1/legacy_engine.py\", line 873, in capture_target\n2026-09-27T18:10:39.926992+03:00 pve01 homelab-backup-v2[3649069]: if typ=='pve_guest': return capture_pve_guest(t,gen,work)\n2026-09-27T18:10:39.926992+03:00 pve01 homelab-backup-v2[3649069]: ~~~~~~~~~~~~~~~~~^^^^^^^^^^^^\n2026-09-27T18:10:39.926992+03:00 pve01 homelab-backup-v2[3649069]: File \"/opt/homelab-backup-v2/releases/backup-v2-overlay-504r1-ca6876fa9c3b/lxc_adapter.py\", line 204, in capture_pve_guest\n2026-09-27T18:10:39.926992+03:00 pve01 homelab-backup-v2[3649069]: p=plan_only(legacy,t,scratch); local=pathlib.Path(work)/'payload.bin'; cap=int(p['job']['archive_cap_bytes'])\n2026-09-27T18:10:39.926992+03:00 pve01 homelab-backup-v2[3649069]: File \"/opt/homelab-backup-v2/releases/backup-v2-overlay-504r1-ca6876fa9c3b/lxc_adapter.py\", line 85, in plan_only\n2026-09-27T18:10:39.927246+03:00 pve01 homelab-backup-v2[3649069]: a=_helper(_live_inputs(legacy,node,vmid,scratch)); b=_helper(_live_inputs(legacy,node,vmid,scratch))\n2026-09-27T18:10:39.927246+03:00 pve01 homelab-backup-v2[3649069]: File \"/opt/homelab-backup-v2/releases/backup-v2-overlay-504r1-ca6876fa9c3b/lxc_adapter.py\", line 69, in _helper\n2026-09-27T18:10:39.927246+03:00 pve01 homelab-backup-v2[3649069]: _need(p.returncode==0 and not p.stderr and 0<len(p.stdout)<=262144,'FRESH_HELPER_FAILED')\n2026-09-27T18:10:39.927246+03:00 pve01 homelab-backup-v2[3649069]: ~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n2026-09-27T18:10:39.927246+03:00 pve01 homelab-backup-v2[3649069]: File \"/opt/homelab-backup-v2/releases/backup-v2-overlay-504r1-ca6876fa9c3b/lxc_adapter.py\", line 16, in _need\n2026-09-27T18:10:39.927246+03:00 pve01 homelab-backup-v2[3649069]: if not ok: raise AdapterError(code)\n2026-09-27T18:10:39.927246+03:00 pve01 homelab-backup-v2[3649069]: ^^^^^^^^^^^^^^^^^^^^^^^^\n2026-09-27T18:10:39.927246+03:00 pve01 homelab-backup-v2[3649069]: lxc_adapter.AdapterError: FRESH_HELPER_FAILED\n2026-09-27T18:10:39.932727+03:00 pve01 systemd[1]: homelab-backup-v2.service: Main process exited, code=exited, status=1/FAILURE\n2026-09-27T18:10:39.932833+03:00 pve01 systemd[1]: homelab-backup-v2.service: Failed with result 'exit-code'.\n2026-09-27T18:10:39.933016+03:00 pve01 systemd[1]: Failed to start homelab-backup-v2.service - Homelab Backup V2 manifest-driven scheduler.\n2026-09-27T18:10:39.933162+03:00 pve01 systemd[1]: homelab-backup-v2.service: Consumed 7.569s CPU time, 158.3M memory peak.\n2026-09-27T18:45:53.216419+03:00 pve01 systemd[1]: Starting homelab-backup-v2.service - Homelab Backup V2 manifest-driven scheduler...\n2026-09-27T18:45:53.422759+03:00 pve01 homelab-backup-v2[3761852]: SELFTEST_REPLACEMENT486=PASS\n2026-09-27T18:46:00.905490+03:00 pve01 homelab-backup-v2[3761852]: SCHEDULE_TARGET=ct110\n2026-09-27T18:46:00.907841+03:00 pve01 homelab-backup-v2[3761852]: Traceback (most recent call last):\n2026-09-27T18:46:00.910101+03:00 pve01 homelab-backup-v2[3761852]: File \"/usr/local/sbin/homelab-backup-v2\", line 26, in <module>\n2026-09-27T18:46:00.910101+03:00 pve01 homelab-backup-v2[3761852]: if __name__=='__main__': raise SystemExit(main())\n2026-09-27T18:46:00.910101+03:00 pve01 homelab-backup-v2[3761852]: ~~~~^^\n2026-09-27T18:46:00.910101+03:00 pve01 homelab-backup-v2[3761852]: File \"/usr/local/sbin/homelab-backup-v2\", line 25, in main\n2026-09-27T18:46:00.910101+03:00 pve01 homelab-backup-v2[3761852]: return int(e.main())\n2026-09-27T18:46:00.910101+03:00 pve01 homelab-backup-v2[3761852]: ~~~~~~^^\n2026-09-27T18:46:00.910101+03:00 pve01 homelab-backup-v2[3761852]: File \"/opt/homelab-backup-v2/releases/backup-v2-overlay-504r1-ca6876fa9c3b/entry504.py\", line 186, in main\n2026-09-27T18:46:00.910101+03:00 pve01 homelab-backup-v2[3761852]: return wrapper.main([sys.argv[0],*argv])\n2026-09-27T18:46:00.910101+03:00 pve01 homelab-backup-v2[3761852]: ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^\n2026-09-27T18:46:00.910101+03:00 pve01 homelab-backup-v2[3761852]: File \"/opt/homelab-backup-v2/releases/backup-v2-accepted-486r1/wrapper.py\", line 94, in main\n2026-09-27T18:46:00.910101+03:00 pve01 homelab-backup-v2[3761852]: if cmd=='scheduled':return _scheduled_locked()\n2026-09-27T18:46:00.910101+03:00 pve01 homelab-backup-v2[3761852]: ~~~~~~~~~~~~~~~~~^^\n2026-09-27T18:46:00.910101+03:00 pve01 homelab-backup-v2[3761852]: File \"/opt/homelab-backup-v2/releases/backup-v2-accepted-486r1/wrapper.py\", line 85, in _scheduled_locked\n2026-09-27T18:46:00.910101+03:00 pve01 homelab-backup-v2[3761852]: try:return legacy.scheduled_run()\n2026-09-27T18:46:00.910101+03:00 pve01 homelab-backup-v2[3761852]: ~~~~~~~~~~~~~~~~~~~~^^\n2026-09-27T18:46:00.910101+03:00 pve01 homelab-backup-v2[3761852]: File \"/opt/homelab-backup-v2/releases/backup-v2-accepted-486r1/legacy_engine.py\", line 960, in scheduled_run\n2026-09-27T18:46:00.910101+03:00 pve01 homelab-backup-v2[3761852]: try: backup_target(t,green_verify=False)\n2026-09-27T18:46:00.910101+03:00 pve01 homelab-backup-v2[3761852]: ~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^\n2026-09-27T18:46:00.910101+03:00 pve01 homelab-backup-v2[3761852]: File \"/opt/homelab-backup-v2/releases/backup-v2-accepted-486r1/wrapper.py\", line 42, in backup_target\n2026-09-27T18:46:00.910101+03:00 pve01 homelab-backup-v2[3761852]: return _legacy_backup_target(t,green_verify)\n2026-09-27T18:46:00.910101+03:00 pve01 homelab-backup-v2[3761852]: File \"/opt/homelab-backup-v2/releases/backup-v2-accepted-486r1/legacy_engine.py\", line 908, in backup_target\n2026-09-27T18:46:00.910101+03:00 pve01 homelab-backup-v2[3761852]: payload,meta,cleanup=capture_target(t,gen,work); meta['generation']=gen\n2026-09-27T18:46:00.910101+03:00 pve01 homelab-backup-v2[3761852]: ~~~~~~~~~~~~~~^^^^^^^^^^^^\n2026-09-27T18:46:00.910101+03:00 pve01 homelab-backup-v2[3761852]: File \"/opt/homelab-backup-v2/releases/backup-v2-accepted-486r1/legacy_engine.py\", line 873, in capture_target\n2026-09-27T18:46:00.910101+03:00 pve01 homelab-backup-v2[3761852]: if typ=='pve_guest': return capture_pve_guest(t,gen,work)\n2026-09-27T18:46:00.910101+03:00 pve01 homelab-backup-v2[3761852]: ~~~~~~~~~~~~~~~~~^^^^^^^^^^^^\n2026-09-27T18:46:00.910101+03:00 pve01 homelab-backup-v2[3761852]: File \"/opt/homelab-backup-v2/releases/backup-v2-overlay-504r1-ca6876fa9c3b/lxc_adapter.py\", line 204, in capture_pve_guest\n2026-09-27T18:46:00.910101+03:00 pve01 homelab-backup-v2[3761852]: p=plan_only(legacy,t,scratch); local=pathlib.Path(work)/'payload.bin'; cap=int(p['job']['archive_cap_bytes'])\n2026-09-27T18:46:00.910101+03:00 pve01 homelab-backup-v2[3761852]: File \"/opt/homelab-backup-v2/releases/backup-v2-overlay-504r1-ca6876fa9c3b/lxc_adapter.py\", line 85, in plan_only\n2026-09-27T18:46:00.910381+03:00 pve01 homelab-backup-v2[3761852]: a=_helper(_live_inputs(legacy,node,vmid,scratch)); b=_helper(_live_inputs(legacy,node,vmid,scratch))\n2026-09-27T18:46:00.910381+03:00 pve01 homelab-backup-v2[3761852]: File \"/opt/homelab-backup-v2/releases/backup-v2-overlay-504r1-ca6876fa9c3b/lxc_adapter.py\", line 69, in _helper\n2026-09-27T18:46:00.910381+03:00 pve01 homelab-backup-v2[3761852]: _need(p.returncode==0 and not p.stderr and 0<len(p.stdout)<=262144,'FRESH_HELPER_FAILED')\n2026-09-27T18:46:00.910381+03:00 pve01 homelab-backup-v2[3761852]: ~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n2026-09-27T18:46:00.910381+03:00 pve01 homelab-backup-v2[3761852]: File \"/opt/homelab-backup-v2/releases/backup-v2-overlay-504r1-ca6876fa9c3b/lxc_adapter.py\", line 16, in _need\n2026-09-27T18:46:00.910381+03:00 pve01 homelab-backup-v2[3761852]: if not ok: raise AdapterError(code)\n2026-09-27T18:46:00.910381+03:00 pve01 homelab-backup-v2[3761852]: ^^^^^^^^^^^^^^^^^^^^^^^^\n2026-09-27T18:46:00.910381+03:00 pve01 homelab-backup-v2[3761852]: lxc_adapter.AdapterError: FRESH_HELPER_FAILED\n2026-09-27T18:46:00.915984+03:00 pve01 systemd[1]: homelab-backup-v2.service: Main process exited, code=exited, status=1/FAILURE\n2026-09-27T18:46:00.916074+03:00 pve01 systemd[1]: homelab-backup-v2.service: Failed with result 'exit-code'.\n2026-09-27T18:46:00.916269+03:00 pve01 systemd[1]: Failed to start homelab-backup-v2.service - Homelab Backup V2 manifest-driven scheduler.\n2026-09-27T18:46:00.916375+03:00 pve01 systemd[1]: homelab-backup-v2.service: Consumed 7.545s CPU time, 158M memory peak.\n2026-09-27T19:23:42.217808+03:00 pve01 systemd[1]: Starting homelab-backup-v2.service - Homelab Backup V2 manifest-driven scheduler...\n2026-09-27T19:23:42.430410+03:00 pve01 homelab-backup-v2[3884916]: SELFTEST_REPLACEMENT486=PASS\n2026-09-27T19:23:49.946116+03:00 pve01 homelab-backup-v2[3884916]: SCHEDULE_TARGET=ct110\n2026-09-27T19:23:49.948389+03:00 pve01 homelab-backup-v2[3884916]: Traceback (most recent call last):\n2026-09-27T19:23:49.950794+03:00 pve01 homelab-backup-v2[3884916]: File \"/usr/local/sbin/homelab-backup-v2\", line 26, in <module>\n2026-09-27T19:23:49.950794+03:00 pve01 homelab-backup-v2[3884916]: if __name__=='__main__': raise SystemExit(main())\n2026-09-27T19:23:49.950794+03:00 pve01 homelab-backup-v2[3884916]: ~~~~^^\n2026-09-27T19:23:49.950794+03:00 pve01 homelab-backup-v2[3884916]: File \"/usr/local/sbin/homelab-backup-v2\", line 25, in main\n2026-09-27T19:23:49.950794+03:00 pve01 homelab-backup-v2[3884916]: return int(e.main())\n2026-09-27T19:23:49.950794+03:00 pve01 homelab-backup-v2[3884916]: ~~~~~~^^\n2026-09-27T19:23:49.950794+03:00 pve01 homelab-backup-v2[3884916]: File \"/opt/homelab-backup-v2/releases/backup-v2-overlay-504r1-ca6876fa9c3b/entry504.py\", line 186, in main\n2026-09-27T19:23:49.950794+03:00 pve01 homelab-backup-v2[3884916]: return wrapper.main([sys.argv[0],*argv])\n2026-09-27T19:23:49.950794+03:00 pve01 homelab-backup-v2[3884916]: ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^\n2026-09-27T19:23:49.950794+03:00 pve01 homelab-backup-v2[3884916]: File \"/opt/homelab-backup-v2/releases/backup-v2-accepted-486r1/wrapper.py\", line 94, in main\n2026-09-27T19:23:49.950794+03:00 pve01 homelab-backup-v2[3884916]: if cmd=='scheduled':return _scheduled_locked()\n2026-09-27T19:23:49.950794+03:00 pve01 homelab-backup-v2[3884916]: ~~~~~~~~~~~~~~~~~^^\n2026-09-27T19:23:49.950794+03:00 pve01 homelab-backup-v2[3884916]: File \"/opt/homelab-backup-v2/releases/backup-v2-accepted-486r1/wrapper.py\", line 85, in _scheduled_locked\n2026-09-27T19:23:49.950794+03:00 pve01 homelab-backup-v2[3884916]: try:return legacy.scheduled_run()\n2026-09-27T19:23:49.950794+03:00 pve01 homelab-backup-v2[3884916]: ~~~~~~~~~~~~~~~~~~~~^^\n2026-09-27T19:23:49.950794+03:00 pve01 homelab-backup-v2[3884916]: File \"/opt/homelab-backup-v2/releases/backup-v2-accepted-486r1/legacy_engine.py\", line 960, in scheduled_run\n2026-09-27T19:23:49.950794+03:00 pve01 homelab-backup-v2[3884916]: try: backup_target(t,green_verify=False)\n2026-09-27T19:23:49.950794+03:00 pve01 homelab-backup-v2[3884916]: ~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^\n2026-09-27T19:23:49.950794+03:00 pve01 homelab-backup-v2[3884916]: File \"/opt/homelab-backup-v2/releases/backup-v2-accepted-486r1/wrapper.py\", line 42, in backup_target\n2026-09-27T19:23:49.950794+03:00 pve01 homelab-backup-v2[3884916]: return _legacy_backup_target(t,green_verify)\n2026-09-27T19:23:49.950794+03:00 pve01 homelab-backup-v2[3884916]: File \"/opt/homelab-backup-v2/releases/backup-v2-accepted-486r1/legacy_engine.py\", line 908, in backup_target\n2026-09-27T19:23:49.950794+03:00 pve01 homelab-backup-v2[3884916]: payload,meta,cleanup=capture_target(t,gen,work); meta['generation']=gen\n2026-09-27T19:23:49.950794+03:00 pve01 homelab-backup-v2[3884916]: ~~~~~~~~~~~~~~^^^^^^^^^^^^\n2026-09-27T19:23:49.950794+03:00 pve01 homelab-backup-v2[3884916]: File \"/opt/homelab-backup-v2/releases/backup-v2-accepted-486r1/legacy_engine.py\", line 873, in capture_target\n2026-09-27T19:23:49.950794+03:00 pve01 homelab-backup-v2[3884916]: if typ=='pve_guest': return capture_pve_guest(t,gen,work)\n2026-09-27T19:23:49.950794+03:00 pve01 homelab-backup-v2[3884916]: ~~~~~~~~~~~~~~~~~^^^^^^^^^^^^\n2026-09-27T19:23:49.950794+03:00 pve01 homelab-backup-v2[3884916]: File \"/opt/homelab-backup-v2/releases/backup-v2-overlay-504r1-ca6876fa9c3b/lxc_adapter.py\", line 204, in capture_pve_guest\n2026-09-27T19:23:49.950794+03:00 pve01 homelab-backup-v2[3884916]: p=plan_only(legacy,t,scratch); local=pathlib.Path(work)/'payload.bin'; cap=int(p['job']['archive_cap_bytes'])\n2026-09-27T19:23:49.950794+03:00 pve01 homelab-backup-v2[3884916]: File \"/opt/homelab-backup-v2/releases/backup-v2-overlay-504r1-ca6876fa9c3b/lxc_adapter.py\", line 85, in plan_only\n2026-09-27T19:23:49.951058+03:00 pve01 homelab-backup-v2[3884916]: a=_helper(_live_inputs(legacy,node,vmid,scratch)); b=_helper(_live_inputs(legacy,node,vmid,scratch))\n2026-09-27T19:23:49.951058+03:00 pve01 homelab-backup-v2[3884916]: File \"/opt/homelab-backup-v2/releases/backup-v2-overlay-504r1-ca6876fa9c3b/lxc_adapter.py\", line 69, in _helper\n2026-09-27T19:23:49.951058+03:00 pve01 homelab-backup-v2[3884916]: _need(p.returncode==0 and not p.stderr and 0<len(p.stdout)<=262144,'FRESH_HELPER_FAILED')\n2026-09-27T19:23:49.951058+03:00 pve01 homelab-backup-v2[3884916]: ~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n2026-09-27T19:23:49.951058+03:00 pve01 homelab-backup-v2[3884916]: File \"/opt/homelab-backup-v2/releases/backup-v2-overlay-504r1-ca6876fa9c3b/lxc_adapter.py\", line 16, in _need\n2026-09-27T19:23:49.951058+03:00 pve01 homelab-backup-v2[3884916]: if not ok: raise AdapterError(code)\n2026-09-27T19:23:49.951058+03:00 pve01 homelab-backup-v2[3884916]: ^^^^^^^^^^^^^^^^^^^^^^^^\n2026-09-27T19:23:49.951058+03:00 pve01 homelab-backup-v2[3884916]: lxc_adapter.AdapterError: FRESH_HELPER_FAILED\n2026-09-27T19:23:49.956363+03:00 pve01 systemd[1]: homelab-backup-v2.service: Main process exited, code=exited, status=1/FAILURE\n2026-09-27T19:23:49.956493+03:00 pve01 systemd[1]: homelab-backup-v2.service: Failed with result 'exit-code'.\n2026-09-27T19:23:49.956756+03:00 pve01 systemd[1]: Failed to start homelab-backup-v2.service - Homelab Backup V2 manifest-driven scheduler.\n2026-09-27T19:23:49.956958+03:00 pve01 systemd[1]: homelab-backup-v2.service: Consumed 7.609s CPU time, 158.3M memory peak.\n2026-09-27T19:54:51.296351+03:00 pve01 systemd[1]: Starting homelab-backup-v2.service - Homelab Backup V2 manifest-driven scheduler...\n2026-09-27T19:54:51.506093+03:00 pve01 homelab-backup-v2[3986164]: SELFTEST_REPLACEMENT486=PASS\n2026-09-27T19:54:58.948362+03:00 pve01 homelab-backup-v2[3986164]: SCHEDULE_TARGET=ct110\n2026-09-27T19:54:58.950867+03:00 pve01 homelab-backup-v2[3986164]: Traceback (most recent call last):\n2026-09-27T19:54:58.953354+03:00 pve01 homelab-backup-v2[3986164]: File \"/usr/local/sbin/homelab-backup-v2\", line 26, in <module>\n2026-09-27T19:54:58.953354+03:00 pve01 homelab-backup-v2[3986164]: if __name__=='__main__': raise SystemExit(main())\n2026-09-27T19:54:58.953354+03:00 pve01 homelab-backup-v2[3986164]: ~~~~^^\n2026-09-27T19:54:58.953354+03:00 pve01 homelab-backup-v2[3986164]: File \"/usr/local/sbin/homelab-backup-v2\", line 25, in main\n2026-09-27T19:54:58.953354+03:00 pve01 homelab-backup-v2[3986164]: return int(e.main())\n2026-09-27T19:54:58.953354+03:00 pve01 homelab-backup-v2[3986164]: ~~~~~~^^\n2026-09-27T19:54:58.953354+03:00 pve01 homelab-backup-v2[3986164]: File \"/opt/homelab-backup-v2/releases/backup-v2-overlay-504r1-ca6876fa9c3b/entry504.py\", line 186, in main\n2026-09-27T19:54:58.953354+03:00 pve01 homelab-backup-v2[3986164]: return wrapper.main([sys.argv[0],*argv])\n2026-09-27T19:54:58.953354+03:00 pve01 homelab-backup-v2[3986164]: ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^\n2026-09-27T19:54:58.953354+03:00 pve01 homelab-backup-v2[3986164]: File \"/opt/homelab-backup-v2/releases/backup-v2-accepted-486r1/wrapper.py\", line 94, in main\n2026-09-27T19:54:58.953354+03:00 pve01 homelab-backup-v2[3986164]: if cmd=='scheduled':return _scheduled_locked()\n2026-09-27T19:54:58.953354+03:00 pve01 homelab-backup-v2[3986164]: ~~~~~~~~~~~~~~~~~^^\n2026-09-27T19:54:58.953354+03:00 pve01 homelab-backup-v2[3986164]: File \"/opt/homelab-backup-v2/releases/backup-v2-accepted-486r1/wrapper.py\", line 85, in _scheduled_locked\n2026-09-27T19:54:58.953354+03:00 pve01 homelab-backup-v2[3986164]: try:return legacy.scheduled_run()\n2026-09-27T19:54:58.953354+03:00 pve01 homelab-backup-v2[3986164]: ~~~~~~~~~~~~~~~~~~~~^^\n2026-09-27T19:54:58.953354+03:00 pve01 homelab-backup-v2[3986164]: File \"/opt/homelab-backup-v2/releases/backup-v2-accepted-486r1/legacy_engine.py\", line 960, in scheduled_run\n2026-09-27T19:54:58.953354+03:00 pve01 homelab-backup-v2[3986164]: try: backup_target(t,green_verify=False)\n2026-09-27T19:54:58.953354+03:00 pve01 homelab-backup-v2[3986164]: ~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^\n2026-09-27T19:54:58.953354+03:00 pve01 homelab-backup-v2[3986164]: File \"/opt/homelab-backup-v2/releases/backup-v2-accepted-486r1/wrapper.py\", line 42, in backup_target\n2026-09-27T19:54:58.953354+03:00 pve01 homelab-backup-v2[3986164]: return _legacy_backup_target(t,green_verify)\n2026-09-27T19:54:58.953354+03:00 pve01 homelab-backup-v2[3986164]: File \"/opt/homelab-backup-v2/releases/backup-v2-accepted-486r1/legacy_engine.py\", line 908, in backup_target\n2026-09-27T19:54:58.953354+03:00 pve01 homelab-backup-v2[3986164]: payload,meta,cleanup=capture_target(t,gen,work); meta['generation']=gen\n2026-09-27T19:54:58.953354+03:00 pve01 homelab-backup-v2[3986164]: ~~~~~~~~~~~~~~^^^^^^^^^^^^\n2026-09-27T19:54:58.953354+03:00 pve01 homelab-backup-v2[3986164]: File \"/opt/homelab-backup-v2/releases/backup-v2-accepted-486r1/legacy_engine.py\", line 873, in capture_target\n2026-09-27T19:54:58.953354+03:00 pve01 homelab-backup-v2[3986164]: if typ=='pve_guest': return capture_pve_guest(t,gen,work)\n2026-09-27T19:54:58.953354+03:00 pve01 homelab-backup-v2[3986164]: ~~~~~~~~~~~~~~~~~^^^^^^^^^^^^\n2026-09-27T19:54:58.953354+03:00 pve01 homelab-backup-v2[3986164]: File \"/opt/homelab-backup-v2/releases/backup-v2-overlay-504r1-ca6876fa9c3b/lxc_adapter.py\", line 204, in capture_pve_guest\n2026-09-27T19:54:58.953354+03:00 pve01 homelab-backup-v2[3986164]: p=plan_only(legacy,t,scratch); local=pathlib.Path(work)/'payload.bin'; cap=int(p['job']['archive_cap_bytes'])\n2026-09-27T19:54:58.953354+03:00 pve01 homelab-backup-v2[3986164]: File \"/opt/homelab-backup-v2/releases/backup-v2-overlay-504r1-ca6876fa9c3b/lxc_adapter.py\", line 85, in plan_only\n2026-09-27T19:54:58.953685+03:00 pve01 homelab-backup-v2[3986164]: a=_helper(_live_inputs(legacy,node,vmid,scratch)); b=_helper(_live_inputs(legacy,node,vmid,scratch))\n2026-09-27T19:54:58.953685+03:00 pve01 homelab-backup-v2[3986164]: File \"/opt/homelab-backup-v2/releases/backup-v2-overlay-504r1-ca6876fa9c3b/lxc_adapter.py\", line 69, in _helper\n2026-09-27T19:54:58.953685+03:00 pve01 homelab-backup-v2[3986164]: _need(p.returncode==0 and not p.stderr and 0<len(p.stdout)<=262144,'FRESH_HELPER_FAILED')\n2026-09-27T19:54:58.953685+03:00 pve01 homelab-backup-v2[3986164]: ~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n2026-09-27T19:54:58.953685+03:00 pve01 homelab-backup-v2[3986164]: File \"/opt/homelab-backup-v2/releases/backup-v2-overlay-504r1-ca6876fa9c3b/lxc_adapter.py\", line 16, in _need\n2026-09-27T19:54:58.953685+03:00 pve01 homelab-backup-v2[3986164]: if not ok: raise AdapterError(code)\n2026-09-27T19:54:58.953685+03:00 pve01 homelab-backup-v2[3986164]: ^^^^^^^^^^^^^^^^^^^^^^^^\n2026-09-27T19:54:58.953685+03:00 pve01 homelab-backup-v2[3986164]: lxc_adapter.AdapterError: FRESH_HELPER_FAILED\n2026-09-27T19:54:58.959423+03:00 pve01 systemd[1]: homelab-backup-v2.service: Main process exited, code=exited, status=1/FAILURE\n2026-09-27T19:54:58.959554+03:00 pve01 systemd[1]: homelab-backup-v2.service: Failed with result 'exit-code'.\n2026-09-27T19:54:58.959787+03:00 pve01 systemd[1]: Failed to start homelab-backup-v2.service - Homelab Backup V2 manifest-driven scheduler.\n2026-09-27T19:54:58.959933+03:00 pve01 systemd[1]: homelab-backup-v2.service: Consumed 7.562s CPU time, 158.8M memory peak.\n2026-09-27T20:34:07.719648+03:00 pve01 systemd[1]: Starting homelab-backup-v2.service - Homelab Backup V2 manifest-driven scheduler...\n2026-09-27T20:34:07.927815+03:00 pve01 homelab-backup-v2[4110155]: SELFTEST_REPLACEMENT486=PASS\n2026-09-27T20:34:15.120080+03:00 pve01 homelab-backup-v2[4110155]: SCHEDULE_TARGET=ct110\n2026-09-27T20:34:15.126647+03:00 pve01 homelab-backup-v2[4110155]: Traceback (most recent call last):\n2026-09-27T20:34:15.128859+03:00 pve01 homelab-backup-v2[4110155]: File \"/usr/local/sbin/homelab-backup-v2\", line 26, in <module>\n2026-09-27T20:34:15.128859+03:00 pve01 homelab-backup-v2[4110155]: if __name__=='__main__': raise SystemExit(main())\n2026-09-27T20:34:15.128859+03:00 pve01 homelab-backup-v2[4110155]: ~~~~^^\n2026-09-27T20:34:15.128859+03:00 pve01 homelab-backup-v2[4110155]: File \"/usr/local/sbin/homelab-backup-v2\", line 25, in main\n2026-09-27T20:34:15.128859+03:00 pve01 homelab-backup-v2[4110155]: return int(e.main())\n2026-09-27T20:34:15.128859+03:00 pve01 homelab-backup-v2[4110155]: ~~~~~~^^\n2026-09-27T20:34:15.128859+03:00 pve01 homelab-backup-v2[4110155]: File \"/opt/homelab-backup-v2/releases/backup-v2-overlay-504r1-ca6876fa9c3b/entry504.py\", line 186, in main\n2026-09-27T20:34:15.128859+03:00 pve01 homelab-backup-v2[4110155]: return wrapper.main([sys.argv[0],*argv])\n2026-09-27T20:34:15.128859+03:00 pve01 homelab-backup-v2[4110155]: ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^\n2026-09-27T20:34:15.128859+03:00 pve01 homelab-backup-v2[4110155]: File \"/opt/homelab-backup-v2/releases/backup-v2-accepted-486r1/wrapper.py\", line 94, in main\n2026-09-27T20:34:15.128859+03:00 pve01 homelab-backup-v2[4110155]: if cmd=='scheduled':return _scheduled_locked()\n2026-09-27T20:34:15.128859+03:00 pve01 homelab-backup-v2[4110155]: ~~~~~~~~~~~~~~~~~^^\n2026-09-27T20:34:15.128859+03:00 pve01 homelab-backup-v2[4110155]: File \"/opt/homelab-backup-v2/releases/backup-v2-accepted-486r1/wrapper.py\", line 85, in _scheduled_locked\n2026-09-27T20:34:15.128859+03:00 pve01 homelab-backup-v2[4110155]: try:return legacy.scheduled_run()\n2026-09-27T20:34:15.128859+03:00 pve01 homelab-backup-v2[4110155]: ~~~~~~~~~~~~~~~~~~~~^^\n2026-09-27T20:34:15.128859+03:00 pve01 homelab-backup-v2[4110155]: File \"/opt/homelab-backup-v2/releases/backup-v2-accepted-486r1/legacy_engine.py\", line 960, in scheduled_run\n2026-09-27T20:34:15.128859+03:00 pve01 homelab-backup-v2[4110155]: try: backup_target(t,green_verify=False)\n2026-09-27T20:34:15.128859+03:00 pve01 homelab-backup-v2[4110155]: ~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^\n2026-09-27T20:34:15.128859+03:00 pve01 homelab-backup-v2[4110155]: File \"/opt/homelab-backup-v2/releases/backup-v2-accepted-486r1/wrapper.py\", line 42, in backup_target\n2026-09-27T20:34:15.128859+03:00 pve01 homelab-backup-v2[4110155]: return _legacy_backup_target(t,green_verify)\n2026-09-27T20:34:15.128859+03:00 pve01 homelab-backup-v2[4110155]: File \"/opt/homelab-backup-v2/releases/backup-v2-accepted-486r1/legacy_engine.py\", line 908, in backup_target\n2026-09-27T20:34:15.128859+03:00 pve01 homelab-backup-v2[4110155]: payload,meta,cleanup=capture_target(t,gen,work); meta['generation']=gen\n2026-09-27T20:34:15.128859+03:00 pve01 homelab-backup-v2[4110155]: ~~~~~~~~~~~~~~^^^^^^^^^^^^\n2026-09-27T20:34:15.128859+03:00 pve01 homelab-backup-v2[4110155]: File \"/opt/homelab-backup-v2/releases/backup-v2-accepted-486r1/legacy_engine.py\", line 873, in capture_target\n2026-09-27T20:34:15.128859+03:00 pve01 homelab-backup-v2[4110155]: if typ=='pve_guest': return capture_pve_guest(t,gen,work)\n2026-09-27T20:34:15.128859+03:00 pve01 homelab-backup-v2[4110155]: ~~~~~~~~~~~~~~~~~^^^^^^^^^^^^\n2026-09-27T20:34:15.128859+03:00 pve01 homelab-backup-v2[4110155]: File \"/opt/homelab-backup-v2/releases/backup-v2-overlay-504r1-ca6876fa9c3b/lxc_adapter.py\", line 204, in capture_pve_guest\n2026-09-27T20:34:15.128859+03:00 pve01 homelab-backup-v2[4110155]: p=plan_only(legacy,t,scratch); local=pathlib.Path(work)/'payload.bin'; cap=int(p['job']['archive_cap_bytes'])\n2026-09-27T20:34:15.128859+03:00 pve01 homelab-backup-v2[4110155]: File \"/opt/homelab-backup-v2/releases/backup-v2-overlay-504r1-ca6876fa9c3b/lxc_adapter.py\", line 85, in plan_only\n2026-09-27T20:34:15.129121+03:00 pve01 homelab-backup-v2[4110155]: a=_helper(_live_inputs(legacy,node,vmid,scratch)); b=_helper(_live_inputs(legacy,node,vmid,scratch))\n2026-09-27T20:34:15.129121+03:00 pve01 homelab-backup-v2[4110155]: File \"/opt/homelab-backup-v2/releases/backup-v2-overlay-504r1-ca6876fa9c3b/lxc_adapter.py\", line 69, in _helper\n2026-09-27T20:34:15.129121+03:00 pve01 homelab-backup-v2[4110155]: _need(p.returncode==0 and not p.stderr and 0<len(p.stdout)<=262144,'FRESH_HELPER_FAILED')\n2026-09-27T20:34:15.129121+03:00 pve01 homelab-backup-v2[4110155]: ~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n2026-09-27T20:34:15.129121+03:00 pve01 homelab-backup-v2[4110155]: File \"/opt/homelab-backup-v2/releases/backup-v2-overlay-504r1-ca6876fa9c3b/lxc_adapter.py\", line 16, in _need\n2026-09-27T20:34:15.129121+03:00 pve01 homelab-backup-v2[4110155]: if not ok: raise AdapterError(code)\n2026-09-27T20:34:15.129121+03:00 pve01 homelab-backup-v2[4110155]: ^^^^^^^^^^^^^^^^^^^^^^^^\n2026-09-27T20:34:15.129121+03:00 pve01 homelab-backup-v2[4110155]: lxc_adapter.AdapterError: FRESH_HELPER_FAILED\n2026-09-27T20:34:15.134576+03:00 pve01 systemd[1]: homelab-backup-v2.service: Main process exited, code=exited, status=1/FAILURE\n2026-09-27T20:34:15.134707+03:00 pve01 systemd[1]: homelab-backup-v2.service: Failed with result 'exit-code'.\n2026-09-27T20:34:15.134976+03:00 pve01 systemd[1]: Failed to start homelab-backup-v2.service - Homelab Backup V2 manifest-driven scheduler.\n2026-09-27T20:34:15.135160+03:00 pve01 systemd[1]: homelab-backup-v2.service: Consumed 7.264s CPU time, 158.1M memory peak.\n2026-09-27T21:08:52.217797+03:00 pve01 systemd[1]: Starting homelab-backup-v2.service - Homelab Backup V2 manifest-driven scheduler...\n2026-09-27T21:08:52.428399+03:00 pve01 homelab-backup-v2[19346]: SELFTEST_REPLACEMENT486=PASS\n2026-09-27T21:08:59.769061+03:00 pve01 homelab-backup-v2[19346]: SCHEDULE_TARGET=ct110\n2026-09-27T21:08:59.771818+03:00 pve01 homelab-backup-v2[19346]: Traceback (most recent call last):\n2026-09-27T21:08:59.774470+03:00 pve01 homelab-backup-v2[19346]: File \"/usr/local/sbin/homelab-backup-v2\", line 26, in <module>\n2026-09-27T21:08:59.774470+03:00 pve01 homelab-backup-v2[19346]: if __name__=='__main__': raise SystemExit(main())\n2026-09-27T21:08:59.774470+03:00 pve01 homelab-backup-v2[19346]: ~~~~^^\n2026-09-27T21:08:59.774470+03:00 pve01 homelab-backup-v2[19346]: File \"/usr/local/sbin/homelab-backup-v2\", line 25, in main\n2026-09-27T21:08:59.774470+03:00 pve01 homelab-backup-v2[19346]: return int(e.main())\n2026-09-27T21:08:59.774470+03:00 pve01 homelab-backup-v2[19346]: ~~~~~~^^\n2026-09-27T21:08:59.774470+03:00 pve01 homelab-backup-v2[19346]: File \"/opt/homelab-backup-v2/releases/backup-v2-overlay-504r1-ca6876fa9c3b/entry504.py\", line 186, in main\n2026-09-27T21:08:59.774470+03:00 pve01 homelab-backup-v2[19346]: return wrapper.main([sys.argv[0],*argv])\n2026-09-27T21:08:59.774470+03:00 pve01 homelab-backup-v2[19346]: ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^\n2026-09-27T21:08:59.774470+03:00 pve01 homelab-backup-v2[19346]: File \"/opt/homelab-backup-v2/releases/backup-v2-accepted-486r1/wrapper.py\", line 94, in main\n2026-09-27T21:08:59.774470+03:00 pve01 homelab-backup-v2[19346]: if cmd=='scheduled':return _scheduled_locked()\n2026-09-27T21:08:59.774470+03:00 pve01 homelab-backup-v2[19346]: ~~~~~~~~~~~~~~~~~^^\n2026-09-27T21:08:59.774470+03:00 pve01 homelab-backup-v2[19346]: File \"/opt/homelab-backup-v2/releases/backup-v2-accepted-486r1/wrapper.py\", line 85, in _scheduled_locked\n2026-09-27T21:08:59.774470+03:00 pve01 homelab-backup-v2[19346]: try:return legacy.scheduled_run()\n2026-09-27T21:08:59.774470+03:00 pve01 homelab-backup-v2[19346]: ~~~~~~~~~~~~~~~~~~~~^^\n2026-09-27T21:08:59.774470+03:00 pve01 homelab-backup-v2[19346]: File \"/opt/homelab-backup-v2/releases/backup-v2-accepted-486r1/legacy_engine.py\", line 960, in scheduled_run\n2026-09-27T21:08:59.774470+03:00 pve01 homelab-backup-v2[19346]: try: backup_target(t,green_verify=False)\n2026-09-27T21:08:59.774470+03:00 pve01 homelab-backup-v2[19346]: ~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^\n2026-09-27T21:08:59.774470+03:00 pve01 homelab-backup-v2[19346]: File \"/opt/homelab-backup-v2/releases/backup-v2-accepted-486r1/wrapper.py\", line 42, in backup_target\n2026-09-27T21:08:59.774470+03:00 pve01 homelab-backup-v2[19346]: return _legacy_backup_target(t,green_verify)\n2026-09-27T21:08:59.774470+03:00 pve01 homelab-backup-v2[19346]: File \"/opt/homelab-backup-v2/releases/backup-v2-accepted-486r1/legacy_engine.py\", line 908, in backup_target\n2026-09-27T21:08:59.774470+03:00 pve01 homelab-backup-v2[19346]: payload,meta,cleanup=capture_target(t,gen,work); meta['generation']=gen\n2026-09-27T21:08:59.774470+03:00 pve01 homelab-backup-v2[19346]: ~~~~~~~~~~~~~~^^^^^^^^^^^^\n2026-09-27T21:08:59.774470+03:00 pve01 homelab-backup-v2[19346]: File \"/opt/homelab-backup-v2/releases/backup-v2-accepted-486r1/legacy_engine.py\", line 873, in capture_target\n2026-09-27T21:08:59.774470+03:00 pve01 homelab-backup-v2[19346]: if typ=='pve_guest': return capture_pve_guest(t,gen,work)\n2026-09-27T21:08:59.774470+03:00 pve01 homelab-backup-v2[19346]: ~~~~~~~~~~~~~~~~~^^^^^^^^^^^^\n2026-09-27T21:08:59.774878+03:00 pve01 homelab-backup-v2[19346]: File \"/opt/homelab-backup-v2/releases/backup-v2-overlay-504r1-ca6876fa9c3b/lxc_adapter.py\", line 204, in capture_pve_guest\n2026-09-27T21:08:59.774878+03:00 pve01 homelab-backup-v2[19346]: p=plan_only(legacy,t,scratch); local=pathlib.Path(work)/'payload.bin'; cap=int(p['job']['archive_cap_bytes'])\n2026-09-27T21:08:59.774878+03:00 pve01 homelab-backup-v2[19346]: File \"/opt/homelab-backup-v2/releases/backup-v2-overlay-504r1-ca6876fa9c3b/lxc_adapter.py\", line 85, in plan_only\n2026-09-27T21:08:59.774878+03:00 pve01 homelab-backup-v2[19346]: a=_helper(_live_inputs(legacy,node,vmid,scratch)); b=_helper(_live_inputs(legacy,node,vmid,scratch))\n2026-09-27T21:08:59.774878+03:00 pve01 homelab-backup-v2[19346]: File \"/opt/homelab-backup-v2/releases/backup-v2-overlay-504r1-ca6876fa9c3b/lxc_adapter.py\", line 69, in _helper\n2026-09-27T21:08:59.774878+03:00 pve01 homelab-backup-v2[19346]: _need(p.returncode==0 and not p.stderr and 0<len(p.stdout)<=262144,'FRESH_HELPER_FAILED')\n2026-09-27T21:08:59.774878+03:00 pve01 homelab-backup-v2[19346]: ~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n2026-09-27T21:08:59.774878+03:00 pve01 homelab-backup-v2[19346]: File \"/opt/homelab-backup-v2/releases/backup-v2-overlay-504r1-ca6876fa9c3b/lxc_adapter.py\", line 16, in _need\n2026-09-27T21:08:59.774878+03:00 pve01 homelab-backup-v2[19346]: if not ok: raise AdapterError(code)\n2026-09-27T21:08:59.774878+03:00 pve01 homelab-backup-v2[19346]: ^^^^^^^^^^^^^^^^^^^^^^^^\n2026-09-27T21:08:59.774878+03:00 pve01 homelab-backup-v2[19346]: lxc_adapter.AdapterError: FRESH_HELPER_FAILED\n2026-09-27T21:08:59.781673+03:00 pve01 systemd[1]: homelab-backup-v2.service: Main process exited, code=exited, status=1/FAILURE\n2026-09-27T21:08:59.781935+03:00 pve01 systemd[1]: homelab-backup-v2.service: Failed with result 'exit-code'.\n2026-09-27T21:08:59.782142+03:00 pve01 systemd[1]: Failed to start homelab-backup-v2.service - Homelab Backup V2 manifest-driven scheduler.\n2026-09-27T21:08:59.782292+03:00 pve01 systemd[1]: homelab-backup-v2.service: Consumed 7.416s CPU time, 158.7M memory peak.\n=== BACKUP_AUDIT_JOURNAL_LAST12H ===\n2026-09-27T16:36:15.498349+03:00 pve01 homelab-backup-audit[3360337]: ISSUE|severity=HIGH|code=RPO_BREACH|logical_id=vm112|root_cause=NO_FRESH_V2_OR_SEALED_QUORUM\n2026-09-27T16:36:15.498349+03:00 pve01 homelab-backup-audit[3360337]: ISSUE|severity=HIGH|code=RPO_BREACH|logical_id=vm113|root_cause=NO_FRESH_V2_OR_SEALED_QUORUM\n2026-09-27T16:36:15.498349+03:00 pve01 homelab-backup-audit[3360337]: ISSUE|severity=HIGH|code=RPO_BREACH|logical_id=vm130|root_cause=NO_FRESH_V2_OR_SEALED_QUORUM\n2026-09-27T16:36:15.498349+03:00 pve01 homelab-backup-audit[3360337]: ISSUE|severity=HIGH|code=RPO_BREACH|logical_id=vm150|root_cause=NO_FRESH_V2_OR_SEALED_QUORUM\n2026-09-27T16:36:15.498349+03:00 pve01 homelab-backup-audit[3360337]: ISSUE|severity=HIGH|code=RPO_BREACH|logical_id=vm160|root_cause=NO_FRESH_V2_OR_SEALED_QUORUM\n2026-09-27T16:36:15.498349+03:00 pve01 homelab-backup-audit[3360337]: ISSUE|severity=HIGH|code=RPO_BREACH|logical_id=vm170|root_cause=NO_FRESH_V2_OR_SEALED_QUORUM\n2026-09-27T16:36:15.498349+03:00 pve01 homelab-backup-audit[3360337]: ISSUE|severity=HIGH|code=RPO_BREACH|logical_id=vm171|root_cause=NO_FRESH_V2_OR_SEALED_QUORUM\n2026-09-27T16:36:15.498349+03:00 pve01 homelab-backup-audit[3360337]: ISSUE|severity=HIGH|code=RPO_BREACH|logical_id=vm190|root_cause=NO_FRESH_V2_OR_SEALED_QUORUM\n2026-09-27T16:36:15.498349+03:00 pve01 homelab-backup-audit[3360337]: ISSUE|severity=HIGH|code=RPO_BREACH|logical_id=vm9130|root_cause=NO_FRESH_V2_OR_SEALED_QUORUM\n2026-09-27T16:36:15.498349+03:00 pve01 homelab-backup-audit[3360337]: SUMMARY|AUDIT_STATUS=OK|BACKUP_STATUS=RED|ACTIVE_COUNT=16|ISSUE_COUNT=12|CLOUD_A=OK|CLOUD_B=OK|CLOUD_B_DRILL=OK|DR_PROVEN=YES|SOURCE_OFFHOST=OK\n2026-09-27T16:36:15.501790+03:00 pve01 systemd[1]: homelab-backup-audit.service: Main process exited, code=exited, status=1/FAILURE\n2026-09-27T16:36:15.501873+03:00 pve01 systemd[1]: homelab-backup-audit.service: Failed with result 'exit-code'.\n2026-09-27T16:36:15.502049+03:00 pve01 systemd[1]: Failed to start homelab-backup-audit.service - Homelab unified backup and DR audit.\n2026-09-27T16:36:15.502186+03:00 pve01 systemd[1]: homelab-backup-audit.service: Consumed 2.495s CPU time, 148.1M memory peak.\n2026-09-27T17:06:58.226832+03:00 pve01 systemd[1]: Starting homelab-backup-audit.service - Homelab unified backup and DR audit...\n2026-09-27T17:07:02.370777+03:00 pve01 homelab-backup-audit[3448254]: TARGET|logical_id=app-filebrowser|kind=APP|state=FRESH|decision=SKIP_FRESH|legacy_age_seconds=27405|generation=app-filebrowser-pve01-20260927T063003Z\n2026-09-27T17:07:02.370777+03:00 pve01 homelab-backup-audit[3448254]: TARGET|logical_id=app-hbarhub|kind=APP|state=FRESH|decision=SKIP_FRESH|legacy_age_seconds=27238|generation=app-hbarhub-pve01-20260927T063154Z\n2026-09-27T17:07:02.370777+03:00 pve01 homelab-backup-audit[3448254]: TARGET|logical_id=app-immich|kind=APP|state=FRESH|decision=SKIP_FRESH|legacy_age_seconds=27339|generation=app-immich-pve01-20260927T063041Z\n2026-09-27T17:07:02.370777+03:00 pve01 homelab-backup-audit[3448254]: TARGET|logical_id=app-skladchik-reports-monitor|kind=APP|state=FRESH|decision=SKIP_FRESH|legacy_age_seconds=27386|generation=app-skladchik-reports-monitor-pve01-20260927T063026Z\n2026-09-27T17:07:02.370777+03:00 pve01 homelab-backup-audit[3448254]: TARGET|logical_id=control-bootstrap-v2|kind=CONTROL|state=STALE|age_seconds=213356|generation=control-bootstrap-v2-pve01-20260916T120057Z\n2026-09-27T17:07:02.370777+03:00 pve01 homelab-backup-audit[3448254]: TARGET|logical_id=vm110|kind=VM|state=STALE|source=NONE|v2_age_seconds=264783|legacy_age_seconds=2017649|replica_count=2|state_id=ct110|generation=vm110-pve01-20260904T053821Z\n2026-09-27T17:07:02.370777+03:00 pve01 homelab-backup-audit[3448254]: TARGET|logical_id=vm111|kind=VM|state=STALE|source=NONE|v2_age_seconds=262764|replica_count=2|state_id=ct111\n2026-09-27T17:07:02.370777+03:00 pve01 homelab-backup-audit[3448254]: TARGET|logical_id=vm112|kind=VM|state=STALE|source=NONE|v2_age_seconds=246256|legacy_age_seconds=2056144|replica_count=2|state_id=ct112|generation=vm112-pve01-20260903T185707Z\n2026-09-27T17:07:02.370777+03:00 pve01 homelab-backup-audit[3448254]: TARGET|logical_id=vm113|kind=VM|state=STALE|source=NONE|v2_age_seconds=244237|replica_count=2|state_id=ct113\n2026-09-27T17:07:02.370777+03:00 pve01 homelab-backup-audit[3448254]: TARGET|logical_id=vm130|kind=VM|state=STALE|source=NONE|v2_age_seconds=238847|replica_count=2|state_id=vm130\n2026-09-27T17:07:02.370777+03:00 pve01 homelab-backup-audit[3448254]: TARGET|logical_id=vm150|kind=VM|state=STALE|source=NONE|v2_age_seconds=242299|legacy_age_seconds=2017766|replica_count=2|state_id=vm150|generation=vm150-pve01-20260904T053517Z\n2026-09-27T17:07:02.370777+03:00 pve01 homelab-backup-audit[3448254]: TARGET|logical_id=vm160|kind=VM|state=STALE|source=NONE|v2_age_seconds=237600|replica_count=2|state_id=vm160\n2026-09-27T17:07:02.370777+03:00 pve01 homelab-backup-audit[3448254]: TARGET|logical_id=vm170|kind=VM|state=STALE|source=NONE|v2_age_seconds=214391|legacy_age_seconds=962387|replica_count=2|state_id=vm170|generation=vm170-pve01-20260916T103019Z\n2026-09-27T17:07:02.371206+03:00 pve01 homelab-backup-audit[3448254]: TARGET|logical_id=vm171|kind=VM|state=STALE|source=NONE|v2_age_seconds=218821|legacy_age_seconds=991919|replica_count=2|state_id=vm171|generation=vm171-pve01-20260916T023018Z\n2026-09-27T17:07:02.371206+03:00 pve01 homelab-backup-audit[3448254]: TARGET|logical_id=vm190|kind=VM|state=STALE|source=NONE|v2_age_seconds=214989|replica_count=2|state_id=vm190\n2026-09-27T17:07:02.371206+03:00 pve01 homelab-backup-audit[3448254]: TARGET|logical_id=vm9130|kind=VM|state=STALE|source=NONE|v2_age_seconds=206246|replica_count=2|state_id=vm9130\n2026-09-27T17:07:02.371206+03:00 pve01 homelab-backup-audit[3448254]: ISSUE|severity=HIGH|code=RPO_BREACH|logical_id=control-bootstrap-v2|root_cause=CONTROL_STATE_NOT_FRESH\n2026-09-27T17:07:02.371206+03:00 pve01 homelab-backup-audit[3448254]: ISSUE|severity=HIGH|code=RPO_BREACH|logical_id=vm110|root_cause=NO_FRESH_V2_OR_SEALED_QUORUM\n2026-09-27T17:07:02.371206+03:00 pve01 homelab-backup-audit[3448254]: ISSUE|severity=HIGH|code=RPO_BREACH|logical_id=vm111|root_cause=NO_FRESH_V2_OR_SEALED_QUORUM\n2026-09-27T17:07:02.371206+03:00 pve01 homelab-backup-audit[3448254]: ISSUE|severity=HIGH|code=RPO_BREACH|logical_id=vm112|root_cause=NO_FRESH_V2_OR_SEALED_QUORUM\n2026-09-27T17:07:02.371206+03:00 pve01 homelab-backup-audit[3448254]: ISSUE|severity=HIGH|code=RPO_BREACH|logical_id=vm113|root_cause=NO_FRESH_V2_OR_SEALED_QUORUM\n2026-09-27T17:07:02.371206+03:00 pve01 homelab-backup-audit[3448254]: ISSUE|severity=HIGH|code=RPO_BREACH|logical_id=vm130|root_cause=NO_FRESH_V2_OR_SEALED_QUORUM\n2026-09-27T17:07:02.371206+03:00 pve01 homelab-backup-audit[3448254]: ISSUE|severity=HIGH|code=RPO_BREACH|logical_id=vm150|root_cause=NO_FRESH_V2_OR_SEALED_QUORUM\n2026-09-27T17:07:02.371206+03:00 pve01 homelab-backup-audit[3448254]: ISSUE|severity=HIGH|code=RPO_BREACH|logical_id=vm160|root_cause=NO_FRESH_V2_OR_SEALED_QUORUM\n2026-09-27T17:07:02.371206+03:00 pve01 homelab-backup-audit[3448254]: ISSUE|severity=HIGH|code=RPO_BREACH|logical_id=vm170|root_cause=NO_FRESH_V2_OR_SEALED_QUORUM\n2026-09-27T17:07:02.371206+03:00 pve01 homelab-backup-audit[3448254]: ISSUE|severity=HIGH|code=RPO_BREACH|logical_id=vm171|root_cause=NO_FRESH_V2_OR_SEALED_QUORUM\n2026-09-27T17:07:02.371206+03:00 pve01 homelab-backup-audit[3448254]: ISSUE|severity=HIGH|code=RPO_BREACH|logical_id=vm190|root_cause=NO_FRESH_V2_OR_SEALED_QUORUM\n2026-09-27T17:07:02.371206+03:00 pve01 homelab-backup-audit[3448254]: ISSUE|severity=HIGH|code=RPO_BREACH|logical_id=vm9130|root_cause=NO_FRESH_V2_OR_SEALED_QUORUM\n2026-09-27T17:07:02.371206+03:00 pve01 homelab-backup-audit[3448254]: SUMMARY|AUDIT_STATUS=OK|BACKUP_STATUS=RED|ACTIVE_COUNT=16|ISSUE_COUNT=12|CLOUD_A=OK|CLOUD_B=OK|CLOUD_B_DRILL=OK|DR_PROVEN=YES|SOURCE_OFFHOST=OK\n2026-09-27T17:07:02.374459+03:00 pve01 systemd[1]: homelab-backup-audit.service: Main process exited, code=exited, status=1/FAILURE\n2026-09-27T17:07:02.374532+03:00 pve01 systemd[1]: homelab-backup-audit.service: Failed with result 'exit-code'.\n2026-09-27T17:07:02.374666+03:00 pve01 systemd[1]: Failed to start homelab-backup-audit.service - Homelab unified backup and DR audit.\n2026-09-27T17:07:02.374773+03:00 pve01 systemd[1]: homelab-backup-audit.service: Consumed 2.583s CPU time, 148.1M memory peak.\n2026-09-27T17:36:01.157822+03:00 pve01 systemd[1]: Starting homelab-backup-audit.service - Homelab unified backup and DR audit...\n2026-09-27T17:36:05.154322+03:00 pve01 homelab-backup-audit[3547298]: TARGET|logical_id=app-filebrowser|kind=APP|state=FRESH|decision=SKIP_FRESH|legacy_age_seconds=29148|generation=app-filebrowser-pve01-20260927T063003Z\n2026-09-27T17:36:05.154322+03:00 pve01 homelab-backup-audit[3547298]: TARGET|logical_id=app-hbarhub|kind=APP|state=FRESH|decision=SKIP_FRESH|legacy_age_seconds=28981|generation=app-hbarhub-pve01-20260927T063154Z\n2026-09-27T17:36:05.154322+03:00 pve01 homelab-backup-audit[3547298]: TARGET|logical_id=app-immich|kind=APP|state=FRESH|decision=SKIP_FRESH|legacy_age_seconds=29082|generation=app-immich-pve01-20260927T063041Z\n2026-09-27T17:36:05.154322+03:00 pve01 homelab-backup-audit[3547298]: TARGET|logical_id=app-skladchik-reports-monitor|kind=APP|state=FRESH|decision=SKIP_FRESH|legacy_age_seconds=29129|generation=app-skladchik-reports-monitor-pve01-20260927T063026Z\n2026-09-27T17:36:05.154322+03:00 pve01 homelab-backup-audit[3547298]: TARGET|logical_id=control-bootstrap-v2|kind=CONTROL|state=STALE|age_seconds=215099|generation=control-bootstrap-v2-pve01-20260916T120057Z\n2026-09-27T17:36:05.154322+03:00 pve01 homelab-backup-audit[3547298]: TARGET|logical_id=vm110|kind=VM|state=STALE|source=NONE|v2_age_seconds=266526|legacy_age_seconds=2019392|replica_count=2|state_id=ct110|generation=vm110-pve01-20260904T053821Z\n2026-09-27T17:36:05.154322+03:00 pve01 homelab-backup-audit[3547298]: TARGET|logical_id=vm111|kind=VM|state=STALE|source=NONE|v2_age_seconds=264507|replica_count=2|state_id=ct111\n2026-09-27T17:36:05.154322+03:00 pve01 homelab-backup-audit[3547298]: TARGET|logical_id=vm112|kind=VM|state=STALE|source=NONE|v2_age_seconds=247999|legacy_age_seconds=2057887|replica_count=2|state_id=ct112|generation=vm112-pve01-20260903T185707Z\n2026-09-27T17:36:05.154322+03:00 pve01 homelab-backup-audit[3547298]: TARGET|logical_id=vm113|kind=VM|state=STALE|source=NONE|v2_age_seconds=245980|replica_count=2|state_id=ct113\n2026-09-27T17:36:05.154322+03:00 pve01 homelab-backup-audit[3547298]: TARGET|logical_id=vm130|kind=VM|state=STALE|source=NONE|v2_age_seconds=240590|replica_count=2|state_id=vm130\n2026-09-27T17:36:05.154322+03:00 pve01 homelab-backup-audit[3547298]: TARGET|logical_id=vm150|kind=VM|state=STALE|source=NONE|v2_age_seconds=244042|legacy_age_seconds=2019508|replica_count=2|state_id=vm150|generation=vm150-pve01-20260904T053517Z\n2026-09-27T17:36:05.154322+03:00 pve01 homelab-backup-audit[3547298]: TARGET|logical_id=vm160|kind=VM|state=STALE|source=NONE|v2_age_seconds=239343|replica_count=2|state_id=vm160\n2026-09-27T17:36:05.154322+03:00 pve01 homelab-backup-audit[3547298]: TARGET|logical_id=vm170|kind=VM|state=STALE|source=NONE|v2_age_seconds=216134|legacy_age_seconds=964129|replica_count=2|state_id=vm170|generation=vm170-pve01-20260916T103019Z\n2026-09-27T17:36:05.154721+03:00 pve01 homelab-backup-audit[3547298]: TARGET|logical_id=vm171|kind=VM|state=STALE|source=NONE|v2_age_seconds=220564|legacy_age_seconds=993661|replica_count=2|state_id=vm171|generation=vm171-pve01-20260916T023018Z\n2026-09-27T17:36:05.154721+03:00 pve01 homelab-backup-audit[3547298]: TARGET|logical_id=vm190|kind=VM|state=STALE|source=NONE|v2_age_seconds=216732|replica_count=2|state_id=vm190\n2026-09-27T17:36:05.154721+03:00 pve01 homelab-backup-audit[3547298]: TARGET|logical_id=vm9130|kind=VM|state=STALE|source=NONE|v2_age_seconds=207989|replica_count=2|state_id=vm9130\n2026-09-27T17:36:05.154721+03:00 pve01 homelab-backup-audit[3547298]: ISSUE|severity=HIGH|code=RPO_BREACH|logical_id=control-bootstrap-v2|root_cause=CONTROL_STATE_NOT_FRESH\n2026-09-27T17:36:05.154721+03:00 pve01 homelab-backup-audit[3547298]: ISSUE|severity=HIGH|code=RPO_BREACH|logical_id=vm110|root_cause=NO_FRESH_V2_OR_SEALED_QUORUM\n2026-09-27T17:36:05.154721+03:00 pve01 homelab-backup-audit[3547298]: ISSUE|severity=HIGH|code=RPO_BREACH|logical_id=vm111|root_cause=NO_FRESH_V2_OR_SEALED_QUORUM\n2026-09-27T17:36:05.154721+03:00 pve01 homelab-backup-audit[3547298]: ISSUE|severity=HIGH|code=RPO_BREACH|logical_id=vm112|root_cause=NO_FRESH_V2_OR_SEALED_QUORUM\n2026-09-27T17:36:05.154721+03:00 pve01 homelab-backup-audit[3547298]: ISSUE|severity=HIGH|code=RPO_BREACH|logical_id=vm113|root_cause=NO_FRESH_V2_OR_SEALED_QUORUM\n2026-09-27T17:36:05.154721+03:00 pve01 homelab-backup-audit[3547298]: ISSUE|severity=HIGH|code=RPO_BREACH|logical_id=vm130|root_cause=NO_FRESH_V2_OR_SEALED_QUORUM\n2026-09-27T17:36:05.154721+03:00 pve01 homelab-backup-audit[3547298]: ISSUE|severity=HIGH|code=RPO_BREACH|logical_id=vm150|root_cause=NO_FRESH_V2_OR_SEALED_QUORUM\n2026-09-27T17:36:05.154721+03:00 pve01 homelab-backup-audit[3547298]: ISSUE|severity=HIGH|code=RPO_BREACH|logical_id=vm160|root_cause=NO_FRESH_V2_OR_SEALED_QUORUM\n2026-09-27T17:36:05.154721+03:00 pve01 homelab-backup-audit[3547298]: ISSUE|severity=HIGH|code=RPO_BREACH|logical_id=vm170|root_cause=NO_FRESH_V2_OR_SEALED_QUORUM\n2026-09-27T17:36:05.154721+03:00 pve01 homelab-backup-audit[3547298]: ISSUE|severity=HIGH|code=RPO_BREACH|logical_id=vm171|root_cause=NO_FRESH_V2_OR_SEALED_QUORUM\n2026-09-27T17:36:05.154721+03:00 pve01 homelab-backup-audit[3547298]: ISSUE|severity=HIGH|code=RPO_BREACH|logical_id=vm190|root_cause=NO_FRESH_V2_OR_SEALED_QUORUM\n2026-09-27T17:36:05.154721+03:00 pve01 homelab-backup-audit[3547298]: ISSUE|severity=HIGH|code=RPO_BREACH|logical_id=vm9130|root_cause=NO_FRESH_V2_OR_SEALED_QUORUM\n2026-09-27T17:36:05.154721+03:00 pve01 homelab-backup-audit[3547298]: SUMMARY|AUDIT_STATUS=OK|BACKUP_STATUS=RED|ACTIVE_COUNT=16|ISSUE_COUNT=12|CLOUD_A=OK|CLOUD_B=OK|CLOUD_B_DRILL=OK|DR_PROVEN=YES|SOURCE_OFFHOST=OK\n2026-09-27T17:36:05.158603+03:00 pve01 systemd[1]: homelab-backup-audit.service: Main process exited, code=exited, status=1/FAILURE\n2026-09-27T17:36:05.158677+03:00 pve01 systemd[1]: homelab-backup-audit.service: Failed with result 'exit-code'.\n2026-09-27T17:36:05.158839+03:00 pve01 systemd[1]: Failed to start homelab-backup-audit.service - Homelab unified backup and DR audit.\n2026-09-27T17:36:05.158955+03:00 pve01 systemd[1]: homelab-backup-audit.service: Consumed 2.532s CPU time, 148.4M memory peak.\n2026-09-27T18:05:32.217062+03:00 pve01 systemd[1]: Starting homelab-backup-audit.service - Homelab unified backup and DR audit...\n2026-09-27T18:05:36.160395+03:00 pve01 homelab-backup-audit[3634668]: TARGET|logical_id=app-filebrowser|kind=APP|state=FRESH|decision=SKIP_FRESH|legacy_age_seconds=30920|generation=app-filebrowser-pve01-20260927T063003Z\n2026-09-27T18:05:36.160395+03:00 pve01 homelab-backup-audit[3634668]: TARGET|logical_id=app-hbarhub|kind=APP|state=FRESH|decision=SKIP_FRESH|legacy_age_seconds=30753|generation=app-hbarhub-pve01-20260927T063154Z\n2026-09-27T18:05:36.160395+03:00 pve01 homelab-backup-audit[3634668]: TARGET|logical_id=app-immich|kind=APP|state=FRESH|decision=SKIP_FRESH|legacy_age_seconds=30854|generation=app-immich-pve01-20260927T063041Z\n2026-09-27T18:05:36.160395+03:00 pve01 homelab-backup-audit[3634668]: TARGET|logical_id=app-skladchik-reports-monitor|kind=APP|state=FRESH|decision=SKIP_FRESH|legacy_age_seconds=30901|generation=app-skladchik-reports-monitor-pve01-20260927T063026Z\n2026-09-27T18:05:36.160395+03:00 pve01 homelab-backup-audit[3634668]: TARGET|logical_id=control-bootstrap-v2|kind=CONTROL|state=STALE|age_seconds=216870|generation=control-bootstrap-v2-pve01-20260916T120057Z\n2026-09-27T18:05:36.160395+03:00 pve01 homelab-backup-audit[3634668]: TARGET|logical_id=vm110|kind=VM|state=STALE|source=NONE|v2_age_seconds=268297|legacy_age_seconds=2021164|replica_count=2|state_id=ct110|generation=vm110-pve01-20260904T053821Z\n2026-09-27T18:05:36.160395+03:00 pve01 homelab-backup-audit[3634668]: TARGET|logical_id=vm111|kind=VM|state=STALE|source=NONE|v2_age_seconds=266278|replica_count=2|state_id=ct111\n2026-09-27T18:05:36.160395+03:00 pve01 homelab-backup-audit[3634668]: TARGET|logical_id=vm112|kind=VM|state=STALE|source=NONE|v2_age_seconds=249770|legacy_age_seconds=2059659|replica_count=2|state_id=ct112|generation=vm112-pve01-20260903T185707Z\n2026-09-27T18:05:36.160395+03:00 pve01 homelab-backup-audit[3634668]: TARGET|logical_id=vm113|kind=VM|state=STALE|source=NONE|v2_age_seconds=247751|replica_count=2|state_id=ct113\n2026-09-27T18:05:36.160395+03:00 pve01 homelab-backup-audit[3634668]: TARGET|logical_id=vm130|kind=VM|state=STALE|source=NONE|v2_age_seconds=242361|replica_count=2|state_id=vm130\n2026-09-27T18:05:36.160395+03:00 pve01 homelab-backup-audit[3634668]: TARGET|logical_id=vm150|kind=VM|state=STALE|source=NONE|v2_age_seconds=245813|legacy_age_seconds=2021280|replica_count=2|state_id=vm150|generation=vm150-pve01-20260904T053517Z\n2026-09-27T18:05:36.160395+03:00 pve01 homelab-backup-audit[3634668]: TARGET|logical_id=vm160|kind=VM|state=STALE|source=NONE|v2_age_seconds=241114|replica_count=2|state_id=vm160\n2026-09-27T18:05:36.160395+03:00 pve01 homelab-backup-audit[3634668]: TARGET|logical_id=vm170|kind=VM|state=STALE|source=NONE|v2_age_seconds=217905|legacy_age_seconds=965901|replica_count=2|state_id=vm170|generation=vm170-pve01-20260916T103019Z\n2026-09-27T18:05:36.160956+03:00 pve01 homelab-backup-audit[3634668]: TARGET|logical_id=vm171|kind=VM|state=STALE|source=NONE|v2_age_seconds=222335|legacy_age_seconds=995433|replica_count=2|state_id=vm171|generation=vm171-pve01-20260916T023018Z\n2026-09-27T18:05:36.160956+03:00 pve01 homelab-backup-audit[3634668]: TARGET|logical_id=vm190|kind=VM|state=STALE|source=NONE|v2_age_seconds=218503|replica_count=2|state_id=vm190\n2026-09-27T18:05:36.160956+03:00 pve01 homelab-backup-audit[3634668]: TARGET|logical_id=vm9130|kind=VM|state=STALE|source=NONE|v2_age_seconds=209760|replica_count=2|state_id=vm9130\n2026-09-27T18:05:36.160956+03:00 pve01 homelab-backup-audit[3634668]: ISSUE|severity=HIGH|code=RPO_BREACH|logical_id=control-bootstrap-v2|root_cause=CONTROL_STATE_NOT_FRESH\n2026-09-27T18:05:36.160956+03:00 pve01 homelab-backup-audit[3634668]: ISSUE|severity=HIGH|code=RPO_BREACH|logical_id=vm110|root_cause=NO_FRESH_V2_OR_SEALED_QUORUM\n2026-09-27T18:05:36.160956+03:00 pve01 homelab-backup-audit[3634668]: ISSUE|severity=HIGH|code=RPO_BREACH|logical_id=vm111|root_cause=NO_FRESH_V2_OR_SEALED_QUORUM\n2026-09-27T18:05:36.160956+03:00 pve01 homelab-backup-audit[3634668]: ISSUE|severity=HIGH|code=RPO_BREACH|logical_id=vm112|root_cause=NO_FRESH_V2_OR_SEALED_QUORUM\n2026-09-27T18:05:36.160956+03:00 pve01 homelab-backup-audit[3634668]: ISSUE|severity=HIGH|code=RPO_BREACH|logical_id=vm113|root_cause=NO_FRESH_V2_OR_SEALED_QUORUM\n2026-09-27T18:05:36.160956+03:00 pve01 homelab-backup-audit[3634668]: ISSUE|severity=HIGH|code=RPO_BREACH|logical_id=vm130|root_cause=NO_FRESH_V2_OR_SEALED_QUORUM\n2026-09-27T18:05:36.160956+03:00 pve01 homelab-backup-audit[3634668]: ISSUE|severity=HIGH|code=RPO_BREACH|logical_id=vm150|root_cause=NO_FRESH_V2_OR_SEALED_QUORUM\n2026-09-27T18:05:36.160956+03:00 pve01 homelab-backup-audit[3634668]: ISSUE|severity=HIGH|code=RPO_BREACH|logical_id=vm160|root_cause=NO_FRESH_V2_OR_SEALED_QUORUM\n2026-09-27T18:05:36.160956+03:00 pve01 homelab-backup-audit[3634668]: ISSUE|severity=HIGH|code=RPO_BREACH|logical_id=vm170|root_cause=NO_FRESH_V2_OR_SEALED_QUORUM\n2026-09-27T18:05:36.160956+03:00 pve01 homelab-backup-audit[3634668]: ISSUE|severity=HIGH|code=RPO_BREACH|logical_id=vm171|root_cause=NO_FRESH_V2_OR_SEALED_QUORUM\n2026-09-27T18:05:36.160956+03:00 pve01 homelab-backup-audit[3634668]: ISSUE|severity=HIGH|code=RPO_BREACH|logical_id=vm190|root_cause=NO_FRESH_V2_OR_SEALED_QUORUM\n2026-09-27T18:05:36.160956+03:00 pve01 homelab-backup-audit[3634668]: ISSUE|severity=HIGH|code=RPO_BREACH|logical_id=vm9130|root_cause=NO_FRESH_V2_OR_SEALED_QUORUM\n2026-09-27T18:05:36.160956+03:00 pve01 homelab-backup-audit[3634668]: SUMMARY|AUDIT_STATUS=OK|BACKUP_STATUS=RED|ACTIVE_COUNT=16|ISSUE_COUNT=12|CLOUD_A=OK|CLOUD_B=OK|CLOUD_B_DRILL=OK|DR_PROVEN=YES|SOURCE_OFFHOST=OK\n2026-09-27T18:05:36.165406+03:00 pve01 systemd[1]: homelab-backup-audit.service: Main process exited, code=exited, status=1/FAILURE\n2026-09-27T18:05:36.165481+03:00 pve01 systemd[1]: homelab-backup-audit.service: Failed with result 'exit-code'.\n2026-09-27T18:05:36.165634+03:00 pve01 systemd[1]: Failed to start homelab-backup-audit.service - Homelab unified backup and DR audit.\n2026-09-27T18:05:36.165787+03:00 pve01 systemd[1]: homelab-backup-audit.service: Consumed 2.671s CPU time, 148.7M memory peak.\n2026-09-27T18:37:01.175931+03:00 pve01 systemd[1]: Starting homelab-backup-audit.service - Homelab unified backup and DR audit...\n2026-09-27T18:37:05.292583+03:00 pve01 homelab-backup-audit[3734472]: TARGET|logical_id=app-filebrowser|kind=APP|state=FRESH|decision=SKIP_FRESH|legacy_age_seconds=32808|generation=app-filebrowser-pve01-20260927T063003Z\n2026-09-27T18:37:05.292583+03:00 pve01 homelab-backup-audit[3734472]: TARGET|logical_id=app-hbarhub|kind=APP|state=FRESH|decision=SKIP_FRESH|legacy_age_seconds=32641|generation=app-hbarhub-pve01-20260927T063154Z\n2026-09-27T18:37:05.292583+03:00 pve01 homelab-backup-audit[3734472]: TARGET|logical_id=app-immich|kind=APP|state=FRESH|decision=SKIP_FRESH|legacy_age_seconds=32742|generation=app-immich-pve01-20260927T063041Z\n2026-09-27T18:37:05.292583+03:00 pve01 homelab-backup-audit[3734472]: TARGET|logical_id=app-skladchik-reports-monitor|kind=APP|state=FRESH|decision=SKIP_FRESH|legacy_age_seconds=32789|generation=app-skladchik-reports-monitor-pve01-20260927T063026Z\n2026-09-27T18:37:05.292583+03:00 pve01 homelab-backup-audit[3734472]: TARGET|logical_id=control-bootstrap-v2|kind=CONTROL|state=STALE|age_seconds=218759|generation=control-bootstrap-v2-pve01-20260916T120057Z\n2026-09-27T18:37:05.292583+03:00 pve01 homelab-backup-audit[3734472]: TARGET|logical_id=vm110|kind=VM|state=STALE|source=NONE|v2_age_seconds=270186|legacy_age_seconds=2023052|replica_count=2|state_id=ct110|generation=vm110-pve01-20260904T053821Z\n2026-09-27T18:37:05.292583+03:00 pve01 homelab-backup-audit[3734472]: TARGET|logical_id=vm111|kind=VM|state=STALE|source=NONE|v2_age_seconds=268167|replica_count=2|state_id=ct111\n2026-09-27T18:37:05.292583+03:00 pve01 homelab-backup-audit[3734472]: TARGET|logical_id=vm112|kind=VM|state=STALE|source=NONE|v2_age_seconds=251659|legacy_age_seconds=2061547|replica_count=2|state_id=ct112|generation=vm112-pve01-20260903T185707Z\n2026-09-27T18:37:05.292583+03:00 pve01 homelab-backup-audit[3734472]: TARGET|logical_id=vm113|kind=VM|state=STALE|source=NONE|v2_age_seconds=249640|replica_count=2|state_id=ct113\n2026-09-27T18:37:05.292583+03:00 pve01 homelab-backup-audit[3734472]: TARGET|logical_id=vm130|kind=VM|state=STALE|source=NONE|v2_age_seconds=244250|replica_count=2|state_id=vm130\n2026-09-27T18:37:05.292583+03:00 pve01 homelab-backup-audit[3734472]: TARGET|logical_id=vm150|kind=VM|state=STALE|source=NONE|v2_age_seconds=247702|legacy_age_seconds=2023168|replica_count=2|state_id=vm150|generation=vm150-pve01-20260904T053517Z\n2026-09-27T18:37:05.292583+03:00 pve01 homelab-backup-audit[3734472]: TARGET|logical_id=vm160|kind=VM|state=STALE|source=NONE|v2_age_seconds=243003|replica_count=2|state_id=vm160\n2026-09-27T18:37:05.292583+03:00 pve01 homelab-backup-audit[3734472]: TARGET|logical_id=vm170|kind=VM|state=STALE|source=NONE|v2_age_seconds=219794|legacy_age_seconds=967789|replica_count=2|state_id=vm170|generation=vm170-pve01-20260916T103019Z\n2026-09-27T18:37:05.293286+03:00 pve01 homelab-backup-audit[3734472]: TARGET|logical_id=vm171|kind=VM|state=STALE|source=NONE|v2_age_seconds=224224|legacy_age_seconds=997321|replica_count=2|state_id=vm171|generation=vm171-pve01-20260916T023018Z\n2026-09-27T18:37:05.293286+03:00 pve01 homelab-backup-audit[3734472]: TARGET|logical_id=vm190|kind=VM|state=STALE|source=NONE|v2_age_seconds=220392|replica_count=2|state_id=vm190\n2026-09-27T18:37:05.293286+03:00 pve01 homelab-backup-audit[3734472]: TARGET|logical_id=vm9130|kind=VM|state=STALE|source=NONE|v2_age_seconds=211649|replica_count=2|state_id=vm9130\n2026-09-27T18:37:05.293286+03:00 pve01 homelab-backup-audit[3734472]: ISSUE|severity=HIGH|code=RPO_BREACH|logical_id=control-bootstrap-v2|root_cause=CONTROL_STATE_NOT_FRESH\n2026-09-27T18:37:05.293286+03:00 pve01 homelab-backup-audit[3734472]: ISSUE|severity=HIGH|code=RPO_BREACH|logical_id=vm110|root_cause=NO_FRESH_V2_OR_SEALED_QUORUM\n2026-09-27T18:37:05.293286+03:00 pve01 homelab-backup-audit[3734472]: ISSUE|severity=HIGH|code=RPO_BREACH|logical_id=vm111|root_cause=NO_FRESH_V2_OR_SEALED_QUORUM\n2026-09-27T18:37:05.293286+03:00 pve01 homelab-backup-audit[3734472]: ISSUE|severity=HIGH|code=RPO_BREACH|logical_id=vm112|root_cause=NO_FRESH_V2_OR_SEALED_QUORUM\n2026-09-27T18:37:05.293286+03:00 pve01 homelab-backup-audit[3734472]: ISSUE|severity=HIGH|code=RPO_BREACH|logical_id=vm113|root_cause=NO_FRESH_V2_OR_SEALED_QUORUM\n2026-09-27T18:37:05.293286+03:00 pve01 homelab-backup-audit[3734472]: ISSUE|severity=HIGH|code=RPO_BREACH|logical_id=vm130|root_cause=NO_FRESH_V2_OR_SEALED_QUORUM\n2026-09-27T18:37:05.293286+03:00 pve01 homelab-backup-audit[3734472]: ISSUE|severity=HIGH|code=RPO_BREACH|logical_id=vm150|root_cause=NO_FRESH_V2_OR_SEALED_QUORUM\n2026-09-27T18:37:05.293286+03:00 pve01 homelab-backup-audit[3734472]: ISSUE|severity=HIGH|code=RPO_BREACH|logical_id=vm160|root_cause=NO_FRESH_V2_OR_SEALED_QUORUM\n2026-09-27T18:37:05.293286+03:00 pve01 homelab-backup-audit[3734472]: ISSUE|severity=HIGH|code=RPO_BREACH|logical_id=vm170|root_cause=NO_FRESH_V2_OR_SEALED_QUORUM\n2026-09-27T18:37:05.293286+03:00 pve01 homelab-backup-audit[3734472]: ISSUE|severity=HIGH|code=RPO_BREACH|logical_id=vm171|root_cause=NO_FRESH_V2_OR_SEALED_QUORUM\n2026-09-27T18:37:05.293286+03:00 pve01 homelab-backup-audit[3734472]: ISSUE|severity=HIGH|code=RPO_BREACH|logical_id=vm190|root_cause=NO_FRESH_V2_OR_SEALED_QUORUM\n2026-09-27T18:37:05.293286+03:00 pve01 homelab-backup-audit[3734472]: ISSUE|severity=HIGH|code=RPO_BREACH|logical_id=vm9130|root_cause=NO_FRESH_V2_OR_SEALED_QUORUM\n2026-09-27T18:37:05.293286+03:00 pve01 homelab-backup-audit[3734472]: SUMMARY|AUDIT_STATUS=OK|BACKUP_STATUS=RED|ACTIVE_COUNT=16|ISSUE_COUNT=12|CLOUD_A=OK|CLOUD_B=OK|CLOUD_B_DRILL=OK|DR_PROVEN=YES|SOURCE_OFFHOST=OK\n2026-09-27T18:37:05.298114+03:00 pve01 systemd[1]: homelab-backup-audit.service: Main process exited, code=exited, status=1/FAILURE\n2026-09-27T18:37:05.298186+03:00 pve01 systemd[1]: homelab-backup-audit.service: Failed with result 'exit-code'.\n2026-09-27T18:37:05.298351+03:00 pve01 systemd[1]: Failed to start homelab-backup-audit.service - Homelab unified backup and DR audit.\n2026-09-27T18:37:05.298479+03:00 pve01 systemd[1]: homelab-backup-audit.service: Consumed 2.586s CPU time, 148.3M memory peak.\n2026-09-27T19:06:32.216653+03:00 pve01 systemd[1]: Starting homelab-backup-audit.service - Homelab unified backup and DR audit...\n2026-09-27T19:06:36.464162+03:00 pve01 homelab-backup-audit[3833726]: TARGET|logical_id=app-filebrowser|kind=APP|state=FRESH|decision=SKIP_FRESH|legacy_age_seconds=34579|generation=app-filebrowser-pve01-20260927T063003Z\n2026-09-27T19:06:36.464162+03:00 pve01 homelab-backup-audit[3833726]: TARGET|logical_id=app-hbarhub|kind=APP|state=FRESH|decision=SKIP_FRESH|legacy_age_seconds=34412|generation=app-hbarhub-pve01-20260927T063154Z\n2026-09-27T19:06:36.464162+03:00 pve01 homelab-backup-audit[3833726]: TARGET|logical_id=app-immich|kind=APP|state=FRESH|decision=SKIP_FRESH|legacy_age_seconds=34513|generation=app-immich-pve01-20260927T063041Z\n2026-09-27T19:06:36.464162+03:00 pve01 homelab-backup-audit[3833726]: TARGET|logical_id=app-skladchik-reports-monitor|kind=APP|state=FRESH|decision=SKIP_FRESH|legacy_age_seconds=34560|generation=app-skladchik-reports-monitor-pve01-20260927T063026Z\n2026-09-27T19:06:36.464162+03:00 pve01 homelab-backup-audit[3833726]: TARGET|logical_id=control-bootstrap-v2|kind=CONTROL|state=STALE|age_seconds=220530|generation=control-bootstrap-v2-pve01-20260916T120057Z\n2026-09-27T19:06:36.464162+03:00 pve01 homelab-backup-audit[3833726]: TARGET|logical_id=vm110|kind=VM|state=STALE|source=NONE|v2_age_seconds=271957|legacy_age_seconds=2024823|replica_count=2|state_id=ct110|generation=vm110-pve01-20260904T053821Z\n2026-09-27T19:06:36.464162+03:00 pve01 homelab-backup-audit[3833726]: TARGET|logical_id=vm111|kind=VM|state=STALE|source=NONE|v2_age_seconds=269938|replica_count=2|state_id=ct111\n2026-09-27T19:06:36.464162+03:00 pve01 homelab-backup-audit[3833726]: TARGET|logical_id=vm112|kind=VM|state=STALE|source=NONE|v2_age_seconds=253430|legacy_age_seconds=2063318|replica_count=2|state_id=ct112|generation=vm112-pve01-20260903T185707Z\n2026-09-27T19:06:36.464162+03:00 pve01 homelab-backup-audit[3833726]: TARGET|logical_id=vm113|kind=VM|state=STALE|source=NONE|v2_age_seconds=251411|replica_count=2|state_id=ct113\n2026-09-27T19:06:36.464162+03:00 pve01 homelab-backup-audit[3833726]: TARGET|logical_id=vm130|kind=VM|state=STALE|source=NONE|v2_age_seconds=246021|replica_count=2|state_id=vm130\n2026-09-27T19:06:36.464162+03:00 pve01 homelab-backup-audit[3833726]: TARGET|logical_id=vm150|kind=VM|state=STALE|source=NONE|v2_age_seconds=249473|legacy_age_seconds=2024939|replica_count=2|state_id=vm150|generation=vm150-pve01-20260904T053517Z\n2026-09-27T19:06:36.464162+03:00 pve01 homelab-backup-audit[3833726]: TARGET|logical_id=vm160|kind=VM|state=STALE|source=NONE|v2_age_seconds=244774|replica_count=2|state_id=vm160\n2026-09-27T19:06:36.464162+03:00 pve01 homelab-backup-audit[3833726]: TARGET|logical_id=vm170|kind=VM|state=STALE|source=NONE|v2_age_seconds=221565|legacy_age_seconds=969560|replica_count=2|state_id=vm170|generation=vm170-pve01-20260916T103019Z\n2026-09-27T19:06:36.464739+03:00 pve01 homelab-backup-audit[3833726]: TARGET|logical_id=vm171|kind=VM|state=STALE|source=NONE|v2_age_seconds=225995|legacy_age_seconds=999092|replica_count=2|state_id=vm171|generation=vm171-pve01-20260916T023018Z\n2026-09-27T19:06:36.464739+03:00 pve01 homelab-backup-audit[3833726]: TARGET|logical_id=vm190|kind=VM|state=STALE|source=NONE|v2_age_seconds=222163|replica_count=2|state_id=vm190\n2026-09-27T19:06:36.464739+03:00 pve01 homelab-backup-audit[3833726]: TARGET|logical_id=vm9130|kind=VM|state=STALE|source=NONE|v2_age_seconds=213420|replica_count=2|state_id=vm9130\n2026-09-27T19:06:36.464739+03:00 pve01 homelab-backup-audit[3833726]: ISSUE|severity=HIGH|code=RPO_BREACH|logical_id=control-bootstrap-v2|root_cause=CONTROL_STATE_NOT_FRESH\n2026-09-27T19:06:36.464739+03:00 pve01 homelab-backup-audit[3833726]: ISSUE|severity=HIGH|code=RPO_BREACH|logical_id=vm110|root_cause=NO_FRESH_V2_OR_SEALED_QUORUM\n2026-09-27T19:06:36.464739+03:00 pve01 homelab-backup-audit[3833726]: ISSUE|severity=HIGH|code=RPO_BREACH|logical_id=vm111|root_cause=NO_FRESH_V2_OR_SEALED_QUORUM\n2026-09-27T19:06:36.464739+03:00 pve01 homelab-backup-audit[3833726]: ISSUE|severity=HIGH|code=RPO_BREACH|logical_id=vm112|root_cause=NO_FRESH_V2_OR_SEALED_QUORUM\n2026-09-27T19:06:36.464739+03:00 pve01 homelab-backup-audit[3833726]: ISSUE|severity=HIGH|code=RPO_BREACH|logical_id=vm113|root_cause=NO_FRESH_V2_OR_SEALED_QUORUM\n2026-09-27T19:06:36.464739+03:00 pve01 homelab-backup-audit[3833726]: ISSUE|severity=HIGH|code=RPO_BREACH|logical_id=vm130|root_cause=NO_FRESH_V2_OR_SEALED_QUORUM\n2026-09-27T19:06:36.464739+03:00 pve01 homelab-backup-audit[3833726]: ISSUE|severity=HIGH|code=RPO_BREACH|logical_id=vm150|root_cause=NO_FRESH_V2_OR_SEALED_QUORUM\n2026-09-27T19:06:36.464739+03:00 pve01 homelab-backup-audit[3833726]: ISSUE|severity=HIGH|code=RPO_BREACH|logical_id=vm160|root_cause=NO_FRESH_V2_OR_SEALED_QUORUM\n2026-09-27T19:06:36.464739+03:00 pve01 homelab-backup-audit[3833726]: ISSUE|severity=HIGH|code=RPO_BREACH|logical_id=vm170|root_cause=NO_FRESH_V2_OR_SEALED_QUORUM\n2026-09-27T19:06:36.464739+03:00 pve01 homelab-backup-audit[3833726]: ISSUE|severity=HIGH|code=RPO_BREACH|logical_id=vm171|root_cause=NO_FRESH_V2_OR_SEALED_QUORUM\n2026-09-27T19:06:36.464739+03:00 pve01 homelab-backup-audit[3833726]: ISSUE|severity=HIGH|code=RPO_BREACH|logical_id=vm190|root_cause=NO_FRESH_V2_OR_SEALED_QUORUM\n2026-09-27T19:06:36.464739+03:00 pve01 homelab-backup-audit[3833726]: ISSUE|severity=HIGH|code=RPO_BREACH|logical_id=vm9130|root_cause=NO_FRESH_V2_OR_SEALED_QUORUM\n2026-09-27T19:06:36.464739+03:00 pve01 homelab-backup-audit[3833726]: SUMMARY|AUDIT_STATUS=OK|BACKUP_STATUS=RED|ACTIVE_COUNT=16|ISSUE_COUNT=12|CLOUD_A=OK|CLOUD_B=OK|CLOUD_B_DRILL=OK|DR_PROVEN=YES|SOURCE_OFFHOST=OK\n2026-09-27T19:06:36.470296+03:00 pve01 systemd[1]: homelab-backup-audit.service: Main process exited, code=exited, status=1/FAILURE\n2026-09-27T19:06:36.470374+03:00 pve01 systemd[1]: homelab-backup-audit.service: Failed with result 'exit-code'.\n2026-09-27T19:06:36.470553+03:00 pve01 systemd[1]: Failed to start homelab-backup-audit.service - Homelab unified backup and DR audit.\n2026-09-27T19:06:36.470670+03:00 pve01 systemd[1]: homelab-backup-audit.service: Consumed 2.553s CPU time, 148.5M memory peak.\n2026-09-27T19:36:58.228215+03:00 pve01 systemd[1]: Starting homelab-backup-audit.service - Homelab unified backup and DR audit...\n2026-09-27T19:37:02.093343+03:00 pve01 homelab-backup-audit[3923461]: TARGET|logical_id=app-filebrowser|kind=APP|state=FRESH|decision=SKIP_FRESH|legacy_age_seconds=36405|generation=app-filebrowser-pve01-20260927T063003Z\n2026-09-27T19:37:02.093343+03:00 pve01 homelab-backup-audit[3923461]: TARGET|logical_id=app-hbarhub|kind=APP|state=FRESH|decision=SKIP_FRESH|legacy_age_seconds=36238|generation=app-hbarhub-pve01-20260927T063154Z\n2026-09-27T19:37:02.093343+03:00 pve01 homelab-backup-audit[3923461]: TARGET|logical_id=app-immich|kind=APP|state=FRESH|decision=SKIP_FRESH|legacy_age_seconds=36339|generation=app-immich-pve01-20260927T063041Z\n2026-09-27T19:37:02.093343+03:00 pve01 homelab-backup-audit[3923461]: TARGET|logical_id=app-skladchik-reports-monitor|kind=APP|state=FRESH|decision=SKIP_FRESH|legacy_age_seconds=36386|generation=app-skladchik-reports-monitor-pve01-20260927T063026Z\n2026-09-27T19:37:02.093343+03:00 pve01 homelab-backup-audit[3923461]: TARGET|logical_id=control-bootstrap-v2|kind=CONTROL|state=STALE|age_seconds=222356|generation=control-bootstrap-v2-pve01-20260916T120057Z\n2026-09-27T19:37:02.093343+03:00 pve01 homelab-backup-audit[3923461]: TARGET|logical_id=vm110|kind=VM|state=STALE|source=NONE|v2_age_seconds=273783|legacy_age_seconds=2026649|replica_count=2|state_id=ct110|generation=vm110-pve01-20260904T053821Z\n2026-09-27T19:37:02.093343+03:00 pve01 homelab-backup-audit[3923461]: TARGET|logical_id=vm111|kind=VM|state=STALE|source=NONE|v2_age_seconds=271764|replica_count=2|state_id=ct111\n2026-09-27T19:37:02.093343+03:00 pve01 homelab-backup-audit[3923461]: TARGET|logical_id=vm112|kind=VM|state=STALE|source=NONE|v2_age_seconds=255256|legacy_age_seconds=2065144|replica_count=2|state_id=ct112|generation=vm112-pve01-20260903T185707Z\n2026-09-27T19:37:02.093343+03:00 pve01 homelab-backup-audit[3923461]: TARGET|logical_id=vm113|kind=VM|state=STALE|source=NONE|v2_age_seconds=253237|replica_count=2|state_id=ct113\n2026-09-27T19:37:02.093343+03:00 pve01 homelab-backup-audit[3923461]: TARGET|logical_id=vm130|kind=VM|state=STALE|source=NONE|v2_age_seconds=247847|replica_count=2|state_id=vm130\n2026-09-27T19:37:02.093343+03:00 pve01 homelab-backup-audit[3923461]: TARGET|logical_id=vm150|kind=VM|state=STALE|source=NONE|v2_age_seconds=251299|legacy_age_seconds=2026766|replica_count=2|state_id=vm150|generation=vm150-pve01-20260904T053517Z\n2026-09-27T19:37:02.093343+03:00 pve01 homelab-backup-audit[3923461]: TARGET|logical_id=vm160|kind=VM|state=STALE|source=NONE|v2_age_seconds=246600|replica_count=2|state_id=vm160\n2026-09-27T19:37:02.093343+03:00 pve01 homelab-backup-audit[3923461]: TARGET|logical_id=vm170|kind=VM|state=STALE|source=NONE|v2_age_seconds=223391|legacy_age_seconds=971387|replica_count=2|state_id=vm170|generation=vm170-pve01-20260916T103019Z\n2026-09-27T19:37:02.093711+03:00 pve01 homelab-backup-audit[3923461]: TARGET|logical_id=vm171|kind=VM|state=STALE|source=NONE|v2_age_seconds=227821|legacy_age_seconds=1000919|replica_count=2|state_id=vm171|generation=vm171-pve01-20260916T023018Z\n2026-09-27T19:37:02.093711+03:00 pve01 homelab-backup-audit[3923461]: TARGET|logical_id=vm190|kind=VM|state=STALE|source=NONE|v2_age_seconds=223989|replica_count=2|state_id=vm190\n2026-09-27T19:37:02.093711+03:00 pve01 homelab-backup-audit[3923461]: TARGET|logical_id=vm9130|kind=VM|state=STALE|source=NONE|v2_age_seconds=215246|replica_count=2|state_id=vm9130\n2026-09-27T19:37:02.093711+03:00 pve01 homelab-backup-audit[3923461]: ISSUE|severity=HIGH|code=RPO_BREACH|logical_id=control-bootstrap-v2|root_cause=CONTROL_STATE_NOT_FRESH\n2026-09-27T19:37:02.093711+03:00 pve01 homelab-backup-audit[3923461]: ISSUE|severity=HIGH|code=RPO_BREACH|logical_id=vm110|root_cause=NO_FRESH_V2_OR_SEALED_QUORUM\n2026-09-27T19:37:02.093711+03:00 pve01 homelab-backup-audit[3923461]: ISSUE|severity=HIGH|code=RPO_BREACH|logical_id=vm111|root_cause=NO_FRESH_V2_OR_SEALED_QUORUM\n2026-09-27T19:37:02.093711+03:00 pve01 homelab-backup-audit[3923461]: ISSUE|severity=HIGH|code=RPO_BREACH|logical_id=vm112|root_cause=NO_FRESH_V2_OR_SEALED_QUORUM\n2026-09-27T19:37:02.093711+03:00 pve01 homelab-backup-audit[3923461]: ISSUE|severity=HIGH|code=RPO_BREACH|logical_id=vm113|root_cause=NO_FRESH_V2_OR_SEALED_QUORUM\n2026-09-27T19:37:02.093711+03:00 pve01 homelab-backup-audit[3923461]: ISSUE|severity=HIGH|code=RPO_BREACH|logical_id=vm130|root_cause=NO_FRESH_V2_OR_SEALED_QUORUM\n2026-09-27T19:37:02.093711+03:00 pve01 homelab-backup-audit[3923461]: ISSUE|severity=HIGH|code=RPO_BREACH|logical_id=vm150|root_cause=NO_FRESH_V2_OR_SEALED_QUORUM\n2026-09-27T19:37:02.093711+03:00 pve01 homelab-backup-audit[3923461]: ISSUE|severity=HIGH|code=RPO_BREACH|logical_id=vm160|root_cause=NO_FRESH_V2_OR_SEALED_QUORUM\n2026-09-27T19:37:02.093711+03:00 pve01 homelab-backup-audit[3923461]: ISSUE|severity=HIGH|code=RPO_BREACH|logical_id=vm170|root_cause=NO_FRESH_V2_OR_SEALED_QUORUM\n2026-09-27T19:37:02.093711+03:00 pve01 homelab-backup-audit[3923461]: ISSUE|severity=HIGH|code=RPO_BREACH|logical_id=vm171|root_cause=NO_FRESH_V2_OR_SEALED_QUORUM\n2026-09-27T19:37:02.093711+03:00 pve01 homelab-backup-audit[3923461]: ISSUE|severity=HIGH|code=RPO_BREACH|logical_id=vm190|root_cause=NO_FRESH_V2_OR_SEALED_QUORUM\n2026-09-27T19:37:02.093711+03:00 pve01 homelab-backup-audit[3923461]: ISSUE|severity=HIGH|code=RPO_BREACH|logical_id=vm9130|root_cause=NO_FRESH_V2_OR_SEALED_QUORUM\n2026-09-27T19:37:02.093711+03:00 pve01 homelab-backup-audit[3923461]: SUMMARY|AUDIT_STATUS=OK|BACKUP_STATUS=RED|ACTIVE_COUNT=16|ISSUE_COUNT=12|CLOUD_A=OK|CLOUD_B=OK|CLOUD_B_DRILL=OK|DR_PROVEN=YES|SOURCE_OFFHOST=OK\n2026-09-27T19:37:02.096988+03:00 pve01 systemd[1]: homelab-backup-audit.service: Main process exited, code=exited, status=1/FAILURE\n2026-09-27T19:37:02.097068+03:00 pve01 systemd[1]: homelab-backup-audit.service: Failed with result 'exit-code'.\n2026-09-27T19:37:02.097221+03:00 pve01 systemd[1]: Failed to start homelab-backup-audit.service - Homelab unified backup and DR audit.\n2026-09-27T19:37:02.097338+03:00 pve01 systemd[1]: homelab-backup-audit.service: Consumed 2.622s CPU time, 147.8M memory peak.\n2026-09-27T20:06:11.547120+03:00 pve01 systemd[1]: Starting homelab-backup-audit.service - Homelab unified backup and DR audit...\n2026-09-27T20:06:15.522209+03:00 pve01 homelab-backup-audit[4022565]: TARGET|logical_id=app-filebrowser|kind=APP|state=FRESH|decision=SKIP_FRESH|legacy_age_seconds=38159|generation=app-filebrowser-pve01-20260927T063003Z\n2026-09-27T20:06:15.522209+03:00 pve01 homelab-backup-audit[4022565]: TARGET|logical_id=app-hbarhub|kind=APP|state=FRESH|decision=SKIP_FRESH|legacy_age_seconds=37992|generation=app-hbarhub-pve01-20260927T063154Z\n2026-09-27T20:06:15.522209+03:00 pve01 homelab-backup-audit[4022565]: TARGET|logical_id=app-immich|kind=APP|state=FRESH|decision=SKIP_FRESH|legacy_age_seconds=38093|generation=app-immich-pve01-20260927T063041Z\n2026-09-27T20:06:15.522209+03:00 pve01 homelab-backup-audit[4022565]: TARGET|logical_id=app-skladchik-reports-monitor|kind=APP|state=FRESH|decision=SKIP_FRESH|legacy_age_seconds=38140|generation=app-skladchik-reports-monitor-pve01-20260927T063026Z\n2026-09-27T20:06:15.522209+03:00 pve01 homelab-backup-audit[4022565]: TARGET|logical_id=control-bootstrap-v2|kind=CONTROL|state=STALE|age_seconds=224109|generation=control-bootstrap-v2-pve01-20260916T120057Z\n2026-09-27T20:06:15.522209+03:00 pve01 homelab-backup-audit[4022565]: TARGET|logical_id=vm110|kind=VM|state=STALE|source=NONE|v2_age_seconds=275536|legacy_age_seconds=2028403|replica_count=2|state_id=ct110|generation=vm110-pve01-20260904T053821Z\n2026-09-27T20:06:15.522209+03:00 pve01 homelab-backup-audit[4022565]: TARGET|logical_id=vm111|kind=VM|state=STALE|source=NONE|v2_age_seconds=273517|replica_count=2|state_id=ct111\n2026-09-27T20:06:15.522209+03:00 pve01 homelab-backup-audit[4022565]: TARGET|logical_id=vm112|kind=VM|state=STALE|source=NONE|v2_age_seconds=257009|legacy_age_seconds=2066898|replica_count=2|state_id=ct112|generation=vm112-pve01-20260903T185707Z\n2026-09-27T20:06:15.522209+03:00 pve01 homelab-backup-audit[4022565]: TARGET|logical_id=vm113|kind=VM|state=STALE|source=NONE|v2_age_seconds=254990|replica_count=2|state_id=ct113\n2026-09-27T20:06:15.522209+03:00 pve01 homelab-backup-audit[4022565]: TARGET|logical_id=vm130|kind=VM|state=STALE|source=NONE|v2_age_seconds=249600|replica_count=2|state_id=vm130\n2026-09-27T20:06:15.522209+03:00 pve01 homelab-backup-audit[4022565]: TARGET|logical_id=vm150|kind=VM|state=STALE|source=NONE|v2_age_seconds=253052|legacy_age_seconds=2028519|replica_count=2|state_id=vm150|generation=vm150-pve01-20260904T053517Z\n2026-09-27T20:06:15.522209+03:00 pve01 homelab-backup-audit[4022565]: TARGET|logical_id=vm160|kind=VM|state=STALE|source=NONE|v2_age_seconds=248353|replica_count=2|state_id=vm160\n2026-09-27T20:06:15.522209+03:00 pve01 homelab-backup-audit[4022565]: TARGET|logical_id=vm170|kind=VM|state=STALE|source=NONE|v2_age_seconds=225144|legacy_age_seconds=973140|replica_count=2|state_id=vm170|generation=vm170-pve01-20260916T103019Z\n2026-09-27T20:06:15.522779+03:00 pve01 homelab-backup-audit[4022565]: TARGET|logical_id=vm171|kind=VM|state=STALE|source=NONE|v2_age_seconds=229574|legacy_age_seconds=1002672|replica_count=2|state_id=vm171|generation=vm171-pve01-20260916T023018Z\n2026-09-27T20:06:15.522779+03:00 pve01 homelab-backup-audit[4022565]: TARGET|logical_id=vm190|kind=VM|state=STALE|source=NONE|v2_age_seconds=225742|replica_count=2|state_id=vm190\n2026-09-27T20:06:15.522779+03:00 pve01 homelab-backup-audit[4022565]: TARGET|logical_id=vm9130|kind=VM|state=STALE|source=NONE|v2_age_seconds=216999|replica_count=2|state_id=vm9130\n2026-09-27T20:06:15.522779+03:00 pve01 homelab-backup-audit[4022565]: ISSUE|severity=HIGH|code=RPO_BREACH|logical_id=control-bootstrap-v2|root_cause=CONTROL_STATE_NOT_FRESH\n2026-09-27T20:06:15.522779+03:00 pve01 homelab-backup-audit[4022565]: ISSUE|severity=HIGH|code=RPO_BREACH|logical_id=vm110|root_cause=NO_FRESH_V2_OR_SEALED_QUORUM\n2026-09-27T20:06:15.522779+03:00 pve01 homelab-backup-audit[4022565]: ISSUE|severity=HIGH|code=RPO_BREACH|logical_id=vm111|root_cause=NO_FRESH_V2_OR_SEALED_QUORUM\n2026-09-27T20:06:15.522779+03:00 pve01 homelab-backup-audit[4022565]: ISSUE|severity=HIGH|code=RPO_BREACH|logical_id=vm112|root_cause=NO_FRESH_V2_OR_SEALED_QUORUM\n2026-09-27T20:06:15.522779+03:00 pve01 homelab-backup-audit[4022565]: ISSUE|severity=HIGH|code=RPO_BREACH|logical_id=vm113|root_cause=NO_FRESH_V2_OR_SEALED_QUORUM\n2026-09-27T20:06:15.522779+03:00 pve01 homelab-backup-audit[4022565]: ISSUE|severity=HIGH|code=RPO_BREACH|logical_id=vm130|root_cause=NO_FRESH_V2_OR_SEALED_QUORUM\n2026-09-27T20:06:15.522779+03:00 pve01 homelab-backup-audit[4022565]: ISSUE|severity=HIGH|code=RPO_BREACH|logical_id=vm150|root_cause=NO_FRESH_V2_OR_SEALED_QUORUM\n2026-09-27T20:06:15.522779+03:00 pve01 homelab-backup-audit[4022565]: ISSUE|severity=HIGH|code=RPO_BREACH|logical_id=vm160|root_cause=NO_FRESH_V2_OR_SEALED_QUORUM\n2026-09-27T20:06:15.522779+03:00 pve01 homelab-backup-audit[4022565]: ISSUE|severity=HIGH|code=RPO_BREACH|logical_id=vm170|root_cause=NO_FRESH_V2_OR_SEALED_QUORUM\n2026-09-27T20:06:15.522779+03:00 pve01 homelab-backup-audit[4022565]: ISSUE|severity=HIGH|code=RPO_BREACH|logical_id=vm171|root_cause=NO_FRESH_V2_OR_SEALED_QUORUM\n2026-09-27T20:06:15.522779+03:00 pve01 homelab-backup-audit[4022565]: ISSUE|severity=HIGH|code=RPO_BREACH|logical_id=vm190|root_cause=NO_FRESH_V2_OR_SEALED_QUORUM\n2026-09-27T20:06:15.522779+03:00 pve01 homelab-backup-audit[4022565]: ISSUE|severity=HIGH|code=RPO_BREACH|logical_id=vm9130|root_cause=NO_FRESH_V2_OR_SEALED_QUORUM\n2026-09-27T20:06:15.522779+03:00 pve01 homelab-backup-audit[4022565]: SUMMARY|AUDIT_STATUS=OK|BACKUP_STATUS=RED|ACTIVE_COUNT=16|ISSUE_COUNT=12|CLOUD_A=OK|CLOUD_B=OK|CLOUD_B_DRILL=OK|DR_PROVEN=YES|SOURCE_OFFHOST=OK\n2026-09-27T20:06:15.527700+03:00 pve01 systemd[1]: homelab-backup-audit.service: Main process exited, code=exited, status=1/FAILURE\n2026-09-27T20:06:15.527780+03:00 pve01 systemd[1]: homelab-backup-audit.service: Failed with result 'exit-code'.\n2026-09-27T20:06:15.527939+03:00 pve01 systemd[1]: Failed to start homelab-backup-audit.service - Homelab unified backup and DR audit.\n2026-09-27T20:06:15.528053+03:00 pve01 systemd[1]: homelab-backup-audit.service: Consumed 2.537s CPU time, 148.2M memory peak.\n2026-09-27T20:36:01.195601+03:00 pve01 systemd[1]: Starting homelab-backup-audit.service - Homelab unified backup and DR audit...\n2026-09-27T20:36:05.449739+03:00 pve01 homelab-backup-audit[4111037]: TARGET|logical_id=app-filebrowser|kind=APP|state=FRESH|decision=SKIP_FRESH|legacy_age_seconds=39948|generation=app-filebrowser-pve01-20260927T063003Z\n2026-09-27T20:36:05.449739+03:00 pve01 homelab-backup-audit[4111037]: TARGET|logical_id=app-hbarhub|kind=APP|state=FRESH|decision=SKIP_FRESH|legacy_age_seconds=39781|generation=app-hbarhub-pve01-20260927T063154Z\n2026-09-27T20:36:05.449739+03:00 pve01 homelab-backup-audit[4111037]: TARGET|logical_id=app-immich|kind=APP|state=FRESH|decision=SKIP_FRESH|legacy_age_seconds=39882|generation=app-immich-pve01-20260927T063041Z\n2026-09-27T20:36:05.449739+03:00 pve01 homelab-backup-audit[4111037]: TARGET|logical_id=app-skladchik-reports-monitor|kind=APP|state=FRESH|decision=SKIP_FRESH|legacy_age_seconds=39929|generation=app-skladchik-reports-monitor-pve01-20260927T063026Z\n2026-09-27T20:36:05.449739+03:00 pve01 homelab-backup-audit[4111037]: TARGET|logical_id=control-bootstrap-v2|kind=CONTROL|state=STALE|age_seconds=225899|generation=control-bootstrap-v2-pve01-20260916T120057Z\n2026-09-27T20:36:05.449739+03:00 pve01 homelab-backup-audit[4111037]: TARGET|logical_id=vm110|kind=VM|state=STALE|source=NONE|v2_age_seconds=277326|legacy_age_seconds=2030192|replica_count=2|state_id=ct110|generation=vm110-pve01-20260904T053821Z\n2026-09-27T20:36:05.449739+03:00 pve01 homelab-backup-audit[4111037]: TARGET|logical_id=vm111|kind=VM|state=STALE|source=NONE|v2_age_seconds=275307|replica_count=2|state_id=ct111\n2026-09-27T20:36:05.449739+03:00 pve01 homelab-backup-audit[4111037]: TARGET|logical_id=vm112|kind=VM|state=STALE|source=NONE|v2_age_seconds=258799|legacy_age_seconds=2068687|replica_count=2|state_id=ct112|generation=vm112-pve01-20260903T185707Z\n2026-09-27T20:36:05.449739+03:00 pve01 homelab-backup-audit[4111037]: TARGET|logical_id=vm113|kind=VM|state=STALE|source=NONE|v2_age_seconds=256780|replica_count=2|state_id=ct113\n2026-09-27T20:36:05.449739+03:00 pve01 homelab-backup-audit[4111037]: TARGET|logical_id=vm130|kind=VM|state=STALE|source=NONE|v2_age_seconds=251390|replica_count=2|state_id=vm130\n2026-09-27T20:36:05.449739+03:00 pve01 homelab-backup-audit[4111037]: TARGET|logical_id=vm150|kind=VM|state=STALE|source=NONE|v2_age_seconds=254842|legacy_age_seconds=2030308|replica_count=2|state_id=vm150|generation=vm150-pve01-20260904T053517Z\n2026-09-27T20:36:05.449739+03:00 pve01 homelab-backup-audit[4111037]: TARGET|logical_id=vm160|kind=VM|state=STALE|source=NONE|v2_age_seconds=250143|replica_count=2|state_id=vm160\n2026-09-27T20:36:05.449739+03:00 pve01 homelab-backup-audit[4111037]: TARGET|logical_id=vm170|kind=VM|state=STALE|source=NONE|v2_age_seconds=226934|legacy_age_seconds=974929|replica_count=2|state_id=vm170|generation=vm170-pve01-20260916T103019Z\n2026-09-27T20:36:05.450336+03:00 pve01 homelab-backup-audit[4111037]: TARGET|logical_id=vm171|kind=VM|state=STALE|source=NONE|v2_age_seconds=231364|legacy_age_seconds=1004461|replica_count=2|state_id=vm171|generation=vm171-pve01-20260916T023018Z\n2026-09-27T20:36:05.450336+03:00 pve01 homelab-backup-audit[4111037]: TARGET|logical_id=vm190|kind=VM|state=STALE|source=NONE|v2_age_seconds=227532|replica_count=2|state_id=vm190\n2026-09-27T20:36:05.450336+03:00 pve01 homelab-backup-audit[4111037]: TARGET|logical_id=vm9130|kind=VM|state=STALE|source=NONE|v2_age_seconds=218789|replica_count=2|state_id=vm9130\n2026-09-27T20:36:05.450336+03:00 pve01 homelab-backup-audit[4111037]: ISSUE|severity=HIGH|code=RPO_BREACH|logical_id=control-bootstrap-v2|root_cause=CONTROL_STATE_NOT_FRESH\n2026-09-27T20:36:05.450336+03:00 pve01 homelab-backup-audit[4111037]: ISSUE|severity=HIGH|code=RPO_BREACH|logical_id=vm110|root_cause=NO_FRESH_V2_OR_SEALED_QUORUM\n2026-09-27T20:36:05.450336+03:00 pve01 homelab-backup-audit[4111037]: ISSUE|severity=HIGH|code=RPO_BREACH|logical_id=vm111|root_cause=NO_FRESH_V2_OR_SEALED_QUORUM\n2026-09-27T20:36:05.450336+03:00 pve01 homelab-backup-audit[4111037]: ISSUE|severity=HIGH|code=RPO_BREACH|logical_id=vm112|root_cause=NO_FRESH_V2_OR_SEALED_QUORUM\n2026-09-27T20:36:05.450336+03:00 pve01 homelab-backup-audit[4111037]: ISSUE|severity=HIGH|code=RPO_BREACH|logical_id=vm113|root_cause=NO_FRESH_V2_OR_SEALED_QUORUM\n2026-09-27T20:36:05.450336+03:00 pve01 homelab-backup-audit[4111037]: ISSUE|severity=HIGH|code=RPO_BREACH|logical_id=vm130|root_cause=NO_FRESH_V2_OR_SEALED_QUORUM\n2026-09-27T20:36:05.450336+03:00 pve01 homelab-backup-audit[4111037]: ISSUE|severity=HIGH|code=RPO_BREACH|logical_id=vm150|root_cause=NO_FRESH_V2_OR_SEALED_QUORUM\n2026-09-27T20:36:05.450336+03:00 pve01 homelab-backup-audit[4111037]: ISSUE|severity=HIGH|code=RPO_BREACH|logical_id=vm160|root_cause=NO_FRESH_V2_OR_SEALED_QUORUM\n2026-09-27T20:36:05.450336+03:00 pve01 homelab-backup-audit[4111037]: ISSUE|severity=HIGH|code=RPO_BREACH|logical_id=vm170|root_cause=NO_FRESH_V2_OR_SEALED_QUORUM\n2026-09-27T20:36:05.450336+03:00 pve01 homelab-backup-audit[4111037]: ISSUE|severity=HIGH|code=RPO_BREACH|logical_id=vm171|root_cause=NO_FRESH_V2_OR_SEALED_QUORUM\n2026-09-27T20:36:05.450336+03:00 pve01 homelab-backup-audit[4111037]: ISSUE|severity=HIGH|code=RPO_BREACH|logical_id=vm190|root_cause=NO_FRESH_V2_OR_SEALED_QUORUM\n2026-09-27T20:36:05.450336+03:00 pve01 homelab-backup-audit[4111037]: ISSUE|severity=HIGH|code=RPO_BREACH|logical_id=vm9130|root_cause=NO_FRESH_V2_OR_SEALED_QUORUM\n2026-09-27T20:36:05.450336+03:00 pve01 homelab-backup-audit[4111037]: SUMMARY|AUDIT_STATUS=OK|BACKUP_STATUS=RED|ACTIVE_COUNT=16|ISSUE_COUNT=12|CLOUD_A=OK|CLOUD_B=OK|CLOUD_B_DRILL=OK|DR_PROVEN=YES|SOURCE_OFFHOST=OK\n2026-09-27T20:36:05.453431+03:00 pve01 systemd[1]: homelab-backup-audit.service: Main process exited, code=exited, status=1/FAILURE\n2026-09-27T20:36:05.453517+03:00 pve01 systemd[1]: homelab-backup-audit.service: Failed with result 'exit-code'.\n2026-09-27T20:36:05.453690+03:00 pve01 systemd[1]: Failed to start homelab-backup-audit.service - Homelab unified backup and DR audit.\n2026-09-27T20:36:05.453817+03:00 pve01 systemd[1]: homelab-backup-audit.service: Consumed 2.469s CPU time, 149.1M memory peak.\n2026-09-27T21:05:58.227407+03:00 pve01 systemd[1]: Starting homelab-backup-audit.service - Homelab unified backup and DR audit...\n2026-09-27T21:06:02.093992+03:00 pve01 homelab-backup-audit[16838]: TARGET|logical_id=app-filebrowser|kind=APP|state=FRESH|decision=SKIP_FRESH|legacy_age_seconds=41745|generation=app-filebrowser-pve01-20260927T063003Z\n2026-09-27T21:06:02.093992+03:00 pve01 homelab-backup-audit[16838]: TARGET|logical_id=app-hbarhub|kind=APP|state=FRESH|decision=SKIP_FRESH|legacy_age_seconds=41578|generation=app-hbarhub-pve01-20260927T063154Z\n2026-09-27T21:06:02.093992+03:00 pve01 homelab-backup-audit[16838]: TARGET|logical_id=app-immich|kind=APP|state=FRESH|decision=SKIP_FRESH|legacy_age_seconds=41679|generation=app-immich-pve01-20260927T063041Z\n2026-09-27T21:06:02.093992+03:00 pve01 homelab-backup-audit[16838]: TARGET|logical_id=app-skladchik-reports-monitor|kind=APP|state=FRESH|decision=SKIP_FRESH|legacy_age_seconds=41726|generation=app-skladchik-reports-monitor-pve01-20260927T063026Z\n2026-09-27T21:06:02.093992+03:00 pve01 homelab-backup-audit[16838]: TARGET|logical_id=control-bootstrap-v2|kind=CONTROL|state=STALE|age_seconds=227696|generation=control-bootstrap-v2-pve01-20260916T120057Z\n2026-09-27T21:06:02.093992+03:00 pve01 homelab-backup-audit[16838]: TARGET|logical_id=vm110|kind=VM|state=STALE|source=NONE|v2_age_seconds=279123|legacy_age_seconds=2031989|replica_count=2|state_id=ct110|generation=vm110-pve01-20260904T053821Z\n2026-09-27T21:06:02.093992+03:00 pve01 homelab-backup-audit[16838]: TARGET|logical_id=vm111|kind=VM|state=STALE|source=NONE|v2_age_seconds=277104|replica_count=2|state_id=ct111\n2026-09-27T21:06:02.093992+03:00 pve01 homelab-backup-audit[16838]: TARGET|logical_id=vm112|kind=VM|state=STALE|source=NONE|v2_age_seconds=260596|legacy_age_seconds=2070484|replica_count=2|state_id=ct112|generation=vm112-pve01-20260903T185707Z\n2026-09-27T21:06:02.093992+03:00 pve01 homelab-backup-audit[16838]: TARGET|logical_id=vm113|kind=VM|state=STALE|source=NONE|v2_age_seconds=258577|replica_count=2|state_id=ct113\n2026-09-27T21:06:02.093992+03:00 pve01 homelab-backup-audit[16838]: TARGET|logical_id=vm130|kind=VM|state=STALE|source=NONE|v2_age_seconds=253187|replica_count=2|state_id=vm130\n2026-09-27T21:06:02.093992+03:00 pve01 homelab-backup-audit[16838]: TARGET|logical_id=vm150|kind=VM|state=STALE|source=NONE|v2_age_seconds=256639|legacy_age_seconds=2032105|replica_count=2|state_id=vm150|generation=vm150-pve01-20260904T053517Z\n2026-09-27T21:06:02.093992+03:00 pve01 homelab-backup-audit[16838]: TARGET|logical_id=vm160|kind=VM|state=STALE|source=NONE|v2_age_seconds=251940|replica_count=2|state_id=vm160\n2026-09-27T21:06:02.093992+03:00 pve01 homelab-backup-audit[16838]: TARGET|logical_id=vm170|kind=VM|state=STALE|source=NONE|v2_age_seconds=228731|legacy_age_seconds=976726|replica_count=2|state_id=vm170|generation=vm170-pve01-20260916T103019Z\n2026-09-27T21:06:02.094425+03:00 pve01 homelab-backup-audit[16838]: TARGET|logical_id=vm171|kind=VM|state=STALE|source=NONE|v2_age_seconds=233161|legacy_age_seconds=1006258|replica_count=2|state_id=vm171|generation=vm171-pve01-20260916T023018Z\n2026-09-27T21:06:02.094425+03:00 pve01 homelab-backup-audit[16838]: TARGET|logical_id=vm190|kind=VM|state=STALE|source=NONE|v2_age_seconds=229329|replica_count=2|state_id=vm190\n2026-09-27T21:06:02.094425+03:00 pve01 homelab-backup-audit[16838]: TARGET|logical_id=vm9130|kind=VM|state=STALE|source=NONE|v2_age_seconds=220586|replica_count=2|state_id=vm9130\n2026-09-27T21:06:02.094425+03:00 pve01 homelab-backup-audit[16838]: ISSUE|severity=HIGH|code=RPO_BREACH|logical_id=control-bootstrap-v2|root_cause=CONTROL_STATE_NOT_FRESH\n2026-09-27T21:06:02.094425+03:00 pve01 homelab-backup-audit[16838]: ISSUE|severity=HIGH|code=RPO_BREACH|logical_id=vm110|root_cause=NO_FRESH_V2_OR_SEALED_QUORUM\n2026-09-27T21:06:02.094425+03:00 pve01 homelab-backup-audit[16838]: ISSUE|severity=HIGH|code=RPO_BREACH|logical_id=vm111|root_cause=NO_FRESH_V2_OR_SEALED_QUORUM\n2026-09-27T21:06:02.094425+03:00 pve01 homelab-backup-audit[16838]: ISSUE|severity=HIGH|code=RPO_BREACH|logical_id=vm112|root_cause=NO_FRESH_V2_OR_SEALED_QUORUM\n2026-09-27T21:06:02.094425+03:00 pve01 homelab-backup-audit[16838]: ISSUE|severity=HIGH|code=RPO_BREACH|logical_id=vm113|root_cause=NO_FRESH_V2_OR_SEALED_QUORUM\n2026-09-27T21:06:02.094425+03:00 pve01 homelab-backup-audit[16838]: ISSUE|severity=HIGH|code=RPO_BREACH|logical_id=vm130|root_cause=NO_FRESH_V2_OR_SEALED_QUORUM\n2026-09-27T21:06:02.094425+03:00 pve01 homelab-backup-audit[16838]: ISSUE|severity=HIGH|code=RPO_BREACH|logical_id=vm150|root_cause=NO_FRESH_V2_OR_SEALED_QUORUM\n2026-09-27T21:06:02.094425+03:00 pve01 homelab-backup-audit[16838]: ISSUE|severity=HIGH|code=RPO_BREACH|logical_id=vm160|root_cause=NO_FRESH_V2_OR_SEALED_QUORUM\n2026-09-27T21:06:02.094425+03:00 pve01 homelab-backup-audit[16838]: ISSUE|severity=HIGH|code=RPO_BREACH|logical_id=vm170|root_cause=NO_FRESH_V2_OR_SEALED_QUORUM\n2026-09-27T21:06:02.094425+03:00 pve01 homelab-backup-audit[16838]: ISSUE|severity=HIGH|code=RPO_BREACH|logical_id=vm171|root_cause=NO_FRESH_V2_OR_SEALED_QUORUM\n2026-09-27T21:06:02.094425+03:00 pve01 homelab-backup-audit[16838]: ISSUE|severity=HIGH|code=RPO_BREACH|logical_id=vm190|root_cause=NO_FRESH_V2_OR_SEALED_QUORUM\n2026-09-27T21:06:02.094425+03:00 pve01 homelab-backup-audit[16838]: ISSUE|severity=HIGH|code=RPO_BREACH|logical_id=vm9130|root_cause=NO_FRESH_V2_OR_SEALED_QUORUM\n2026-09-27T21:06:02.094425+03:00 pve01 homelab-backup-audit[16838]: SUMMARY|AUDIT_STATUS=OK|BACKUP_STATUS=RED|ACTIVE_COUNT=16|ISSUE_COUNT=12|CLOUD_A=OK|CLOUD_B=OK|CLOUD_B_DRILL=OK|DR_PROVEN=YES|SOURCE_OFFHOST=OK\n2026-09-27T21:06:02.097889+03:00 pve01 systemd[1]: homelab-backup-audit.service: Main process exited, code=exited, status=1/FAILURE\n2026-09-27T21:06:02.097963+03:00 pve01 systemd[1]: homelab-backup-audit.service: Failed with result 'exit-code'.\n2026-09-27T21:06:02.098141+03:00 pve01 systemd[1]: Failed to start homelab-backup-audit.service - Homelab unified backup and DR audit.\n2026-09-27T21:06:02.098271+03:00 pve01 systemd[1]: homelab-backup-audit.service: Consumed 2.560s CPU time, 148.2M memory peak.\n=== BACKUP_V2_TIMER_JOURNAL_LAST12H ===\n-- No entries --\n=== BACKUP_AUDIT_TIMER_JOURNAL_LAST12H ===\n-- No entries --\n=== HEALTH_FILES ===\n/var/lib/homelab-health/actual-backup.txt|269|2026-07-09T15:53:45.2480051850+0300\n/var/lib/homelab-health/actual-budget-backup.txt|269|2026-07-09T15:53:45.2480051850+0300\n/var/lib/homelab-health/alertmanager-backup.txt|282|2026-07-09T10:50:17.8267126930+0300\n/var/lib/homelab-health/alertmanager-two-cloud-backup.txt|200|2026-07-10T21:46:36.9609141470+0300\n/var/lib/homelab-health/appbackupctl-routing.txt|821|2026-07-13T03:29:40.0025776360+0300\n/var/lib/homelab-health/app-cloud-quorum-cutover.json|642|2026-08-09T03:52:48.2998893820+0300\n/var/lib/homelab-health/app-cloud-quorum-freshness.json|645|2026-08-09T05:01:58.0175936120+0300\n/var/lib/homelab-health/app-stacks-batch-backup.txt|150|2026-07-09T10:22:35.5302603170+0300\n/var/lib/homelab-health/audiobookshelf-backup.txt|238|2026-07-09T21:22:25.6704869300+0300\n/var/lib/homelab-health/authentik-backup.txt|762|2026-08-30T21:08:08.4598216350+0300\n/var/lib/homelab-health/backup-audit.json|4767|2026-09-27T21:19:36.3326216640+0300\n/var/lib/homelab-health/backup-audit-v2.json|4767|2026-09-27T21:19:36.3324532240+0300\n/var/lib/homelab-health/backup-boot-drill.json|198|2026-09-27T06:42:01.0723048770+0300\n/var/lib/homelab-health/backup-coverage-matrix.txt|817|2026-08-30T21:08:08.5395091560+0300\n/var/lib/homelab-health/backup-framework.txt|811|2026-08-30T21:08:08.8508639000+0300\n/var/lib/homelab-health/backup.json|275|2026-07-24T07:04:41.7238021220+0300\n/var/lib/homelab-health/backup-last-run.log|1584|2026-07-24T07:04:41.7134440520+0300\n/var/lib/homelab-health/backup-lock-fd-hardening.json|511|2026-08-10T17:49:25.3726464960+0300\n/var/lib/homelab-health/backup-matrix-cluster-desired-state-sync.txt|887|2026-07-13T20:51:32.4163384480+0300\n/var/lib/homelab-health/backup-matrix-cluster-final-seal.txt|1445|2026-07-13T20:51:32.4223385400+0300\n/var/lib/homelab-health/backup-matrix-cluster-preseal-convergence.txt|943|2026-07-13T20:48:14.6313253050+0300\n/var/lib/homelab-health/backup-matrix-desired-state-persistence.txt|648|2026-07-13T20:40:37.0653547720+0300\n/var/lib/homelab-health/backup-matrix-vm-health-feedback-fix.txt|628|2026-07-13T20:29:02.8967807310+0300\n/var/lib/homelab-health/backup-observability-history.jsonl|567074|2026-09-21T07:07:33.8042913730+0300\n/var/lib/homelab-health/backup-restore-dashboard.txt|847|2026-07-03T00:45:30.9413791610+0300\n/var/lib/homelab-health/backup-retention-safe-gc.json|837|2026-09-27T03:28:46.3398424010+0300\n/var/lib/homelab-health/backup-scheduler-fairness-granularity.json|761|2026-08-10T20:50:58.4167551150+0300\n/var/lib/homelab-health/backup-scheduler-rpo-hardening.json|397|2026-08-10T13:51:49.3759866230+0300\n/var/lib/homelab-health/backup-sla.txt|765|2026-08-30T21:08:08.6016047590+0300\n/var/lib/homelab-health/backup.txt|218|2026-07-24T07:04:41.7214441740+0300\n/var/lib/homelab-health/backup-unified-audit.json|1562|2026-09-21T07:36:42.4120671030+0300\n/var/lib/homelab-health/beszel-backup.txt|269|2026-07-09T11:38:36.1186130800+0300\n/var/lib/homelab-health/beszel-two-cloud-backup.txt|189|2026-07-10T22:05:25.8570406280+0300\n/var/lib/homelab-health/blackbox-exporter-backup.txt|296|2026-07-09T11:04:19.9613236750+0300\n/var/lib/homelab-health/blackbox-exporter-two-cloud-backup.txt|209|2026-07-10T22:20:26.1397323180+0300\n/var/lib/homelab-health/bookstack-backup.txt|218|2026-07-09T20:58:33.5284046710+0300\n/var/lib/homelab-health/cadvisor-backup.txt|275|2026-07-09T11:25:57.2660677240+0300\n/var/lib/homelab-health/calibre-web-backup.txt|225|2026-07-09T21:46:20.9338292150+0300\n/var/lib/homelab-health/cluster-admin-backup-webpanel-final-seal.txt|386|2026-07-09T08:24:54.0720153050+0300\n/var/lib/homelab-health/cluster-admin-incident-engine-backup.txt|249|2026-07-11T02:30:49.6252637080+0300\n/var/lib/homelab-health/cluster-admin-stage1-preapply-backup.txt|926|2026-07-13T03:11:06.7005119340+0300\n/var/lib/homelab-health/cluster-admin-stage2-preapply-backup.txt|1727|2026-07-13T04:24:04.9957556580+0300\n/var/lib/homelab-health/cluster-admin-stage3-postapply-backup.txt|972|2026-07-13T06:44:42.7609957740+0300\n/var/lib/homelab-health/cluster-admin-stage3-preapply-backup.txt|1118|2026-07-13T06:15:56.2396234100+0300\n/var/lib/homelab-health/cluster-admin-stage4f-preapply-backup.txt|692|2026-07-14T10:54:50.6815482590+0300\n/var/lib/homelab-health/cluster-admin-stage4h-collector-baseline-audit.txt|268|2026-07-14T20:29:41.0475984260+0300\n/var/lib/homelab-health/cluster-admin-vm-mail-cloud-backup.txt|217|2026-07-09T08:07:47.2134520460+0300\n/var/lib/homelab-health/control-backup.json|618|2026-09-25T05:51:02.1400147120+0300\n/var/lib/homelab-health/control-bootstrap-cloud-quorum.json|762|2026-08-11T00:11:00.7261255060+0300\n/var/lib/homelab-health/control-bootstrap-v2-cloud-quorum.json|774|2026-08-11T02:50:11.0810440440+0300\n/var/lib/homelab-health/crypto-portfolio-backup.txt|353|2026-07-13T11:12:13.3023976030+0300\n/var/lib/homelab-health/crypto-portfolio-remove-grt-prechange-backup.txt|1647|2026-07-13T08:10:44.7277816120+0300\n/var/lib/homelab-health/crypto-portfolio-remove-grt-recovery-audit.txt|330|2026-07-13T08:39:10.8547948980+0300\n/var/lib/homelab-health/crypto-portfolio-ui-preapply-backup.txt|1851|2026-07-13T10:42:57.1487691660+0300\n/var/lib/homelab-health/deep-service-backup-audit.txt|292|2026-07-10T00:12:45.3264837560+0300\n/var/lib/homelab-health/desired-state-remote-git-audit.txt|643|2026-07-08T12:27:26.7886643440+0300\n/var/lib/homelab-health/dockge-backup.txt|264|2026-07-09T13:12:46.6093796530+0300\n/var/lib/homelab-health/dockge-stacks-backup.txt|271|2026-07-09T13:12:46.6093796530+0300\n/var/lib/homelab-health/dozzle-backup.txt|270|2026-07-09T11:32:11.0687583470+0300\n/var/lib/homelab-health/duty-admin-residual-audit.txt|497|2026-07-08T08:40:40.2615024670+0300\n/var/lib/homelab-health/edge-vm-vzdump-backup.txt|779|2026-08-30T21:08:08.6216014400+0300\n/var/lib/homelab-health/extended-appbackup.txt|785|2026-08-30T21:08:08.6614147780+0300\n/var/lib/homelab-health/filebrowser-backup.txt|706|2026-08-30T21:08:08.3634753160+0300\n/var/lib/homelab-health/final-global-green-audit.txt|918|2026-07-08T10:27:09.8992163430+0300\n/var/lib/homelab-health/final-green-freeze-audit.txt|1001|2026-07-08T10:52:21.5920659640+0300\n/var/lib/homelab-health/gitea-backup.txt|746|2026-08-30T21:08:08.4803668090+0300\n/var/lib/homelab-health/gotify-backup.txt|206|2026-07-09T23:39:37.9114415990+0300\n/var/lib/homelab-health/grafana-backup.txt|294|2026-07-09T10:46:00.9056083920+0300\n/var/lib/homelab-health/hapusya-site-backup-path-mapping.txt|424|2026-07-13T15:10:58.1382215430+0300\n/var/lib/homelab-health/hapusya-site-backup.txt|499|2026-07-13T15:10:58.1372215280+0300\n/var/lib/homelab-health/hapusya-site-preapply-backup.txt|388|2026-07-13T14:03:06.0152234300+0300\n/var/lib/homelab-health/hapusya-site-v2-preapply-backup.txt|533|2026-07-13T14:34:59.2083653510+0300\n/var/lib/homelab-health/hbarhub-cloud-quorum.json|1086|2026-08-09T06:55:29.6374215870+0300\n/var/lib/homelab-health/healthchecks-backup.txt|265|2026-07-09T11:51:31.1083861380+0300\n/var/lib/homelab-health/homeassistant-backup.txt|236|2026-07-09T22:04:04.0733864250+0300\n/var/lib/homelab-health/homebox-backup.txt|251|2026-07-09T19:01:20.7901933280+0300\n/var/lib/homelab-health/homelab-backup-baseline.txt|2679|2026-06-17T23:02:13.9525590360+0300\n/var/lib/homelab-health/homepage-homelab-router-audit/homepage-homelab-router-audit-core-apps-live-homepage.txt|21247|2026-07-02T23:09:46.5463851050+0300\n/var/lib/homelab-health/homepage-homelab-router-audit/homepage-homelab-router-audit-edge-vm.txt|94629|2026-07-02T23:09:35.7812228200+0300\n/var/lib/homelab-health/homepage-homelab-router-audit/homepage-homelab-router-audit-monitoring.txt|1829|2026-07-02T23:09:57.2135459070+0300\n/var/lib/homelab-health/immich-backup.txt|278|2026-07-09T23:09:25.0745502100+0300\n/var/lib/homelab-health/immich-media-backup.txt|726|2026-08-30T21:08:08.9945117990+0300\n/var/lib/homelab-health/independent-external-runner-audit.txt|762|2026-07-08T12:13:28.4829706890+0300\n/var/lib/homelab-health/it-tools-backup.txt|225|2026-07-09T22:13:14.6980274280+0300\n/var/lib/homelab-health/jellyfin-backup.txt|214|2026-07-09T21:16:17.6627935760+0300\n/var/lib/homelab-health/karakeep-backup.txt|214|2026-07-09T22:28:35.5724369860+0300\n/var/lib/homelab-health/legacy-monitoring-backups-migrated.txt|151|2026-07-10T23:00:03.1168349530+0300\n/var/lib/homelab-health/linkding-backup.txt|214|2026-07-09T20:00:19.8381943590+0300\n/var/lib/homelab-health/live-tail-audit.txt|260|2026-07-08T13:48:38.7184424100+0300\n/var/lib/homelab-health/mealie-backup.txt|250|2026-07-09T19:17:35.0170448070+0300\n/var/lib/homelab-health/memos-backup.txt|664|2026-08-30T21:08:09.0152895290+0300\n/var/lib/homelab-health/minio-backup.txt|245|2026-07-09T15:13:16.8761117060+0300\n/var/lib/homelab-health/minio-console-backup.txt|245|2026-07-09T15:13:16.8761117060+0300\n/var/lib/homelab-health/n8n-backup.txt|194|2026-07-09T22:39:24.2375519320+0300\n/var/lib/homelab-health/netbird-vps-backup.txt|312|2026-07-01T04:31:05.4336469050+0300\n/var/lib/homelab-health/netbox-backup.txt|252|2026-07-09T13:23:55.6935309890+0300\n/var/lib/homelab-health/node-exporter-backup.txt|331|2026-07-09T11:14:05.4352326180+0300\n/var/lib/homelab-health/node-red-backup.txt|214|2026-07-09T22:46:45.7324363630+0300\n/var/lib/homelab-health/npmplus-edge-backup.txt|267|2026-07-09T13:02:56.5714256630+0300\n/var/lib/homelab-health/npmplus-kuma-config-backup.txt|819|2026-08-30T21:08:08.4404105770+0300\n/var/lib/homelab-health/ntfy-backup.txt|198|2026-07-09T23:39:41.3274938750+0300\n/var/lib/homelab-health/p1-safe-data-backup.txt|198|2026-07-07T01:09:37.3328266250+0300\n/var/lib/homelab-health/p2-media-backup.txt|269|2026-07-07T03:57:33.0001246560+0300\n/var/lib/homelab-health/paperless-backup.txt|684|2026-07-18T01:52:29.8931662090+0300\n/var/lib/homelab-health/paperless-core-guard-audit.txt|426|2026-07-08T08:27:02.9011355390+0300\n/var/lib/homelab-health/prometheus-npmplus-kuma-final-repair-20260709T072619Z/npmplus-kuma-config-backup.txt.bak|299|2026-07-08T07:58:18.9509332240+0300\n/var/lib/homelab-health/prometheus-npmplus-kuma-supersede-repair-20260709T073019Z/npmplus-kuma-config-backup.txt.bak|90|2026-07-09T10:26:20.1729271960+0300\n/var/lib/homelab-health/prometheus-stale-repair-20260709T071928Z/app-stacks-batch-backup.txt.bak|708|2026-06-17T22:58:22.7151498450+0300\n/var/lib/homelab-health/prometheus-stale-repair-20260709T071928Z/authentik-backup.txt.bak|239|2026-07-02T04:56:59.8937654010+0300\n/var/lib/homelab-health/prometheus-stale-repair-20260709T071928Z/gitea-backup.txt.bak|253|2026-07-02T05:13:41.7132409470+0300\n/var/lib/homelab-health/prometheus-stale-repair-20260709T071928Z/immich-media-backup.txt.bak|360|2026-06-30T08:15:40.0322698110+0300\n/var/lib/homelab-health/prometheus-stale-repair-20260709T071928Z/memos-backup.txt.bak|229|2026-07-02T08:37:15.3995135020+0300\n/var/lib/homelab-health/prometheus-stale-repair-20260709T071928Z/paperless-backup.txt.bak|247|2026-07-01T09:06:29.8668525040+0300\n/var/lib/homelab-health/prometheus-stale-repair-20260709T071928Z/vaultwarden-backup.txt.bak|249|2026-07-02T05:31:55.2819771530+0300\n/var/lib/homelab-health/proxmox-pve01-backup.txt|276|2026-07-09T15:29:41.9851382980+0300\n/var/lib/homelab-health/pve01-backup.txt|276|2026-07-09T15:29:41.9851382980+0300\n/var/lib/homelab-health/remote-failed-unit-audit.txt|337|2026-07-08T08:20:29.6041867030+0300\n/var/lib/homelab-health/review-surface-registry-audit.txt|645|2026-07-08T09:20:13.6454507410+0300\n/var/lib/homelab-health/scrutiny-cloud-quorum.json|1114|2026-08-09T20:44:13.9730975280+0300\n/var/lib/homelab-health/searxng-backup.txt|278|2026-07-09T12:39:46.4043274480+0300\n=== HEALTH_FILE_BEGIN=/var/lib/homelab-health/actual-backup.txt ===\nHEALTH_FILE_SHA256=72d1b31e22e22ac91af66e3d8ae46b20b3b9297809ace524eece22031458fb05\nSTATUS=OK TS=2026-07-09T12:53:43Z TYPE=actual-budget-backup JOB=homelab-pve01-app-actual-budget-20260709T051713Z SOURCE=latest-appbackup SIZE=2011 LOCAL_BACKUP_DELETED=true JSON=/var/lib/homelab-backup/apps/latest-actual-budget.json NOTE=service-readiness-backup-proof\n=== HEALTH_FILE_END=/var/lib/homelab-health/actual-backup.txt ===\n=== HEALTH_FILE_BEGIN=/var/lib/homelab-health/actual-budget-backup.txt ===\nHEALTH_FILE_SHA256=72d1b31e22e22ac91af66e3d8ae46b20b3b9297809ace524eece22031458fb05\nSTATUS=OK TS=2026-07-09T12:53:43Z TYPE=actual-budget-backup JOB=homelab-pve01-app-actual-budget-20260709T051713Z SOURCE=latest-appbackup SIZE=2011 LOCAL_BACKUP_DELETED=true JSON=/var/lib/homelab-backup/apps/latest-actual-budget.json NOTE=service-readiness-backup-proof\n=== HEALTH_FILE_END=/var/lib/homelab-health/actual-budget-backup.txt ===\n=== HEALTH_FILE_BEGIN=/var/lib/homelab-health/alertmanager-backup.txt ===\nHEALTH_FILE_SHA256=f5a8a0ad29606ebbdcdcb52a997e9ee07ddec9ab7eab6bb0932c3f4e14eba97a\nSTATUS=OK TS=2026-07-09T07:50:16Z TYPE=alertmanager-backup JOB=homelab-pve01-app-alertmanager-20260709T075016Z SOURCE=alertmanager_config SIZE=1842 SHA256=58fb1b3467a962acff44bf75cb274e3a17c06afdbd3a25314a904f75c8048728 LOCAL_BACKUP_DELETED=true NOTE=service-readiness-backup-proof\n=== HEALTH_FILE_END=/var/lib/homelab-health/alertmanager-backup.txt ===\n=== HEALTH_FILE_BEGIN=/var/lib/homelab-health/alertmanager-two-cloud-backup.txt ===\nHEALTH_FILE_SHA256=d90562fac18f643e765e60e54c673839c4ea57e580896241beb0ecc0ea45dea2\nSTATUS=OK TS=2026-07-10T18:46:36Z TYPE=alertmanager-two-cloud-backup BAD=0 JOB=homelab-pve01-app-alertmanager-20260710T184605Z ARCHIVE_SIZE_BYTES=1107 LOCAL_STAGING_DELETED=true OFFHOST=OK RESTORE=OK\n=== HEALTH_FILE_END=/var/lib/homelab-health/alertmanager-two-cloud-backup.txt ===\n=== HEALTH_FILE_BEGIN=/var/lib/homelab-health/appbackupctl-routing.txt ===\nHEALTH_FILE_SHA256=d8ddbdb46b42bcefb4f03b50ef4b88bdc5e3cd1cea087dd035fd90fd78e1a252\nSTATUS=OK TS=2026-07-13T00:29:36Z TYPE=appbackupctl-routing BAD=0 RESULT=APPLIED PRODUCTION_CHANGED=BACKUP_CLI_ROUTING_AND_DESIRED_STATE_ONLY PRODUCTION_DATABASE_CHANGED=NO PRODUCTION_SCHEMA_CHANGED=NO SERVICE_RESTARTED=NO CLOUD_WRITE_RUN=NO DEFAULT_ROUTE=dockge-stacks CLUSTER_ADMIN_ROUTE=homelab-cluster-admin-incident-engine-backup.service UNSUPPORTED_TARGET_POLICY=REFUSE_RC_2 ROUTE_TEST_DOCKGE=OK ROUTE_TEST_CLUSTER_ADMIN=OK ROUTE_TEST_DEFAULT=OK ROUTE_TEST_UNSUPPORTED=OK FRAMEWORK_CHECK=OK UNSUPPORTED_ROUTE_BACKUP_CREATED=NO LIVE_MATCH_DESIRED_STATE=YES PVE01_FAILED_UNITS=0 OVERALL=OK DUTY_ADMIN=OK STAGE1_CLOSED=YES STAGE2_READY=YES OLD_HEAD=bd5eb856a8d61a5fb83c2bcaf74cb8ac98f075c5 NEW_HEAD=4d0d03395d2baf4024ad7c9d5870f21bdaee9f99 CHANGE_SET=/var/lib/homelab-change-sets/appbackupctl-routing/20260713T002936Z\n=== HEALTH_FILE_END=/var/lib/homelab-health/appbackupctl-routing.txt ===\n=== HEALTH_FILE_BEGIN=/var/lib/homelab-health/app-cloud-quorum-cutover.json ===\nHEALTH_FILE_SHA256=e3a13d5865a12e757e07441db761bd70bd8732a4ebc8c7baa6b5ee3f194747a2\n=== HEALTH_FILE_END=/var/lib/homelab-health/app-cloud-quorum-cutover.json ===\n=== HEALTH_FILE_BEGIN=/var/lib/homelab-health/app-cloud-quorum-freshness.json ===\nHEALTH_FILE_SHA256=9edfa77eba5184eb88c5374dc4f662e9d730d2bfbc0b8197b7eb377064f50c2e\n=== HEALTH_FILE_END=/var/lib/homelab-health/app-cloud-quorum-freshness.json ===\n=== HEALTH_FILE_BEGIN=/var/lib/homelab-health/app-stacks-batch-backup.txt ===\nHEALTH_FILE_SHA256=9218b8b34426e4ce79310c8713e165e9e1ebee79f426f29eb2efe155076b3c36\nSTATUS=OK TS=2026-07-09T07:19:28Z TYPE=app-stacks-batch-backup SOURCE=backup-sla STATUS_SOURCE=OK NOTE=legacy-health-refresh-for-prometheus-readiness\n=== HEALTH_FILE_END=/var/lib/homelab-health/app-stacks-batch-backup.txt ===\n=== HEALTH_FILE_BEGIN=/var/lib/homelab-health/audiobookshelf-backup.txt ===\nHEALTH_FILE_SHA256=fb81212dd08251ede49f921b0fb61b86a8f4446af80bdd42172acbbaf60b8e32\nSTATUS=OK TS=2026-07-09T18:22:24Z TYPE=audiobookshelf-backup BAD=0 APP=audiobookshelf JOB=homelab-pve01-app-audiobookshelf-20260709T051713Z SIZE=23094 LOCAL_BACKUP_DELETED=true JSON=/var/lib/homelab-backup/apps/latest-audiobookshelf.json\n=== HEALTH_FILE_END=/var/lib/homelab-health/audiobookshelf-backup.txt ===\n=== HEALTH_FILE_BEGIN=/var/lib/homelab-health/authentik-backup.txt ===\nHEALTH_FILE_SHA256=8888712fdc8c5fd18ef0b691eb5d379fbd71af8f5dbda4e917b5a1493d12c046\nSTATUS=FAIL\nSERVICE=homelab-appbackup-postgres-batch.service\n=== HEALTH_FILE_END=/var/lib/homelab-health/authentik-backup.txt ===\n=== HEALTH_FILE_BEGIN=/var/lib/homelab-health/backup-audit.json ===\nHEALTH_FILE_SHA256=166a7a7128bfafdfc61fb07b6a2ed5b4e5b530dd122d767e1a87d743b8d8bf47\n=== HEALTH_FILE_END=/var/lib/homelab-health/backup-audit.json ===\n=== HEALTH_FILE_BEGIN=/var/lib/homelab-health/backup-audit-v2.json ===\nHEALTH_FILE_SHA256=166a7a7128bfafdfc61fb07b6a2ed5b4e5b530dd122d767e1a87d743b8d8bf47\n=== HEALTH_FILE_END=/var/lib/homelab-health/backup-audit-v2.json ===\n=== HEALTH_FILE_BEGIN=/var/lib/homelab-health/backup-boot-drill.json ===\nHEALTH_FILE_SHA256=0f14d45a32a4d83bc1d80c212e9ba1f6e5dfe8913572e98366951dae7602fe32\n=== HEALTH_FILE_END=/var/lib/homelab-health/backup-boot-drill.json ===\n=== HEALTH_FILE_BEGIN=/var/lib/homelab-health/backup-coverage-matrix.txt ===\nHEALTH_FILE_SHA256=48b3b20a0dc225b93e0f7b8b1c2746649eb6f965d12f996030cc8ec8791604ff\nSTATUS=FAIL\nSERVICE=homelab-backup-coverage-matrix.service\n=== HEALTH_FILE_END=/var/lib/homelab-health/backup-coverage-matrix.txt ===\n=== HEALTH_FILE_BEGIN=/var/lib/homelab-health/backup-framework.txt ===\nHEALTH_FILE_SHA256=192caeb6ecfd0d386aa32fcf838229854ea73f3abb7d46343cd8f1b4acf7b2ab\nSTATUS=FAIL\nSERVICE=homelab-verified-backup-health.service\n=== HEALTH_FILE_END=/var/lib/homelab-health/backup-framework.txt ===\n=== HEALTH_FILE_BEGIN=/var/lib/homelab-health/backup.json ===\nHEALTH_FILE_SHA256=550e7a326c46e3e765a6db01da2ddcaddd83808adfa638d980685286bebb45cb\n=== HEALTH_FILE_END=/var/lib/homelab-health/backup.json ===\n=== HEALTH_FILE_BEGIN=/var/lib/homelab-health/backup-last-run.log ===\nHEALTH_FILE_SHA256=8618b97d2ffa65b7cc2218710c2add4283285038eaca633a7bffbda898d1e5c7\nSTATUS=OK\n=== HEALTH_FILE_END=/var/lib/homelab-health/backup-last-run.log ===\n=== HEALTH_FILE_BEGIN=/var/lib/homelab-health/backup-lock-fd-hardening.json ===\nHEALTH_FILE_SHA256=d64d18259e58525a9549f6d2b40b331ea6cc7b7057fd17050aebc585d73731a5\n=== HEALTH_FILE_END=/var/lib/homelab-health/backup-lock-fd-hardening.json ===\n=== HEALTH_FILE_BEGIN=/var/lib/homelab-health/backup-matrix-cluster-desired-state-sync.txt ===\nHEALTH_FILE_SHA256=c2530de4aaee5f4c2746d4e97b7e6d9ab70c3f4059afc9bacc75fd5e1980d659\nSTATUS=OK TS=2026-07-13T17:51:31Z TYPE=backup-matrix-cluster-desired-state-sync BAD=0 PRE_SYNC_HEAD=af26ec3c4829b1330d49656205ac580ce1706263 GENERATED_SYNC_HEAD=597119391e7b265b85fd9a76644e4e33af47e469 GENERATED_SYNC_MODE=NEW_GENERATED_COMMIT GENERATED_SYNC_COMMIT_DELTA=1 MATRIX_STATUS=OK JOBS_TOTAL=35 JOBS_OK=31 JOBS_BAD=0 JOBS_UNMAPPED=0 JOBS_DISABLED=4 CLUSTER_PASSPORT=OK FINAL_READINESS=OK OVERALL=OK CLUSTER_ADMIN=OK PROBE_OK=4 PROBE_BAD=0 FAILED_UNITS=0 DESIRED_STATE_DIRTY=0 MATRIX_SHA256=7613bcb25d32e61fac114da13af81e38354ec22a012a6deeaa168ee4cc454f87 MATRIX_STATE_SHA256=14a31112aac5d577ae01df567921b093b2fedcf7189c4cc8f009216ee0749380 PRESEAL_SHA256=7ea1f710cd311bd51dba05a313b4c540f57d97407f008881e502fc213b4b3c99 BACKUP_RUN=NO RESTORE_RUN=NO CLOUD_WRITE_RUN=NO RETENTION_RUN=NO EVIDENCE_ROOT=/var/lib/homelab-change-sets/backup-matrix-cluster-final-seal/20260713T175131Z\n=== HEALTH_FILE_END=/var/lib/homelab-health/backup-matrix-cluster-desired-state-sync.txt ===\n=== HEALTH_FILE_BEGIN=/var/lib/homelab-health/backup-matrix-cluster-final-seal.txt ===\nHEALTH_FILE_SHA256=dcd06c2ff207c2922fc68d4df4b42ffa4b6680785e532783772e764feb828aa1\nSTATUS=OK TS=2026-07-13T17:51:31Z TYPE=backup-matrix-cluster-final-seal BAD=0 CURRENT_STAGE_COMPLETE=YES MATRIX_STATUS=OK JOBS_TOTAL=35 JOBS_OK=31 JOBS_BAD=0 JOBS_UNMAPPED=0 JOBS_DISABLED=4 READ_WRITE_OVERLAP=0 VM_BACKUP_HEALTH=OK VM_FULL_BACKUP=OK EDGE_VM_CANONICAL_BACKUP=homelab-edge-vm-offhost-freshness.timer OLD_EDGE_TIMER_REENABLED=NO CLUSTER_PASSPORT=OK FINAL_READINESS=OK FINAL_READINESS_PASS=53 FINAL_READINESS_FAIL=0 OVERALL=OK CLUSTER_ADMIN=OK PROBE_OK=4 PROBE_BAD=0 WEBPANEL=OK FAILED_UNITS=0 CLUSTER_NODES=3 QUORATE=YES GENERATED_SYNC_HEAD=597119391e7b265b85fd9a76644e4e33af47e469 DESIRED_STATE_DIRTY=0 MATRIX_SHA256=7613bcb25d32e61fac114da13af81e38354ec22a012a6deeaa168ee4cc454f87 MATRIX_STATE_SHA256=14a31112aac5d577ae01df567921b093b2fedcf7189c4cc8f009216ee0749380 CLUSTER_PASSPORT_SHA256=1b8b924ae0e5ce6872fe5671318094ce494806c2db7efe28299b5ff49adc0d0d FINAL_READINESS_SHA256=ac5159fa8c497afe021b5cb232f08cfec0e1a4d516d8aae966ba03f7034f1412 OVERALL_SHA256=6ae529bfdf5811f686d3b53978f453ce4f8757c74fc1be105de219b13a61ba46 PRESEAL_SHA256=7ea1f710cd311bd51dba05a313b4c540f57d97407f008881e502fc213b4b3c99 EVIDENCE_MANIFEST_SHA256=b4c68312026e1328b208a74090891f4809ab31ec69069e94a3d6902429bf3566 BACKUP_RUN=NO RESTORE_RUN=NO CLOUD_WRITE_RUN=NO RETENTION_RUN=NO NEXT_ACTION=AUDIT_AND_MIGRATE_SPECIAL_VM_EMERGENCY_AND_NON_APP_BACKUP_FAMILIES EVIDENCE_ROOT=/var/lib/homelab-change-sets/backup-matrix-cluster-final-seal/20260713T175131Z\n=== HEALTH_FILE_END=/var/lib/homelab-health/backup-matrix-cluster-final-seal.txt ===\n=== HEALTH_FILE_BEGIN=/var/lib/homelab-health/backup-matrix-cluster-preseal-convergence.txt ===\nHEALTH_FILE_SHA256=7ea1f710cd311bd51dba05a313b4c540f57d97407f008881e502fc213b4b3c99\nSTATUS=OK TS=2026-07-13T17:48:14Z TYPE=backup-matrix-cluster-preseal-convergence BAD=0 MATRIX_STATUS=OK JOBS_TOTAL=35 JOBS_BAD=0 JOBS_UNMAPPED=0 JOBS_DISABLED=4 CLUSTER_PASSPORT=OK FINAL_READINESS=OK OVERALL=OK CLUSTER_ADMIN=OK PROBE_OK=4 PROBE_BAD=0 WEBPANEL=OK FAILED_UNITS=0 DESIRED_STATE_HEAD=af26ec3c4829b1330d49656205ac580ce1706263 DESIRED_STATE_DIRTY=0 MATRIX_SHA256=7613bcb25d32e61fac114da13af81e38354ec22a012a6deeaa168ee4cc454f87 MATRIX_STATE_SHA256=3791fa78cdfb56cd7027f89350dff245abcffc4f935adfc336ceeea00854ac89 CLUSTER_PASSPORT_SHA256=1b8b924ae0e5ce6872fe5671318094ce494806c2db7efe28299b5ff49adc0d0d FINAL_READINESS_SHA256=ac5159fa8c497afe021b5cb232f08cfec0e1a4d516d8aae966ba03f7034f1412 OVERALL_SHA256=6ae529bfdf5811f686d3b53978f453ce4f8757c74fc1be105de219b13a61ba46 BACKUP_RUN=NO RESTORE_RUN=NO CLOUD_WRITE_RUN=NO RETENTION_RUN=NO EVIDENCE_ROOT=/var/lib/homelab-change-sets/backup-matrix-cluster-preseal-resume/20260713T174748Z\n=== HEALTH_FILE_END=/var/lib/homelab-health/backup-matrix-cluster-preseal-convergence.txt ===\n=== HEALTH_FILE_BEGIN=/var/lib/homelab-health/backup-matrix-desired-state-persistence.txt ===\nHEALTH_FILE_SHA256=3d5bdf5d8ec15131c0d801287f324cbe0b6099e1fd079776ce0e3df8a5fa6144\nSTATUS=OK TS=2026-07-13T17:40:37Z TYPE=backup-matrix-desired-state-persistence BAD=0 GENERATED_HEAD=af26ec3c4829b1330d49656205ac580ce1706263 GENERATED_PARENT=25568fab24c0594418b3676dc511c8234b4e1ae5 GENERATOR_SHA256=19da7f049b4f7f7286faf292c5419c37cc1e1768c2d8fe36b257ab0cf9c18874 MATRIX_SHA256=7613bcb25d32e61fac114da13af81e38354ec22a012a6deeaa168ee4cc454f87 DESIRED_MATRIX_SHA256=7613bcb25d32e61fac114da13af81e38354ec22a012a6deeaa168ee4cc454f87 MATRIX_STATUS=OK JOBS_BAD=0 FAILED_UNITS=0 BACKUP_RUN=NO RESTORE_RUN=NO CLOUD_WRITE_RUN=NO RETENTION_RUN=NO ROLLBACK=/var/lib/homelab-incidents/backup-matrix-desired-state-persistence-20260713T174036Z\n=== HEALTH_FILE_END=/var/lib/homelab-health/backup-matrix-desired-state-persistence.txt ===\n=== HEALTH_FILE_BEGIN=/var/lib/homelab-health/backup-matrix-vm-health-feedback-fix.txt ===\nHEALTH_FILE_SHA256=b359a93e09405221e25670600e4b45503ac30c7a8ada2f4e06f0cd9734a6e803\nSTATUS=OK TS=2026-07-13T17:29:02Z TYPE=backup-matrix-vm-health-feedback-fix BAD=0 VM_BACKUP_HEALTH_TIMER=homelab-edge-vm-offhost-freshness.timer OLD_TIMER_REENABLED=NO MATRIX_STATUS=OK JOBS_TOTAL=35 JOBS_BAD=0 JOBS_UNMAPPED=0 JOBS_DISABLED=4 READ_WRITE_OVERLAP=0 HEAVY_BACKUP_RUN=NO LIVE_SCRIPT_SHA256=a795ad5cacd48ac72e85c3a7908ad456d1e7c563ef4399e6957725146463faf2 MATRIX_CONFIG_SHA256=7613bcb25d32e61fac114da13af81e38354ec22a012a6deeaa168ee4cc454f87 MATRIX_STATE_SHA256=75f8c749e25df7842ea3be2679119b922c94c2f5ea99700b56c823cfbaedd539 ROLLBACK=/var/lib/homelab-incidents/vm-backup-health-matrix-feedback-fix-20260713T172901Z\n=== HEALTH_FILE_END=/var/lib/homelab-health/backup-matrix-vm-health-feedback-fix.txt ===\n=== HEALTH_FILE_BEGIN=/var/lib/homelab-health/backup-observability-history.jsonl ===\nHEALTH_FILE_SHA256=24fa8197552d64778c83071fb94a64accd398075ce5d1e675dcdf6c97a84c36b\n=== HEALTH_FILE_END=/var/lib/homelab-health/backup-observability-history.jsonl ===\n=== HEALTH_FILE_BEGIN=/var/lib/homelab-health/backup-restore-dashboard.txt ===\nHEALTH_FILE_SHA256=51b95b7465dc040ff080c8a8341b23c9c0fdd90cfe0675ccd3f705b55590d815\nSTATUS=OK\n=== HEALTH_FILE_END=/var/lib/homelab-health/backup-restore-dashboard.txt ===\n=== HEALTH_FILE_BEGIN=/var/lib/homelab-health/backup-retention-safe-gc.json ===\nHEALTH_FILE_SHA256=429bf10cf8e0315c9e9257288f59297540e3dc4ba2a940a304bf21ba642cdfb2\n=== HEALTH_FILE_END=/var/lib/homelab-health/backup-retention-safe-gc.json ===\n=== HEALTH_FILE_BEGIN=/var/lib/homelab-health/backup-scheduler-fairness-granularity.json ===\nHEALTH_FILE_SHA256=5ae14f32dd777dbf4c6dee305db5767e69b9d47edac900d014ad243d8b108fbb\n=== HEALTH_FILE_END=/var/lib/homelab-health/backup-scheduler-fairness-granularity.json ===\n=== HEALTH_FILE_BEGIN=/var/lib/homelab-health/backup-scheduler-rpo-hardening.json ===\nHEALTH_FILE_SHA256=e73927d669e1d066d03cd711449f9533ce018da041a86432c8550624a5a6c55f\n=== HEALTH_FILE_END=/var/lib/homelab-health/backup-scheduler-rpo-hardening.json ===\n=== HEALTH_FILE_BEGIN=/var/lib/homelab-health/backup-sla.txt ===\nHEALTH_FILE_SHA256=4762bb7cfb98ab1311adbd1e80287f7e18f79983656a888a056ed730ecdf0372\nSTATUS=FAIL\nSERVICE=homelab-backup-sla-health.service\n=== HEALTH_FILE_END=/var/lib/homelab-health/backup-sla.txt ===\n=== HEALTH_FILE_BEGIN=/var/lib/homelab-health/backup.txt ===\nHEALTH_FILE_SHA256=88d791f9955261ebe5a65303dc418c70dca25ba23c29a92769a6785a9cd9e5bb\nSTATUS=OK\n=== HEALTH_FILE_END=/var/lib/homelab-health/backup.txt ===\n=== HEALTH_FILE_BEGIN=/var/lib/homelab-health/backup-unified-audit.json ===\nHEALTH_FILE_SHA256=5da55c119b77511b150a6c2c7380842551293e5d3d12e807ab25291a4d9031b6\n=== HEALTH_FILE_END=/var/lib/homelab-health/backup-unified-audit.json ===\n=== HEALTH_FILE_BEGIN=/var/lib/homelab-health/beszel-backup.txt ===\nHEALTH_FILE_SHA256=951a25a876714a6b36934a96ae7f85bab06b480633c052b0850ba02d5e0e106c\nSTATUS=OK TS=2026-07-09T08:38:10Z TYPE=beszel-backup JOB=homelab-pve01-app-beszel-20260709T083810Z SOURCE=beszel_stack_data SIZE=20030 SHA256=a3d7069dce01b7e7b336268cfe383dc1b0842a974bd5dc9f455442ed86c912e4 LOCAL_BACKUP_DELETED=true NOTE=service-readiness-backup-proof\n=== HEALTH_FILE_END=/var/lib/homelab-health/beszel-backup.txt ===\n=== HEALTH_FILE_BEGIN=/var/lib/homelab-health/beszel-two-cloud-backup.txt ===\nHEALTH_FILE_SHA256=31278a684937710c66cdabb2c4eff0c0fda078e7fef976ab8f4c49ea5778a5ca\nSTATUS=OK TS=2026-07-10T19:05:25Z TYPE=beszel-two-cloud-backup BAD=0 JOB=homelab-pve01-app-beszel-20260710T190453Z ARCHIVE_SIZE_BYTES=20068 LOCAL_STAGING_DELETED=true OFFHOST=OK RESTORE=OK\n=== HEALTH_FILE_END=/var/lib/homelab-health/beszel-two-cloud-backup.txt ===\n=== HEALTH_FILE_BEGIN=/var/lib/homelab-health/blackbox-exporter-backup.txt ===\nHEALTH_FILE_SHA256=2c46d63ab44ad8bd8f161a547103d8aef937643044b8b326e2b1ff609e9178d0\nSTATUS=OK TS=2026-07-09T08:04:14Z TYPE=blackbox-exporter-backup JOB=homelab-pve01-app-blackbox-exporter-20260709T080414Z SOURCE=blackbox_exporter_config SIZE=512 SHA256=31d9f2a61d820629c0e173c0e1a24cd65e24d1ef55ba0670d7fda06225cb8146 LOCAL_BACKUP_DELETED=true NOTE=service-readiness-backup-proof\n=== HEALTH_FILE_END=/var/lib/homelab-health/blackbox-exporter-backup.txt ===\n=== HEALTH_FILE_BEGIN=/var/lib/homelab-health/blackbox-exporter-two-cloud-backup.txt ===\nHEALTH_FILE_SHA256=ab822f689cc4b7c38a0eed3c6a3164993ceb54fa05033250c68d934d3df0f259\nSTATUS=OK TS=2026-07-10T19:20:26Z TYPE=blackbox-exporter-two-cloud-backup BAD=0 JOB=homelab-pve01-app-blackbox-exporter-20260710T191958Z ARCHIVE_SIZE_BYTES=592 LOCAL_STAGING_DELETED=true OFFHOST=OK RESTORE=OK\n=== HEALTH_FILE_END=/var/lib/homelab-health/blackbox-exporter-two-cloud-backup.txt ===\n=== HEALTH_FILE_BEGIN=/var/lib/homelab-health/bookstack-backup.txt ===\nHEALTH_FILE_SHA256=80a1b54e2027c39a6b2c298e558d1352b976e0cd1795cf8f26ae9249b8c2e1dd\nSTATUS=OK TS=2026-07-09T17:58:30Z TYPE=bookstack-backup BAD=0 APP=bookstack JOB=homelab-pve01-app-bookstack-20260709T024714Z SIZE=18108 LOCAL_BACKUP_DELETED=true JSON=/var/lib/homelab-backup/apps/latest-bookstack.json\n=== HEALTH_FILE_END=/var/lib/homelab-health/bookstack-backup.txt ===\n=== HEALTH_FILE_BEGIN=/var/lib/homelab-health/cadvisor-backup.txt ===\nHEALTH_FILE_SHA256=cb0bcacf449ab29e8954014fb689d1022527f0b67aae0d4f0c808358cae55e07\nSTATUS=OK TS=2026-07-09T08:25:56Z TYPE=cadvisor-backup JOB=homelab-pve01-app-cadvisor-20260709T082556Z SOURCE=cadvisor_stack_proxy SIZE=1384 SHA256=33e419912291daab19f8039dfe8971f277be0fe577eb3d0e538263bdf918eac8 LOCAL_BACKUP_DELETED=true NOTE=service-readiness-backup-proof\n=== HEALTH_FILE_END=/var/lib/homelab-health/cadvisor-backup.txt ===\n=== HEALTH_FILE_BEGIN=/var/lib/homelab-health/calibre-web-backup.txt ===\nHEALTH_FILE_SHA256=2e841d7edd46668242924dae527480ead9c298abeb30a4c96734c382b09c90d7\nSTATUS=OK TS=2026-07-09T18:46:20Z TYPE=calibre-web-backup BAD=0 APP=calibre-web JOB=homelab-pve01-app-calibre-web-20260709T051713Z SIZE=6630 LOCAL_BACKUP_DELETED=true JSON=/var/lib/homelab-backup/apps/latest-calibre-web.json\n=== HEALTH_FILE_END=/var/lib/homelab-health/calibre-web-backup.txt ===\n=== HEALTH_FILE_BEGIN=/var/lib/homelab-health/cluster-admin-backup-webpanel-final-seal.txt ===\nHEALTH_FILE_SHA256=9739e2a0d2bbb859b25255fd7acae984ee05a16fb79cd9e59ff81529c4acf3fd\nSTATUS=OK TS=2026-07-09T05:24:54Z TYPE=cluster-admin-backup-webpanel-final-seal BAD=0 VMID=180 URL=http://[PRIVATE_IP]:8080/ BACKUP=MAIL_CLOUD_2COPY_VERIFY_OK WEBPANEL=OK WEBPANEL_SYNC=OK OVERALL_HARDGATE=YES FINAL_READINESS_HARDGATE=YES FAILED_UNITS=pve01:0,pve02:0,pve03:0,edge:0 DIRTY_COUNT=0 REPORT=/var/lib/homelab-ideal-cluster/cluster-admin-backup-webpanel-final-seal-latest.md\n=== HEALTH_FILE_END=/var/lib/homelab-health/cluster-admin-backup-webpanel-final-seal.txt ===\n=== HEALTH_FILE_BEGIN=/var/lib/homelab-health/cluster-admin-incident-engine-backup.txt ===\nHEALTH_FILE_SHA256=5f56ac6b48e94a81f7a9ffa073525dc255b1fede76fcc04f7b629e0f51cb98ed\nSTATUS=OK TS=2026-07-10T23:30:49Z TYPE=cluster-admin-incident-engine-backup BAD=0 JOB=homelab-pve01-app-cluster-admin-incident-engine-20260710T232958Z ARCHIVE_SIZE_BYTES=157380 LOCAL_STAGING_DELETED=true OFFHOST=OK RESTORE=OK POST_FIX_CODE=included\n=== HEALTH_FILE_END=/var/lib/homelab-health/cluster-admin-incident-engine-backup.txt ===\n=== KNOWN_LOCKS ===\nLOCK_PATH=/run/homelab-backup-heavy.lock|EXISTS=true|TYPE=regular empty file|MODE=600|OWNER=root:root|SIZE=0|MTIME=2026-09-27 09:30:02.179976746 +0300\nLOCK_PATH=/run/lock/homelab-app-cloud-quorum-queue.lock|EXISTS=true|TYPE=regular empty file|MODE=600|OWNER=root:root|SIZE=0|MTIME=2026-09-27 09:30:02.178976732 +0300\nLOCK_PATH=/run/lock/homelab-backup-dispatcher.lock|EXISTS=true|TYPE=regular empty file|MODE=600|OWNER=root:root|SIZE=0|MTIME=2026-09-27 03:27:41.596907725 +0300\nLOCK_PATH=/run/lock/homelab-vm-cloud-quorum-queue.lock|EXISTS=true|TYPE=regular empty file|MODE=600|OWNER=root:root|SIZE=0|MTIME=2026-09-27 03:27:41.597907739 +0300\n=== LSLOCKS_BACKUP_RELEVANT ===\nbash 67693 FLOCK WRITE /var/lib/homelab-chat-run/state/runner.lock\n=== PROCESSES_BACKUP_RELEVANT ===\n 67693 67651 7 S bash bash /usr/local/sbin/homelab-chat-run SUPPORT-260927-HOMELAB-BACKUP-V2-CURRENT-FAILURE-RCA-1221R1 read-only homelab-backup-v2-current-failure-rca -- bash /run/workers2-1221-inner.QapARP.sh\n=== RECENT_BACKUP_RUNTIME_PATHS ===\n/var/lib/homelab-chat-run/raw/SUPPORT-260921-HOMELAB-BACKUP-ALERT-PROBE-RCA-READONLY-1079R1-20260921T092230Z.log|f|600|3374|2026-09-21T12:22:33.9904995860+0300\n/var/lib/homelab-chat-run/raw/SUPPORT-260921-HOMELAB-BACKUP-BUSY-RCA-READONLY-1077R1-20260921T090714Z.log|f|600|4675|2026-09-21T12:07:14.9658291400+0300\n/var/lib/homelab-chat-run/raw/SUPPORT-260921-HOMELAB-BACKUP-CLOSURE-AUDIT-READONLY-1037R1-20260921T025435Z.log|f|600|95758|2026-09-21T05:54:36.9962461680+0300\n/var/lib/homelab-chat-run/raw/SUPPORT-260921-HOMELAB-BACKUP-CLOSURE-BLOCKERS-PREFLIGHT-READONLY-1042R1-20260921T031257Z.log|f|600|32761|2026-09-21T06:12:59.2845594700+0300\n/var/lib/homelab-chat-run/raw/SUPPORT-260921-HOMELAB-BACKUP-CLOSURE-READINESS-READONLY-1038R1-20260921T030111Z.log|f|600|16786|2026-09-21T06:01:11.3360807040+0300\n/var/lib/homelab-chat-run/raw/SUPPORT-260921-HOMELAB-BACKUP-CLOSURE-READINESS-READONLY-1039R1-20260921T030506Z.log|f|600|37051|2026-09-21T06:05:15.6206965100+0300\n/var/lib/homelab-chat-run/raw/SUPPORT-260921-HOMELAB-BACKUP-CLOUDB-PREFLIGHT-RCA-READONLY-1064R1-20260921T062601Z.log|f|600|17240|2026-09-21T09:26:05.0428301780+0300\n/var/lib/homelab-chat-run/raw/SUPPORT-260921-HOMELAB-BACKUP-CONSOLIDATED-REMEDIATION-1043R1-20260921T032137Z.log|f|600|881|2026-09-21T06:22:24.4479912050+0300\n/var/lib/homelab-chat-run/raw/SUPPORT-260921-HOMELAB-BACKUP-CONSOLIDATED-REMEDIATION-1045R1-20260921T033019Z.log|f|600|4230|2026-09-21T06:34:46.0370354250+0300\n/var/lib/homelab-chat-run/raw/SUPPORT-260921-HOMELAB-BACKUP-DEEP-AUDIT-READONLY-1001R1-20260921T004930Z.log|f|600|288398|2026-09-21T03:49:50.3834510560+0300\n/var/lib/homelab-chat-run/raw/SUPPORT-260921-HOMELAB-BACKUP-DEEP-AUDIT-READONLY-1002R1-20260921T010029Z.log|f|600|244012|2026-09-21T04:00:33.8430279660+0300\n/var/lib/homelab-chat-run/raw/SUPPORT-260921-HOMELAB-BACKUP-DUE-POLICY-FIX-REFRESH-1106R1-20260921T213144Z.log|f|600|15137|2026-09-22T00:31:44.6634903820+0300\n/var/lib/homelab-chat-run/raw/SUPPORT-260921-HOMELAB-BACKUP-DUE-POLICY-FIX-REFRESH-1108R1-20260921T214841Z.log|f|600|10695|2026-09-22T01:38:16.6920923780+0300\n/var/lib/homelab-chat-run/raw/SUPPORT-260921-HOMELAB-BACKUP-DUE-POLICY-SOURCE-RCA-READONLY-1105R1-20260921T212123Z.log|f|600|57180|2026-09-22T00:21:23.4392786410+0300\n/var/lib/homelab-chat-run/raw/SUPPORT-260921-HOMELAB-BACKUP-FINAL-CLOSURE-1049R1-20260921T040144Z.log|f|600|2279|2026-09-21T07:54:57.2452803520+0300\n/var/lib/homelab-chat-run/raw/SUPPORT-260921-HOMELAB-BACKUP-FINAL-CLOSURE-COMPACT-1057R1-20260921T053355Z.log|f|600|668|2026-09-21T08:34:05.7002079550+0300\n/var/lib/homelab-chat-run/raw/SUPPORT-260921-HOMELAB-BACKUP-FINAL-SEAL-1063R1-20260921T060402Z.log|f|600|732|2026-09-21T09:04:10.1311851670+0300\n/var/lib/homelab-chat-run/raw/SUPPORT-260921-HOMELAB-BACKUP-FINAL-SEAL-CORRECTED-1065R1-20260921T063236Z.log|f|600|925|2026-09-21T09:43:29.1943993320+0300\n/var/lib/homelab-chat-run/raw/SUPPORT-260921-HOMELAB-BACKUP-FINAL-SEAL-FIREWALL-1068R1-20260921T070125Z.log|f|600|993|2026-09-21T10:03:30.0942983230+0300\n/var/lib/homelab-chat-run/raw/SUPPORT-260921-HOMELAB-BACKUP-FINAL-SEAL-FIREWALL-1068R1-20260921T070538Z.log|f|600|230|2026-09-21T10:05:38.5732110880+0300\n/var/lib/homelab-chat-run/raw/SUPPORT-260921-HOMELAB-BACKUP-FINAL-SEAL-FIREWALL-1069R1-20260921T070918Z.log|f|600|993|2026-09-21T10:14:08.0477960260+0300\n/var/lib/homelab-chat-run/raw/SUPPORT-260921-HOMELAB-BACKUP-FINAL-SEAL-LOCALMAIL-1072R1-20260921T072901Z.log|f|600|968|2026-09-21T10:29:09.4052028590+0300\n/var/lib/homelab-chat-run/raw/SUPPORT-260921-HOMELAB-BACKUP-FINAL-SEAL-LOCALMAIL-1074R1-20260921T073807Z.log|f|600|39413|2026-09-21T10:38:25.9554804810+0300\n/var/lib/homelab-chat-run/raw/SUPPORT-260921-HOMELAB-BACKUP-FINAL-SEAL-LOCALMAIL-1076R1-20260921T080153Z.log|f|600|854|2026-09-21T12:01:55.5720746100+0300\n/var/lib/homelab-chat-run/raw/SUPPORT-260921-HOMELAB-BACKUP-FINAL-SEAL-LOCALMAIL-1078R1-20260921T091352Z.log|f|600|1055|2026-09-21T12:14:02.3538935720+0300\n/var/lib/homelab-chat-run/raw/SUPPORT-260921-HOMELAB-BACKUP-FINAL-SEAL-LOCALMAIL-1080R1-20260921T093638Z.log|f|600|1112|2026-09-21T14:17:36.3447345310+0300\n/var/lib/homelab-chat-run/raw/SUPPORT-260921-HOMELAB-BACKUP-FINAL-SEAL-LOCALMAIL-1082R1-20260921T120000Z.log|f|600|1220|2026-09-21T15:02:15.5841944040+0300\n/var/lib/homelab-chat-run/raw/SUPPORT-260921-HOMELAB-BACKUP-FINAL-SEAL-LOCALMAIL-1085R1-20260921T122608Z.log|f|600|1174|2026-09-21T18:26:24.3474285530+0300\n/var/lib/homelab-chat-run/raw/SUPPORT-260921-HOMELAB-BACKUP-GFS-CONTROLLED-APPLY-1023R1-20260921T021429Z.log|f|600|1443|2026-09-21T05:14:29.6846711960+0300\n/var/lib/homelab-chat-run/raw/SUPPORT-260921-HOMELAB-BACKUP-GFS-CONTROLLED-PACKAGE-1018R1-20260921T015820Z.log|f|600|913|2026-09-21T04:58:20.8770096400+0300\n/var/lib/homelab-chat-run/raw/SUPPORT-260921-HOMELAB-BACKUP-GFS-CONTROLLED-PACKAGE-1020R1-20260921T020630Z.log|f|600|1027|2026-09-21T05:06:31.0423642480+0300\n/var/lib/homelab-chat-run/raw/SUPPORT-260921-HOMELAB-BACKUP-GFS-DESIGN-CORRECTION-1016R1-20260921T015007Z.log|f|600|2063|2026-09-21T04:50:07.6438460660+0300\n/var/lib/homelab-chat-run/raw/SUPPORT-260921-HOMELAB-BACKUP-GFS-DIRTY-TASK-RCA-READONLY-1030R1-20260921T023051Z.log|f|600|19645|2026-09-21T05:30:52.1201869690+0300\n/var/lib/homelab-chat-run/raw/SUPPORT-260921-HOMELAB-BACKUP-GFS-PACKAGE-RCA-READONLY-1019R1-20260921T020155Z.log|f|600|3740|2026-09-21T05:01:55.6265352550+0300\n/var/lib/homelab-chat-run/raw/SUPPORT-260921-HOMELAB-BACKUP-GFS-PARTIAL-RCA-READONLY-1013R1-20260921T013951Z.log|f|600|15269|2026-09-21T04:39:51.6859874850+0300\n/var/lib/homelab-chat-run/raw/SUPPORT-260921-HOMELAB-BACKUP-GFS-POLICY-PROVENANCE-READONLY-1014R1-20260921T014306Z.log|f|600|396144|2026-09-21T04:43:08.0868882250+0300\n/var/lib/homelab-chat-run/raw/SUPPORT-260921-HOMELAB-BACKUP-GFS-PREFLIGHT-RCA-READONLY-1022R1-20260921T021032Z.log|f|600|2293|2026-09-21T05:10:32.6171698800+0300\n/var/lib/homelab-chat-run/raw/SUPPORT-260921-HOMELAB-BACKUP-GFS-SAFE-CONTROLLED-APPLY-1028R1-20260921T022544Z.log|f|600|1358|2026-09-21T05:25:44.6646428160+0300\n/var/lib/homelab-chat-run/raw/SUPPORT-260921-HOMELAB-BACKUP-GFS-TASK-STRUCTURE-RCA-READONLY-1029R1-20260921T022826Z.log|f|600|10258|2026-09-21T05:28:26.4520340160+0300\n/var/lib/homelab-chat-run/raw/SUPPORT-260921-HOMELAB-BACKUP-GFS-TIMER-HOLD-APPLY-1032R1-20260921T023654Z.log|f|600|8979|2026-09-21T05:36:54.6605452330+0300\n/var/lib/homelab-chat-run/raw/SUPPORT-260921-HOMELAB-BACKUP-GFS-TIMER-HOLD-APPLY-1036R1-20260921T025110Z.log|f|600|5037|2026-09-21T05:51:11.6762279620+0300\n/var/lib/homelab-chat-run/raw/SUPPORT-260921-HOMELAB-BACKUP-GIT-PUSH-ROUTE-RCA-READONLY-1024R1-20260921T021742Z.log|f|600|9085|2026-09-21T05:17:45.3875616000+0300\n/var/lib/homelab-chat-run/raw/SUPPORT-260921-HOMELAB-BACKUP-MONITORING-ROUTE-RCA-READONLY-1071R1-20260921T072134Z.log|f|600|2993|2026-09-21T10:21:49.6456622840+0300\n/var/lib/homelab-chat-run/raw/SUPPORT-260921-HOMELAB-BACKUP-NODEWORKER-CONTRACT-RCA-READONLY-1104R1-20260921T210614Z.log|f|600|110628|2026-09-22T00:06:14.6816791370+0300\n/var/lib/homelab-chat-run/raw/SUPPORT-260921-HOMELAB-BACKUP-OWNER-RCA-READONLY-1092R1-20260921T160726Z.log|f|600|2028|2026-09-21T19:07:26.8993332660+0300\n/var/lib/homelab-chat-run/raw/SUPPORT-260921-HOMELAB-BACKUP-POST1032-RCA-READONLY-1033R1-20260921T023945Z.log|f|600|2764|2026-09-21T05:39:45.9840773400+0300\n/var/lib/homelab-chat-run/raw/SUPPORT-260921-HOMELAB-BACKUP-POST1034-RCA-READONLY-1035R1-20260921T024819Z.log|f|600|4924|2026-09-21T05:48:20.0586751760+0300\n/var/lib/homelab-chat-run/raw/SUPPORT-260921-HOMELAB-BACKUP-POST1043-SOURCE-LAYOUT-RCA-READONLY-1044R1-20260921T032455Z.log|f|600|6815|2026-09-21T06:24:55.6232481560+0300\n/var/lib/homelab-chat-run/raw/SUPPORT-260921-HOMELAB-BACKUP-POST1045-V2-RCA-READONLY-1046R1-20260921T034639Z.log|f|600|16887|2026-09-21T06:46:41.1596266740+0300\n/var/lib/homelab-chat-run/raw/SUPPORT-260921-HOMELAB-BACKUP-POST1049-RCA-READONLY-1051R1-20260921T050519Z.log|f|600|118669|2026-09-21T08:06:12.0382792970+0300\n/var/lib/homelab-chat-run/raw/SUPPORT-260921-HOMELAB-BACKUP-POST1053-EXECUTION-RCA-READONLY-1055R1-20260921T052428Z.log|f|600|4053|2026-09-21T08:24:28.9786004860+0300\n/var/lib/homelab-chat-run/raw/SUPPORT-260921-HOMELAB-BACKUP-POST1065-SMTP-RCA-READONLY-1067R1-20260921T065500Z.log|f|600|5373|2026-09-21T09:55:01.6407246930+0300\n/var/lib/homelab-chat-run/raw/SUPPORT-260921-HOMELAB-BACKUP-POST1074-STATE-ALERT-RCA-READONLY-1075R1-20260921T074658Z.log|f|600|3172|2026-09-21T10:47:07.0072301360+0300\n/var/lib/homelab-chat-run/raw/SUPPORT-260921-HOMELAB-BACKUP-POST1082-LOCALMAIL-RCA-READONLY-1083R1-20260921T121759Z.log|f|600|2235|2026-09-21T15:18:00.7292233390+0300\n/var/lib/homelab-chat-run/raw/SUPPORT-260921-HOMELAB-BACKUP-POST1098-RPO-RCA-READONLY-1099R1-20260921T195421Z.log|f|600|4349|2026-09-21T22:54:21.6937855720+0300\n/var/lib/homelab-chat-run/raw/SUPPORT-260921-HOMELAB-BACKUP-PREAUDIT-RPO-RCA-READONLY-1097R1-20260921T174252Z.log|f|600|3736|2026-09-21T20:42:52.3265938580+0300\n/var/lib/homelab-chat-run/raw/SUPPORT-260921-HOMELAB-BACKUP-RCA-READONLY-1003R1-20260921T010723Z.log|f|600|89152|2026-09-21T04:07:24.1871533600+0300\n/var/lib/homelab-chat-run/raw/SUPPORT-260921-HOMELAB-BACKUP-REMEDIATION-DESIGN-1007R1-20260921T012505Z.log|f|600|18086|2026-09-21T04:25:05.6488868470+0300\n/var/lib/homelab-chat-run/raw/SUPPORT-260921-HOMELAB-BACKUP-REMEDIATION-DESIGN-CONTINUE-1012R1-20260921T013802Z.log|f|600|20097|2026-09-21T04:38:02.2123706110+0300\n/var/lib/homelab-chat-run/raw/SUPPORT-260921-HOMELAB-BACKUP-REMEDIATION-PARTIAL-RCA-READONLY-1008R1-20260921T012751Z.log|f|600|9112|2026-09-21T04:27:51.5203448640+0300\n/var/lib/homelab-chat-run/raw/SUPPORT-260921-HOMELAB-BACKUP-REMEDIATION-PREPARE-1005R1-20260921T011815Z.log|f|600|7494|2026-09-21T04:18:16.8548290240+0300\n/var/lib/homelab-chat-run/raw/SUPPORT-260921-HOMELAB-BACKUP-RPO-REFRESH-1098R1-20260921T175001Z.log|f|600|14751|2026-09-21T22:50:09.5840153920+0300\n/var/lib/homelab-chat-run/raw/SUPPORT-260921-HOMELAB-BACKUP-SCHEDULER-CONTRACT-RCA-READONLY-1103R1-20260921T205811Z.log|f|600|11960|2026-09-21T23:58:11.3474158980+0300\n/var/lib/homelab-chat-run/raw/SUPPORT-260921-HOMELAB-BACKUP-SMTP-NETWORK-RCA-READONLY-1070R1-20260921T071806Z.log|f|600|2254|2026-09-21T10:18:16.7324956110+0300\n/var/lib/homelab-chat-run/raw/SUPPORT-260921-HOMELAB-BACKUP-SMTP-ROUTE-RCA-READONLY-1062R1-20260921T054523Z.log|f|600|996|2026-09-21T08:45:24.2093284680+0300\n/var/lib/homelab-chat-run/raw/SUPPORT-260921-HOMELAB-BACKUP-TARGETED-CONTINUATION-1047R1-20260921T035039Z.log|f|600|1408|2026-09-21T06:50:41.8321908310+0300\n/var/lib/homelab-chat-run/raw/SUPPORT-260921-HOMELAB-BACKUP-V2-FAILURE-RCA-READONLY-1004R1-20260921T011146Z.log|f|600|63283|2026-09-21T04:11:47.0510551260+0300\n/var/lib/homelab-chat-run/raw/SUPPORT-260921-HOMELAB-BACKUP-V2-WRAPPER-TOPOLOGY-READONLY-1010R1-20260921T013218Z.log|f|600|7990|2026-09-21T04:32:18.9353005800+0300\n/var/lib/homelab-chat-run/raw/SUPPORT-260921-HOMELAB-BACKUP-VM9130-RCA-READONLY-1048R1-20260921T035327Z.log|f|600|36784|2026-09-21T06:53:38.2198028290+0300\n/var/lib/homelab-chat-run/raw/SUPPORT-260921-HOMELAB-BACKUP-VM-RPO-REFRESH-1101R1-20260921T201110Z.log|f|600|11176|2026-09-21T23:31:24.5782119800+0300\n/var/lib/homelab-chat-run/raw/SUPPORT-260921-HOMELAB-BACKUP-VM-SCHEDULER-RCA-READONLY-1102R1-20260921T205357Z.log|f|600|10872|2026-09-21T23:53:57.9095974080+0300\n/var/lib/homelab-chat-run/raw/SUPPORT-260921-HOMELAB-BACKUP-WAIT-AND-FINAL-SEAL-1096R1-20260921T173141Z.log|f|600|996|2026-09-21T20:31:43.7200714460+0300\n/var/lib/homelab-chat-run/raw/SUPPORT-260921-HOMELAB-BACKUP-WAIT-OWNER-THEN-RPO-READONLY-1100R1-20260921T200314Z.log|f|600|3196|2026-09-21T23:03:14.5757560650+0300\n/var/lib/homelab-chat-run/raw/SUPPORT-260922-HOMELAB-BACKUP-1111R2-METADATA-RCA-1112R1-20260922T052641Z.log|f|600|4494|2026-09-22T08:26:42.0084481470+0300\n/var/lib/homelab-chat-run/raw/SUPPORT-260922-HOMELAB-BACKUP-1112-AMBIGUITY-RCA-1113R1-20260922T053223Z.log|f|600|14459|2026-09-22T08:32:23.1666695920+0300\n/var/lib/homelab-chat-run/raw/SUPPORT-260922-HOMELAB-BACKUP-1113-FINAL-RCA-1114R1-20260922T054044Z.log|f|600|6465|2026-09-22T08:40:44.5440702080+0300\n/var/lib/homelab-chat-run/raw/SUPPORT-260922-HOMELAB-BACKUP-1114-DUE-RESTORE-RCA-1115R1-20260922T054758Z.log|f|600|23751|2026-09-22T08:47:58.4367505750+0300\n/var/lib/homelab-chat-run/raw/SUPPORT-260922-HOMELAB-BACKUP-1115-ROOT-RCA-1116R1-20260922T055735Z.log|f|600|37866|2026-09-22T08:57:35.3494344140+0300\n/var/lib/homelab-chat-run/raw/SUPPORT-260922-HOMELAB-BACKUP-1116-CONTRACT-PIPE-RCA-1117R1-20260922T060529Z.log|f|600|27868|2026-09-22T09:05:29.5424839130+0300\n/var/lib/homelab-chat-run/raw/SUPPORT-260922-HOMELAB-BACKUP-1118R2-SSH-TARGET-RCA-1119R1-20260922T081851Z.log|f|600|3631|2026-09-22T11:18:51.5379257340+0300\n/var/lib/homelab-chat-run/raw/SUPPORT-260922-HOMELAB-BACKUP-1119-SSH-NET-RCA-1120R3-20260922T083745Z.log|f|600|5069|2026-09-22T11:37:45.0835015480+0300\n/var/lib/homelab-chat-run/raw/SUPPORT-260922-HOMELAB-BACKUP-1120R3-PROBE-RCA-1121R1-20260922T084512Z.log|f|600|5874|2026-09-22T11:45:12.0350626550+0300\n/var/lib/homelab-chat-run/raw/SUPPORT-260922-HOMELAB-BACKUP-AUDIT-VMQUEUE-RCA-1110R1-20260922T044454Z.log|f|600|24315|2026-09-22T07:44:54.7780943710+0300\n/var/lib/homelab-chat-run/raw/SUPPORT-260922-HOMELAB-BACKUP-CLASSIFIED-BLOCKER-REPAIR-1111R2-20260922T052100Z.log|f|600|1737|2026-09-22T08:21:00.6330178780+0300\n/var/lib/homelab-chat-run/raw/SUPPORT-260922-HOMELAB-BACKUP-COMBINED-REPAIR-1118R2-20260922T063815Z.log|f|600|3290|2026-09-22T09:38:15.0766805420+0300\n/var/lib/homelab-chat-run/raw/SUPPORT-260922-HOMELAB-BACKUP-FINAL-CLOSURE-1125R1-20260922T092527Z.log|f|600|4532|2026-09-22T12:25:27.3385976020+0300\n/var/lib/homelab-chat-run/raw/SUPPORT-260922-HOMELAB-BACKUP-LIVE-PRECLOSURE-RCA-1109R1-20260922T043717Z.log|f|600|7392|2026-09-22T07:37:17.3673709690+0300\n/var/lib/homelab-chat-run/raw/SUPPORT-260922-HOMELAB-BACKUP-MOLDOVA-CONTROL-RCA-1123R1-20260922T090502Z.log|f|600|94509|2026-09-22T12:05:02.8275671640+0300\n/var/lib/homelab-chat-run/raw/SUPPORT-260922-HOMELAB-BACKUP-NETBIRD-LIFECYCLE-RCA-1122R1-20260922T085837Z.log|f|600|46497|2026-09-22T11:58:37.7049034170+0300\n/var/lib/homelab-chat-run/raw/SUPPORT-260922-HOMELAB-BACKUP-QUIESCENT-FINAL-CLOSURE-1126R1-20260922T114011Z.log|f|600|2678|2026-09-22T14:40:11.5757166040+0300\n/var/lib/homelab-chat-run/raw/SUPPORT-260922-HOMELAB-BACKUP-RETIRE-USNETBIRD-COMBINED-1124R2-20260922T091925Z.log|f|600|4396|2026-09-22T12:19:25.4742680920+0300\n/var/lib/homelab-chat-run/raw/SUPPORT-260923-HOMELAB-MOLDOVA-DETACH-BACKUPV2-1134R1-20260923T211657Z.log|f|600|1800|2026-09-24T00:16:57.0715810860+0300\n/var/lib/homelab-chat-run/raw/SUPPORT-260924-HOMELAB-MOLDOVA-BACKUP-SSH-EXECUTOR-RCA-1145R1-20260923T221036Z.log|f|600|6575|2026-09-24T01:10:37.0398137110+0300\n/var/lib/homelab-chat-run/raw/SUPPORT-260924-HOMELAB-MOLDOVA-DETACH-BACKUPV2-1136R1-20260923T212505Z.log|f|600|3487|2026-09-24T00:25:05.2038922470+0300\n/var/lib/homelab-chat-run/raw/SUPPORT-260925-HOMELAB-BACKUP-ALERT-DEBOUNCE-1220R1-20260925T085340Z.log|f|600|1928|2026-09-25T11:53:41.6547670350+0300\n/var/lib/homelab-chat-run/raw/SUPPORT-260925-HOMELAB-BACKUP-ALERT-NOISE-RCA-1219R1-20260925T084334Z.log|f|600|15692|2026-09-25T11:43:34.8969414320+0300\n/var/lib/homelab-chat-run/raw/SUPPORT-260925-HOMELAB-BACKUP-CARRIER-DIRECT-1215R1-20260925T031244Z.log|f|600|255|2026-09-25T06:12:44.9474130820+0300\n/var/lib/homelab-chat-run/raw/SUPPORT-260925-HOMELAB-BACKUP-CARRIER-PROOF-1204R1-20260925T014746Z.log|f|600|630|2026-09-25T04:47:46.8031698750+0300\n/var/lib/homelab-chat-run/raw/SUPPORT-260925-HOMELAB-BACKUP-CONTROL-CHANGE-1207R1-20260925T015838Z.log|f|600|1395|2026-09-25T04:58:43.6927759370+0300\n/var/lib/homelab-chat-run/raw/SUPPORT-260925-HOMELAB-BACKUP-FINAL-VERIFY-1208R1-20260925T020244Z.log|f|600|1212|2026-09-25T05:02:44.7423025140+0300\n/var/lib/homelab-chat-run/raw/SUPPORT-260925-HOMELAB-BACKUP-FINAL-VERIFY-FIX-1209R1-20260925T020527Z.log|f|600|2037|2026-09-25T05:06:52.1009276460+0300\n/var/lib/homelab-chat-run/raw/SUPPORT-260925-HOMELAB-BACKUP-LOCKS-SOURCE-RCA-1218R1-20260925T045801Z.log|f|600|5297|2026-09-25T07:58:06.4664540580+0300\n/var/lib/homelab-chat-run/raw/SUPPORT-260925-HOMELAB-BACKUP-RPO-ADAPTIVE-CLOSE-1211R1-20260925T021609Z.log|f|600|2708|2026-09-25T05:33:58.8968024960+0300\n/var/lib/homelab-chat-run/raw/SUPPORT-260925-HOMELAB-BACKUP-RPO-FINAL-CLOSE-1210R1-20260925T021236Z.log|f|600|1881|2026-09-25T05:12:40.6850362770+0300\n/var/lib/homelab-chat-run/raw/SUPPORT-260925-HOMELAB-BACKUP-SOURCE-OFFHOST-RCA-1217R1-20260925T031608Z.log|f|600|5683|2026-09-25T06:16:09.4934364280+0300\n/var/lib/homelab-chat-run/raw/SUPPORT-260925-HOMELAB-BACKUP-V2-LEGACY-MAIL-AUDIT-1201R1-20260925T013531Z.log|f|600|159674|2026-09-25T04:35:33.4304429130+0300\n/var/lib/homelab-chat-run/raw/SUPPORT-260925-HOMELAB-BACKUP-V2-SPB-MAIL-RCA-1206R1-20260925T015118Z.log|f|600|38217|2026-09-25T04:51:19.9202864040+0300\n/var/lib/homelab-chat-run/raw/SUPPORT-260927-HOMELAB-BACKUP-V2-CURRENT-FAILURE-RCA-1221R1-20260927T182259Z.log|f|600|160447|2026-09-27T21:23:07.7235472910+0300\n/var/lib/homelab-cluster-admin-vm-mail-cloud-backup|d|755|4096|2026-07-09T08:01:05.4023758660+0300\n/var/lib/homelab-extended-appbackup|d|755|4096|2026-07-07T04:24:04.9453535490+0300\n/var/lib/homelab-health/app-cloud-quorum-cutover.json|f|644|642|2026-08-09T03:52:48.2998893820+0300\n/var/lib/homelab-health/app-cloud-quorum-freshness.json|f|644|645|2026-08-09T05:01:58.0175936120+0300\n/var/lib/homelab-health/backup-audit-v2.json|f|644|4767|2026-09-27T21:19:36.3324532240+0300\n/var/lib/homelab-health/control-bootstrap-cloud-quorum.json|f|600|762|2026-08-11T00:11:00.7261255060+0300\n/var/lib/homelab-health/control-bootstrap-v2-cloud-quorum.json|f|600|774|2026-08-11T02:50:11.0810440440+0300\n/var/lib/homelab-health/hbarhub-cloud-quorum.json|f|644|1086|2026-08-09T06:55:29.6374215870+0300\n/var/lib/homelab-health/homelab-backup-baseline.txt|f|644|2679|2026-06-17T23:02:13.9525590360+0300\n/var/lib/homelab-health/scrutiny-cloud-quorum.json|f|644|1114|2026-08-09T20:44:13.9730975280+0300\n/var/lib/homelab-health/vm-cloud-quorum-cutover.json|f|644|519|2026-08-08T17:32:43.9422671550+0300\n/var/lib/homelab-health/vm-cloud-quorum-freshness.json|f|644|602|2026-08-09T04:36:44.0769273960+0300\n/var/lib/homelab-incidents/hapusya-backup-map-prechange-20260713T121043Z/homelab-backup-paths.map.before|f|640|1214|2026-07-11T08:10:58.0016867890+0300\n/var/lib/homelab-incidents/vm-backup-health-matrix-feedback-fix-20260713T172901Z/homelab-backup-matrix|d|750|4096|2026-07-13T20:26:37.1793090260+0300\n/var/lib/homelab-moldova-retire/SUPPORT-260924-HOMELAB-MOLDOVA-DETACH-BACKUPV2-1136R1|d|700|4096|2026-09-24T00:25:05.1356358240+0300\n/var/lib/homelab-reader-v3/results/HOMELAB-BACKUP-AUTOHEAL-NEUTRALIZE-461-b61faeb9c96bedd2ba0652d4b07c6a1e3e610ed9db98be1bf795e7e2bb6580bf.txt|f|644|3374|2026-07-24T18:26:57.4061166400+0300\n/var/lib/homelab-reader-v3/results/HOMELAB-BACKUP-BAD-JOBS-ROOTCAUSE-431-5d06fe790e0ef488be403d4fcd6f009d200d0525060b55c376d920e6d812d039.txt|f|644|60237|2026-07-24T12:55:31.9939624710+0300\n/var/lib/homelab-reader-v3/results/HOMELAB-BACKUP-COVERAGE-EVIDENCE-453-ff9b7ddc7c079824c7cda1c7bbce1b9d736cdff30f8b1ff97e8c4e1b7b964ab3.txt|f|644|57908|2026-07-24T14:47:59.6657000530+0300\n/var/lib/homelab-reader-v3/results/HOMELAB-BACKUP-COVERAGE-INVENTORY-452-50c82bf82d7a843ebc39b3d67d3364b4aa71cadfa460b5f9733e37cd887bd431.txt|f|644|57307|2026-07-24T14:36:08.3324758630+0300\n/var/lib/homelab-reader-v3/results/HOMELAB-BACKUP-CURRENT-STATE-SEAL-459-3066e9e9a27e8675ce91eff6b56e87435bb26496b4f4daf4700a3ffed88b1f56.txt|f|644|16447|2026-07-24T18:03:39.1347995510+0300\n/var/lib/homelab-reader-v3/results/HOMELAB-BACKUP-GUEST-WRITERS-AUDIT-457-eb436b355342e5971deb8d67cc183df3c61b77e044b5e317e7466c9e2b8f50b0.txt|f|644|1036|2026-07-24T17:13:23.7907478370+0300\n/var/lib/homelab-reader-v3/results/HOMELAB-BACKUP-HOST-WRITERS-FREEZE-456-e5422ea2022beaeebef92b9d52fe2769e7de6df103a8b7e9db4d9613e8cf2943.txt|f|644|18461|2026-07-24T17:00:34.9861683220+0300\n/var/lib/homelab-reader-v3/results/HOMELAB-BACKUP-MATRIX-BAD-JOBS-DISCOVERY-430-f666db7189a763f1d31e5eed855669d83a09931ab7f8faf935607b7ae1fa104d.txt|f|644|5176|2026-07-24T12:53:01.6989905840+0300\n/var/lib/homelab-reader-v3/results/HOMELAB-BACKUP-MATRIX-FAILURE-AUDIT-429-f2ff11cc569aa73a09e504b8313c5aed036f5066c6b40de24b2b6b02d1a9af00.txt|f|644|23066|2026-07-24T12:47:51.7444328570+0300\n/var/lib/homelab-reader-v3/results/HOMELAB-BACKUP-NO-LOCAL-INVARIANT-AUDIT-432-cbd4fb8cf7f2f0acfdc1289bd782fa2d9800c0552e7acfc0c0746a902999c804.txt|f|644|28688|2026-07-24T13:02:46.4883199870+0300\n/var/lib/homelab-reader-v3/results/HOMELAB-BACKUP-PLAN-GITEA-PUBLISH-464-653469c773a4be5ede1ede4da0915f06d8e6743096dd121abe09bc3b8de93405.txt|f|644|981|2026-07-24T20:28:18.0610295360+0300\n/var/lib/homelab-reader-v3/results/HOMELAB-BACKUP-PLAN-GITEA-PUBLISH-465-36c8524b264ed22b9142c7a1ff1e33e088eeb99ab5955e5fc7b702fd63a48010.txt|f|644|940|2026-07-24T20:36:38.1150344670+0300\n/var/lib/homelab-reader-v3/results/HOMELAB-BACKUP-PURGE-PREFLIGHT-454-e6ad11c4cb644d006a013488fa485dc543011e998247e493e85bd84350399899.txt|f|644|42132|2026-07-24T16:23:10.3631942910+0300\n/var/lib/homelab-reader-v3/results/HOMELAB-BACKUP-PVE02-FREEZE-CORRECTION-458-7ecd8ca38ca4ebed0263fdc3d065aae4b59c208341049f487b8687b9c97d8b2f.txt|f|644|1548|2026-07-24T17:17:53.5832498170+0300\n/var/lib/homelab-reader-v3/results/HOMELAB-BACKUP-REENABLE-CLOUD-ROOTCAUSE-460-9eb071ed4f5abb6fa9c4c3c6747b3ec9c16b75b11ad97ac870657f88cb3acc8f.txt|f|644|58860|2026-07-24T18:15:10.8527085600+0300\n/var/lib/homelab-reader-v3/results/HOMELAB-BACKUP-STEP0-CORRECTED-SEAL-463-74eeb151df3a434d9b7c03ad7a22afa43ca3ffd2d30f9e84ecc6ce150d5f7674.txt|f|644|9570|2026-07-24T20:20:15.3195447930+0300\n/var/lib/homelab-reader-v3/results/HOMELAB-BACKUP-STEP0-FINAL-SEAL-462-7c5ee74b24666f59a8e2c583e4b72ecdbe4c06bb6540b6bab44f1f1d9f925c79.txt|f|644|9467|2026-07-24T20:14:33.9380757500+0300\n/var/lib/homelab-reader-v3/results/HOMELAB-BACKUP-WRITERS-FREEZE-455-ea8cd1b8922533ab1927c064860a5447361c78964f4488aa57d2556b00465c66.txt|f|644|794|2026-07-24T16:51:06.1297029910+0300\n/var/lib/homelab-stage3-preapply-appbackup|d|755|4096|2026-07-13T06:11:16.7663552980+0300\n/var/lib/homelab-vm-backup|d|755|4096|2026-07-24T14:08:28.0223128820+0300\n/var/lib/homelab-vm-full-backup|d|700|4096|2026-07-24T03:10:18.4226228910+0300\n/var/lib/node_exporter/textfile_collector/homelab-backup-coverage.prom|f|644|1303|2026-06-26T21:20:04.9819513330+0300\n/var/lib/node_exporter/textfile_collector/homelab_backup_freshness.prom|f|644|666|2026-07-24T00:05:04.2520756770+0300\n/var/lib/systemd/timers/stamp-homelab-alertmanager-backup-health.timer|f|644|0|2026-09-27T21:19:32.2155220000+0300\n/var/lib/systemd/timers/stamp-homelab-alertmanager-backup.timer|f|644|0|2026-07-24T06:39:49.6894500000+0300\n/var/lib/systemd/timers/stamp-homelab-appbackup-dockge-stacks.timer|f|644|0|2026-07-24T03:48:15.4042490000+0300\n/var/lib/systemd/timers/stamp-homelab-appbackup-mariadb-batch.timer|f|644|0|2026-07-24T05:54:15.4048540000+0300\n/var/lib/systemd/timers/stamp-homelab-appbackup-npmplus-edge.timer|f|644|0|2026-07-24T04:17:28.1887750000+0300\n/var/lib/systemd/timers/stamp-homelab-appbackup-postgres-batch.timer|f|644|0|2026-07-24T05:18:04.2054590000+0300\n/var/lib/systemd/timers/stamp-homelab-appbackup-sqlite-batch.timer|f|644|0|2026-07-24T04:46:28.3994650000+0300\n/var/lib/systemd/timers/stamp-homelab-app-cloud-quorum-queue.timer|f|644|0|2026-09-27T19:30:01.1853280000+0300\n/var/lib/systemd/timers/stamp-homelab-authentik-backup.timer|f|644|0|2026-07-03T04:51:39.4014610000+0300\n/var/lib/systemd/timers/stamp-homelab-auto-backup.timer|f|644|0|2026-07-19T03:45:37.4503520000+0300\n/var/lib/systemd/timers/stamp-homelab-backup-audit.timer|f|644|0|2026-09-27T21:05:58.2257570000+0300\n/var/lib/systemd/timers/stamp-homelab-backup-coverage-matrix.timer|f|644|0|2026-07-24T08:37:50.1995050000+0300\n/var/lib/systemd/timers/stamp-homelab-backup-freshness.timer|f|644|0|2026-07-24T00:05:04.2054020000+0300\n/var/lib/systemd/timers/stamp-homelab-backup-healthcheck.timer|f|644|0|2026-07-24T07:04:28.4531710000+0300\n/var/lib/systemd/timers/stamp-homelab-backup-matrix-refresh.timer|f|644|0|2026-07-21T02:10:30.1908510000+0300\n/var/lib/systemd/timers/stamp-homelab-backup-sla-health.timer|f|644|0|2026-07-24T08:20:04.2052010000+0300\n/var/lib/systemd/timers/stamp-homelab-beszel-backup.timer|f|644|0|2026-07-24T06:50:28.1887810000+0300\n/var/lib/systemd/timers/stamp-homelab-blackbox-exporter-backup.timer|f|644|0|2026-07-24T07:04:58.1885410000+0300\n/var/lib/systemd/timers/stamp-homelab-cluster-admin-incident-engine-backup.timer|f|644|0|2026-07-24T07:28:04.2052360000+0300\n/var/lib/systemd/timers/stamp-homelab-control-backup.timer|f|644|0|2026-09-16T22:09:16.3210180000+0300\n/var/lib/systemd/timers/stamp-homelab-crypto-portfolio-backup.timer|f|644|0|2026-07-24T06:35:48.1886410000+0300\n/var/lib/systemd/timers/stamp-homelab-edge-vm-vzdump-backup.timer|f|644|0|2026-07-12T06:32:35.7440010000+0300\n/var/lib/systemd/timers/stamp-homelab-emergency-backup.timer|f|644|0|2026-07-24T03:13:28.3788040000+0300\n/var/lib/systemd/timers/stamp-homelab-extended-appbackup.timer|f|644|0|2026-07-24T05:58:49.6387590000+0300\n/var/lib/systemd/timers/stamp-homelab-gitea-backup.timer|f|644|0|2026-07-03T05:15:39.4018060000+0300\n/var/lib/systemd/timers/stamp-homelab-gitea-secondary-backup.timer|f|644|0|2026-07-24T04:27:33.5353450000+0300\n/var/lib/systemd/timers/stamp-homelab-legacy-monitoring-backups.timer|f|644|0|2026-07-24T07:15:31.2105280000+0300\n/var/lib/systemd/timers/stamp-homelab-npmplus-kuma-config-backup.timer|f|644|0|2026-07-03T04:26:00.4220920000+0300\n/var/lib/systemd/timers/stamp-homelab-vaultwarden-backup.timer|f|644|0|2026-07-03T05:32:00.4219990000+0300\n/var/lib/systemd/timers/stamp-homelab-verified-backup-health.timer|f|644|0|2026-07-24T06:45:28.4347180000+0300\n/var/lib/systemd/timers/stamp-homelab-vm-backup-health.timer|f|644|0|2026-07-24T07:43:04.2054760000+0300\n/var/lib/systemd/timers/stamp-homelab-vm-backup-policy.timer|f|644|0|2026-07-24T08:26:18.1885340000+0300\n/var/lib/systemd/timers/stamp-homelab-vm-cloud-quorum-queue.timer|f|644|0|2026-09-16T20:32:57.2920650000+0300\n/var/lib/systemd/timers/stamp-homelab-vm-full-backup.timer|f|644|0|2026-07-24T02:15:04.2060750000+0300\n=== CURRENT_SUMMARY ===\nCURRENT_BACKUP_V2_RESULT=exit-code\nCURRENT_BACKUP_V2_EXEC_STATUS=1\nCURRENT_BACKUP_V2_ACTIVE=failed\nCURRENT_BACKUP_AUDIT_RESULT=exit-code\nCURRENT_BACKUP_AUDIT_EXEC_STATUS=1\nCURRENT_BACKUP_AUDIT_ACTIVE=failed\nCURRENT_FAILED_STATE_PRESENT=true\nTASK_RESULT=PASS_HOMELAB_BACKUP_V2_CURRENT_FAILURE_RCA_COLLECTED\nDECISION=PASS_BACKUP_V2_CURRENT_FAILURE_RCA_COLLECTED\nNEXT_GATE=READ_EXACT_1221_AND_FIX_ONLY_PROVEN_BACKUP_CAUSE\nHOMELAB_RESULT_CONTRACT={\"version\":1,\"command_id\":\"SUPPORT-260927-HOMELAB-BACKUP-V2-CURRENT-FAILURE-RCA-1221R1\",\"status\":\"OK\",\"changes_made\":false,\"rollback_started\":false,\"rollback_restored\":null}\n"
|
|
}
|