diff --git a/runtime/history/NEWFI-260922-NEWFDOM-DR221-418-OWNER-FD-PHASE-RCA419R1.json b/runtime/history/NEWFI-260922-NEWFDOM-DR221-418-OWNER-FD-PHASE-RCA419R1.json new file mode 100644 index 00000000..1829b1b9 --- /dev/null +++ b/runtime/history/NEWFI-260922-NEWFDOM-DR221-418-OWNER-FD-PHASE-RCA419R1.json @@ -0,0 +1,38 @@ +{ + "schema_version": 1, + "channel": "homelab-runtime", + "command_id": "NEWFI-260922-NEWFDOM-DR221-418-OWNER-FD-PHASE-RCA419R1", + "status": "OK", + "rc": 0, + "host": "pve01", + "mode": "read-only", + "component": "newfi-dr221-418-owner-fd-phase-rca", + "started_at_utc": "2026-09-22T14:41:07Z", + "finished_at_utc": "2026-09-22T14:41:07Z", + "reference_register_checked": true, + "reference_sha256": "5a3d8e5154c41cb582a4e0aca68090be1f0138918bf82131a948df326f9d8d66", + "error_register_checked": true, + "error_register_sha256": "3b09a553ec0f527ed3afeed4753f52a74ee3036045bbfb3c685e9f8af4ba7ba0", + "command_sha256": "086ee022e9b084cfd4a2a9e59bd32b52470059e7d8713bec3b59065215adf353", + "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": "ff062154f98216b8725381d01e1dd68d7dcceaa4097f2011a73103ceb6b600ad", + "sanitized_output_sha256": "ff062154f98216b8725381d01e1dd68d7dcceaa4097f2011a73103ceb6b600ad", + "output_truncated_in_json": false, + "full_sanitized_output_url": "https://git.gram1.ru/.well-known/homelab-runtime/latest.txt", + "output": "NEWFI419_BEGIN=true\nCOMMAND_ID=NEWFI-260922-NEWFDOM-DR221-418-OWNER-FD-PHASE-RCA419R1\nMODE=read-only\nCOMPONENT=newfi-dr221-418-owner-fd-phase-rca\nTARGET=EXACT_CURRENT_HOMELAB_BACKUP_V2_OWNER_PHASE_AND_PROGRESS\nMUTATION_BOUNDARY=NONE;PROC_AND_SOURCE_READ_ONLY;NO_SIGNAL;NO_PTRACE;NO_KILL;NO_SYSTEMD_ACTION;NO_BACKUP;NO_CLOUD_WRITE;NO_VM_WRITE;NO_GIT_WRITE\nREFERENCE_SHA256=5a3d8e5154c41cb582a4e0aca68090be1f0138918bf82131a948df326f9d8d66\nERROR_REGISTER_SHA256=3b09a553ec0f527ed3afeed4753f52a74ee3036045bbfb3c685e9f8af4ba7ba0\nRUNNER_SHA256=b248a4c32c9cc64e5747e7dce6c7fc0a23f5124a77c71ce72e27a81aceae9d2d\nBACKUP_WRAPPER_SHA256=5077444065c732451cb84898680f62361b21a24ef9eb4f191253e82ead524ea2\nACCEPTED_RELEASE=/opt/homelab-backup-v2/releases/backup-v2-overlay-504r1-ca6876fa9c3b\nACCEPTED_RELEASE_GATE=PASS\nRUNTIME_SOURCE_PHASE_HINTS_BEGIN=true\nRUNTIME_SOURCE_FILE=entry504.py|SHA256=ca6876fa9c3b1465b045344a8ad46962de16972c7dadc4ac6257c7d225047793\n1-from __future__ import annotations\n2:import hashlib, importlib, json, os, pathlib, stat, sys, types\n3-\n4-BASE=pathlib.Path('/opt/homelab-backup-v2/releases/backup-v2-accepted-486r1')\n--\n16-\n17-def _sha(p):\n18: h=hashlib.sha256()\n19- with open(p,'rb',buffering=0) as f:\n20- while True:\n--\n41- def __setattr__(self,n,v): self._g[n]=v\n42-\n43:def _wire(wrapper,lxc_adapter,qemu_adapter,scheduler_adapter,base=BASE):\n44- legacy_path=(pathlib.Path(base)/'legacy_engine.py').resolve()\n45- found={}\n--\n48- g=vars(value); raw=g.get('__file__')\n49- elif isinstance(value,types.FunctionType):\n50: g=value.__globals__; raw=g.get('__file__')\n51- else:\n52- continue\n--\n79- if g.get('choose_due_target') is not scheduler_wired['choose_due_target'] or g.get('write_state') is not scheduler_wired['write_state']:\n80- raise RuntimeError('SCHEDULER_ADAPTER_BIND_RESULT')\n81: return {'legacy_globals':g,'legacy':proxy,'original_capture':original,'qemu_patched_capture':qemu_patched,'patched_capture':patched,'scheduler_wired':scheduler_wired}\n82-\n83-def _load():\n--\n86- sys.path.insert(0,str(BASE))\n87- wrapper=importlib.import_module('wrapper')\n88: # Baseline accepted wrapper selftest stays the compatibility gate; no full old legacy selftest is reintroduced.\n89: wrapper.selftest()\n90- sys.path.insert(0,str(HERE))\n91- lxc_adapter=importlib.import_module('lxc_adapter')\n--\n97- return wrapper,lxc_adapter,qemu_adapter,scheduler_adapter,wired\n98-\n99:def _target(wrapper,lid):\n100- rows=wrapper.load_targets(); hits=[x for x in rows if x.get('logical_id')==lid]\n101- if len(hits)!=1: raise RuntimeError('TARGET_CARDINALITY')\n102- return hits[0]\n103-\n104:def selftest():\n105- wrapper,lxc_adapter,qemu_adapter,scheduler_adapter,wired=_load()\n106: if wired['legacy_globals'].get('capture_pve_guest') is not wired['patched_capture']:\n107- raise RuntimeError('PATCH_BINDING')\n108: if wired['legacy_globals'].get('choose_due_target') is not wired['scheduler_wired']['choose_due_target']:\n109- raise RuntimeError('SCHEDULER_CHOOSE_BINDING')\n110: if wired['legacy_globals'].get('write_state') is not wired['scheduler_wired']['write_state']:\n111- raise RuntimeError('SCHEDULER_WRITE_BINDING')\n112- if [scheduler_adapter.backoff_seconds(n) for n in range(1,7)]!=[1800,3600,7200,14400,21600,21600]:\n--\n119-def main(argv=None):\n120- argv=list(sys.argv[1:] if argv is None else argv)\n121: if argv==['selftest']:\n122: return selftest()\n123- wrapper,lxc_adapter,qemu_adapter,scheduler_adapter,wired=_load()\n124- legacy=wired['legacy']\n125- if argv==['scheduler-proof']:\n126- import tempfile\n127: legacy=wired['legacy']; g=wired['legacy_globals']\n128- old_root=g.get('STATE_ROOT'); old_epoch=g.get('epoch')\n129- if old_root is None or not callable(old_epoch): raise RuntimeError('SCHEDULER_PROOF_BASE')\n--\n133- g['STATE_ROOT']=pathlib.Path(td); (g['STATE_ROOT']/'state').mkdir(mode=0o700)\n134- g['epoch']=lambda: now[0]\n135: common={'payload_sha256':'a'*64,'manifest_sha256':'b'*64,'replicas':['proof-r1','proof-r2']}\n136- legacy.write_state('proof-a','SUCCESS',generation='proof-a-good',**common)\n137- legacy.write_state('proof-b','SUCCESS',generation='proof-b-good',**common)\nRUNTIME_SOURCE_FILE=scheduler_adapter.py|SHA256=a6f67159a64067773323f028126e3109e15cf17a8142cea5e6129970f1d4da96\n35- if prior.get('result')=='SUCCESS':\n36- out={'last_success_epoch':_as_nonneg_int(prior.get('last_success_epoch'),0)}\n37: mapping=(('generation','last_success_generation'),('payload_sha256','last_success_payload_sha256'),\n38: ('manifest_sha256','last_success_manifest_sha256'),('replicas','last_success_replicas'),\n39- ('green_verified','last_success_green_verified'))\n40- for src,dst in mapping:\n--\n42- return out\n43- out={}\n44: for k in ('last_success_epoch','last_success_generation','last_success_payload_sha256',\n45: 'last_success_manifest_sha256','last_success_replicas','last_success_green_verified'):\n46- if k in prior: out[k]=prior[k]\n47- return out\n--\n53- _need(hasattr(legacy,'STATE_ROOT'),'LEGACY_STATE_ROOT_REQUIRED')\n54-\n55: def choose_due_target(targets,state,now=None):\n56- now=_as_nonneg_int(legacy.epoch() if now is None else now,0)\n57- _need(isinstance(targets,list) and isinstance(state,dict),'SCHEDULER_INPUT_SCHEMA')\nRUNTIME_SOURCE_FILE=producer_exec_helper.py|SHA256=b3b97099bcd7126670f866e81faae6a42a96d869d9989e6a67f6ea6c871c90b3\n1-from __future__ import annotations\n2:import hashlib, json, os, pathlib, sys\n3-\n4-BASE=pathlib.Path('/opt/homelab-backup-v2/releases/backup-v2-accepted-486r1/candidate411')\n--\n8-\n9-def sha_file(p:pathlib.Path)->str:\n10: h=hashlib.sha256()\n11- with open(p,'rb',buffering=0) as f:\n12- for b in iter(lambda:f.read(1<<20),b''): h.update(b)\n--\n19- p=parent/'PRODUCER_PROCESS.json'\n20- if not p.is_file() or p.is_symlink(): return None\n21: try: d=json.loads(p.read_bytes())\n22- except Exception: return {'summary_read':'FAILED'}\n23: keys=('process_started','producer_rc','capture_success','archive_bytes','stderr_bytes_observed','stderr_bytes_retained','stderr_truncated','stderr_stream_sha256','raw_stderr_exported','child_umask')\n24- return {k:d.get(k) for k in keys if k in d}\n25-\n26:def selftest()->int:\n27- if sha_file(VZDUMP)!=VZDUMP_SHA: fail('VZDUMP_IDENTITY')\n28- sys.path.insert(0,str(BASE))\n--\n33-\n34-def main()->int:\n35: if sys.argv[1:]==['selftest']: return selftest()\n36- if sys.argv[1:]: fail('ARGC')\n37- raw=sys.stdin.buffer.read(MAX_INPUT+1)\n--\n61- except Exception as e:\n62- out={'status':'FAIL','exception_class':type(e).__module__+'.'+type(e).__name__,\n63: 'exception_message_sha256':hashlib.sha256(str(e).encode()).hexdigest(),\n64- 'process':safe_process_summary(dest.parent)}\n65- print(json.dumps(out,separators=(',',':'),sort_keys=True),flush=True)\n--\n70- except Exception as e:\n71- print(json.dumps({'status':'FAIL','exception_class':type(e).__module__+'.'+type(e).__name__,\n72: 'exception_message_sha256':hashlib.sha256(str(e).encode()).hexdigest(),\n73- 'process':None},separators=(',',':'),sort_keys=True),flush=True)\n74- raise SystemExit(2)\nRUNTIME_SOURCE_PHASE_HINTS_END=true\nMainPID=335341\nResult=success\nExecMainStartTimestamp=Tue 2026-09-22 14:51:24 MSK\nExecMainExitTimestamp=\nExecMainPID=335341\nExecMainStatus=0\nLoadState=loaded\nActiveState=activating\nSubState=start\nInvocationID=124bde99379341a1bf82f318f31f9621\nOWNER_PID_START=335341\nOWNER_INVOCATION_ID=124bde99379341a1bf82f318f31f9621\nHEAVY_LOCK_START=BUSY\nCURRENT_INVOCATION_JOURNAL_LINES=1\nCURRENT_INVOCATION_JOURNAL_SHA256=25b081a572c3c2feb67855d9294cbfad87cb01cd703b722db59fce65e936bf6b\nCURRENT_INVOCATION_JOURNAL_BEGIN=true\n2026-09-22T14:51:25+03:00 pve01 homelab-backup-v2[335341]: SELFTEST_REPLACEMENT486=PASS\nCURRENT_INVOCATION_JOURNAL_END=true\nCURRENT_INVOCATION_SELFTEST_PASS=true\nCURRENT_INVOCATION_TARGET_SEEN=false\nCURRENT_INVOCATION_RESULT_SEEN=false\nCURRENT_INVOCATION_LATEST_TARGET=NONE\nPROC_SNAPSHOT_BEGIN=A\nPROC_PRESENT_A=true\n 335341 1 10152 S 0.0 0.0 homelab-backup- /usr/bin/python3 /usr/local/sbin/homelab-backup-v2 scheduled\nWCHAN_A=poll_schedule_timeout.constprop.0\nSYSCALL_A=7 [PTR] [PTR] [PTR] [PTR] [PTR] [PTR] [PTR] [PTR]\nIO_A_rchar=2172298800\nIO_A_wchar=1354968903\nIO_A_syscr=838052\nIO_A_syscw=96420\nIO_A_read_bytes=0\nIO_A_write_bytes=570032128\nSTATUS_A_STATE=S\nCTX_A_VOL=31893\nCTX_A_INVOL=288\nFD_COUNT_A=7\nFD_A|fd=0|cat=DEV|pos=0|size=0|base=null|path_sha16=fd5d32feb2d35625\nFD_A|fd=1|cat=SOCKET|pos=0|size=NA|base=NA|path_sha16=feb8f1e1f9e2ba39\nFD_A|fd=2|cat=SOCKET|pos=0|size=NA|base=NA|path_sha16=feb8f1e1f9e2ba39\nFD_A|fd=3|cat=BACKUP_RUN|pos=0|size=0|base=homelab-backup-heavy.lock|path_sha16=2642241b0beaa737\nFD_A|fd=4|cat=OTHER_FILE|pos=570032128|size=570032128|base=payload.tar.zst|path_sha16=a5bf89245089a1c8\nFD_A|fd=5|cat=PIPE|pos=0|size=NA|base=NA|path_sha16=18f487fd1dca338f\nFD_A|fd=7|cat=PIPE|pos=0|size=NA|base=NA|path_sha16=6f3886873903d4f2\nCHILDREN_A\n 903072 335341 1 S ssh /usr/bin/ssh -o BatchMode=yes -o StrictHostKeyChecking=yes root@pve02 PATH=/usr/sbin:/usr/bin:/sbin:/bin; export PATH; exec qm guest exec 160 --synchronous 1 --timeout 60 -- /usr/bin/python3 -I -B -c 'import base64,sys; p=sys.argv[1]; o=int(sys.argv[2]); n=int(sys.argv[3]); f=open(p,'\"'\"'rb'\"'\"'); f.seek(o); b=f.read(n); f.close(); sys.stdout.write(base64.b64encode(b).decode())' /tmp/homelab-v2-xf-0922T115125Z1b7415a2313b.tar.zst 570032128 131072\nSOCKETS_A\nPROC_SNAPSHOT_END=A\nPROC_SNAPSHOT_BEGIN=B\nPROC_PRESENT_B=true\n 335341 1 10167 S 0.0 0.0 homelab-backup- /usr/bin/python3 /usr/local/sbin/homelab-backup-v2 scheduled\nWCHAN_B=poll_schedule_timeout.constprop.0\nSYSCALL_B=7 [PTR] [PTR] [PTR] [PTR] [PTR] [PTR] [PTR] [PTR]\nIO_B_rchar=2175695809\nIO_B_wchar=1357149803\nIO_B_syscr=839397\nIO_B_syscw=96576\nIO_B_read_bytes=0\nIO_B_write_bytes=570949632\nSTATUS_B_STATE=S\nCTX_B_VOL=31943\nCTX_B_INVOL=288\nFD_COUNT_B=7\nFD_B|fd=0|cat=DEV|pos=0|size=0|base=null|path_sha16=fd5d32feb2d35625\nFD_B|fd=1|cat=SOCKET|pos=0|size=NA|base=NA|path_sha16=feb8f1e1f9e2ba39\nFD_B|fd=2|cat=SOCKET|pos=0|size=NA|base=NA|path_sha16=feb8f1e1f9e2ba39\nFD_B|fd=3|cat=BACKUP_RUN|pos=0|size=0|base=homelab-backup-heavy.lock|path_sha16=2642241b0beaa737\nFD_B|fd=4|cat=OTHER_FILE|pos=570949632|size=570949632|base=payload.tar.zst|path_sha16=a5bf89245089a1c8\nFD_B|fd=5|cat=PIPE|pos=0|size=NA|base=NA|path_sha16=3a74719a8d200544\nFD_B|fd=7|cat=PIPE|pos=0|size=NA|base=NA|path_sha16=27db66d36b35c3d5\nCHILDREN_B\n 903386 335341 0 S ssh /usr/bin/ssh -o BatchMode=yes -o StrictHostKeyChecking=yes root@pve02 PATH=/usr/sbin:/usr/bin:/sbin:/bin; export PATH; exec qm guest exec 160 --synchronous 1 --timeout 60 -- /usr/bin/python3 -I -B -c 'import base64,sys; p=sys.argv[1]; o=int(sys.argv[2]); n=int(sys.argv[3]); f=open(p,'\"'\"'rb'\"'\"'); f.seek(o); b=f.read(n); f.close(); sys.stdout.write(base64.b64encode(b).decode())' /tmp/homelab-v2-xf-0922T115125Z1b7415a2313b.tar.zst 570949632 131072\nSOCKETS_B\nPROC_SNAPSHOT_END=B\nPROC_SNAPSHOT_BEGIN=C\nPROC_PRESENT_C=true\n 335341 1 10182 S 0.0 0.0 homelab-backup- /usr/bin/python3 /usr/local/sbin/homelab-backup-v2 scheduled\nWCHAN_C=poll_schedule_timeout.constprop.0\nSYSCALL_C=7 [PTR] [PTR] [PTR] [PTR] [PTR] [PTR] [PTR] [PTR]\nIO_C_rchar=2178607641\nIO_C_wchar=1359019147\nIO_C_syscr=840546\nIO_C_syscw=96707\nIO_C_read_bytes=0\nIO_C_write_bytes=571736064\nSTATUS_C_STATE=S\nCTX_C_VOL=31987\nCTX_C_INVOL=288\nFD_COUNT_C=7\nFD_C|fd=0|cat=DEV|pos=0|size=0|base=null|path_sha16=fd5d32feb2d35625\nFD_C|fd=1|cat=SOCKET|pos=0|size=NA|base=NA|path_sha16=feb8f1e1f9e2ba39\nFD_C|fd=2|cat=SOCKET|pos=0|size=NA|base=NA|path_sha16=feb8f1e1f9e2ba39\nFD_C|fd=3|cat=BACKUP_RUN|pos=0|size=0|base=homelab-backup-heavy.lock|path_sha16=2642241b0beaa737\nFD_C|fd=4|cat=OTHER_FILE|pos=571736064|size=571736064|base=payload.tar.zst|path_sha16=a5bf89245089a1c8\nFD_C|fd=5|cat=PIPE|pos=0|size=NA|base=NA|path_sha16=e931a2a362f85fd8\nFD_C|fd=7|cat=PIPE|pos=0|size=NA|base=NA|path_sha16=8d16e18acde67925\nCHILDREN_C\n 903565 335341 1 S ssh /usr/bin/ssh -o BatchMode=yes -o StrictHostKeyChecking=yes root@pve02 PATH=/usr/sbin:/usr/bin:/sbin:/bin; export PATH; exec qm guest exec 160 --synchronous 1 --timeout 60 -- /usr/bin/python3 -I -B -c 'import base64,sys; p=sys.argv[1]; o=int(sys.argv[2]); n=int(sys.argv[3]); f=open(p,'\"'\"'rb'\"'\"'); f.seek(o); b=f.read(n); f.close(); sys.stdout.write(base64.b64encode(b).decode())' /tmp/homelab-v2-xf-0922T115125Z1b7415a2313b.tar.zst 571736064 131072\nSOCKETS_C\nPROC_SNAPSHOT_END=C\nOWNER_END_STATE|active=activating|sub=start|pid=335341|heavy=BUSY\nPID_STABLE=true\nDELTA_A_B_rchar=3397009\nDELTA_A_B_wchar=2180900\nDELTA_A_B_syscr=1345\nDELTA_A_B_syscw=156\nDELTA_A_B_read_bytes=0\nDELTA_A_B_write_bytes=917504\nDELTA_B_C_rchar=2911832\nDELTA_B_C_wchar=1869344\nDELTA_B_C_syscr=1149\nDELTA_B_C_syscw=131\nDELTA_B_C_read_bytes=0\nDELTA_B_C_write_bytes=786432\nDELTA_A_C_rchar=6308841\nDELTA_A_C_wchar=4050244\nDELTA_A_C_syscr=2494\nDELTA_A_C_syscw=287\nDELTA_A_C_read_bytes=0\nDELTA_A_C_write_bytes=1703936\nINTERNAL_IO_PROGRESS_30S=true\nCURRENT_INVOCATION_END_JOURNAL_LINES=1\nCURRENT_INVOCATION_END_JOURNAL_BEGIN=true\n2026-09-22T14:51:25+03:00 pve01 homelab-backup-v2[335341]: SELFTEST_REPLACEMENT486=PASS\nCURRENT_INVOCATION_END_JOURNAL_END=true\nEND_INVOCATION_SELFTEST_PASS=true\nEND_INVOCATION_TARGET_SEEN=false\nEND_INVOCATION_LATEST_TARGET=NONE\nOWNER_PHASE=ACTIVE_AFTER_SELFTEST_BEFORE_TARGET_MARKER\nDECISION=PASS_DR221_419_OWNER_PRETARGET_INTERNAL_IO_PROVEN\nNEXT_GATE=WAIT_NATURAL_OWNER_COMPLETION_THEN_REISSUE_VM210_MEMBERSHIP_AND_FRESH_BACKUP\nCHANGES_MADE_BY_419=false\nPRODUCT_MUTATION_BY_419=false\nVM_MUTATION_BY_419=false\nCLOUD_MUTATION_BY_419=false\nHOMELAB_RESULT_CONTRACT={\"version\":1,\"command_id\":\"NEWFI-260922-NEWFDOM-DR221-418-OWNER-FD-PHASE-RCA419R1\",\"status\":\"OK\",\"changes_made\":false,\"rollback_started\":false,\"rollback_restored\":null}\nNEWFI419_END=true\n" +} diff --git a/runtime/history/NEWFI-260922-NEWFDOM-DR221-418-OWNER-FD-PHASE-RCA419R1.txt b/runtime/history/NEWFI-260922-NEWFDOM-DR221-418-OWNER-FD-PHASE-RCA419R1.txt new file mode 100644 index 00000000..595e8ea6 --- /dev/null +++ b/runtime/history/NEWFI-260922-NEWFDOM-DR221-418-OWNER-FD-PHASE-RCA419R1.txt @@ -0,0 +1,314 @@ +CHAT_OUTPUT_BEGIN +COMMAND_ID=NEWFI-260922-NEWFDOM-DR221-418-OWNER-FD-PHASE-RCA419R1 +STATUS=OK +RC=0 +HOST=pve01 +MODE=read-only +COMPONENT=newfi-dr221-418-owner-fd-phase-rca +REFERENCE_REGISTER_CHECK=OK +REFERENCE_SHA256=5a3d8e5154c41cb582a4e0aca68090be1f0138918bf82131a948df326f9d8d66 +ERROR_REGISTER_CHECK=OK +ERROR_REGISTER_SHA256=3b09a553ec0f527ed3afeed4753f52a74ee3036045bbfb3c685e9f8af4ba7ba0 +COMMAND_SHA256=086ee022e9b084cfd4a2a9e59bd32b52470059e7d8713bec3b59065215adf353 +DUPLICATE_FAILED_COMMAND_BLOCKED=false +EXECUTION_STARTED=true +CHANGE_DECLARED=false +RESULT_CONTRACT_VALID=true +RESULT_CONTRACT_STATUS=NOT_APPLICABLE +RESULT_CONTRACT_ERROR=NONE +COMMAND_RC=0 +CHANGES_MADE=false +ROLLBACK_STARTED=false +ROLLBACK_RESTORED=null +MUTATION_OUTCOME=NO_MUTATION +SANITIZED=yes +SECRETS_INCLUDED=no +PRIVATE_ADDRESSES_INCLUDED=no +RAW_EVIDENCE_SHA256=ff062154f98216b8725381d01e1dd68d7dcceaa4097f2011a73103ceb6b600ad +SANITIZED_OUTPUT_SHA256=ff062154f98216b8725381d01e1dd68d7dcceaa4097f2011a73103ceb6b600ad +OUTPUT_BEGIN +NEWFI419_BEGIN=true +COMMAND_ID=NEWFI-260922-NEWFDOM-DR221-418-OWNER-FD-PHASE-RCA419R1 +MODE=read-only +COMPONENT=newfi-dr221-418-owner-fd-phase-rca +TARGET=EXACT_CURRENT_HOMELAB_BACKUP_V2_OWNER_PHASE_AND_PROGRESS +MUTATION_BOUNDARY=NONE;PROC_AND_SOURCE_READ_ONLY;NO_SIGNAL;NO_PTRACE;NO_KILL;NO_SYSTEMD_ACTION;NO_BACKUP;NO_CLOUD_WRITE;NO_VM_WRITE;NO_GIT_WRITE +REFERENCE_SHA256=5a3d8e5154c41cb582a4e0aca68090be1f0138918bf82131a948df326f9d8d66 +ERROR_REGISTER_SHA256=3b09a553ec0f527ed3afeed4753f52a74ee3036045bbfb3c685e9f8af4ba7ba0 +RUNNER_SHA256=b248a4c32c9cc64e5747e7dce6c7fc0a23f5124a77c71ce72e27a81aceae9d2d +BACKUP_WRAPPER_SHA256=5077444065c732451cb84898680f62361b21a24ef9eb4f191253e82ead524ea2 +ACCEPTED_RELEASE=/opt/homelab-backup-v2/releases/backup-v2-overlay-504r1-ca6876fa9c3b +ACCEPTED_RELEASE_GATE=PASS +RUNTIME_SOURCE_PHASE_HINTS_BEGIN=true +RUNTIME_SOURCE_FILE=entry504.py|SHA256=ca6876fa9c3b1465b045344a8ad46962de16972c7dadc4ac6257c7d225047793 +1-from __future__ import annotations +2:import hashlib, importlib, json, os, pathlib, stat, sys, types +3- +4-BASE=pathlib.Path('/opt/homelab-backup-v2/releases/backup-v2-accepted-486r1') +-- +16- +17-def _sha(p): +18: h=hashlib.sha256() +19- with open(p,'rb',buffering=0) as f: +20- while True: +-- +41- def __setattr__(self,n,v): self._g[n]=v +42- +43:def _wire(wrapper,lxc_adapter,qemu_adapter,scheduler_adapter,base=BASE): +44- legacy_path=(pathlib.Path(base)/'legacy_engine.py').resolve() +45- found={} +-- +48- g=vars(value); raw=g.get('__file__') +49- elif isinstance(value,types.FunctionType): +50: g=value.__globals__; raw=g.get('__file__') +51- else: +52- continue +-- +79- if g.get('choose_due_target') is not scheduler_wired['choose_due_target'] or g.get('write_state') is not scheduler_wired['write_state']: +80- raise RuntimeError('SCHEDULER_ADAPTER_BIND_RESULT') +81: return {'legacy_globals':g,'legacy':proxy,'original_capture':original,'qemu_patched_capture':qemu_patched,'patched_capture':patched,'scheduler_wired':scheduler_wired} +82- +83-def _load(): +-- +86- sys.path.insert(0,str(BASE)) +87- wrapper=importlib.import_module('wrapper') +88: # Baseline accepted wrapper selftest stays the compatibility gate; no full old legacy selftest is reintroduced. +89: wrapper.selftest() +90- sys.path.insert(0,str(HERE)) +91- lxc_adapter=importlib.import_module('lxc_adapter') +-- +97- return wrapper,lxc_adapter,qemu_adapter,scheduler_adapter,wired +98- +99:def _target(wrapper,lid): +100- rows=wrapper.load_targets(); hits=[x for x in rows if x.get('logical_id')==lid] +101- if len(hits)!=1: raise RuntimeError('TARGET_CARDINALITY') +102- return hits[0] +103- +104:def selftest(): +105- wrapper,lxc_adapter,qemu_adapter,scheduler_adapter,wired=_load() +106: if wired['legacy_globals'].get('capture_pve_guest') is not wired['patched_capture']: +107- raise RuntimeError('PATCH_BINDING') +108: if wired['legacy_globals'].get('choose_due_target') is not wired['scheduler_wired']['choose_due_target']: +109- raise RuntimeError('SCHEDULER_CHOOSE_BINDING') +110: if wired['legacy_globals'].get('write_state') is not wired['scheduler_wired']['write_state']: +111- raise RuntimeError('SCHEDULER_WRITE_BINDING') +112- if [scheduler_adapter.backoff_seconds(n) for n in range(1,7)]!=[1800,3600,7200,14400,21600,21600]: +-- +119-def main(argv=None): +120- argv=list(sys.argv[1:] if argv is None else argv) +121: if argv==['selftest']: +122: return selftest() +123- wrapper,lxc_adapter,qemu_adapter,scheduler_adapter,wired=_load() +124- legacy=wired['legacy'] +125- if argv==['scheduler-proof']: +126- import tempfile +127: legacy=wired['legacy']; g=wired['legacy_globals'] +128- old_root=g.get('STATE_ROOT'); old_epoch=g.get('epoch') +129- if old_root is None or not callable(old_epoch): raise RuntimeError('SCHEDULER_PROOF_BASE') +-- +133- g['STATE_ROOT']=pathlib.Path(td); (g['STATE_ROOT']/'state').mkdir(mode=0o700) +134- g['epoch']=lambda: now[0] +135: common={'payload_sha256':'a'*64,'manifest_sha256':'b'*64,'replicas':['proof-r1','proof-r2']} +136- legacy.write_state('proof-a','SUCCESS',generation='proof-a-good',**common) +137- legacy.write_state('proof-b','SUCCESS',generation='proof-b-good',**common) +RUNTIME_SOURCE_FILE=scheduler_adapter.py|SHA256=a6f67159a64067773323f028126e3109e15cf17a8142cea5e6129970f1d4da96 +35- if prior.get('result')=='SUCCESS': +36- out={'last_success_epoch':_as_nonneg_int(prior.get('last_success_epoch'),0)} +37: mapping=(('generation','last_success_generation'),('payload_sha256','last_success_payload_sha256'), +38: ('manifest_sha256','last_success_manifest_sha256'),('replicas','last_success_replicas'), +39- ('green_verified','last_success_green_verified')) +40- for src,dst in mapping: +-- +42- return out +43- out={} +44: for k in ('last_success_epoch','last_success_generation','last_success_payload_sha256', +45: 'last_success_manifest_sha256','last_success_replicas','last_success_green_verified'): +46- if k in prior: out[k]=prior[k] +47- return out +-- +53- _need(hasattr(legacy,'STATE_ROOT'),'LEGACY_STATE_ROOT_REQUIRED') +54- +55: def choose_due_target(targets,state,now=None): +56- now=_as_nonneg_int(legacy.epoch() if now is None else now,0) +57- _need(isinstance(targets,list) and isinstance(state,dict),'SCHEDULER_INPUT_SCHEMA') +RUNTIME_SOURCE_FILE=producer_exec_helper.py|SHA256=b3b97099bcd7126670f866e81faae6a42a96d869d9989e6a67f6ea6c871c90b3 +1-from __future__ import annotations +2:import hashlib, json, os, pathlib, sys +3- +4-BASE=pathlib.Path('/opt/homelab-backup-v2/releases/backup-v2-accepted-486r1/candidate411') +-- +8- +9-def sha_file(p:pathlib.Path)->str: +10: h=hashlib.sha256() +11- with open(p,'rb',buffering=0) as f: +12- for b in iter(lambda:f.read(1<<20),b''): h.update(b) +-- +19- p=parent/'PRODUCER_PROCESS.json' +20- if not p.is_file() or p.is_symlink(): return None +21: try: d=json.loads(p.read_bytes()) +22- except Exception: return {'summary_read':'FAILED'} +23: keys=('process_started','producer_rc','capture_success','archive_bytes','stderr_bytes_observed','stderr_bytes_retained','stderr_truncated','stderr_stream_sha256','raw_stderr_exported','child_umask') +24- return {k:d.get(k) for k in keys if k in d} +25- +26:def selftest()->int: +27- if sha_file(VZDUMP)!=VZDUMP_SHA: fail('VZDUMP_IDENTITY') +28- sys.path.insert(0,str(BASE)) +-- +33- +34-def main()->int: +35: if sys.argv[1:]==['selftest']: return selftest() +36- if sys.argv[1:]: fail('ARGC') +37- raw=sys.stdin.buffer.read(MAX_INPUT+1) +-- +61- except Exception as e: +62- out={'status':'FAIL','exception_class':type(e).__module__+'.'+type(e).__name__, +63: 'exception_message_sha256':hashlib.sha256(str(e).encode()).hexdigest(), +64- 'process':safe_process_summary(dest.parent)} +65- print(json.dumps(out,separators=(',',':'),sort_keys=True),flush=True) +-- +70- except Exception as e: +71- print(json.dumps({'status':'FAIL','exception_class':type(e).__module__+'.'+type(e).__name__, +72: 'exception_message_sha256':hashlib.sha256(str(e).encode()).hexdigest(), +73- 'process':None},separators=(',',':'),sort_keys=True),flush=True) +74- raise SystemExit(2) +RUNTIME_SOURCE_PHASE_HINTS_END=true +MainPID=335341 +Result=success +ExecMainStartTimestamp=Tue 2026-09-22 14:51:24 MSK +ExecMainExitTimestamp= +ExecMainPID=335341 +ExecMainStatus=0 +LoadState=loaded +ActiveState=activating +SubState=start +InvocationID=124bde99379341a1bf82f318f31f9621 +OWNER_PID_START=335341 +OWNER_INVOCATION_ID=124bde99379341a1bf82f318f31f9621 +HEAVY_LOCK_START=BUSY +CURRENT_INVOCATION_JOURNAL_LINES=1 +CURRENT_INVOCATION_JOURNAL_SHA256=25b081a572c3c2feb67855d9294cbfad87cb01cd703b722db59fce65e936bf6b +CURRENT_INVOCATION_JOURNAL_BEGIN=true +2026-09-22T14:51:25+03:00 pve01 homelab-backup-v2[335341]: SELFTEST_REPLACEMENT486=PASS +CURRENT_INVOCATION_JOURNAL_END=true +CURRENT_INVOCATION_SELFTEST_PASS=true +CURRENT_INVOCATION_TARGET_SEEN=false +CURRENT_INVOCATION_RESULT_SEEN=false +CURRENT_INVOCATION_LATEST_TARGET=NONE +PROC_SNAPSHOT_BEGIN=A +PROC_PRESENT_A=true + 335341 1 10152 S 0.0 0.0 homelab-backup- /usr/bin/python3 /usr/local/sbin/homelab-backup-v2 scheduled +WCHAN_A=poll_schedule_timeout.constprop.0 +SYSCALL_A=7 [PTR] [PTR] [PTR] [PTR] [PTR] [PTR] [PTR] [PTR] +IO_A_rchar=2172298800 +IO_A_wchar=1354968903 +IO_A_syscr=838052 +IO_A_syscw=96420 +IO_A_read_bytes=0 +IO_A_write_bytes=570032128 +STATUS_A_STATE=S +CTX_A_VOL=31893 +CTX_A_INVOL=288 +FD_COUNT_A=7 +FD_A|fd=0|cat=DEV|pos=0|size=0|base=null|path_sha16=fd5d32feb2d35625 +FD_A|fd=1|cat=SOCKET|pos=0|size=NA|base=NA|path_sha16=feb8f1e1f9e2ba39 +FD_A|fd=2|cat=SOCKET|pos=0|size=NA|base=NA|path_sha16=feb8f1e1f9e2ba39 +FD_A|fd=3|cat=BACKUP_RUN|pos=0|size=0|base=homelab-backup-heavy.lock|path_sha16=2642241b0beaa737 +FD_A|fd=4|cat=OTHER_FILE|pos=570032128|size=570032128|base=payload.tar.zst|path_sha16=a5bf89245089a1c8 +FD_A|fd=5|cat=PIPE|pos=0|size=NA|base=NA|path_sha16=18f487fd1dca338f +FD_A|fd=7|cat=PIPE|pos=0|size=NA|base=NA|path_sha16=6f3886873903d4f2 +CHILDREN_A + 903072 335341 1 S ssh /usr/bin/ssh -o BatchMode=yes -o StrictHostKeyChecking=yes root@pve02 PATH=/usr/sbin:/usr/bin:/sbin:/bin; export PATH; exec qm guest exec 160 --synchronous 1 --timeout 60 -- /usr/bin/python3 -I -B -c 'import base64,sys; p=sys.argv[1]; o=int(sys.argv[2]); n=int(sys.argv[3]); f=open(p,'"'"'rb'"'"'); f.seek(o); b=f.read(n); f.close(); sys.stdout.write(base64.b64encode(b).decode())' /tmp/homelab-v2-xf-0922T115125Z1b7415a2313b.tar.zst 570032128 131072 +SOCKETS_A +PROC_SNAPSHOT_END=A +PROC_SNAPSHOT_BEGIN=B +PROC_PRESENT_B=true + 335341 1 10167 S 0.0 0.0 homelab-backup- /usr/bin/python3 /usr/local/sbin/homelab-backup-v2 scheduled +WCHAN_B=poll_schedule_timeout.constprop.0 +SYSCALL_B=7 [PTR] [PTR] [PTR] [PTR] [PTR] [PTR] [PTR] [PTR] +IO_B_rchar=2175695809 +IO_B_wchar=1357149803 +IO_B_syscr=839397 +IO_B_syscw=96576 +IO_B_read_bytes=0 +IO_B_write_bytes=570949632 +STATUS_B_STATE=S +CTX_B_VOL=31943 +CTX_B_INVOL=288 +FD_COUNT_B=7 +FD_B|fd=0|cat=DEV|pos=0|size=0|base=null|path_sha16=fd5d32feb2d35625 +FD_B|fd=1|cat=SOCKET|pos=0|size=NA|base=NA|path_sha16=feb8f1e1f9e2ba39 +FD_B|fd=2|cat=SOCKET|pos=0|size=NA|base=NA|path_sha16=feb8f1e1f9e2ba39 +FD_B|fd=3|cat=BACKUP_RUN|pos=0|size=0|base=homelab-backup-heavy.lock|path_sha16=2642241b0beaa737 +FD_B|fd=4|cat=OTHER_FILE|pos=570949632|size=570949632|base=payload.tar.zst|path_sha16=a5bf89245089a1c8 +FD_B|fd=5|cat=PIPE|pos=0|size=NA|base=NA|path_sha16=3a74719a8d200544 +FD_B|fd=7|cat=PIPE|pos=0|size=NA|base=NA|path_sha16=27db66d36b35c3d5 +CHILDREN_B + 903386 335341 0 S ssh /usr/bin/ssh -o BatchMode=yes -o StrictHostKeyChecking=yes root@pve02 PATH=/usr/sbin:/usr/bin:/sbin:/bin; export PATH; exec qm guest exec 160 --synchronous 1 --timeout 60 -- /usr/bin/python3 -I -B -c 'import base64,sys; p=sys.argv[1]; o=int(sys.argv[2]); n=int(sys.argv[3]); f=open(p,'"'"'rb'"'"'); f.seek(o); b=f.read(n); f.close(); sys.stdout.write(base64.b64encode(b).decode())' /tmp/homelab-v2-xf-0922T115125Z1b7415a2313b.tar.zst 570949632 131072 +SOCKETS_B +PROC_SNAPSHOT_END=B +PROC_SNAPSHOT_BEGIN=C +PROC_PRESENT_C=true + 335341 1 10182 S 0.0 0.0 homelab-backup- /usr/bin/python3 /usr/local/sbin/homelab-backup-v2 scheduled +WCHAN_C=poll_schedule_timeout.constprop.0 +SYSCALL_C=7 [PTR] [PTR] [PTR] [PTR] [PTR] [PTR] [PTR] [PTR] +IO_C_rchar=2178607641 +IO_C_wchar=1359019147 +IO_C_syscr=840546 +IO_C_syscw=96707 +IO_C_read_bytes=0 +IO_C_write_bytes=571736064 +STATUS_C_STATE=S +CTX_C_VOL=31987 +CTX_C_INVOL=288 +FD_COUNT_C=7 +FD_C|fd=0|cat=DEV|pos=0|size=0|base=null|path_sha16=fd5d32feb2d35625 +FD_C|fd=1|cat=SOCKET|pos=0|size=NA|base=NA|path_sha16=feb8f1e1f9e2ba39 +FD_C|fd=2|cat=SOCKET|pos=0|size=NA|base=NA|path_sha16=feb8f1e1f9e2ba39 +FD_C|fd=3|cat=BACKUP_RUN|pos=0|size=0|base=homelab-backup-heavy.lock|path_sha16=2642241b0beaa737 +FD_C|fd=4|cat=OTHER_FILE|pos=571736064|size=571736064|base=payload.tar.zst|path_sha16=a5bf89245089a1c8 +FD_C|fd=5|cat=PIPE|pos=0|size=NA|base=NA|path_sha16=e931a2a362f85fd8 +FD_C|fd=7|cat=PIPE|pos=0|size=NA|base=NA|path_sha16=8d16e18acde67925 +CHILDREN_C + 903565 335341 1 S ssh /usr/bin/ssh -o BatchMode=yes -o StrictHostKeyChecking=yes root@pve02 PATH=/usr/sbin:/usr/bin:/sbin:/bin; export PATH; exec qm guest exec 160 --synchronous 1 --timeout 60 -- /usr/bin/python3 -I -B -c 'import base64,sys; p=sys.argv[1]; o=int(sys.argv[2]); n=int(sys.argv[3]); f=open(p,'"'"'rb'"'"'); f.seek(o); b=f.read(n); f.close(); sys.stdout.write(base64.b64encode(b).decode())' /tmp/homelab-v2-xf-0922T115125Z1b7415a2313b.tar.zst 571736064 131072 +SOCKETS_C +PROC_SNAPSHOT_END=C +OWNER_END_STATE|active=activating|sub=start|pid=335341|heavy=BUSY +PID_STABLE=true +DELTA_A_B_rchar=3397009 +DELTA_A_B_wchar=2180900 +DELTA_A_B_syscr=1345 +DELTA_A_B_syscw=156 +DELTA_A_B_read_bytes=0 +DELTA_A_B_write_bytes=917504 +DELTA_B_C_rchar=2911832 +DELTA_B_C_wchar=1869344 +DELTA_B_C_syscr=1149 +DELTA_B_C_syscw=131 +DELTA_B_C_read_bytes=0 +DELTA_B_C_write_bytes=786432 +DELTA_A_C_rchar=6308841 +DELTA_A_C_wchar=4050244 +DELTA_A_C_syscr=2494 +DELTA_A_C_syscw=287 +DELTA_A_C_read_bytes=0 +DELTA_A_C_write_bytes=1703936 +INTERNAL_IO_PROGRESS_30S=true +CURRENT_INVOCATION_END_JOURNAL_LINES=1 +CURRENT_INVOCATION_END_JOURNAL_BEGIN=true +2026-09-22T14:51:25+03:00 pve01 homelab-backup-v2[335341]: SELFTEST_REPLACEMENT486=PASS +CURRENT_INVOCATION_END_JOURNAL_END=true +END_INVOCATION_SELFTEST_PASS=true +END_INVOCATION_TARGET_SEEN=false +END_INVOCATION_LATEST_TARGET=NONE +OWNER_PHASE=ACTIVE_AFTER_SELFTEST_BEFORE_TARGET_MARKER +DECISION=PASS_DR221_419_OWNER_PRETARGET_INTERNAL_IO_PROVEN +NEXT_GATE=WAIT_NATURAL_OWNER_COMPLETION_THEN_REISSUE_VM210_MEMBERSHIP_AND_FRESH_BACKUP +CHANGES_MADE_BY_419=false +PRODUCT_MUTATION_BY_419=false +VM_MUTATION_BY_419=false +CLOUD_MUTATION_BY_419=false +HOMELAB_RESULT_CONTRACT={"version":1,"command_id":"NEWFI-260922-NEWFDOM-DR221-418-OWNER-FD-PHASE-RCA419R1","status":"OK","changes_made":false,"rollback_started":false,"rollback_restored":null} +NEWFI419_END=true + +OUTPUT_END +CHAT_OUTPUT_END diff --git a/runtime/latest.json b/runtime/latest.json index 5a97c4e8..1829b1b9 100644 --- a/runtime/latest.json +++ b/runtime/latest.json @@ -1,19 +1,19 @@ { "schema_version": 1, "channel": "homelab-runtime", - "command_id": "NEWFI-260922-NEWFDOM-DR221-417-OWNER-PROGRESS-RCA418R1", - "status": "FAIL", - "rc": 3, + "command_id": "NEWFI-260922-NEWFDOM-DR221-418-OWNER-FD-PHASE-RCA419R1", + "status": "OK", + "rc": 0, "host": "pve01", "mode": "read-only", - "component": "newfi-dr221-417-owner-progress-rca", - "started_at_utc": "2026-09-22T14:30:41Z", - "finished_at_utc": "2026-09-22T14:30:41Z", + "component": "newfi-dr221-418-owner-fd-phase-rca", + "started_at_utc": "2026-09-22T14:41:07Z", + "finished_at_utc": "2026-09-22T14:41:07Z", "reference_register_checked": true, "reference_sha256": "5a3d8e5154c41cb582a4e0aca68090be1f0138918bf82131a948df326f9d8d66", "error_register_checked": true, "error_register_sha256": "3b09a553ec0f527ed3afeed4753f52a74ee3036045bbfb3c685e9f8af4ba7ba0", - "command_sha256": "4a6ffa7e4be488f5525dbf860d798530d452370e871c3254cb9cb85347478085", + "command_sha256": "086ee022e9b084cfd4a2a9e59bd32b52470059e7d8713bec3b59065215adf353", "duplicate_failed_command_blocked": false, "block_reason": null, "execution_started": true, @@ -21,7 +21,7 @@ "result_contract_valid": true, "result_contract_status": null, "result_contract_error": null, - "command_rc": 3, + "command_rc": 0, "changes_made": false, "rollback_started": false, "rollback_restored": null, @@ -30,9 +30,9 @@ "secrets_included": false, "private_addresses_included": false, "raw_evidence_retained_locally": true, - "raw_evidence_sha256": "9d7580ec86a29179a350ddd8360e39c55433c24b55cc87af9923dde088f53054", - "sanitized_output_sha256": "9d7580ec86a29179a350ddd8360e39c55433c24b55cc87af9923dde088f53054", + "raw_evidence_sha256": "ff062154f98216b8725381d01e1dd68d7dcceaa4097f2011a73103ceb6b600ad", + "sanitized_output_sha256": "ff062154f98216b8725381d01e1dd68d7dcceaa4097f2011a73103ceb6b600ad", "output_truncated_in_json": false, "full_sanitized_output_url": "https://git.gram1.ru/.well-known/homelab-runtime/latest.txt", - "output": "NEWFI418_BEGIN=true\nCOMMAND_ID=NEWFI-260922-NEWFDOM-DR221-417-OWNER-PROGRESS-RCA418R1\nMODE=read-only\nCOMPONENT=newfi-dr221-417-owner-progress-rca\nTARGET_FAILURE=NEWFI-260922-NEWFDOM-DR221-VM210-MEMBERSHIP-BACKUP417R1:OWNER_NOT_QUIESCENT\nMUTATION_BOUNDARY=NONE;NO_SIGNAL;NO_KILL;NO_SYSTEMD_ACTION;NO_BACKUP;NO_CLOUD_WRITE;NO_VM_WRITE;NO_GIT_WRITE\nREFERENCE_SHA256=5a3d8e5154c41cb582a4e0aca68090be1f0138918bf82131a948df326f9d8d66\nERROR_REGISTER_SHA256=3b09a553ec0f527ed3afeed4753f52a74ee3036045bbfb3c685e9f8af4ba7ba0\nRUNNER_SHA256=b248a4c32c9cc64e5747e7dce6c7fc0a23f5124a77c71ce72e27a81aceae9d2d\nBACKUP_WRAPPER_SHA256=5077444065c732451cb84898680f62361b21a24ef9eb4f191253e82ead524ea2\nOWNER_SNAPSHOT_BEGIN=A\nMainPID=335341\nResult=success\nExecMainStartTimestamp=Tue 2026-09-22 14:51:24 MSK\nExecMainExitTimestamp=\nExecMainPID=335341\nExecMainStatus=0\nLoadState=loaded\nActiveState=activating\nSubState=start\nInvocationID=124bde99379341a1bf82f318f31f9621\nMAINPID_A=335341\nMAINPID_PROC_A=present\n 335341 1 9526 S 0.0 0.0 homelab-backup- /usr/bin/python3 /usr/local/sbin/homelab-backup-v2 scheduled\nMAINPID_IO_A_rchar=2042268866\nMAINPID_IO_A_wchar=1271471823\nMAINPID_IO_A_syscr=786464\nMAINPID_IO_A_syscw=90470\nMAINPID_IO_A_read_bytes=0\nMAINPID_IO_A_write_bytes=534904832\nMAINPID_STAT_A_UTIME=273\nMAINPID_STAT_A_STIME=78\nPROCESS_TREE_A\n 335341 1 9526 S 0.0 0.0 homelab-backup- /usr/bin/python3 /usr/local/sbin/homelab-backup-v2 scheduled\nHEAVY_LOCK_HOLDERS_A\nHEAVY_LOCK_A=BUSY\nJOURNAL_A_LINES=220\nJOURNAL_A_SHA256=cd10cf61914d21797c6a1f23a43639a2ea6d514a82cd2d4062170cfb3ace9e04\nJOURNAL_A_TAIL_BEGIN=true\n2026-09-21T23:25:05+03:00 pve01 homelab-backup-v2[1454793]: SCHEDULE_TARGET=xf-zakrutim\n2026-09-21T23:25:05+03:00 pve01 homelab-backup-v2[1454793]: SCHEDULE_RESULT=SUCCESS\n2026-09-21T23:25:27+03:00 pve01 vzdump[1496015]: starting task UPID:pve01:0016D3D0:0C81F46A:6AB192B7:vzdump:110:root@pam:\n2026-09-21T23:25:27+03:00 pve01 vzdump[1496016]: INFO: starting new backup job: vzdump 110 --remove 0 --prune-backups 'keep-all=1' --compress zstd --tmpdir /var/tmp/homelab-vzdump-v2-v2-ct110-20260921T202514Z-1c872adccfab --mode snapshot --stdexcludes 0 --bwlimit 32768 --ionice 7 --node pve01 --zstd 1 --lockwait 0\n2026-09-21T23:25:27+03:00 pve01 vzdump[1496016]: INFO: Starting Backup of VM 110 (lxc)\n2026-09-21T23:27:32+03:00 pve01 vzdump[1496016]: INFO: Finished Backup of VM 110 (00:02:05)\n2026-09-21T23:27:32+03:00 pve01 vzdump[1496016]: INFO: Backup job finished successfully\n2026-09-21T23:27:32+03:00 pve01 vzdump[1496015]: end task UPID:pve01:0016D3D0:0C81F46A:6AB192B7:vzdump:110:root@pam: OK\n2026-09-21T23:27:32+03:00 pve01 homelab-backup-v2[1495880]: SCHEDULE_TARGET=ct110\n2026-09-21T23:28:28+03:00 pve01 homelab-backup-v2[1495880]: SCHEDULE_RESULT=SUCCESS\n2026-09-21T23:30:13+03:00 pve01 homelab-backup-v2[1511723]: SCHEDULE_TARGET=ct111\n2026-09-21T23:30:55+03:00 pve01 homelab-backup-v2[1511723]: SCHEDULE_RESULT=SUCCESS\n2026-09-22T00:04:00+03:00 pve01 vzdump[1627437]: starting task UPID:pve01:0018D52E:0C857BF7:6AB19BC0:vzdump:210:root@pam:\n2026-09-22T00:04:00+03:00 pve01 vzdump[1627438]: INFO: starting new backup job: vzdump 210 --mode snapshot --compress zstd --dumpdir /var/tmp/homelab-vzdump-v2-v2-vm210-20260921T210359Z-571fa9dac984\n2026-09-22T00:04:00+03:00 pve01 vzdump[1627438]: INFO: Starting Backup of VM 210 (qemu)\n2026-09-22T00:04:14+03:00 pve01 vzdump[1627438]: INFO: Finished Backup of VM 210 (00:00:14)\n2026-09-22T00:04:14+03:00 pve01 vzdump[1627438]: INFO: Backup job finished successfully\n2026-09-22T00:04:14+03:00 pve01 vzdump[1627437]: end task UPID:pve01:0018D52E:0C857BF7:6AB19BC0:vzdump:210:root@pam: OK\n2026-09-22T00:04:14+03:00 pve01 homelab-backup-v2[1627342]: SCHEDULE_TARGET=vm210\n2026-09-22T00:05:17+03:00 pve01 homelab-backup-v2[1627342]: SCHEDULE_RESULT=SUCCESS\n2026-09-22T02:00:53+03:00 pve01 vzdump[2000007]: starting task UPID:pve01:001E8488:0C902F77:6AB1B725:vzdump:170:root@pam:\n2026-09-22T02:00:53+03:00 pve01 vzdump[2000008]: INFO: starting new backup job: vzdump 170 --mode snapshot --dumpdir /var/tmp/homelab-vzdump-v2-v2-vm170-20260921T230052Z-7b6556baa842 --compress zstd\n2026-09-22T02:00:53+03:00 pve01 vzdump[2000008]: INFO: Starting Backup of VM 170 (qemu)\n2026-09-22T02:02:23+03:00 pve01 vzdump[2000008]: INFO: Finished Backup of VM 170 (00:01:30)\n2026-09-22T02:02:23+03:00 pve01 vzdump[2000008]: INFO: Backup job finished successfully\n2026-09-22T02:02:23+03:00 pve01 vzdump[2000007]: end task UPID:pve01:001E8488:0C902F77:6AB1B725:vzdump:170:root@pam: OK\n2026-09-22T02:02:23+03:00 pve01 homelab-backup-v2[1999915]: SCHEDULE_TARGET=vm170\n2026-09-22T02:12:47+03:00 pve01 homelab-backup-v2[1999915]: SCHEDULE_RESULT=SUCCESS\n2026-09-22T02:37:13+03:00 pve01 homelab-backup-v2[2121414]: SCHEDULE_TARGET=us-netbird\n2026-09-22T02:37:13+03:00 pve01 homelab-backup-v2[2121414]: SCHEDULE_RESULT=FAIL\n2026-09-22T02:37:13+03:00 pve01 homelab-backup-v2[2121414]: SCHEDULE_REASON=PIPE_FAILED\n2026-09-22T03:46:31+03:00 pve01 homelab-backup-v2[2408783]: SCHEDULE_TARGET=control-bootstrap-v2\n2026-09-22T03:46:31+03:00 pve01 homelab-backup-v2[2408783]: SCHEDULE_RESULT=SUCCESS\n2026-09-22T04:29:13+03:00 pve01 homelab-backup-v2[2510842]: SCHEDULE_TARGET=vm9130\n2026-09-22T04:44:11+03:00 pve01 homelab-backup-v2[2510842]: SCHEDULE_RESULT=SUCCESS\n2026-09-22T06:31:51+03:00 pve01 homelab-backup-v2[2931093]: SCHEDULE_TARGET=vm211\n2026-09-22T06:32:52+03:00 pve01 homelab-backup-v2[2931093]: SCHEDULE_RESULT=SUCCESS\n2026-09-22T07:09:46+03:00 pve01 homelab-backup-v2[3046566]: SCHEDULE_TARGET=node-pve01\n2026-09-22T07:09:46+03:00 pve01 homelab-backup-v2[3046566]: SCHEDULE_RESULT=SUCCESS\n2026-09-22T08:53:31+03:00 pve01 homelab-backup-v2[3378768]: SCHEDULE_TARGET=us-netbird\n2026-09-22T08:53:31+03:00 pve01 homelab-backup-v2[3378768]: SCHEDULE_RESULT=FAIL\n2026-09-22T08:53:31+03:00 pve01 homelab-backup-v2[3378768]: SCHEDULE_REASON=PIPE_FAILED\n2026-09-22T11:44:22+03:00 pve01 homelab-backup-v2[3608112]: SCHEDULE_TARGET=xf-dsmods\n2026-09-22T11:44:22+03:00 pve01 homelab-backup-v2[3608112]: SCHEDULE_RESULT=SUCCESS\n2026-09-22T11:54:41+03:00 pve01 homelab-backup-v2[3938337]: SCHEDULE_TARGET=xf-kingofwolk\n2026-09-22T11:54:41+03:00 pve01 homelab-backup-v2[3938337]: SCHEDULE_RESULT=SUCCESS\n2026-09-22T12:30:38+03:00 pve01 homelab-backup-v2[4066962]: SCHEDULE_TARGET=xf-newfi\n2026-09-22T12:30:38+03:00 pve01 homelab-backup-v2[4066962]: SCHEDULE_RESULT=SUCCESS\nJOURNAL_A_TAIL_END=true\nOWNER_SNAPSHOT_END=A\nOWNER_SNAPSHOT_BEGIN=B\nMainPID=335341\nResult=success\nExecMainStartTimestamp=Tue 2026-09-22 14:51:24 MSK\nExecMainExitTimestamp=\nExecMainPID=335341\nExecMainStatus=0\nLoadState=loaded\nActiveState=activating\nSubState=start\nInvocationID=124bde99379341a1bf82f318f31f9621\nMAINPID_B=335341\nMAINPID_PROC_B=present\n 335341 1 9556 S 0.0 0.0 homelab-backup- /usr/bin/python3 /usr/local/sbin/homelab-backup-v2 scheduled\nMAINPID_IO_B_rchar=2048577699\nMAINPID_IO_B_wchar=1275522059\nMAINPID_IO_B_syscr=788976\nMAINPID_IO_B_syscw=90763\nMAINPID_IO_B_read_bytes=0\nMAINPID_IO_B_write_bytes=536608768\nMAINPID_STAT_B_UTIME=274\nMAINPID_STAT_B_STIME=78\nPROCESS_TREE_B\n 335341 1 9556 S 0.0 0.0 homelab-backup- /usr/bin/python3 /usr/local/sbin/homelab-backup-v2 scheduled\nHEAVY_LOCK_HOLDERS_B\nHEAVY_LOCK_B=BUSY\nJOURNAL_B_LINES=220\nJOURNAL_B_SHA256=cd10cf61914d21797c6a1f23a43639a2ea6d514a82cd2d4062170cfb3ace9e04\nJOURNAL_B_TAIL_BEGIN=true\n2026-09-21T23:25:05+03:00 pve01 homelab-backup-v2[1454793]: SCHEDULE_TARGET=xf-zakrutim\n2026-09-21T23:25:05+03:00 pve01 homelab-backup-v2[1454793]: SCHEDULE_RESULT=SUCCESS\n2026-09-21T23:25:27+03:00 pve01 vzdump[1496015]: starting task UPID:pve01:0016D3D0:0C81F46A:6AB192B7:vzdump:110:root@pam:\n2026-09-21T23:25:27+03:00 pve01 vzdump[1496016]: INFO: starting new backup job: vzdump 110 --remove 0 --prune-backups 'keep-all=1' --compress zstd --tmpdir /var/tmp/homelab-vzdump-v2-v2-ct110-20260921T202514Z-1c872adccfab --mode snapshot --stdexcludes 0 --bwlimit 32768 --ionice 7 --node pve01 --zstd 1 --lockwait 0\n2026-09-21T23:25:27+03:00 pve01 vzdump[1496016]: INFO: Starting Backup of VM 110 (lxc)\n2026-09-21T23:27:32+03:00 pve01 vzdump[1496016]: INFO: Finished Backup of VM 110 (00:02:05)\n2026-09-21T23:27:32+03:00 pve01 vzdump[1496016]: INFO: Backup job finished successfully\n2026-09-21T23:27:32+03:00 pve01 vzdump[1496015]: end task UPID:pve01:0016D3D0:0C81F46A:6AB192B7:vzdump:110:root@pam: OK\n2026-09-21T23:27:32+03:00 pve01 homelab-backup-v2[1495880]: SCHEDULE_TARGET=ct110\n2026-09-21T23:28:28+03:00 pve01 homelab-backup-v2[1495880]: SCHEDULE_RESULT=SUCCESS\n2026-09-21T23:30:13+03:00 pve01 homelab-backup-v2[1511723]: SCHEDULE_TARGET=ct111\n2026-09-21T23:30:55+03:00 pve01 homelab-backup-v2[1511723]: SCHEDULE_RESULT=SUCCESS\n2026-09-22T00:04:00+03:00 pve01 vzdump[1627437]: starting task UPID:pve01:0018D52E:0C857BF7:6AB19BC0:vzdump:210:root@pam:\n2026-09-22T00:04:00+03:00 pve01 vzdump[1627438]: INFO: starting new backup job: vzdump 210 --mode snapshot --compress zstd --dumpdir /var/tmp/homelab-vzdump-v2-v2-vm210-20260921T210359Z-571fa9dac984\n2026-09-22T00:04:00+03:00 pve01 vzdump[1627438]: INFO: Starting Backup of VM 210 (qemu)\n2026-09-22T00:04:14+03:00 pve01 vzdump[1627438]: INFO: Finished Backup of VM 210 (00:00:14)\n2026-09-22T00:04:14+03:00 pve01 vzdump[1627438]: INFO: Backup job finished successfully\n2026-09-22T00:04:14+03:00 pve01 vzdump[1627437]: end task UPID:pve01:0018D52E:0C857BF7:6AB19BC0:vzdump:210:root@pam: OK\n2026-09-22T00:04:14+03:00 pve01 homelab-backup-v2[1627342]: SCHEDULE_TARGET=vm210\n2026-09-22T00:05:17+03:00 pve01 homelab-backup-v2[1627342]: SCHEDULE_RESULT=SUCCESS\n2026-09-22T02:00:53+03:00 pve01 vzdump[2000007]: starting task UPID:pve01:001E8488:0C902F77:6AB1B725:vzdump:170:root@pam:\n2026-09-22T02:00:53+03:00 pve01 vzdump[2000008]: INFO: starting new backup job: vzdump 170 --mode snapshot --dumpdir /var/tmp/homelab-vzdump-v2-v2-vm170-20260921T230052Z-7b6556baa842 --compress zstd\n2026-09-22T02:00:53+03:00 pve01 vzdump[2000008]: INFO: Starting Backup of VM 170 (qemu)\n2026-09-22T02:02:23+03:00 pve01 vzdump[2000008]: INFO: Finished Backup of VM 170 (00:01:30)\n2026-09-22T02:02:23+03:00 pve01 vzdump[2000008]: INFO: Backup job finished successfully\n2026-09-22T02:02:23+03:00 pve01 vzdump[2000007]: end task UPID:pve01:001E8488:0C902F77:6AB1B725:vzdump:170:root@pam: OK\n2026-09-22T02:02:23+03:00 pve01 homelab-backup-v2[1999915]: SCHEDULE_TARGET=vm170\n2026-09-22T02:12:47+03:00 pve01 homelab-backup-v2[1999915]: SCHEDULE_RESULT=SUCCESS\n2026-09-22T02:37:13+03:00 pve01 homelab-backup-v2[2121414]: SCHEDULE_TARGET=us-netbird\n2026-09-22T02:37:13+03:00 pve01 homelab-backup-v2[2121414]: SCHEDULE_RESULT=FAIL\n2026-09-22T02:37:13+03:00 pve01 homelab-backup-v2[2121414]: SCHEDULE_REASON=PIPE_FAILED\n2026-09-22T03:46:31+03:00 pve01 homelab-backup-v2[2408783]: SCHEDULE_TARGET=control-bootstrap-v2\n2026-09-22T03:46:31+03:00 pve01 homelab-backup-v2[2408783]: SCHEDULE_RESULT=SUCCESS\n2026-09-22T04:29:13+03:00 pve01 homelab-backup-v2[2510842]: SCHEDULE_TARGET=vm9130\n2026-09-22T04:44:11+03:00 pve01 homelab-backup-v2[2510842]: SCHEDULE_RESULT=SUCCESS\n2026-09-22T06:31:51+03:00 pve01 homelab-backup-v2[2931093]: SCHEDULE_TARGET=vm211\n2026-09-22T06:32:52+03:00 pve01 homelab-backup-v2[2931093]: SCHEDULE_RESULT=SUCCESS\n2026-09-22T07:09:46+03:00 pve01 homelab-backup-v2[3046566]: SCHEDULE_TARGET=node-pve01\n2026-09-22T07:09:46+03:00 pve01 homelab-backup-v2[3046566]: SCHEDULE_RESULT=SUCCESS\n2026-09-22T08:53:31+03:00 pve01 homelab-backup-v2[3378768]: SCHEDULE_TARGET=us-netbird\n2026-09-22T08:53:31+03:00 pve01 homelab-backup-v2[3378768]: SCHEDULE_RESULT=FAIL\n2026-09-22T08:53:31+03:00 pve01 homelab-backup-v2[3378768]: SCHEDULE_REASON=PIPE_FAILED\n2026-09-22T11:44:22+03:00 pve01 homelab-backup-v2[3608112]: SCHEDULE_TARGET=xf-dsmods\n2026-09-22T11:44:22+03:00 pve01 homelab-backup-v2[3608112]: SCHEDULE_RESULT=SUCCESS\n2026-09-22T11:54:41+03:00 pve01 homelab-backup-v2[3938337]: SCHEDULE_TARGET=xf-kingofwolk\n2026-09-22T11:54:41+03:00 pve01 homelab-backup-v2[3938337]: SCHEDULE_RESULT=SUCCESS\n2026-09-22T12:30:38+03:00 pve01 homelab-backup-v2[4066962]: SCHEDULE_TARGET=xf-newfi\n2026-09-22T12:30:38+03:00 pve01 homelab-backup-v2[4066962]: SCHEDULE_RESULT=SUCCESS\nJOURNAL_B_TAIL_END=true\nOWNER_SNAPSHOT_END=B\nLATEST_SCHEDULE_TARGET=xf-newfi\nLATEST_SCHEDULE_TARGET_LINE=196\nRESULT_AFTER_LATEST_TARGET=true\nLATEST_RESULT_LINE=197\nPROGRESS_EVENT_COUNT=30\nJOURNAL_PROGRESS_30S=false\nACTIVE_BACKUP_CHILD_PRESENT=false\nOWNER_FINAL_STATE|service=activating|sub=start|pid=335341|heavy=BUSY\nOWNER_CLASS=ACTIVE_NO_PROGRESS_SIGNAL_30S\nDECISION=HOLD_DR221_418_OWNER_STALL_SUSPECTED\nNEXT_GATE=RCA_ONLY_CURRENT_BACKUP_TARGET_AND_CHILD_BEFORE_ANY_SERVICE_ACTION\nCHANGES_MADE_BY_418=false\nPRODUCT_MUTATION_BY_418=false\nVM_MUTATION_BY_418=false\nCLOUD_MUTATION_BY_418=false\nHOMELAB_RESULT_CONTRACT={\"version\":1,\"command_id\":\"NEWFI-260922-NEWFDOM-DR221-417-OWNER-PROGRESS-RCA418R1\",\"status\":\"FAIL\",\"changes_made\":false,\"rollback_started\":false,\"rollback_restored\":null}\nNEWFI418_END=true\n" + "output": "NEWFI419_BEGIN=true\nCOMMAND_ID=NEWFI-260922-NEWFDOM-DR221-418-OWNER-FD-PHASE-RCA419R1\nMODE=read-only\nCOMPONENT=newfi-dr221-418-owner-fd-phase-rca\nTARGET=EXACT_CURRENT_HOMELAB_BACKUP_V2_OWNER_PHASE_AND_PROGRESS\nMUTATION_BOUNDARY=NONE;PROC_AND_SOURCE_READ_ONLY;NO_SIGNAL;NO_PTRACE;NO_KILL;NO_SYSTEMD_ACTION;NO_BACKUP;NO_CLOUD_WRITE;NO_VM_WRITE;NO_GIT_WRITE\nREFERENCE_SHA256=5a3d8e5154c41cb582a4e0aca68090be1f0138918bf82131a948df326f9d8d66\nERROR_REGISTER_SHA256=3b09a553ec0f527ed3afeed4753f52a74ee3036045bbfb3c685e9f8af4ba7ba0\nRUNNER_SHA256=b248a4c32c9cc64e5747e7dce6c7fc0a23f5124a77c71ce72e27a81aceae9d2d\nBACKUP_WRAPPER_SHA256=5077444065c732451cb84898680f62361b21a24ef9eb4f191253e82ead524ea2\nACCEPTED_RELEASE=/opt/homelab-backup-v2/releases/backup-v2-overlay-504r1-ca6876fa9c3b\nACCEPTED_RELEASE_GATE=PASS\nRUNTIME_SOURCE_PHASE_HINTS_BEGIN=true\nRUNTIME_SOURCE_FILE=entry504.py|SHA256=ca6876fa9c3b1465b045344a8ad46962de16972c7dadc4ac6257c7d225047793\n1-from __future__ import annotations\n2:import hashlib, importlib, json, os, pathlib, stat, sys, types\n3-\n4-BASE=pathlib.Path('/opt/homelab-backup-v2/releases/backup-v2-accepted-486r1')\n--\n16-\n17-def _sha(p):\n18: h=hashlib.sha256()\n19- with open(p,'rb',buffering=0) as f:\n20- while True:\n--\n41- def __setattr__(self,n,v): self._g[n]=v\n42-\n43:def _wire(wrapper,lxc_adapter,qemu_adapter,scheduler_adapter,base=BASE):\n44- legacy_path=(pathlib.Path(base)/'legacy_engine.py').resolve()\n45- found={}\n--\n48- g=vars(value); raw=g.get('__file__')\n49- elif isinstance(value,types.FunctionType):\n50: g=value.__globals__; raw=g.get('__file__')\n51- else:\n52- continue\n--\n79- if g.get('choose_due_target') is not scheduler_wired['choose_due_target'] or g.get('write_state') is not scheduler_wired['write_state']:\n80- raise RuntimeError('SCHEDULER_ADAPTER_BIND_RESULT')\n81: return {'legacy_globals':g,'legacy':proxy,'original_capture':original,'qemu_patched_capture':qemu_patched,'patched_capture':patched,'scheduler_wired':scheduler_wired}\n82-\n83-def _load():\n--\n86- sys.path.insert(0,str(BASE))\n87- wrapper=importlib.import_module('wrapper')\n88: # Baseline accepted wrapper selftest stays the compatibility gate; no full old legacy selftest is reintroduced.\n89: wrapper.selftest()\n90- sys.path.insert(0,str(HERE))\n91- lxc_adapter=importlib.import_module('lxc_adapter')\n--\n97- return wrapper,lxc_adapter,qemu_adapter,scheduler_adapter,wired\n98-\n99:def _target(wrapper,lid):\n100- rows=wrapper.load_targets(); hits=[x for x in rows if x.get('logical_id')==lid]\n101- if len(hits)!=1: raise RuntimeError('TARGET_CARDINALITY')\n102- return hits[0]\n103-\n104:def selftest():\n105- wrapper,lxc_adapter,qemu_adapter,scheduler_adapter,wired=_load()\n106: if wired['legacy_globals'].get('capture_pve_guest') is not wired['patched_capture']:\n107- raise RuntimeError('PATCH_BINDING')\n108: if wired['legacy_globals'].get('choose_due_target') is not wired['scheduler_wired']['choose_due_target']:\n109- raise RuntimeError('SCHEDULER_CHOOSE_BINDING')\n110: if wired['legacy_globals'].get('write_state') is not wired['scheduler_wired']['write_state']:\n111- raise RuntimeError('SCHEDULER_WRITE_BINDING')\n112- if [scheduler_adapter.backoff_seconds(n) for n in range(1,7)]!=[1800,3600,7200,14400,21600,21600]:\n--\n119-def main(argv=None):\n120- argv=list(sys.argv[1:] if argv is None else argv)\n121: if argv==['selftest']:\n122: return selftest()\n123- wrapper,lxc_adapter,qemu_adapter,scheduler_adapter,wired=_load()\n124- legacy=wired['legacy']\n125- if argv==['scheduler-proof']:\n126- import tempfile\n127: legacy=wired['legacy']; g=wired['legacy_globals']\n128- old_root=g.get('STATE_ROOT'); old_epoch=g.get('epoch')\n129- if old_root is None or not callable(old_epoch): raise RuntimeError('SCHEDULER_PROOF_BASE')\n--\n133- g['STATE_ROOT']=pathlib.Path(td); (g['STATE_ROOT']/'state').mkdir(mode=0o700)\n134- g['epoch']=lambda: now[0]\n135: common={'payload_sha256':'a'*64,'manifest_sha256':'b'*64,'replicas':['proof-r1','proof-r2']}\n136- legacy.write_state('proof-a','SUCCESS',generation='proof-a-good',**common)\n137- legacy.write_state('proof-b','SUCCESS',generation='proof-b-good',**common)\nRUNTIME_SOURCE_FILE=scheduler_adapter.py|SHA256=a6f67159a64067773323f028126e3109e15cf17a8142cea5e6129970f1d4da96\n35- if prior.get('result')=='SUCCESS':\n36- out={'last_success_epoch':_as_nonneg_int(prior.get('last_success_epoch'),0)}\n37: mapping=(('generation','last_success_generation'),('payload_sha256','last_success_payload_sha256'),\n38: ('manifest_sha256','last_success_manifest_sha256'),('replicas','last_success_replicas'),\n39- ('green_verified','last_success_green_verified'))\n40- for src,dst in mapping:\n--\n42- return out\n43- out={}\n44: for k in ('last_success_epoch','last_success_generation','last_success_payload_sha256',\n45: 'last_success_manifest_sha256','last_success_replicas','last_success_green_verified'):\n46- if k in prior: out[k]=prior[k]\n47- return out\n--\n53- _need(hasattr(legacy,'STATE_ROOT'),'LEGACY_STATE_ROOT_REQUIRED')\n54-\n55: def choose_due_target(targets,state,now=None):\n56- now=_as_nonneg_int(legacy.epoch() if now is None else now,0)\n57- _need(isinstance(targets,list) and isinstance(state,dict),'SCHEDULER_INPUT_SCHEMA')\nRUNTIME_SOURCE_FILE=producer_exec_helper.py|SHA256=b3b97099bcd7126670f866e81faae6a42a96d869d9989e6a67f6ea6c871c90b3\n1-from __future__ import annotations\n2:import hashlib, json, os, pathlib, sys\n3-\n4-BASE=pathlib.Path('/opt/homelab-backup-v2/releases/backup-v2-accepted-486r1/candidate411')\n--\n8-\n9-def sha_file(p:pathlib.Path)->str:\n10: h=hashlib.sha256()\n11- with open(p,'rb',buffering=0) as f:\n12- for b in iter(lambda:f.read(1<<20),b''): h.update(b)\n--\n19- p=parent/'PRODUCER_PROCESS.json'\n20- if not p.is_file() or p.is_symlink(): return None\n21: try: d=json.loads(p.read_bytes())\n22- except Exception: return {'summary_read':'FAILED'}\n23: keys=('process_started','producer_rc','capture_success','archive_bytes','stderr_bytes_observed','stderr_bytes_retained','stderr_truncated','stderr_stream_sha256','raw_stderr_exported','child_umask')\n24- return {k:d.get(k) for k in keys if k in d}\n25-\n26:def selftest()->int:\n27- if sha_file(VZDUMP)!=VZDUMP_SHA: fail('VZDUMP_IDENTITY')\n28- sys.path.insert(0,str(BASE))\n--\n33-\n34-def main()->int:\n35: if sys.argv[1:]==['selftest']: return selftest()\n36- if sys.argv[1:]: fail('ARGC')\n37- raw=sys.stdin.buffer.read(MAX_INPUT+1)\n--\n61- except Exception as e:\n62- out={'status':'FAIL','exception_class':type(e).__module__+'.'+type(e).__name__,\n63: 'exception_message_sha256':hashlib.sha256(str(e).encode()).hexdigest(),\n64- 'process':safe_process_summary(dest.parent)}\n65- print(json.dumps(out,separators=(',',':'),sort_keys=True),flush=True)\n--\n70- except Exception as e:\n71- print(json.dumps({'status':'FAIL','exception_class':type(e).__module__+'.'+type(e).__name__,\n72: 'exception_message_sha256':hashlib.sha256(str(e).encode()).hexdigest(),\n73- 'process':None},separators=(',',':'),sort_keys=True),flush=True)\n74- raise SystemExit(2)\nRUNTIME_SOURCE_PHASE_HINTS_END=true\nMainPID=335341\nResult=success\nExecMainStartTimestamp=Tue 2026-09-22 14:51:24 MSK\nExecMainExitTimestamp=\nExecMainPID=335341\nExecMainStatus=0\nLoadState=loaded\nActiveState=activating\nSubState=start\nInvocationID=124bde99379341a1bf82f318f31f9621\nOWNER_PID_START=335341\nOWNER_INVOCATION_ID=124bde99379341a1bf82f318f31f9621\nHEAVY_LOCK_START=BUSY\nCURRENT_INVOCATION_JOURNAL_LINES=1\nCURRENT_INVOCATION_JOURNAL_SHA256=25b081a572c3c2feb67855d9294cbfad87cb01cd703b722db59fce65e936bf6b\nCURRENT_INVOCATION_JOURNAL_BEGIN=true\n2026-09-22T14:51:25+03:00 pve01 homelab-backup-v2[335341]: SELFTEST_REPLACEMENT486=PASS\nCURRENT_INVOCATION_JOURNAL_END=true\nCURRENT_INVOCATION_SELFTEST_PASS=true\nCURRENT_INVOCATION_TARGET_SEEN=false\nCURRENT_INVOCATION_RESULT_SEEN=false\nCURRENT_INVOCATION_LATEST_TARGET=NONE\nPROC_SNAPSHOT_BEGIN=A\nPROC_PRESENT_A=true\n 335341 1 10152 S 0.0 0.0 homelab-backup- /usr/bin/python3 /usr/local/sbin/homelab-backup-v2 scheduled\nWCHAN_A=poll_schedule_timeout.constprop.0\nSYSCALL_A=7 [PTR] [PTR] [PTR] [PTR] [PTR] [PTR] [PTR] [PTR]\nIO_A_rchar=2172298800\nIO_A_wchar=1354968903\nIO_A_syscr=838052\nIO_A_syscw=96420\nIO_A_read_bytes=0\nIO_A_write_bytes=570032128\nSTATUS_A_STATE=S\nCTX_A_VOL=31893\nCTX_A_INVOL=288\nFD_COUNT_A=7\nFD_A|fd=0|cat=DEV|pos=0|size=0|base=null|path_sha16=fd5d32feb2d35625\nFD_A|fd=1|cat=SOCKET|pos=0|size=NA|base=NA|path_sha16=feb8f1e1f9e2ba39\nFD_A|fd=2|cat=SOCKET|pos=0|size=NA|base=NA|path_sha16=feb8f1e1f9e2ba39\nFD_A|fd=3|cat=BACKUP_RUN|pos=0|size=0|base=homelab-backup-heavy.lock|path_sha16=2642241b0beaa737\nFD_A|fd=4|cat=OTHER_FILE|pos=570032128|size=570032128|base=payload.tar.zst|path_sha16=a5bf89245089a1c8\nFD_A|fd=5|cat=PIPE|pos=0|size=NA|base=NA|path_sha16=18f487fd1dca338f\nFD_A|fd=7|cat=PIPE|pos=0|size=NA|base=NA|path_sha16=6f3886873903d4f2\nCHILDREN_A\n 903072 335341 1 S ssh /usr/bin/ssh -o BatchMode=yes -o StrictHostKeyChecking=yes root@pve02 PATH=/usr/sbin:/usr/bin:/sbin:/bin; export PATH; exec qm guest exec 160 --synchronous 1 --timeout 60 -- /usr/bin/python3 -I -B -c 'import base64,sys; p=sys.argv[1]; o=int(sys.argv[2]); n=int(sys.argv[3]); f=open(p,'\"'\"'rb'\"'\"'); f.seek(o); b=f.read(n); f.close(); sys.stdout.write(base64.b64encode(b).decode())' /tmp/homelab-v2-xf-0922T115125Z1b7415a2313b.tar.zst 570032128 131072\nSOCKETS_A\nPROC_SNAPSHOT_END=A\nPROC_SNAPSHOT_BEGIN=B\nPROC_PRESENT_B=true\n 335341 1 10167 S 0.0 0.0 homelab-backup- /usr/bin/python3 /usr/local/sbin/homelab-backup-v2 scheduled\nWCHAN_B=poll_schedule_timeout.constprop.0\nSYSCALL_B=7 [PTR] [PTR] [PTR] [PTR] [PTR] [PTR] [PTR] [PTR]\nIO_B_rchar=2175695809\nIO_B_wchar=1357149803\nIO_B_syscr=839397\nIO_B_syscw=96576\nIO_B_read_bytes=0\nIO_B_write_bytes=570949632\nSTATUS_B_STATE=S\nCTX_B_VOL=31943\nCTX_B_INVOL=288\nFD_COUNT_B=7\nFD_B|fd=0|cat=DEV|pos=0|size=0|base=null|path_sha16=fd5d32feb2d35625\nFD_B|fd=1|cat=SOCKET|pos=0|size=NA|base=NA|path_sha16=feb8f1e1f9e2ba39\nFD_B|fd=2|cat=SOCKET|pos=0|size=NA|base=NA|path_sha16=feb8f1e1f9e2ba39\nFD_B|fd=3|cat=BACKUP_RUN|pos=0|size=0|base=homelab-backup-heavy.lock|path_sha16=2642241b0beaa737\nFD_B|fd=4|cat=OTHER_FILE|pos=570949632|size=570949632|base=payload.tar.zst|path_sha16=a5bf89245089a1c8\nFD_B|fd=5|cat=PIPE|pos=0|size=NA|base=NA|path_sha16=3a74719a8d200544\nFD_B|fd=7|cat=PIPE|pos=0|size=NA|base=NA|path_sha16=27db66d36b35c3d5\nCHILDREN_B\n 903386 335341 0 S ssh /usr/bin/ssh -o BatchMode=yes -o StrictHostKeyChecking=yes root@pve02 PATH=/usr/sbin:/usr/bin:/sbin:/bin; export PATH; exec qm guest exec 160 --synchronous 1 --timeout 60 -- /usr/bin/python3 -I -B -c 'import base64,sys; p=sys.argv[1]; o=int(sys.argv[2]); n=int(sys.argv[3]); f=open(p,'\"'\"'rb'\"'\"'); f.seek(o); b=f.read(n); f.close(); sys.stdout.write(base64.b64encode(b).decode())' /tmp/homelab-v2-xf-0922T115125Z1b7415a2313b.tar.zst 570949632 131072\nSOCKETS_B\nPROC_SNAPSHOT_END=B\nPROC_SNAPSHOT_BEGIN=C\nPROC_PRESENT_C=true\n 335341 1 10182 S 0.0 0.0 homelab-backup- /usr/bin/python3 /usr/local/sbin/homelab-backup-v2 scheduled\nWCHAN_C=poll_schedule_timeout.constprop.0\nSYSCALL_C=7 [PTR] [PTR] [PTR] [PTR] [PTR] [PTR] [PTR] [PTR]\nIO_C_rchar=2178607641\nIO_C_wchar=1359019147\nIO_C_syscr=840546\nIO_C_syscw=96707\nIO_C_read_bytes=0\nIO_C_write_bytes=571736064\nSTATUS_C_STATE=S\nCTX_C_VOL=31987\nCTX_C_INVOL=288\nFD_COUNT_C=7\nFD_C|fd=0|cat=DEV|pos=0|size=0|base=null|path_sha16=fd5d32feb2d35625\nFD_C|fd=1|cat=SOCKET|pos=0|size=NA|base=NA|path_sha16=feb8f1e1f9e2ba39\nFD_C|fd=2|cat=SOCKET|pos=0|size=NA|base=NA|path_sha16=feb8f1e1f9e2ba39\nFD_C|fd=3|cat=BACKUP_RUN|pos=0|size=0|base=homelab-backup-heavy.lock|path_sha16=2642241b0beaa737\nFD_C|fd=4|cat=OTHER_FILE|pos=571736064|size=571736064|base=payload.tar.zst|path_sha16=a5bf89245089a1c8\nFD_C|fd=5|cat=PIPE|pos=0|size=NA|base=NA|path_sha16=e931a2a362f85fd8\nFD_C|fd=7|cat=PIPE|pos=0|size=NA|base=NA|path_sha16=8d16e18acde67925\nCHILDREN_C\n 903565 335341 1 S ssh /usr/bin/ssh -o BatchMode=yes -o StrictHostKeyChecking=yes root@pve02 PATH=/usr/sbin:/usr/bin:/sbin:/bin; export PATH; exec qm guest exec 160 --synchronous 1 --timeout 60 -- /usr/bin/python3 -I -B -c 'import base64,sys; p=sys.argv[1]; o=int(sys.argv[2]); n=int(sys.argv[3]); f=open(p,'\"'\"'rb'\"'\"'); f.seek(o); b=f.read(n); f.close(); sys.stdout.write(base64.b64encode(b).decode())' /tmp/homelab-v2-xf-0922T115125Z1b7415a2313b.tar.zst 571736064 131072\nSOCKETS_C\nPROC_SNAPSHOT_END=C\nOWNER_END_STATE|active=activating|sub=start|pid=335341|heavy=BUSY\nPID_STABLE=true\nDELTA_A_B_rchar=3397009\nDELTA_A_B_wchar=2180900\nDELTA_A_B_syscr=1345\nDELTA_A_B_syscw=156\nDELTA_A_B_read_bytes=0\nDELTA_A_B_write_bytes=917504\nDELTA_B_C_rchar=2911832\nDELTA_B_C_wchar=1869344\nDELTA_B_C_syscr=1149\nDELTA_B_C_syscw=131\nDELTA_B_C_read_bytes=0\nDELTA_B_C_write_bytes=786432\nDELTA_A_C_rchar=6308841\nDELTA_A_C_wchar=4050244\nDELTA_A_C_syscr=2494\nDELTA_A_C_syscw=287\nDELTA_A_C_read_bytes=0\nDELTA_A_C_write_bytes=1703936\nINTERNAL_IO_PROGRESS_30S=true\nCURRENT_INVOCATION_END_JOURNAL_LINES=1\nCURRENT_INVOCATION_END_JOURNAL_BEGIN=true\n2026-09-22T14:51:25+03:00 pve01 homelab-backup-v2[335341]: SELFTEST_REPLACEMENT486=PASS\nCURRENT_INVOCATION_END_JOURNAL_END=true\nEND_INVOCATION_SELFTEST_PASS=true\nEND_INVOCATION_TARGET_SEEN=false\nEND_INVOCATION_LATEST_TARGET=NONE\nOWNER_PHASE=ACTIVE_AFTER_SELFTEST_BEFORE_TARGET_MARKER\nDECISION=PASS_DR221_419_OWNER_PRETARGET_INTERNAL_IO_PROVEN\nNEXT_GATE=WAIT_NATURAL_OWNER_COMPLETION_THEN_REISSUE_VM210_MEMBERSHIP_AND_FRESH_BACKUP\nCHANGES_MADE_BY_419=false\nPRODUCT_MUTATION_BY_419=false\nVM_MUTATION_BY_419=false\nCLOUD_MUTATION_BY_419=false\nHOMELAB_RESULT_CONTRACT={\"version\":1,\"command_id\":\"NEWFI-260922-NEWFDOM-DR221-418-OWNER-FD-PHASE-RCA419R1\",\"status\":\"OK\",\"changes_made\":false,\"rollback_started\":false,\"rollback_restored\":null}\nNEWFI419_END=true\n" } diff --git a/runtime/latest.txt b/runtime/latest.txt index 59e380b0..595e8ea6 100644 --- a/runtime/latest.txt +++ b/runtime/latest.txt @@ -1,22 +1,22 @@ CHAT_OUTPUT_BEGIN -COMMAND_ID=NEWFI-260922-NEWFDOM-DR221-417-OWNER-PROGRESS-RCA418R1 -STATUS=FAIL -RC=3 +COMMAND_ID=NEWFI-260922-NEWFDOM-DR221-418-OWNER-FD-PHASE-RCA419R1 +STATUS=OK +RC=0 HOST=pve01 MODE=read-only -COMPONENT=newfi-dr221-417-owner-progress-rca +COMPONENT=newfi-dr221-418-owner-fd-phase-rca REFERENCE_REGISTER_CHECK=OK REFERENCE_SHA256=5a3d8e5154c41cb582a4e0aca68090be1f0138918bf82131a948df326f9d8d66 ERROR_REGISTER_CHECK=OK ERROR_REGISTER_SHA256=3b09a553ec0f527ed3afeed4753f52a74ee3036045bbfb3c685e9f8af4ba7ba0 -COMMAND_SHA256=4a6ffa7e4be488f5525dbf860d798530d452370e871c3254cb9cb85347478085 +COMMAND_SHA256=086ee022e9b084cfd4a2a9e59bd32b52470059e7d8713bec3b59065215adf353 DUPLICATE_FAILED_COMMAND_BLOCKED=false EXECUTION_STARTED=true CHANGE_DECLARED=false RESULT_CONTRACT_VALID=true RESULT_CONTRACT_STATUS=NOT_APPLICABLE RESULT_CONTRACT_ERROR=NONE -COMMAND_RC=3 +COMMAND_RC=0 CHANGES_MADE=false ROLLBACK_STARTED=false ROLLBACK_RESTORED=null @@ -24,20 +24,154 @@ MUTATION_OUTCOME=NO_MUTATION SANITIZED=yes SECRETS_INCLUDED=no PRIVATE_ADDRESSES_INCLUDED=no -RAW_EVIDENCE_SHA256=9d7580ec86a29179a350ddd8360e39c55433c24b55cc87af9923dde088f53054 -SANITIZED_OUTPUT_SHA256=9d7580ec86a29179a350ddd8360e39c55433c24b55cc87af9923dde088f53054 +RAW_EVIDENCE_SHA256=ff062154f98216b8725381d01e1dd68d7dcceaa4097f2011a73103ceb6b600ad +SANITIZED_OUTPUT_SHA256=ff062154f98216b8725381d01e1dd68d7dcceaa4097f2011a73103ceb6b600ad OUTPUT_BEGIN -NEWFI418_BEGIN=true -COMMAND_ID=NEWFI-260922-NEWFDOM-DR221-417-OWNER-PROGRESS-RCA418R1 +NEWFI419_BEGIN=true +COMMAND_ID=NEWFI-260922-NEWFDOM-DR221-418-OWNER-FD-PHASE-RCA419R1 MODE=read-only -COMPONENT=newfi-dr221-417-owner-progress-rca -TARGET_FAILURE=NEWFI-260922-NEWFDOM-DR221-VM210-MEMBERSHIP-BACKUP417R1:OWNER_NOT_QUIESCENT -MUTATION_BOUNDARY=NONE;NO_SIGNAL;NO_KILL;NO_SYSTEMD_ACTION;NO_BACKUP;NO_CLOUD_WRITE;NO_VM_WRITE;NO_GIT_WRITE +COMPONENT=newfi-dr221-418-owner-fd-phase-rca +TARGET=EXACT_CURRENT_HOMELAB_BACKUP_V2_OWNER_PHASE_AND_PROGRESS +MUTATION_BOUNDARY=NONE;PROC_AND_SOURCE_READ_ONLY;NO_SIGNAL;NO_PTRACE;NO_KILL;NO_SYSTEMD_ACTION;NO_BACKUP;NO_CLOUD_WRITE;NO_VM_WRITE;NO_GIT_WRITE REFERENCE_SHA256=5a3d8e5154c41cb582a4e0aca68090be1f0138918bf82131a948df326f9d8d66 ERROR_REGISTER_SHA256=3b09a553ec0f527ed3afeed4753f52a74ee3036045bbfb3c685e9f8af4ba7ba0 RUNNER_SHA256=b248a4c32c9cc64e5747e7dce6c7fc0a23f5124a77c71ce72e27a81aceae9d2d BACKUP_WRAPPER_SHA256=5077444065c732451cb84898680f62361b21a24ef9eb4f191253e82ead524ea2 -OWNER_SNAPSHOT_BEGIN=A +ACCEPTED_RELEASE=/opt/homelab-backup-v2/releases/backup-v2-overlay-504r1-ca6876fa9c3b +ACCEPTED_RELEASE_GATE=PASS +RUNTIME_SOURCE_PHASE_HINTS_BEGIN=true +RUNTIME_SOURCE_FILE=entry504.py|SHA256=ca6876fa9c3b1465b045344a8ad46962de16972c7dadc4ac6257c7d225047793 +1-from __future__ import annotations +2:import hashlib, importlib, json, os, pathlib, stat, sys, types +3- +4-BASE=pathlib.Path('/opt/homelab-backup-v2/releases/backup-v2-accepted-486r1') +-- +16- +17-def _sha(p): +18: h=hashlib.sha256() +19- with open(p,'rb',buffering=0) as f: +20- while True: +-- +41- def __setattr__(self,n,v): self._g[n]=v +42- +43:def _wire(wrapper,lxc_adapter,qemu_adapter,scheduler_adapter,base=BASE): +44- legacy_path=(pathlib.Path(base)/'legacy_engine.py').resolve() +45- found={} +-- +48- g=vars(value); raw=g.get('__file__') +49- elif isinstance(value,types.FunctionType): +50: g=value.__globals__; raw=g.get('__file__') +51- else: +52- continue +-- +79- if g.get('choose_due_target') is not scheduler_wired['choose_due_target'] or g.get('write_state') is not scheduler_wired['write_state']: +80- raise RuntimeError('SCHEDULER_ADAPTER_BIND_RESULT') +81: return {'legacy_globals':g,'legacy':proxy,'original_capture':original,'qemu_patched_capture':qemu_patched,'patched_capture':patched,'scheduler_wired':scheduler_wired} +82- +83-def _load(): +-- +86- sys.path.insert(0,str(BASE)) +87- wrapper=importlib.import_module('wrapper') +88: # Baseline accepted wrapper selftest stays the compatibility gate; no full old legacy selftest is reintroduced. +89: wrapper.selftest() +90- sys.path.insert(0,str(HERE)) +91- lxc_adapter=importlib.import_module('lxc_adapter') +-- +97- return wrapper,lxc_adapter,qemu_adapter,scheduler_adapter,wired +98- +99:def _target(wrapper,lid): +100- rows=wrapper.load_targets(); hits=[x for x in rows if x.get('logical_id')==lid] +101- if len(hits)!=1: raise RuntimeError('TARGET_CARDINALITY') +102- return hits[0] +103- +104:def selftest(): +105- wrapper,lxc_adapter,qemu_adapter,scheduler_adapter,wired=_load() +106: if wired['legacy_globals'].get('capture_pve_guest') is not wired['patched_capture']: +107- raise RuntimeError('PATCH_BINDING') +108: if wired['legacy_globals'].get('choose_due_target') is not wired['scheduler_wired']['choose_due_target']: +109- raise RuntimeError('SCHEDULER_CHOOSE_BINDING') +110: if wired['legacy_globals'].get('write_state') is not wired['scheduler_wired']['write_state']: +111- raise RuntimeError('SCHEDULER_WRITE_BINDING') +112- if [scheduler_adapter.backoff_seconds(n) for n in range(1,7)]!=[1800,3600,7200,14400,21600,21600]: +-- +119-def main(argv=None): +120- argv=list(sys.argv[1:] if argv is None else argv) +121: if argv==['selftest']: +122: return selftest() +123- wrapper,lxc_adapter,qemu_adapter,scheduler_adapter,wired=_load() +124- legacy=wired['legacy'] +125- if argv==['scheduler-proof']: +126- import tempfile +127: legacy=wired['legacy']; g=wired['legacy_globals'] +128- old_root=g.get('STATE_ROOT'); old_epoch=g.get('epoch') +129- if old_root is None or not callable(old_epoch): raise RuntimeError('SCHEDULER_PROOF_BASE') +-- +133- g['STATE_ROOT']=pathlib.Path(td); (g['STATE_ROOT']/'state').mkdir(mode=0o700) +134- g['epoch']=lambda: now[0] +135: common={'payload_sha256':'a'*64,'manifest_sha256':'b'*64,'replicas':['proof-r1','proof-r2']} +136- legacy.write_state('proof-a','SUCCESS',generation='proof-a-good',**common) +137- legacy.write_state('proof-b','SUCCESS',generation='proof-b-good',**common) +RUNTIME_SOURCE_FILE=scheduler_adapter.py|SHA256=a6f67159a64067773323f028126e3109e15cf17a8142cea5e6129970f1d4da96 +35- if prior.get('result')=='SUCCESS': +36- out={'last_success_epoch':_as_nonneg_int(prior.get('last_success_epoch'),0)} +37: mapping=(('generation','last_success_generation'),('payload_sha256','last_success_payload_sha256'), +38: ('manifest_sha256','last_success_manifest_sha256'),('replicas','last_success_replicas'), +39- ('green_verified','last_success_green_verified')) +40- for src,dst in mapping: +-- +42- return out +43- out={} +44: for k in ('last_success_epoch','last_success_generation','last_success_payload_sha256', +45: 'last_success_manifest_sha256','last_success_replicas','last_success_green_verified'): +46- if k in prior: out[k]=prior[k] +47- return out +-- +53- _need(hasattr(legacy,'STATE_ROOT'),'LEGACY_STATE_ROOT_REQUIRED') +54- +55: def choose_due_target(targets,state,now=None): +56- now=_as_nonneg_int(legacy.epoch() if now is None else now,0) +57- _need(isinstance(targets,list) and isinstance(state,dict),'SCHEDULER_INPUT_SCHEMA') +RUNTIME_SOURCE_FILE=producer_exec_helper.py|SHA256=b3b97099bcd7126670f866e81faae6a42a96d869d9989e6a67f6ea6c871c90b3 +1-from __future__ import annotations +2:import hashlib, json, os, pathlib, sys +3- +4-BASE=pathlib.Path('/opt/homelab-backup-v2/releases/backup-v2-accepted-486r1/candidate411') +-- +8- +9-def sha_file(p:pathlib.Path)->str: +10: h=hashlib.sha256() +11- with open(p,'rb',buffering=0) as f: +12- for b in iter(lambda:f.read(1<<20),b''): h.update(b) +-- +19- p=parent/'PRODUCER_PROCESS.json' +20- if not p.is_file() or p.is_symlink(): return None +21: try: d=json.loads(p.read_bytes()) +22- except Exception: return {'summary_read':'FAILED'} +23: keys=('process_started','producer_rc','capture_success','archive_bytes','stderr_bytes_observed','stderr_bytes_retained','stderr_truncated','stderr_stream_sha256','raw_stderr_exported','child_umask') +24- return {k:d.get(k) for k in keys if k in d} +25- +26:def selftest()->int: +27- if sha_file(VZDUMP)!=VZDUMP_SHA: fail('VZDUMP_IDENTITY') +28- sys.path.insert(0,str(BASE)) +-- +33- +34-def main()->int: +35: if sys.argv[1:]==['selftest']: return selftest() +36- if sys.argv[1:]: fail('ARGC') +37- raw=sys.stdin.buffer.read(MAX_INPUT+1) +-- +61- except Exception as e: +62- out={'status':'FAIL','exception_class':type(e).__module__+'.'+type(e).__name__, +63: 'exception_message_sha256':hashlib.sha256(str(e).encode()).hexdigest(), +64- 'process':safe_process_summary(dest.parent)} +65- print(json.dumps(out,separators=(',',':'),sort_keys=True),flush=True) +-- +70- except Exception as e: +71- print(json.dumps({'status':'FAIL','exception_class':type(e).__module__+'.'+type(e).__name__, +72: 'exception_message_sha256':hashlib.sha256(str(e).encode()).hexdigest(), +73- 'process':None},separators=(',',':'),sort_keys=True),flush=True) +74- raise SystemExit(2) +RUNTIME_SOURCE_PHASE_HINTS_END=true MainPID=335341 Result=success ExecMainStartTimestamp=Tue 2026-09-22 14:51:24 MSK @@ -48,170 +182,133 @@ LoadState=loaded ActiveState=activating SubState=start InvocationID=124bde99379341a1bf82f318f31f9621 -MAINPID_A=335341 -MAINPID_PROC_A=present - 335341 1 9526 S 0.0 0.0 homelab-backup- /usr/bin/python3 /usr/local/sbin/homelab-backup-v2 scheduled -MAINPID_IO_A_rchar=2042268866 -MAINPID_IO_A_wchar=1271471823 -MAINPID_IO_A_syscr=786464 -MAINPID_IO_A_syscw=90470 -MAINPID_IO_A_read_bytes=0 -MAINPID_IO_A_write_bytes=534904832 -MAINPID_STAT_A_UTIME=273 -MAINPID_STAT_A_STIME=78 -PROCESS_TREE_A - 335341 1 9526 S 0.0 0.0 homelab-backup- /usr/bin/python3 /usr/local/sbin/homelab-backup-v2 scheduled -HEAVY_LOCK_HOLDERS_A -HEAVY_LOCK_A=BUSY -JOURNAL_A_LINES=220 -JOURNAL_A_SHA256=cd10cf61914d21797c6a1f23a43639a2ea6d514a82cd2d4062170cfb3ace9e04 -JOURNAL_A_TAIL_BEGIN=true -2026-09-21T23:25:05+03:00 pve01 homelab-backup-v2[1454793]: SCHEDULE_TARGET=xf-zakrutim -2026-09-21T23:25:05+03:00 pve01 homelab-backup-v2[1454793]: SCHEDULE_RESULT=SUCCESS -2026-09-21T23:25:27+03:00 pve01 vzdump[1496015]: starting task UPID:pve01:0016D3D0:0C81F46A:6AB192B7:vzdump:110:root@pam: -2026-09-21T23:25:27+03:00 pve01 vzdump[1496016]: INFO: starting new backup job: vzdump 110 --remove 0 --prune-backups 'keep-all=1' --compress zstd --tmpdir /var/tmp/homelab-vzdump-v2-v2-ct110-20260921T202514Z-1c872adccfab --mode snapshot --stdexcludes 0 --bwlimit 32768 --ionice 7 --node pve01 --zstd 1 --lockwait 0 -2026-09-21T23:25:27+03:00 pve01 vzdump[1496016]: INFO: Starting Backup of VM 110 (lxc) -2026-09-21T23:27:32+03:00 pve01 vzdump[1496016]: INFO: Finished Backup of VM 110 (00:02:05) -2026-09-21T23:27:32+03:00 pve01 vzdump[1496016]: INFO: Backup job finished successfully -2026-09-21T23:27:32+03:00 pve01 vzdump[1496015]: end task UPID:pve01:0016D3D0:0C81F46A:6AB192B7:vzdump:110:root@pam: OK -2026-09-21T23:27:32+03:00 pve01 homelab-backup-v2[1495880]: SCHEDULE_TARGET=ct110 -2026-09-21T23:28:28+03:00 pve01 homelab-backup-v2[1495880]: SCHEDULE_RESULT=SUCCESS -2026-09-21T23:30:13+03:00 pve01 homelab-backup-v2[1511723]: SCHEDULE_TARGET=ct111 -2026-09-21T23:30:55+03:00 pve01 homelab-backup-v2[1511723]: SCHEDULE_RESULT=SUCCESS -2026-09-22T00:04:00+03:00 pve01 vzdump[1627437]: starting task UPID:pve01:0018D52E:0C857BF7:6AB19BC0:vzdump:210:root@pam: -2026-09-22T00:04:00+03:00 pve01 vzdump[1627438]: INFO: starting new backup job: vzdump 210 --mode snapshot --compress zstd --dumpdir /var/tmp/homelab-vzdump-v2-v2-vm210-20260921T210359Z-571fa9dac984 -2026-09-22T00:04:00+03:00 pve01 vzdump[1627438]: INFO: Starting Backup of VM 210 (qemu) -2026-09-22T00:04:14+03:00 pve01 vzdump[1627438]: INFO: Finished Backup of VM 210 (00:00:14) -2026-09-22T00:04:14+03:00 pve01 vzdump[1627438]: INFO: Backup job finished successfully -2026-09-22T00:04:14+03:00 pve01 vzdump[1627437]: end task UPID:pve01:0018D52E:0C857BF7:6AB19BC0:vzdump:210:root@pam: OK -2026-09-22T00:04:14+03:00 pve01 homelab-backup-v2[1627342]: SCHEDULE_TARGET=vm210 -2026-09-22T00:05:17+03:00 pve01 homelab-backup-v2[1627342]: SCHEDULE_RESULT=SUCCESS -2026-09-22T02:00:53+03:00 pve01 vzdump[2000007]: starting task UPID:pve01:001E8488:0C902F77:6AB1B725:vzdump:170:root@pam: -2026-09-22T02:00:53+03:00 pve01 vzdump[2000008]: INFO: starting new backup job: vzdump 170 --mode snapshot --dumpdir /var/tmp/homelab-vzdump-v2-v2-vm170-20260921T230052Z-7b6556baa842 --compress zstd -2026-09-22T02:00:53+03:00 pve01 vzdump[2000008]: INFO: Starting Backup of VM 170 (qemu) -2026-09-22T02:02:23+03:00 pve01 vzdump[2000008]: INFO: Finished Backup of VM 170 (00:01:30) -2026-09-22T02:02:23+03:00 pve01 vzdump[2000008]: INFO: Backup job finished successfully -2026-09-22T02:02:23+03:00 pve01 vzdump[2000007]: end task UPID:pve01:001E8488:0C902F77:6AB1B725:vzdump:170:root@pam: OK -2026-09-22T02:02:23+03:00 pve01 homelab-backup-v2[1999915]: SCHEDULE_TARGET=vm170 -2026-09-22T02:12:47+03:00 pve01 homelab-backup-v2[1999915]: SCHEDULE_RESULT=SUCCESS -2026-09-22T02:37:13+03:00 pve01 homelab-backup-v2[2121414]: SCHEDULE_TARGET=us-netbird -2026-09-22T02:37:13+03:00 pve01 homelab-backup-v2[2121414]: SCHEDULE_RESULT=FAIL -2026-09-22T02:37:13+03:00 pve01 homelab-backup-v2[2121414]: SCHEDULE_REASON=PIPE_FAILED -2026-09-22T03:46:31+03:00 pve01 homelab-backup-v2[2408783]: SCHEDULE_TARGET=control-bootstrap-v2 -2026-09-22T03:46:31+03:00 pve01 homelab-backup-v2[2408783]: SCHEDULE_RESULT=SUCCESS -2026-09-22T04:29:13+03:00 pve01 homelab-backup-v2[2510842]: SCHEDULE_TARGET=vm9130 -2026-09-22T04:44:11+03:00 pve01 homelab-backup-v2[2510842]: SCHEDULE_RESULT=SUCCESS -2026-09-22T06:31:51+03:00 pve01 homelab-backup-v2[2931093]: SCHEDULE_TARGET=vm211 -2026-09-22T06:32:52+03:00 pve01 homelab-backup-v2[2931093]: SCHEDULE_RESULT=SUCCESS -2026-09-22T07:09:46+03:00 pve01 homelab-backup-v2[3046566]: SCHEDULE_TARGET=node-pve01 -2026-09-22T07:09:46+03:00 pve01 homelab-backup-v2[3046566]: SCHEDULE_RESULT=SUCCESS -2026-09-22T08:53:31+03:00 pve01 homelab-backup-v2[3378768]: SCHEDULE_TARGET=us-netbird -2026-09-22T08:53:31+03:00 pve01 homelab-backup-v2[3378768]: SCHEDULE_RESULT=FAIL -2026-09-22T08:53:31+03:00 pve01 homelab-backup-v2[3378768]: SCHEDULE_REASON=PIPE_FAILED -2026-09-22T11:44:22+03:00 pve01 homelab-backup-v2[3608112]: SCHEDULE_TARGET=xf-dsmods -2026-09-22T11:44:22+03:00 pve01 homelab-backup-v2[3608112]: SCHEDULE_RESULT=SUCCESS -2026-09-22T11:54:41+03:00 pve01 homelab-backup-v2[3938337]: SCHEDULE_TARGET=xf-kingofwolk -2026-09-22T11:54:41+03:00 pve01 homelab-backup-v2[3938337]: SCHEDULE_RESULT=SUCCESS -2026-09-22T12:30:38+03:00 pve01 homelab-backup-v2[4066962]: SCHEDULE_TARGET=xf-newfi -2026-09-22T12:30:38+03:00 pve01 homelab-backup-v2[4066962]: SCHEDULE_RESULT=SUCCESS -JOURNAL_A_TAIL_END=true -OWNER_SNAPSHOT_END=A -OWNER_SNAPSHOT_BEGIN=B -MainPID=335341 -Result=success -ExecMainStartTimestamp=Tue 2026-09-22 14:51:24 MSK -ExecMainExitTimestamp= -ExecMainPID=335341 -ExecMainStatus=0 -LoadState=loaded -ActiveState=activating -SubState=start -InvocationID=124bde99379341a1bf82f318f31f9621 -MAINPID_B=335341 -MAINPID_PROC_B=present - 335341 1 9556 S 0.0 0.0 homelab-backup- /usr/bin/python3 /usr/local/sbin/homelab-backup-v2 scheduled -MAINPID_IO_B_rchar=2048577699 -MAINPID_IO_B_wchar=1275522059 -MAINPID_IO_B_syscr=788976 -MAINPID_IO_B_syscw=90763 -MAINPID_IO_B_read_bytes=0 -MAINPID_IO_B_write_bytes=536608768 -MAINPID_STAT_B_UTIME=274 -MAINPID_STAT_B_STIME=78 -PROCESS_TREE_B - 335341 1 9556 S 0.0 0.0 homelab-backup- /usr/bin/python3 /usr/local/sbin/homelab-backup-v2 scheduled -HEAVY_LOCK_HOLDERS_B -HEAVY_LOCK_B=BUSY -JOURNAL_B_LINES=220 -JOURNAL_B_SHA256=cd10cf61914d21797c6a1f23a43639a2ea6d514a82cd2d4062170cfb3ace9e04 -JOURNAL_B_TAIL_BEGIN=true -2026-09-21T23:25:05+03:00 pve01 homelab-backup-v2[1454793]: SCHEDULE_TARGET=xf-zakrutim -2026-09-21T23:25:05+03:00 pve01 homelab-backup-v2[1454793]: SCHEDULE_RESULT=SUCCESS -2026-09-21T23:25:27+03:00 pve01 vzdump[1496015]: starting task UPID:pve01:0016D3D0:0C81F46A:6AB192B7:vzdump:110:root@pam: -2026-09-21T23:25:27+03:00 pve01 vzdump[1496016]: INFO: starting new backup job: vzdump 110 --remove 0 --prune-backups 'keep-all=1' --compress zstd --tmpdir /var/tmp/homelab-vzdump-v2-v2-ct110-20260921T202514Z-1c872adccfab --mode snapshot --stdexcludes 0 --bwlimit 32768 --ionice 7 --node pve01 --zstd 1 --lockwait 0 -2026-09-21T23:25:27+03:00 pve01 vzdump[1496016]: INFO: Starting Backup of VM 110 (lxc) -2026-09-21T23:27:32+03:00 pve01 vzdump[1496016]: INFO: Finished Backup of VM 110 (00:02:05) -2026-09-21T23:27:32+03:00 pve01 vzdump[1496016]: INFO: Backup job finished successfully -2026-09-21T23:27:32+03:00 pve01 vzdump[1496015]: end task UPID:pve01:0016D3D0:0C81F46A:6AB192B7:vzdump:110:root@pam: OK -2026-09-21T23:27:32+03:00 pve01 homelab-backup-v2[1495880]: SCHEDULE_TARGET=ct110 -2026-09-21T23:28:28+03:00 pve01 homelab-backup-v2[1495880]: SCHEDULE_RESULT=SUCCESS -2026-09-21T23:30:13+03:00 pve01 homelab-backup-v2[1511723]: SCHEDULE_TARGET=ct111 -2026-09-21T23:30:55+03:00 pve01 homelab-backup-v2[1511723]: SCHEDULE_RESULT=SUCCESS -2026-09-22T00:04:00+03:00 pve01 vzdump[1627437]: starting task UPID:pve01:0018D52E:0C857BF7:6AB19BC0:vzdump:210:root@pam: -2026-09-22T00:04:00+03:00 pve01 vzdump[1627438]: INFO: starting new backup job: vzdump 210 --mode snapshot --compress zstd --dumpdir /var/tmp/homelab-vzdump-v2-v2-vm210-20260921T210359Z-571fa9dac984 -2026-09-22T00:04:00+03:00 pve01 vzdump[1627438]: INFO: Starting Backup of VM 210 (qemu) -2026-09-22T00:04:14+03:00 pve01 vzdump[1627438]: INFO: Finished Backup of VM 210 (00:00:14) -2026-09-22T00:04:14+03:00 pve01 vzdump[1627438]: INFO: Backup job finished successfully -2026-09-22T00:04:14+03:00 pve01 vzdump[1627437]: end task UPID:pve01:0018D52E:0C857BF7:6AB19BC0:vzdump:210:root@pam: OK -2026-09-22T00:04:14+03:00 pve01 homelab-backup-v2[1627342]: SCHEDULE_TARGET=vm210 -2026-09-22T00:05:17+03:00 pve01 homelab-backup-v2[1627342]: SCHEDULE_RESULT=SUCCESS -2026-09-22T02:00:53+03:00 pve01 vzdump[2000007]: starting task UPID:pve01:001E8488:0C902F77:6AB1B725:vzdump:170:root@pam: -2026-09-22T02:00:53+03:00 pve01 vzdump[2000008]: INFO: starting new backup job: vzdump 170 --mode snapshot --dumpdir /var/tmp/homelab-vzdump-v2-v2-vm170-20260921T230052Z-7b6556baa842 --compress zstd -2026-09-22T02:00:53+03:00 pve01 vzdump[2000008]: INFO: Starting Backup of VM 170 (qemu) -2026-09-22T02:02:23+03:00 pve01 vzdump[2000008]: INFO: Finished Backup of VM 170 (00:01:30) -2026-09-22T02:02:23+03:00 pve01 vzdump[2000008]: INFO: Backup job finished successfully -2026-09-22T02:02:23+03:00 pve01 vzdump[2000007]: end task UPID:pve01:001E8488:0C902F77:6AB1B725:vzdump:170:root@pam: OK -2026-09-22T02:02:23+03:00 pve01 homelab-backup-v2[1999915]: SCHEDULE_TARGET=vm170 -2026-09-22T02:12:47+03:00 pve01 homelab-backup-v2[1999915]: SCHEDULE_RESULT=SUCCESS -2026-09-22T02:37:13+03:00 pve01 homelab-backup-v2[2121414]: SCHEDULE_TARGET=us-netbird -2026-09-22T02:37:13+03:00 pve01 homelab-backup-v2[2121414]: SCHEDULE_RESULT=FAIL -2026-09-22T02:37:13+03:00 pve01 homelab-backup-v2[2121414]: SCHEDULE_REASON=PIPE_FAILED -2026-09-22T03:46:31+03:00 pve01 homelab-backup-v2[2408783]: SCHEDULE_TARGET=control-bootstrap-v2 -2026-09-22T03:46:31+03:00 pve01 homelab-backup-v2[2408783]: SCHEDULE_RESULT=SUCCESS -2026-09-22T04:29:13+03:00 pve01 homelab-backup-v2[2510842]: SCHEDULE_TARGET=vm9130 -2026-09-22T04:44:11+03:00 pve01 homelab-backup-v2[2510842]: SCHEDULE_RESULT=SUCCESS -2026-09-22T06:31:51+03:00 pve01 homelab-backup-v2[2931093]: SCHEDULE_TARGET=vm211 -2026-09-22T06:32:52+03:00 pve01 homelab-backup-v2[2931093]: SCHEDULE_RESULT=SUCCESS -2026-09-22T07:09:46+03:00 pve01 homelab-backup-v2[3046566]: SCHEDULE_TARGET=node-pve01 -2026-09-22T07:09:46+03:00 pve01 homelab-backup-v2[3046566]: SCHEDULE_RESULT=SUCCESS -2026-09-22T08:53:31+03:00 pve01 homelab-backup-v2[3378768]: SCHEDULE_TARGET=us-netbird -2026-09-22T08:53:31+03:00 pve01 homelab-backup-v2[3378768]: SCHEDULE_RESULT=FAIL -2026-09-22T08:53:31+03:00 pve01 homelab-backup-v2[3378768]: SCHEDULE_REASON=PIPE_FAILED -2026-09-22T11:44:22+03:00 pve01 homelab-backup-v2[3608112]: SCHEDULE_TARGET=xf-dsmods -2026-09-22T11:44:22+03:00 pve01 homelab-backup-v2[3608112]: SCHEDULE_RESULT=SUCCESS -2026-09-22T11:54:41+03:00 pve01 homelab-backup-v2[3938337]: SCHEDULE_TARGET=xf-kingofwolk -2026-09-22T11:54:41+03:00 pve01 homelab-backup-v2[3938337]: SCHEDULE_RESULT=SUCCESS -2026-09-22T12:30:38+03:00 pve01 homelab-backup-v2[4066962]: SCHEDULE_TARGET=xf-newfi -2026-09-22T12:30:38+03:00 pve01 homelab-backup-v2[4066962]: SCHEDULE_RESULT=SUCCESS -JOURNAL_B_TAIL_END=true -OWNER_SNAPSHOT_END=B -LATEST_SCHEDULE_TARGET=xf-newfi -LATEST_SCHEDULE_TARGET_LINE=196 -RESULT_AFTER_LATEST_TARGET=true -LATEST_RESULT_LINE=197 -PROGRESS_EVENT_COUNT=30 -JOURNAL_PROGRESS_30S=false -ACTIVE_BACKUP_CHILD_PRESENT=false -OWNER_FINAL_STATE|service=activating|sub=start|pid=335341|heavy=BUSY -OWNER_CLASS=ACTIVE_NO_PROGRESS_SIGNAL_30S -DECISION=HOLD_DR221_418_OWNER_STALL_SUSPECTED -NEXT_GATE=RCA_ONLY_CURRENT_BACKUP_TARGET_AND_CHILD_BEFORE_ANY_SERVICE_ACTION -CHANGES_MADE_BY_418=false -PRODUCT_MUTATION_BY_418=false -VM_MUTATION_BY_418=false -CLOUD_MUTATION_BY_418=false -HOMELAB_RESULT_CONTRACT={"version":1,"command_id":"NEWFI-260922-NEWFDOM-DR221-417-OWNER-PROGRESS-RCA418R1","status":"FAIL","changes_made":false,"rollback_started":false,"rollback_restored":null} -NEWFI418_END=true +OWNER_PID_START=335341 +OWNER_INVOCATION_ID=124bde99379341a1bf82f318f31f9621 +HEAVY_LOCK_START=BUSY +CURRENT_INVOCATION_JOURNAL_LINES=1 +CURRENT_INVOCATION_JOURNAL_SHA256=25b081a572c3c2feb67855d9294cbfad87cb01cd703b722db59fce65e936bf6b +CURRENT_INVOCATION_JOURNAL_BEGIN=true +2026-09-22T14:51:25+03:00 pve01 homelab-backup-v2[335341]: SELFTEST_REPLACEMENT486=PASS +CURRENT_INVOCATION_JOURNAL_END=true +CURRENT_INVOCATION_SELFTEST_PASS=true +CURRENT_INVOCATION_TARGET_SEEN=false +CURRENT_INVOCATION_RESULT_SEEN=false +CURRENT_INVOCATION_LATEST_TARGET=NONE +PROC_SNAPSHOT_BEGIN=A +PROC_PRESENT_A=true + 335341 1 10152 S 0.0 0.0 homelab-backup- /usr/bin/python3 /usr/local/sbin/homelab-backup-v2 scheduled +WCHAN_A=poll_schedule_timeout.constprop.0 +SYSCALL_A=7 [PTR] [PTR] [PTR] [PTR] [PTR] [PTR] [PTR] [PTR] +IO_A_rchar=2172298800 +IO_A_wchar=1354968903 +IO_A_syscr=838052 +IO_A_syscw=96420 +IO_A_read_bytes=0 +IO_A_write_bytes=570032128 +STATUS_A_STATE=S +CTX_A_VOL=31893 +CTX_A_INVOL=288 +FD_COUNT_A=7 +FD_A|fd=0|cat=DEV|pos=0|size=0|base=null|path_sha16=fd5d32feb2d35625 +FD_A|fd=1|cat=SOCKET|pos=0|size=NA|base=NA|path_sha16=feb8f1e1f9e2ba39 +FD_A|fd=2|cat=SOCKET|pos=0|size=NA|base=NA|path_sha16=feb8f1e1f9e2ba39 +FD_A|fd=3|cat=BACKUP_RUN|pos=0|size=0|base=homelab-backup-heavy.lock|path_sha16=2642241b0beaa737 +FD_A|fd=4|cat=OTHER_FILE|pos=570032128|size=570032128|base=payload.tar.zst|path_sha16=a5bf89245089a1c8 +FD_A|fd=5|cat=PIPE|pos=0|size=NA|base=NA|path_sha16=18f487fd1dca338f +FD_A|fd=7|cat=PIPE|pos=0|size=NA|base=NA|path_sha16=6f3886873903d4f2 +CHILDREN_A + 903072 335341 1 S ssh /usr/bin/ssh -o BatchMode=yes -o StrictHostKeyChecking=yes root@pve02 PATH=/usr/sbin:/usr/bin:/sbin:/bin; export PATH; exec qm guest exec 160 --synchronous 1 --timeout 60 -- /usr/bin/python3 -I -B -c 'import base64,sys; p=sys.argv[1]; o=int(sys.argv[2]); n=int(sys.argv[3]); f=open(p,'"'"'rb'"'"'); f.seek(o); b=f.read(n); f.close(); sys.stdout.write(base64.b64encode(b).decode())' /tmp/homelab-v2-xf-0922T115125Z1b7415a2313b.tar.zst 570032128 131072 +SOCKETS_A +PROC_SNAPSHOT_END=A +PROC_SNAPSHOT_BEGIN=B +PROC_PRESENT_B=true + 335341 1 10167 S 0.0 0.0 homelab-backup- /usr/bin/python3 /usr/local/sbin/homelab-backup-v2 scheduled +WCHAN_B=poll_schedule_timeout.constprop.0 +SYSCALL_B=7 [PTR] [PTR] [PTR] [PTR] [PTR] [PTR] [PTR] [PTR] +IO_B_rchar=2175695809 +IO_B_wchar=1357149803 +IO_B_syscr=839397 +IO_B_syscw=96576 +IO_B_read_bytes=0 +IO_B_write_bytes=570949632 +STATUS_B_STATE=S +CTX_B_VOL=31943 +CTX_B_INVOL=288 +FD_COUNT_B=7 +FD_B|fd=0|cat=DEV|pos=0|size=0|base=null|path_sha16=fd5d32feb2d35625 +FD_B|fd=1|cat=SOCKET|pos=0|size=NA|base=NA|path_sha16=feb8f1e1f9e2ba39 +FD_B|fd=2|cat=SOCKET|pos=0|size=NA|base=NA|path_sha16=feb8f1e1f9e2ba39 +FD_B|fd=3|cat=BACKUP_RUN|pos=0|size=0|base=homelab-backup-heavy.lock|path_sha16=2642241b0beaa737 +FD_B|fd=4|cat=OTHER_FILE|pos=570949632|size=570949632|base=payload.tar.zst|path_sha16=a5bf89245089a1c8 +FD_B|fd=5|cat=PIPE|pos=0|size=NA|base=NA|path_sha16=3a74719a8d200544 +FD_B|fd=7|cat=PIPE|pos=0|size=NA|base=NA|path_sha16=27db66d36b35c3d5 +CHILDREN_B + 903386 335341 0 S ssh /usr/bin/ssh -o BatchMode=yes -o StrictHostKeyChecking=yes root@pve02 PATH=/usr/sbin:/usr/bin:/sbin:/bin; export PATH; exec qm guest exec 160 --synchronous 1 --timeout 60 -- /usr/bin/python3 -I -B -c 'import base64,sys; p=sys.argv[1]; o=int(sys.argv[2]); n=int(sys.argv[3]); f=open(p,'"'"'rb'"'"'); f.seek(o); b=f.read(n); f.close(); sys.stdout.write(base64.b64encode(b).decode())' /tmp/homelab-v2-xf-0922T115125Z1b7415a2313b.tar.zst 570949632 131072 +SOCKETS_B +PROC_SNAPSHOT_END=B +PROC_SNAPSHOT_BEGIN=C +PROC_PRESENT_C=true + 335341 1 10182 S 0.0 0.0 homelab-backup- /usr/bin/python3 /usr/local/sbin/homelab-backup-v2 scheduled +WCHAN_C=poll_schedule_timeout.constprop.0 +SYSCALL_C=7 [PTR] [PTR] [PTR] [PTR] [PTR] [PTR] [PTR] [PTR] +IO_C_rchar=2178607641 +IO_C_wchar=1359019147 +IO_C_syscr=840546 +IO_C_syscw=96707 +IO_C_read_bytes=0 +IO_C_write_bytes=571736064 +STATUS_C_STATE=S +CTX_C_VOL=31987 +CTX_C_INVOL=288 +FD_COUNT_C=7 +FD_C|fd=0|cat=DEV|pos=0|size=0|base=null|path_sha16=fd5d32feb2d35625 +FD_C|fd=1|cat=SOCKET|pos=0|size=NA|base=NA|path_sha16=feb8f1e1f9e2ba39 +FD_C|fd=2|cat=SOCKET|pos=0|size=NA|base=NA|path_sha16=feb8f1e1f9e2ba39 +FD_C|fd=3|cat=BACKUP_RUN|pos=0|size=0|base=homelab-backup-heavy.lock|path_sha16=2642241b0beaa737 +FD_C|fd=4|cat=OTHER_FILE|pos=571736064|size=571736064|base=payload.tar.zst|path_sha16=a5bf89245089a1c8 +FD_C|fd=5|cat=PIPE|pos=0|size=NA|base=NA|path_sha16=e931a2a362f85fd8 +FD_C|fd=7|cat=PIPE|pos=0|size=NA|base=NA|path_sha16=8d16e18acde67925 +CHILDREN_C + 903565 335341 1 S ssh /usr/bin/ssh -o BatchMode=yes -o StrictHostKeyChecking=yes root@pve02 PATH=/usr/sbin:/usr/bin:/sbin:/bin; export PATH; exec qm guest exec 160 --synchronous 1 --timeout 60 -- /usr/bin/python3 -I -B -c 'import base64,sys; p=sys.argv[1]; o=int(sys.argv[2]); n=int(sys.argv[3]); f=open(p,'"'"'rb'"'"'); f.seek(o); b=f.read(n); f.close(); sys.stdout.write(base64.b64encode(b).decode())' /tmp/homelab-v2-xf-0922T115125Z1b7415a2313b.tar.zst 571736064 131072 +SOCKETS_C +PROC_SNAPSHOT_END=C +OWNER_END_STATE|active=activating|sub=start|pid=335341|heavy=BUSY +PID_STABLE=true +DELTA_A_B_rchar=3397009 +DELTA_A_B_wchar=2180900 +DELTA_A_B_syscr=1345 +DELTA_A_B_syscw=156 +DELTA_A_B_read_bytes=0 +DELTA_A_B_write_bytes=917504 +DELTA_B_C_rchar=2911832 +DELTA_B_C_wchar=1869344 +DELTA_B_C_syscr=1149 +DELTA_B_C_syscw=131 +DELTA_B_C_read_bytes=0 +DELTA_B_C_write_bytes=786432 +DELTA_A_C_rchar=6308841 +DELTA_A_C_wchar=4050244 +DELTA_A_C_syscr=2494 +DELTA_A_C_syscw=287 +DELTA_A_C_read_bytes=0 +DELTA_A_C_write_bytes=1703936 +INTERNAL_IO_PROGRESS_30S=true +CURRENT_INVOCATION_END_JOURNAL_LINES=1 +CURRENT_INVOCATION_END_JOURNAL_BEGIN=true +2026-09-22T14:51:25+03:00 pve01 homelab-backup-v2[335341]: SELFTEST_REPLACEMENT486=PASS +CURRENT_INVOCATION_END_JOURNAL_END=true +END_INVOCATION_SELFTEST_PASS=true +END_INVOCATION_TARGET_SEEN=false +END_INVOCATION_LATEST_TARGET=NONE +OWNER_PHASE=ACTIVE_AFTER_SELFTEST_BEFORE_TARGET_MARKER +DECISION=PASS_DR221_419_OWNER_PRETARGET_INTERNAL_IO_PROVEN +NEXT_GATE=WAIT_NATURAL_OWNER_COMPLETION_THEN_REISSUE_VM210_MEMBERSHIP_AND_FRESH_BACKUP +CHANGES_MADE_BY_419=false +PRODUCT_MUTATION_BY_419=false +VM_MUTATION_BY_419=false +CLOUD_MUTATION_BY_419=false +HOMELAB_RESULT_CONTRACT={"version":1,"command_id":"NEWFI-260922-NEWFDOM-DR221-418-OWNER-FD-PHASE-RCA419R1","status":"OK","changes_made":false,"rollback_started":false,"rollback_restored":null} +NEWFI419_END=true OUTPUT_END CHAT_OUTPUT_END