From 79054ee61d3c536f17251cf72b0b88e5248cfc66 Mon Sep 17 00:00:00 2001 From: homelab-runtime-publisher Date: Sun, 27 Sep 2026 19:37:06 +0000 Subject: [PATCH] runtime: publish SUPPORT-260927-HOMELAB-BACKUP-NOTIFICATION-COMPAT-HOTFIX-1230R1 --- ...KUP-NOTIFICATION-COMPAT-HOTFIX-1230R1.json | 38 +++ ...CKUP-NOTIFICATION-COMPAT-HOTFIX-1230R1.txt | 142 +++++++++ runtime/latest.json | 26 +- runtime/latest.txt | 287 +++++++----------- 4 files changed, 305 insertions(+), 188 deletions(-) create mode 100644 runtime/history/SUPPORT-260927-HOMELAB-BACKUP-NOTIFICATION-COMPAT-HOTFIX-1230R1.json create mode 100644 runtime/history/SUPPORT-260927-HOMELAB-BACKUP-NOTIFICATION-COMPAT-HOTFIX-1230R1.txt diff --git a/runtime/history/SUPPORT-260927-HOMELAB-BACKUP-NOTIFICATION-COMPAT-HOTFIX-1230R1.json b/runtime/history/SUPPORT-260927-HOMELAB-BACKUP-NOTIFICATION-COMPAT-HOTFIX-1230R1.json new file mode 100644 index 00000000..ede35cd9 --- /dev/null +++ b/runtime/history/SUPPORT-260927-HOMELAB-BACKUP-NOTIFICATION-COMPAT-HOTFIX-1230R1.json @@ -0,0 +1,38 @@ +{ + "schema_version": 1, + "channel": "homelab-runtime", + "command_id": "SUPPORT-260927-HOMELAB-BACKUP-NOTIFICATION-COMPAT-HOTFIX-1230R1", + "status": "OK", + "rc": 0, + "host": "pve01", + "mode": "change", + "component": "homelab-backup-notification-compat-hotfix", + "started_at_utc": "2026-09-27T19:36:33Z", + "finished_at_utc": "2026-09-27T19:37:05Z", + "reference_register_checked": true, + "reference_sha256": "5a3d8e5154c41cb582a4e0aca68090be1f0138918bf82131a948df326f9d8d66", + "error_register_checked": true, + "error_register_sha256": "3b09a553ec0f527ed3afeed4753f52a74ee3036045bbfb3c685e9f8af4ba7ba0", + "command_sha256": "9968455359f00703ca5b97f5595469060cc7d354c8a56e13fe5eb51378e559da", + "duplicate_failed_command_blocked": false, + "block_reason": null, + "execution_started": true, + "change_declared": true, + "result_contract_valid": true, + "result_contract_status": "OK", + "result_contract_error": null, + "command_rc": 0, + "changes_made": true, + "rollback_started": false, + "rollback_restored": null, + "mutation_outcome": "MUTATED", + "sanitized": true, + "secrets_included": false, + "private_addresses_included": false, + "raw_evidence_retained_locally": true, + "raw_evidence_sha256": "92dac56c49b25f1023be837796b07812f647e098831b7a5cf05b93e90cf8fbbb", + "sanitized_output_sha256": "92dac56c49b25f1023be837796b07812f647e098831b7a5cf05b93e90cf8fbbb", + "output_truncated_in_json": false, + "full_sanitized_output_url": "https://git.gram1.ru/.well-known/homelab-runtime/latest.txt", + "output": "BACKUP_NOTIFICATION_COMPAT_HOTFIX_BEGIN=true\nCOMMAND_ID=SUPPORT-260927-HOMELAB-BACKUP-NOTIFICATION-COMPAT-HOTFIX-1230R1\nMODE=change\nCOMPONENT=homelab-backup-notification-compat-hotfix\nMUTATION_BOUNDARY=NEW_IMMUTABLE_OVERLAY_505_ONLY_PLUS_NEW_WRAPPER_PLUS_CANONICAL_SOURCE_COMMIT_PUSH_IF_AVAILABLE;PRESERVE_EXACT_VZDUMP_CONF;NO_VZDUMP_CONF_CHANGE;NO_BACKUP_EXECUTION;NO_AUDIT_RUN;NO_RETENTION;NO_DELETE_EXISTING_RELEASES;NO_TIMER_CHANGE;NO_NETBIRD_SKLADCHIK_CHANGE\n=== AUTHORITY ===\nHOST=pve01\nCLUSTER_QUORATE=Yes\nRUNNER_SHA256=b248a4c32c9cc64e5747e7dce6c7fc0a23f5124a77c71ce72e27a81aceae9d2d\nSOURCE_1229_STATUS=OK\nSOURCE_1229_DECISION=PASS_BACKUP_OVERLAY_HOTFIX_SOURCE_RCA_COLLECTED\nSOURCE_1229_NEXT_GATE=READ_EXACT_1229_AND_BUILD_IMMUTABLE_NOTIFICATION_POLICY_COMPAT_HOTFIX\n=== LIVE_PRECONDITIONS ===\nLIVE_WRAPPER_SHA256=5077444065c732451cb84898680f62361b21a24ef9eb4f191253e82ead524ea2\nLIVE_VZDUMP_CONF_SHA256=027e4b04852a4b83d558eb861d432b6fad4f234e12ab77d327f274d0fdedbfad\nLIVE_PVE265_SHA256=cd2f634414a8e38a3789015aeca5a9b47821f77d7d1fa61dcdbdc866172963be\nSOURCE_FILE=fresh_lxc_helper.py LIVE_SHA=dbb3e6dbb71b10797df736431d9501a752a0f8c439163c9a0bddb7f76747f011 BASELINE_SHA=dbb3e6dbb71b10797df736431d9501a752a0f8c439163c9a0bddb7f76747f011 EXPECTED_SHA=dbb3e6dbb71b10797df736431d9501a752a0f8c439163c9a0bddb7f76747f011\nSOURCE_FILE=producer_exec_helper.py LIVE_SHA=b3b97099bcd7126670f866e81faae6a42a96d869d9989e6a67f6ea6c871c90b3 BASELINE_SHA=b3b97099bcd7126670f866e81faae6a42a96d869d9989e6a67f6ea6c871c90b3 EXPECTED_SHA=b3b97099bcd7126670f866e81faae6a42a96d869d9989e6a67f6ea6c871c90b3\nSOURCE_FILE=lxc_adapter.py LIVE_SHA=3fa7d194010d76f7c8bc95035ae8876262e9337903e310f45f45df88c266dc8d BASELINE_SHA=3fa7d194010d76f7c8bc95035ae8876262e9337903e310f45f45df88c266dc8d EXPECTED_SHA=3fa7d194010d76f7c8bc95035ae8876262e9337903e310f45f45df88c266dc8d\nSOURCE_FILE=qemu_adapter.py LIVE_SHA=1906db42bd34bbe85eb46fd9797b3572d46e0a41c29d1c29be5f9df5e448f15b BASELINE_SHA=1906db42bd34bbe85eb46fd9797b3572d46e0a41c29d1c29be5f9df5e448f15b EXPECTED_SHA=1906db42bd34bbe85eb46fd9797b3572d46e0a41c29d1c29be5f9df5e448f15b\nSOURCE_FILE=scheduler_adapter.py LIVE_SHA=a6f67159a64067773323f028126e3109e15cf17a8142cea5e6129970f1d4da96 BASELINE_SHA=a6f67159a64067773323f028126e3109e15cf17a8142cea5e6129970f1d4da96 EXPECTED_SHA=a6f67159a64067773323f028126e3109e15cf17a8142cea5e6129970f1d4da96\nSOURCE_FILE=entry504.py LIVE_SHA=ca6876fa9c3b1465b045344a8ad46962de16972c7dadc4ac6257c7d225047793 BASELINE_SHA=ca6876fa9c3b1465b045344a8ad46962de16972c7dadc4ac6257c7d225047793 EXPECTED_SHA=ca6876fa9c3b1465b045344a8ad46962de16972c7dadc4ac6257c7d225047793\nSOURCE_PRE_HEAD=e5f577d1abe9feeafcd48b1482990ce3aa242e45\nSOURCE_BRANCH=cr-2026-1005-backup-v2-health-alerting-remediation\nSOURCE_STATUS_COUNT=0\nSOURCE_REMOTE_HEAD_PRE=e5f577d1abe9feeafcd48b1482990ce3aa242e45\nBACKUP_HEAVY_LOCK_ACQUIRED=true\nACTIVE_VZDUMP_COUNT=0\n=== BUILD_STAGED_505 ===\nOLD_HELPER_SHA256=dbb3e6dbb71b10797df736431d9501a752a0f8c439163c9a0bddb7f76747f011\nNEW_HELPER_SHA256=4e39404b1ddb97392645adce6280f697182cca03714d3a462d363eebce9b1860\nNEW_RELEASE_NAME=backup-v2-overlay-505r1-4e39404b1ddb\nNEW_RELEASE_PATH=/opt/homelab-backup-v2/releases/backup-v2-overlay-505r1-4e39404b1ddb\nNEW_WRAPPER_SHA256=894f8ea346b53a3d7846dbd6eeb5b89333957eb6d7a4f2f64fd4557cae176e1c\n=== STAGED_HELPER_REPLAY ===\nDIRECT_INVOCATION_GUARD\nSTAGED_RUN1_RC=0\nSTAGED_RUN1_STDOUT_BYTES=863\nSTAGED_RUN1_STDOUT_SHA256=d4adac82daadc6d050ddc9d4b4640bee0d6ed45114cd6d59518a001fcbf5295d\nSTAGED_RUN1_STDERR_BYTES=0\nSTAGED_RUN1_STDERR_SHA256=e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\nSTAGED_RUN1_JOB_BLOCKERS=[]\nSTAGED_RUN1_COVERAGE_ELIGIBLE=true\nSTAGED_RUN1_GLOBAL_DEFAULTS_SHA=027e4b04852a4b83d558eb861d432b6fad4f234e12ab77d327f274d0fdedbfad\nSTAGED_RUN1_ARGV_SHA256=3e71d68b3151b697af7a8f9ad8e83560dfa7274d77e1fde8a77a8cd1b8f7c25c\nSTAGED_RUN1_PASS=true\nSTAGED_RUN2_RC=0\nSTAGED_RUN2_STDOUT_BYTES=863\nSTAGED_RUN2_STDOUT_SHA256=d4adac82daadc6d050ddc9d4b4640bee0d6ed45114cd6d59518a001fcbf5295d\nSTAGED_RUN2_STDERR_BYTES=0\nSTAGED_RUN2_STDERR_SHA256=e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\nSTAGED_RUN2_JOB_BLOCKERS=[]\nSTAGED_RUN2_COVERAGE_ELIGIBLE=true\nSTAGED_RUN2_GLOBAL_DEFAULTS_SHA=027e4b04852a4b83d558eb861d432b6fad4f234e12ab77d327f274d0fdedbfad\nSTAGED_RUN2_ARGV_SHA256=3e71d68b3151b697af7a8f9ad8e83560dfa7274d77e1fde8a77a8cd1b8f7c25c\nSTAGED_RUN2_PASS=true\nSTAGED_JOB_STABLE=true\nSTAGED_ARGV_STABLE=true\nSTAGED_HELPER_REPLAY_PASS=true\nSTAGED_REPLAY_RC=0\nNEW_RELEASE_CREATED=true\nNEW_RELEASE_IDENTITY_OK=true\n=== STAGED_WRAPPER_PLAN ===\nSTAGED_PLAN_RC=0\nSTAGED_PLAN_STDERR_BYTES=0\nSTAGED_PLAN_STDOUT_SHA256=37b5456f30d9f0a5c92315844f5fab06dfb307ca6cf73ec6322d0db0dfc0c211\nPLAN_LXC_RESULT={\"job\":{\"archive_cap_bytes\":9516036916,\"blockers\":[],\"config_sha256\":\"09957aacd41ba9eeaf5fd4eda13936d580c9082a46895433379aa9dd0bad5969\",\"configured_archive_bound_bytes\":9516036916,\"configured_disk_bytes\":8589934592,\"coverage_eligible\":true,\"disks\":[{\"backup_setting\":\"included_default_rootfs\",\"class\":\"managed-volume\",\"configured_size_bytes\":8589934592,\"slot\":\"rootfs\",\"storage\":\"local-lvm\"}],\"global_defaults_sha256\":\"027e4b04852a4b83d558eb861d432b6fad4f234e12ab77d327f274d0fdedbfad\",\"node\":\"pve01\",\"status\":\"running\",\"template\":false,\"type\":\"lxc\",\"vmid\":110},\"logical_id\":\"ct110\",\"node\":\"pve01\",\"vmid\":110}\nSTAGED_WRAPPER_PLAN_PASS=true\n=== CANONICAL_SOURCE_COMMIT ===\nSOURCE_POST_HEAD=db592a25c6ac587bf16472a6132b66698c42f663\nSOURCE_COMMIT_CREATED=true\nSOURCE_PUSH_RC=0\nSOURCE_ORIGIN_PUSHURL_PRESERVED=DISABLED\nSOURCE_REMOTE_HEAD_POST=db592a25c6ac587bf16472a6132b66698c42f663\nSOURCE_LOCAL_REMOTE_EXACT=true\nSOURCE_WORKTREE_CLEAN=true\n=== CUTOVER ===\nROLLBACK_WRAPPER_SHA256=5077444065c732451cb84898680f62361b21a24ef9eb4f191253e82ead524ea2\nLIVE_WRAPPER_SHA256_POST=894f8ea346b53a3d7846dbd6eeb5b89333957eb6d7a4f2f64fd4557cae176e1c\nLIVE_WRAPPER_EXPECTED_NEW=894f8ea346b53a3d7846dbd6eeb5b89333957eb6d7a4f2f64fd4557cae176e1c\nBACKUP_HEAVY_LOCK_RELEASED=true\n=== POST_CUTOVER_PLAN ===\nPOST_PLAN_RC=0\nPOST_PLAN_STDERR_BYTES=0\nPOST_PLAN_STDOUT_SHA256=37b5456f30d9f0a5c92315844f5fab06dfb307ca6cf73ec6322d0db0dfc0c211\nPLAN_LXC_RESULT={\"job\":{\"archive_cap_bytes\":9516036916,\"blockers\":[],\"config_sha256\":\"09957aacd41ba9eeaf5fd4eda13936d580c9082a46895433379aa9dd0bad5969\",\"configured_archive_bound_bytes\":9516036916,\"configured_disk_bytes\":8589934592,\"coverage_eligible\":true,\"disks\":[{\"backup_setting\":\"included_default_rootfs\",\"class\":\"managed-volume\",\"configured_size_bytes\":8589934592,\"slot\":\"rootfs\",\"storage\":\"local-lvm\"}],\"global_defaults_sha256\":\"027e4b04852a4b83d558eb861d432b6fad4f234e12ab77d327f274d0fdedbfad\",\"node\":\"pve01\",\"status\":\"running\",\"template\":false,\"type\":\"lxc\",\"vmid\":110},\"logical_id\":\"ct110\",\"node\":\"pve01\",\"vmid\":110}\nSCHEDULER_SELECT_RC=0\nSCHEDULER_SELECT_STDERR_BYTES=0\nSELFTEST_REPLACEMENT486=PASS\nSCHEDULER_LIVE_SELECTION={\"due_seconds\":72000,\"enabled\":true,\"logical_id\":\"ct110\"}\nVZDUMP_CONF_SHA256_POST=027e4b04852a4b83d558eb861d432b6fad4f234e12ab77d327f274d0fdedbfad\nVZDUMP_CONF_PRESERVED=true\nCHANGES_MADE=true\nROLLBACK_STARTED=false\nROLLBACK_RESTORED=null\nMUTATION_OUTCOME=MUTATED\nNEW_RELEASE=/opt/homelab-backup-v2/releases/backup-v2-overlay-505r1-4e39404b1ddb\nNEW_HELPER_SHA256=4e39404b1ddb97392645adce6280f697182cca03714d3a462d363eebce9b1860\nNEW_WRAPPER_SHA256=894f8ea346b53a3d7846dbd6eeb5b89333957eb6d7a4f2f64fd4557cae176e1c\nSOURCE_PRE_HEAD=e5f577d1abe9feeafcd48b1482990ce3aa242e45\nSOURCE_POST_HEAD=db592a25c6ac587bf16472a6132b66698c42f663\nSOURCE_PUSHED=true\nSTAGED_HELPER_REPLAY=PASS\nSTAGED_WRAPPER_PLAN=PASS\nPOST_CUTOVER_PLAN=PASS\nBACKUP_EXECUTED=false\nTASK_RESULT=PASS_BACKUP_NOTIFICATION_COMPAT_HOTFIX_DEPLOYED\nDECISION=PASS_BACKUP_NOTIFICATION_COMPAT_HOTFIX_DEPLOYED\nNEXT_GATE=TARGETED_CT110_VERIFY_AND_ADAPTIVE_RPO_RECOVERY\nHOMELAB_RESULT_CONTRACT={\"version\":1,\"command_id\":\"SUPPORT-260927-HOMELAB-BACKUP-NOTIFICATION-COMPAT-HOTFIX-1230R1\",\"status\":\"OK\",\"changes_made\":true,\"rollback_started\":false,\"rollback_restored\":null}\n" +} diff --git a/runtime/history/SUPPORT-260927-HOMELAB-BACKUP-NOTIFICATION-COMPAT-HOTFIX-1230R1.txt b/runtime/history/SUPPORT-260927-HOMELAB-BACKUP-NOTIFICATION-COMPAT-HOTFIX-1230R1.txt new file mode 100644 index 00000000..b768211b --- /dev/null +++ b/runtime/history/SUPPORT-260927-HOMELAB-BACKUP-NOTIFICATION-COMPAT-HOTFIX-1230R1.txt @@ -0,0 +1,142 @@ +CHAT_OUTPUT_BEGIN +COMMAND_ID=SUPPORT-260927-HOMELAB-BACKUP-NOTIFICATION-COMPAT-HOTFIX-1230R1 +STATUS=OK +RC=0 +HOST=pve01 +MODE=change +COMPONENT=homelab-backup-notification-compat-hotfix +REFERENCE_REGISTER_CHECK=OK +REFERENCE_SHA256=5a3d8e5154c41cb582a4e0aca68090be1f0138918bf82131a948df326f9d8d66 +ERROR_REGISTER_CHECK=OK +ERROR_REGISTER_SHA256=3b09a553ec0f527ed3afeed4753f52a74ee3036045bbfb3c685e9f8af4ba7ba0 +COMMAND_SHA256=9968455359f00703ca5b97f5595469060cc7d354c8a56e13fe5eb51378e559da +DUPLICATE_FAILED_COMMAND_BLOCKED=false +EXECUTION_STARTED=true +CHANGE_DECLARED=true +RESULT_CONTRACT_VALID=true +RESULT_CONTRACT_STATUS=OK +RESULT_CONTRACT_ERROR=NONE +COMMAND_RC=0 +CHANGES_MADE=true +ROLLBACK_STARTED=false +ROLLBACK_RESTORED=null +MUTATION_OUTCOME=MUTATED +SANITIZED=yes +SECRETS_INCLUDED=no +PRIVATE_ADDRESSES_INCLUDED=no +RAW_EVIDENCE_SHA256=92dac56c49b25f1023be837796b07812f647e098831b7a5cf05b93e90cf8fbbb +SANITIZED_OUTPUT_SHA256=92dac56c49b25f1023be837796b07812f647e098831b7a5cf05b93e90cf8fbbb +OUTPUT_BEGIN +BACKUP_NOTIFICATION_COMPAT_HOTFIX_BEGIN=true +COMMAND_ID=SUPPORT-260927-HOMELAB-BACKUP-NOTIFICATION-COMPAT-HOTFIX-1230R1 +MODE=change +COMPONENT=homelab-backup-notification-compat-hotfix +MUTATION_BOUNDARY=NEW_IMMUTABLE_OVERLAY_505_ONLY_PLUS_NEW_WRAPPER_PLUS_CANONICAL_SOURCE_COMMIT_PUSH_IF_AVAILABLE;PRESERVE_EXACT_VZDUMP_CONF;NO_VZDUMP_CONF_CHANGE;NO_BACKUP_EXECUTION;NO_AUDIT_RUN;NO_RETENTION;NO_DELETE_EXISTING_RELEASES;NO_TIMER_CHANGE;NO_NETBIRD_SKLADCHIK_CHANGE +=== AUTHORITY === +HOST=pve01 +CLUSTER_QUORATE=Yes +RUNNER_SHA256=b248a4c32c9cc64e5747e7dce6c7fc0a23f5124a77c71ce72e27a81aceae9d2d +SOURCE_1229_STATUS=OK +SOURCE_1229_DECISION=PASS_BACKUP_OVERLAY_HOTFIX_SOURCE_RCA_COLLECTED +SOURCE_1229_NEXT_GATE=READ_EXACT_1229_AND_BUILD_IMMUTABLE_NOTIFICATION_POLICY_COMPAT_HOTFIX +=== LIVE_PRECONDITIONS === +LIVE_WRAPPER_SHA256=5077444065c732451cb84898680f62361b21a24ef9eb4f191253e82ead524ea2 +LIVE_VZDUMP_CONF_SHA256=027e4b04852a4b83d558eb861d432b6fad4f234e12ab77d327f274d0fdedbfad +LIVE_PVE265_SHA256=cd2f634414a8e38a3789015aeca5a9b47821f77d7d1fa61dcdbdc866172963be +SOURCE_FILE=fresh_lxc_helper.py LIVE_SHA=dbb3e6dbb71b10797df736431d9501a752a0f8c439163c9a0bddb7f76747f011 BASELINE_SHA=dbb3e6dbb71b10797df736431d9501a752a0f8c439163c9a0bddb7f76747f011 EXPECTED_SHA=dbb3e6dbb71b10797df736431d9501a752a0f8c439163c9a0bddb7f76747f011 +SOURCE_FILE=producer_exec_helper.py LIVE_SHA=b3b97099bcd7126670f866e81faae6a42a96d869d9989e6a67f6ea6c871c90b3 BASELINE_SHA=b3b97099bcd7126670f866e81faae6a42a96d869d9989e6a67f6ea6c871c90b3 EXPECTED_SHA=b3b97099bcd7126670f866e81faae6a42a96d869d9989e6a67f6ea6c871c90b3 +SOURCE_FILE=lxc_adapter.py LIVE_SHA=3fa7d194010d76f7c8bc95035ae8876262e9337903e310f45f45df88c266dc8d BASELINE_SHA=3fa7d194010d76f7c8bc95035ae8876262e9337903e310f45f45df88c266dc8d EXPECTED_SHA=3fa7d194010d76f7c8bc95035ae8876262e9337903e310f45f45df88c266dc8d +SOURCE_FILE=qemu_adapter.py LIVE_SHA=1906db42bd34bbe85eb46fd9797b3572d46e0a41c29d1c29be5f9df5e448f15b BASELINE_SHA=1906db42bd34bbe85eb46fd9797b3572d46e0a41c29d1c29be5f9df5e448f15b EXPECTED_SHA=1906db42bd34bbe85eb46fd9797b3572d46e0a41c29d1c29be5f9df5e448f15b +SOURCE_FILE=scheduler_adapter.py LIVE_SHA=a6f67159a64067773323f028126e3109e15cf17a8142cea5e6129970f1d4da96 BASELINE_SHA=a6f67159a64067773323f028126e3109e15cf17a8142cea5e6129970f1d4da96 EXPECTED_SHA=a6f67159a64067773323f028126e3109e15cf17a8142cea5e6129970f1d4da96 +SOURCE_FILE=entry504.py LIVE_SHA=ca6876fa9c3b1465b045344a8ad46962de16972c7dadc4ac6257c7d225047793 BASELINE_SHA=ca6876fa9c3b1465b045344a8ad46962de16972c7dadc4ac6257c7d225047793 EXPECTED_SHA=ca6876fa9c3b1465b045344a8ad46962de16972c7dadc4ac6257c7d225047793 +SOURCE_PRE_HEAD=e5f577d1abe9feeafcd48b1482990ce3aa242e45 +SOURCE_BRANCH=cr-2026-1005-backup-v2-health-alerting-remediation +SOURCE_STATUS_COUNT=0 +SOURCE_REMOTE_HEAD_PRE=e5f577d1abe9feeafcd48b1482990ce3aa242e45 +BACKUP_HEAVY_LOCK_ACQUIRED=true +ACTIVE_VZDUMP_COUNT=0 +=== BUILD_STAGED_505 === +OLD_HELPER_SHA256=dbb3e6dbb71b10797df736431d9501a752a0f8c439163c9a0bddb7f76747f011 +NEW_HELPER_SHA256=4e39404b1ddb97392645adce6280f697182cca03714d3a462d363eebce9b1860 +NEW_RELEASE_NAME=backup-v2-overlay-505r1-4e39404b1ddb +NEW_RELEASE_PATH=/opt/homelab-backup-v2/releases/backup-v2-overlay-505r1-4e39404b1ddb +NEW_WRAPPER_SHA256=894f8ea346b53a3d7846dbd6eeb5b89333957eb6d7a4f2f64fd4557cae176e1c +=== STAGED_HELPER_REPLAY === +DIRECT_INVOCATION_GUARD +STAGED_RUN1_RC=0 +STAGED_RUN1_STDOUT_BYTES=863 +STAGED_RUN1_STDOUT_SHA256=d4adac82daadc6d050ddc9d4b4640bee0d6ed45114cd6d59518a001fcbf5295d +STAGED_RUN1_STDERR_BYTES=0 +STAGED_RUN1_STDERR_SHA256=e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 +STAGED_RUN1_JOB_BLOCKERS=[] +STAGED_RUN1_COVERAGE_ELIGIBLE=true +STAGED_RUN1_GLOBAL_DEFAULTS_SHA=027e4b04852a4b83d558eb861d432b6fad4f234e12ab77d327f274d0fdedbfad +STAGED_RUN1_ARGV_SHA256=3e71d68b3151b697af7a8f9ad8e83560dfa7274d77e1fde8a77a8cd1b8f7c25c +STAGED_RUN1_PASS=true +STAGED_RUN2_RC=0 +STAGED_RUN2_STDOUT_BYTES=863 +STAGED_RUN2_STDOUT_SHA256=d4adac82daadc6d050ddc9d4b4640bee0d6ed45114cd6d59518a001fcbf5295d +STAGED_RUN2_STDERR_BYTES=0 +STAGED_RUN2_STDERR_SHA256=e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 +STAGED_RUN2_JOB_BLOCKERS=[] +STAGED_RUN2_COVERAGE_ELIGIBLE=true +STAGED_RUN2_GLOBAL_DEFAULTS_SHA=027e4b04852a4b83d558eb861d432b6fad4f234e12ab77d327f274d0fdedbfad +STAGED_RUN2_ARGV_SHA256=3e71d68b3151b697af7a8f9ad8e83560dfa7274d77e1fde8a77a8cd1b8f7c25c +STAGED_RUN2_PASS=true +STAGED_JOB_STABLE=true +STAGED_ARGV_STABLE=true +STAGED_HELPER_REPLAY_PASS=true +STAGED_REPLAY_RC=0 +NEW_RELEASE_CREATED=true +NEW_RELEASE_IDENTITY_OK=true +=== STAGED_WRAPPER_PLAN === +STAGED_PLAN_RC=0 +STAGED_PLAN_STDERR_BYTES=0 +STAGED_PLAN_STDOUT_SHA256=37b5456f30d9f0a5c92315844f5fab06dfb307ca6cf73ec6322d0db0dfc0c211 +PLAN_LXC_RESULT={"job":{"archive_cap_bytes":9516036916,"blockers":[],"config_sha256":"09957aacd41ba9eeaf5fd4eda13936d580c9082a46895433379aa9dd0bad5969","configured_archive_bound_bytes":9516036916,"configured_disk_bytes":8589934592,"coverage_eligible":true,"disks":[{"backup_setting":"included_default_rootfs","class":"managed-volume","configured_size_bytes":8589934592,"slot":"rootfs","storage":"local-lvm"}],"global_defaults_sha256":"027e4b04852a4b83d558eb861d432b6fad4f234e12ab77d327f274d0fdedbfad","node":"pve01","status":"running","template":false,"type":"lxc","vmid":110},"logical_id":"ct110","node":"pve01","vmid":110} +STAGED_WRAPPER_PLAN_PASS=true +=== CANONICAL_SOURCE_COMMIT === +SOURCE_POST_HEAD=db592a25c6ac587bf16472a6132b66698c42f663 +SOURCE_COMMIT_CREATED=true +SOURCE_PUSH_RC=0 +SOURCE_ORIGIN_PUSHURL_PRESERVED=DISABLED +SOURCE_REMOTE_HEAD_POST=db592a25c6ac587bf16472a6132b66698c42f663 +SOURCE_LOCAL_REMOTE_EXACT=true +SOURCE_WORKTREE_CLEAN=true +=== CUTOVER === +ROLLBACK_WRAPPER_SHA256=5077444065c732451cb84898680f62361b21a24ef9eb4f191253e82ead524ea2 +LIVE_WRAPPER_SHA256_POST=894f8ea346b53a3d7846dbd6eeb5b89333957eb6d7a4f2f64fd4557cae176e1c +LIVE_WRAPPER_EXPECTED_NEW=894f8ea346b53a3d7846dbd6eeb5b89333957eb6d7a4f2f64fd4557cae176e1c +BACKUP_HEAVY_LOCK_RELEASED=true +=== POST_CUTOVER_PLAN === +POST_PLAN_RC=0 +POST_PLAN_STDERR_BYTES=0 +POST_PLAN_STDOUT_SHA256=37b5456f30d9f0a5c92315844f5fab06dfb307ca6cf73ec6322d0db0dfc0c211 +PLAN_LXC_RESULT={"job":{"archive_cap_bytes":9516036916,"blockers":[],"config_sha256":"09957aacd41ba9eeaf5fd4eda13936d580c9082a46895433379aa9dd0bad5969","configured_archive_bound_bytes":9516036916,"configured_disk_bytes":8589934592,"coverage_eligible":true,"disks":[{"backup_setting":"included_default_rootfs","class":"managed-volume","configured_size_bytes":8589934592,"slot":"rootfs","storage":"local-lvm"}],"global_defaults_sha256":"027e4b04852a4b83d558eb861d432b6fad4f234e12ab77d327f274d0fdedbfad","node":"pve01","status":"running","template":false,"type":"lxc","vmid":110},"logical_id":"ct110","node":"pve01","vmid":110} +SCHEDULER_SELECT_RC=0 +SCHEDULER_SELECT_STDERR_BYTES=0 +SELFTEST_REPLACEMENT486=PASS +SCHEDULER_LIVE_SELECTION={"due_seconds":72000,"enabled":true,"logical_id":"ct110"} +VZDUMP_CONF_SHA256_POST=027e4b04852a4b83d558eb861d432b6fad4f234e12ab77d327f274d0fdedbfad +VZDUMP_CONF_PRESERVED=true +CHANGES_MADE=true +ROLLBACK_STARTED=false +ROLLBACK_RESTORED=null +MUTATION_OUTCOME=MUTATED +NEW_RELEASE=/opt/homelab-backup-v2/releases/backup-v2-overlay-505r1-4e39404b1ddb +NEW_HELPER_SHA256=4e39404b1ddb97392645adce6280f697182cca03714d3a462d363eebce9b1860 +NEW_WRAPPER_SHA256=894f8ea346b53a3d7846dbd6eeb5b89333957eb6d7a4f2f64fd4557cae176e1c +SOURCE_PRE_HEAD=e5f577d1abe9feeafcd48b1482990ce3aa242e45 +SOURCE_POST_HEAD=db592a25c6ac587bf16472a6132b66698c42f663 +SOURCE_PUSHED=true +STAGED_HELPER_REPLAY=PASS +STAGED_WRAPPER_PLAN=PASS +POST_CUTOVER_PLAN=PASS +BACKUP_EXECUTED=false +TASK_RESULT=PASS_BACKUP_NOTIFICATION_COMPAT_HOTFIX_DEPLOYED +DECISION=PASS_BACKUP_NOTIFICATION_COMPAT_HOTFIX_DEPLOYED +NEXT_GATE=TARGETED_CT110_VERIFY_AND_ADAPTIVE_RPO_RECOVERY +HOMELAB_RESULT_CONTRACT={"version":1,"command_id":"SUPPORT-260927-HOMELAB-BACKUP-NOTIFICATION-COMPAT-HOTFIX-1230R1","status":"OK","changes_made":true,"rollback_started":false,"rollback_restored":null} + +OUTPUT_END +CHAT_OUTPUT_END diff --git a/runtime/latest.json b/runtime/latest.json index 7db674b9..ede35cd9 100644 --- a/runtime/latest.json +++ b/runtime/latest.json @@ -1,38 +1,38 @@ { "schema_version": 1, "channel": "homelab-runtime", - "command_id": "SUPPORT-260927-HOMELAB-BACKUP-OVERLAY-HOTFIX-SOURCE-RCA-1229R1", + "command_id": "SUPPORT-260927-HOMELAB-BACKUP-NOTIFICATION-COMPAT-HOTFIX-1230R1", "status": "OK", "rc": 0, "host": "pve01", - "mode": "read-only", - "component": "homelab-backup-overlay-hotfix-source-rca", - "started_at_utc": "2026-09-27T19:29:00Z", - "finished_at_utc": "2026-09-27T19:29:00Z", + "mode": "change", + "component": "homelab-backup-notification-compat-hotfix", + "started_at_utc": "2026-09-27T19:36:33Z", + "finished_at_utc": "2026-09-27T19:37:05Z", "reference_register_checked": true, "reference_sha256": "5a3d8e5154c41cb582a4e0aca68090be1f0138918bf82131a948df326f9d8d66", "error_register_checked": true, "error_register_sha256": "3b09a553ec0f527ed3afeed4753f52a74ee3036045bbfb3c685e9f8af4ba7ba0", - "command_sha256": "2dc27b7a91ac007c80176806c837e4a05af12349ce8d90549bb634a60b4976fb", + "command_sha256": "9968455359f00703ca5b97f5595469060cc7d354c8a56e13fe5eb51378e559da", "duplicate_failed_command_blocked": false, "block_reason": null, "execution_started": true, - "change_declared": false, + "change_declared": true, "result_contract_valid": true, - "result_contract_status": null, + "result_contract_status": "OK", "result_contract_error": null, "command_rc": 0, - "changes_made": false, + "changes_made": true, "rollback_started": false, "rollback_restored": null, - "mutation_outcome": "NO_MUTATION", + "mutation_outcome": "MUTATED", "sanitized": true, "secrets_included": false, "private_addresses_included": false, "raw_evidence_retained_locally": true, - "raw_evidence_sha256": "104229289b0d44d96b4f38fe3259b6ccba08188a68213a0d0bd59e3a2eadfec5", - "sanitized_output_sha256": "104229289b0d44d96b4f38fe3259b6ccba08188a68213a0d0bd59e3a2eadfec5", + "raw_evidence_sha256": "92dac56c49b25f1023be837796b07812f647e098831b7a5cf05b93e90cf8fbbb", + "sanitized_output_sha256": "92dac56c49b25f1023be837796b07812f647e098831b7a5cf05b93e90cf8fbbb", "output_truncated_in_json": false, "full_sanitized_output_url": "https://git.gram1.ru/.well-known/homelab-runtime/latest.txt", - "output": "BACKUP_OVERLAY_HOTFIX_SOURCE_RCA_BEGIN=true\nCOMMAND_ID=SUPPORT-260927-HOMELAB-BACKUP-OVERLAY-HOTFIX-SOURCE-RCA-1229R1\nMODE=read-only\nCOMPONENT=homelab-backup-overlay-hotfix-source-rca\nMUTATION_BOUNDARY=READ_ONLY_SOURCE_AUTHORITY_AND_DEPLOYMENT_TOPOLOGY;NO_GIT_FETCH_NO_GIT_WRITE_NO_CONFIG_WRITE_NO_RELEASE_WRITE_NO_WRAPPER_WRITE_NO_BACKUP_NO_AUDIT_RUN_NO_SYSTEMD_ACTION_NO_LOCK_BREAK_NO_MAIL_NO_NETBIRD_SKLADCHIK_CHANGE\nHOST=pve01\nCLUSTER_QUORATE=Yes\nRUNNER_SHA256=b248a4c32c9cc64e5747e7dce6c7fc0a23f5124a77c71ce72e27a81aceae9d2d\nSOURCE_1228_STATUS=OK\nSOURCE_1228_DECISION=PASS_VZDUMP_GLOBAL_DEFAULT_RCA_COLLECTED\nSOURCE_1228_NEXT_GATE=READ_EXACT_1228_AND_FIX_ONLY_PROVEN_GLOBAL_DEFAULT_CAUSE\n=== LIVE_AUTHORITY ===\nLIVE_WRAPPER_PATH=/usr/local/sbin/homelab-backup-v2\nLIVE_WRAPPER_SHA256=5077444065c732451cb84898680f62361b21a24ef9eb4f191253e82ead524ea2\nLIVE_WRAPPER_MATCH=true\nLIVE_HELPER_PATH=/opt/homelab-backup-v2/releases/backup-v2-overlay-504r1-ca6876fa9c3b/fresh_lxc_helper.py\nLIVE_HELPER_SHA256=dbb3e6dbb71b10797df736431d9501a752a0f8c439163c9a0bddb7f76747f011\nLIVE_HELPER_MATCH=true\nLIVE_LXC_PATH=/opt/homelab-backup-v2/releases/backup-v2-overlay-504r1-ca6876fa9c3b/lxc_adapter.py\nLIVE_LXC_SHA256=3fa7d194010d76f7c8bc95035ae8876262e9337903e310f45f45df88c266dc8d\nLIVE_LXC_MATCH=true\nLIVE_ENTRY_PATH=/opt/homelab-backup-v2/releases/backup-v2-overlay-504r1-ca6876fa9c3b/entry504.py\nLIVE_ENTRY_SHA256=ca6876fa9c3b1465b045344a8ad46962de16972c7dadc4ac6257c7d225047793\nLIVE_ENTRY_MATCH=true\nLIVE_PVE265_PATH=/opt/homelab-backup-v2/releases/backup-v2-accepted-486r1/candidate411/pve265.py\nLIVE_PVE265_SHA256=cd2f634414a8e38a3789015aeca5a9b47821f77d7d1fa61dcdbdc866172963be\nLIVE_PVE265_MATCH=true\nLIVE_VZDUMP_CONF_SHA256=027e4b04852a4b83d558eb861d432b6fad4f234e12ab77d327f274d0fdedbfad\nLIVE_VZDUMP_CONF_MATCH=true\n=== GIT_SOURCE_AUTHORITY ===\nSOURCE_WORKTREE_EXISTS=true\nSOURCE_WORKTREE=/root/homelab-ops-cr-2026-1005\nSOURCE_TOPLEVEL=/root/homelab-ops-cr-2026-1005\nSOURCE_BRANCH=cr-2026-1005-backup-v2-health-alerting-remediation\nSOURCE_HEAD=e5f577d1abe9feeafcd48b1482990ce3aa242e45\nSOURCE_UPSTREAM=NONE\nSOURCE_STATUS_COUNT=0\nSOURCE_STATUS_BEGIN\n\nSOURCE_STATUS_END\nSOURCE_WORKTREE_CLEAN=true\nSOURCE_REMOTES_BEGIN\norigin\nSOURCE_REMOTES_END\nSOURCE_LOG_HEAD_BEGIN\ne5f577d1abe9feeafcd48b1482990ce3aa242e45|2026-09-25T11:53:41+03:00|backup alert: debounce transient health mail\n6401ea1e99988b9d2550de544c9e45bd7e829bdd|2026-09-22T12:19:14+03:00|CR-2026-1005: canonicalize Cloud B audit proof\n4e59d5afaa670899c56f87a84bc887175f299614|2026-09-21T07:52:31+03:00|CR-2026-1005: seal backup health alerting and DR closure\n47b9be72cf2487ba66295d7da998016bbeea57be|2026-09-21T06:31:05+03:00|CR-2026-1005: close V2 backup scheduling and retention gaps\n50bf24f8ee27f3d2e0d1cbc6c17b62c69ff06bae|2026-09-21T05:51:10+03:00|CR-2026-1005: hold retention timer during GFS apply\n46c6f9aaf8fa93ce9f0cee686f948704c1a61336|2026-09-21T05:14:29+03:00|CR-2026-1005: add controlled GFS lifecycle remediation task\n0d62d4a2077047b9b040a9378085ece09dd15883|2026-09-21T04:50:07+03:00|CR-2026-1005: make GFS critical policy lifecycle-safe\n326622a4864fa9b5f43b69981733236bb42c4d7b|2026-09-01T09:09:31Z|Merge pull request 'CR0108 record Gitea reconciler production closure' (#46) from cr-2026-0108-gitea-reconciler-production-closure into main\n6c970c4f1ee618149cf225b690e7a411c1b00df5|2026-09-01T11:30:57+03:00|CR0108 record Gitea reconciler production closure\n030d2bcf232a43e5673684b2116c7382da3ee412|2026-09-01T07:51:45Z|Merge pull request 'CR0107 invoke staged reconciler selftest through bash' (#45) from cr-2026-0107-gitea-reconciler-selftest-bash-invocation into main\n2ffbe030c6b5ebc9af1aa3aefb10520ad31153ed|2026-09-01T10:51:04+03:00|CR0107 invoke reconciler selftest through bash\nc6114944985f813794821629f889d7a8c6677743|2026-09-01T06:26:03Z|Merge pull request 'CR0106 harden Gitea reconciler token lifecycle' (#44) from cr-2026-0106-gitea-reconciler-token-lifecycle-hardening into main\n1d63b2607eea5dd5a8a390cd8b22e07a39aed7be|2026-09-01T09:16:48+03:00|CR0106 harden Gitea reconciler token lifecycle\n69acde73c234db97f6e2e080a0f725e8abd970d6|2026-09-01T08:27:21+03:00|CR0106 define Gitea reconciler token lifecycle contract (RED)\nb7adc4b1747e1ae2ab930392e2952d5d3b3a1a7e|2026-09-01T04:52:17Z|Merge pull request 'CR0105 add Gitea repository access reconciler' (#43) from cr-2026-0105-gitea-repo-access-reconciler into main\nf30216d8aa7a41de534499c48fa9174cc12242c9|2026-09-01T07:10:34+03:00|CR0105 make fake-token test CI-safe\nfd4273b3fc09c1b5f4497662cb3a79bf2180798a|2026-09-01T06:40:38+03:00|CR0105 implement VM170 Gitea access reconciler\n68a3fd045049038bd72c4f8f06b37e644aec0438|2026-09-01T00:54:22+03:00|CR0105 define Gitea access reconciler contract (RED)\n649b4b54e14281007264dda8eb4fd7d07623ad3c|2026-08-31T19:24:44Z|Merge pull request 'CR0104 record production closure' (#42) from cr-2026-0104-production-closure into main\n07f709b6fc06acad11b93e66ecd9367a3396f4f1|2026-08-31T22:23:17+03:00|CR0104 record production closure\nSOURCE_LOG_HEAD_END\n=== EXACT_SOURCE_FILE_CANDIDATES ===\nSOURCE_CANDIDATE|name=entry504.py|exact=true|sha256=ca6876fa9c3b1465b045344a8ad46962de16972c7dadc4ac6257c7d225047793|path=/root/homelab-ops-cr-2026-1005/tasks/backup-v2-health-alerting-remediation-v1/assets/baseline/backup-v2-release/entry504.py\nSOURCE_CANDIDATE|name=fresh_lxc_helper.py|exact=true|sha256=dbb3e6dbb71b10797df736431d9501a752a0f8c439163c9a0bddb7f76747f011|path=/root/homelab-ops-cr-2026-1005/tasks/backup-v2-health-alerting-remediation-v1/assets/baseline/backup-v2-release/fresh_lxc_helper.py\nSOURCE_CANDIDATE|name=homelab-backup-v2|exact=true|sha256=5077444065c732451cb84898680f62361b21a24ef9eb4f191253e82ead524ea2|path=/root/homelab-ops-cr-2026-1005/tasks/backup-v2-health-alerting-remediation-v1/assets/baseline/homelab-backup-v2\nSOURCE_CANDIDATE|name=lxc_adapter.py|exact=true|sha256=3fa7d194010d76f7c8bc95035ae8876262e9337903e310f45f45df88c266dc8d|path=/root/homelab-ops-cr-2026-1005/tasks/backup-v2-health-alerting-remediation-v1/assets/baseline/backup-v2-release/lxc_adapter.py\nSOURCE_CANDIDATE_TOTAL|name=entry504.py|count=1|exact_count=1\nSOURCE_CANDIDATE_TOTAL|name=fresh_lxc_helper.py|count=1|exact_count=1\nSOURCE_CANDIDATE_TOTAL|name=homelab-backup-v2|count=1|exact_count=1\nSOURCE_CANDIDATE_TOTAL|name=lxc_adapter.py|count=1|exact_count=1\nSOURCE_CANDIDATE_TOTAL|name=pve265.py|count=0|exact_count=0\n=== RELEVANT_SOURCE_GREP ===\ntasks/backup-v2-health-alerting-remediation-v1/assets/baseline/backup-v2-release/fresh_lxc_helper.py:6:PVE265_SHA='cd2f634414a8e38a3789015aeca5a9b47821f77d7d1fa61dcdbdc866172963be'\ntasks/backup-v2-health-alerting-remediation-v1/assets/baseline/backup-v2-release/fresh_lxc_helper.py:17: if not p.is_file() or p.is_symlink() or sha(p)!=PVE265_SHA: fail('PVE265_IDENTITY')\ntasks/backup-v2-health-alerting-remediation-v1/assets/baseline/backup-v2-release/lxc_adapter.py:6:HELPER=pathlib.Path(__file__).resolve().parent/'fresh_lxc_helper.py'\ntasks/backup-v2-health-alerting-remediation-v1/assets/baseline/homelab-backup-v2:4:ACCEPTED=pathlib.Path('/opt/homelab-backup-v2/releases/backup-v2-overlay-504r1-ca6876fa9c3b')\ntasks/backup-v2-health-alerting-remediation-v1/assets/baseline/homelab-backup-v2:5:EXPECTED={'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'}\n=== BASELINE_WRAPPER_AUTHORITY ===\nBASELINE_WRAPPER_PATH=/root/homelab-ops-cr-2026-1005/tasks/backup-v2-health-alerting-remediation-v1/assets/baseline/homelab-backup-v2\nBASELINE_WRAPPER_EXISTS=true\nBASELINE_WRAPPER_SHA256=5077444065c732451cb84898680f62361b21a24ef9eb4f191253e82ead524ea2\nBASELINE_WRAPPER_MATCH_LIVE=true\n=== CHANGE1207_SOURCE_HINTS ===\ntasks/backup-v2-health-alerting-remediation-v1/assets/baseline/backup-v2-release/lxc_adapter.py:57: q=legacy.ssh_remote(node,['test','-f','/etc/vzdump.conf'],timeout=30,check=False)\ntasks/backup-v2-health-alerting-remediation-v1/assets/baseline/backup-v2-release/lxc_adapter.py:59: if q.returncode==0: defaults=legacy.ssh_remote(node,['cat','--','/etc/vzdump.conf'],timeout=30).stdout\n=== CURRENT_WRAPPER_SOURCE ===\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=== CURRENT_HELPER_SOURCE ===\nfrom __future__ import annotations\nimport base64, hashlib, json, pathlib, sys\n\nBASE_RELEASE=pathlib.Path('/opt/homelab-backup-v2/releases/backup-v2-accepted-486r1')\nC411=BASE_RELEASE/'candidate411'\nPVE265_SHA='cd2f634414a8e38a3789015aeca5a9b47821f77d7d1fa61dcdbdc866172963be'\n\ndef sha(p:pathlib.Path)->str:\n return hashlib.sha256(p.read_bytes()).hexdigest()\n\ndef fail(code:str):\n raise RuntimeError(code)\n\ndef main()->int:\n if len(sys.argv)!=1: fail('HELPER_ARGC')\n p=C411/'pve265.py'\n if not p.is_file() or p.is_symlink() or sha(p)!=PVE265_SHA: fail('PVE265_IDENTITY')\n sys.path.insert(0,str(C411))\n import adapter\n adapter.verify_sources()\n guest266,pve265,_pve270,_pve282=adapter.load_graph()\n data=sys.stdin.buffer.read(4_000_001)\n if not data or len(data)>4_000_000: fail('INPUT_BOUND')\n raw=json.loads(data.decode('utf-8'))\n if type(raw) is not dict: fail('INPUT_SCHEMA')\n node=raw.get('node'); vmid=raw.get('vmid'); scratch=raw.get('scratch'); now=raw.get('now')\n if type(node) is not str or type(vmid) is not int or type(scratch) is not str or type(now) is not int: fail('INPUT_FIELDS')\n configs={int(k):v for k,v in raw.get('configs',[])}\n defaults=None if raw.get('defaults_b64') is None else base64.b64decode(raw['defaults_b64'])\n plan=pve265.make_plan(raw.get('rows'),configs,raw.get('storage_rows'),defaults,int(raw.get('staging_free')),now,node=node)\n jobs=[j for j in plan['jobs'] if j.get('vmid')==vmid]\n if len(jobs)!=1: fail('JOB_CARDINALITY')\n job=jobs[0]\n pve265.validate_job(job,now)\n if job.get('type')!='lxc' or job.get('node')!=node: fail('JOB_IDENTITY')\n if job.get('configured_full_cycle_fits') is not True or job.get('compression_dependent') is not False: fail('JOB_CAPACITY_POLICY')\n guest266.no_active_tasks(raw.get('tasks'),vmid)\n argv=pve265.dump_argv(job,'/usr/bin/vzdump',scratch,now)\n keep=('vmid','type','node','status','template','config_sha256','disks','configured_disk_bytes','configured_archive_bound_bytes','archive_cap_bytes','global_defaults_sha256','blockers','coverage_eligible')\n out={'schema':1,'argv':argv,'job':{k:job.get(k) for k in keep}}\n sys.stdout.write(json.dumps(out,separators=(',',':'),sort_keys=True)+'\\n')\n return 0\n\nif __name__=='__main__':\n raise SystemExit(main())\n=== SOURCE_CLASSIFICATION ===\nSOURCE_HELPER_EXACT_COUNT=1\nSOURCE_LXC_EXACT_COUNT=1\nSOURCE_ENTRY_EXACT_COUNT=1\nSOURCE_PVE265_EXACT_COUNT=0\nSOURCE_AUTHORITY_READY=false\nTASK_RESULT=PASS_BACKUP_OVERLAY_HOTFIX_SOURCE_RCA_COLLECTED\nDECISION=PASS_BACKUP_OVERLAY_HOTFIX_SOURCE_RCA_COLLECTED\nNEXT_GATE=READ_EXACT_1229_AND_BUILD_IMMUTABLE_NOTIFICATION_POLICY_COMPAT_HOTFIX\nHOMELAB_RESULT_CONTRACT={\"version\":1,\"command_id\":\"SUPPORT-260927-HOMELAB-BACKUP-OVERLAY-HOTFIX-SOURCE-RCA-1229R1\",\"status\":\"OK\",\"changes_made\":false,\"rollback_started\":false,\"rollback_restored\":null}\n" + "output": "BACKUP_NOTIFICATION_COMPAT_HOTFIX_BEGIN=true\nCOMMAND_ID=SUPPORT-260927-HOMELAB-BACKUP-NOTIFICATION-COMPAT-HOTFIX-1230R1\nMODE=change\nCOMPONENT=homelab-backup-notification-compat-hotfix\nMUTATION_BOUNDARY=NEW_IMMUTABLE_OVERLAY_505_ONLY_PLUS_NEW_WRAPPER_PLUS_CANONICAL_SOURCE_COMMIT_PUSH_IF_AVAILABLE;PRESERVE_EXACT_VZDUMP_CONF;NO_VZDUMP_CONF_CHANGE;NO_BACKUP_EXECUTION;NO_AUDIT_RUN;NO_RETENTION;NO_DELETE_EXISTING_RELEASES;NO_TIMER_CHANGE;NO_NETBIRD_SKLADCHIK_CHANGE\n=== AUTHORITY ===\nHOST=pve01\nCLUSTER_QUORATE=Yes\nRUNNER_SHA256=b248a4c32c9cc64e5747e7dce6c7fc0a23f5124a77c71ce72e27a81aceae9d2d\nSOURCE_1229_STATUS=OK\nSOURCE_1229_DECISION=PASS_BACKUP_OVERLAY_HOTFIX_SOURCE_RCA_COLLECTED\nSOURCE_1229_NEXT_GATE=READ_EXACT_1229_AND_BUILD_IMMUTABLE_NOTIFICATION_POLICY_COMPAT_HOTFIX\n=== LIVE_PRECONDITIONS ===\nLIVE_WRAPPER_SHA256=5077444065c732451cb84898680f62361b21a24ef9eb4f191253e82ead524ea2\nLIVE_VZDUMP_CONF_SHA256=027e4b04852a4b83d558eb861d432b6fad4f234e12ab77d327f274d0fdedbfad\nLIVE_PVE265_SHA256=cd2f634414a8e38a3789015aeca5a9b47821f77d7d1fa61dcdbdc866172963be\nSOURCE_FILE=fresh_lxc_helper.py LIVE_SHA=dbb3e6dbb71b10797df736431d9501a752a0f8c439163c9a0bddb7f76747f011 BASELINE_SHA=dbb3e6dbb71b10797df736431d9501a752a0f8c439163c9a0bddb7f76747f011 EXPECTED_SHA=dbb3e6dbb71b10797df736431d9501a752a0f8c439163c9a0bddb7f76747f011\nSOURCE_FILE=producer_exec_helper.py LIVE_SHA=b3b97099bcd7126670f866e81faae6a42a96d869d9989e6a67f6ea6c871c90b3 BASELINE_SHA=b3b97099bcd7126670f866e81faae6a42a96d869d9989e6a67f6ea6c871c90b3 EXPECTED_SHA=b3b97099bcd7126670f866e81faae6a42a96d869d9989e6a67f6ea6c871c90b3\nSOURCE_FILE=lxc_adapter.py LIVE_SHA=3fa7d194010d76f7c8bc95035ae8876262e9337903e310f45f45df88c266dc8d BASELINE_SHA=3fa7d194010d76f7c8bc95035ae8876262e9337903e310f45f45df88c266dc8d EXPECTED_SHA=3fa7d194010d76f7c8bc95035ae8876262e9337903e310f45f45df88c266dc8d\nSOURCE_FILE=qemu_adapter.py LIVE_SHA=1906db42bd34bbe85eb46fd9797b3572d46e0a41c29d1c29be5f9df5e448f15b BASELINE_SHA=1906db42bd34bbe85eb46fd9797b3572d46e0a41c29d1c29be5f9df5e448f15b EXPECTED_SHA=1906db42bd34bbe85eb46fd9797b3572d46e0a41c29d1c29be5f9df5e448f15b\nSOURCE_FILE=scheduler_adapter.py LIVE_SHA=a6f67159a64067773323f028126e3109e15cf17a8142cea5e6129970f1d4da96 BASELINE_SHA=a6f67159a64067773323f028126e3109e15cf17a8142cea5e6129970f1d4da96 EXPECTED_SHA=a6f67159a64067773323f028126e3109e15cf17a8142cea5e6129970f1d4da96\nSOURCE_FILE=entry504.py LIVE_SHA=ca6876fa9c3b1465b045344a8ad46962de16972c7dadc4ac6257c7d225047793 BASELINE_SHA=ca6876fa9c3b1465b045344a8ad46962de16972c7dadc4ac6257c7d225047793 EXPECTED_SHA=ca6876fa9c3b1465b045344a8ad46962de16972c7dadc4ac6257c7d225047793\nSOURCE_PRE_HEAD=e5f577d1abe9feeafcd48b1482990ce3aa242e45\nSOURCE_BRANCH=cr-2026-1005-backup-v2-health-alerting-remediation\nSOURCE_STATUS_COUNT=0\nSOURCE_REMOTE_HEAD_PRE=e5f577d1abe9feeafcd48b1482990ce3aa242e45\nBACKUP_HEAVY_LOCK_ACQUIRED=true\nACTIVE_VZDUMP_COUNT=0\n=== BUILD_STAGED_505 ===\nOLD_HELPER_SHA256=dbb3e6dbb71b10797df736431d9501a752a0f8c439163c9a0bddb7f76747f011\nNEW_HELPER_SHA256=4e39404b1ddb97392645adce6280f697182cca03714d3a462d363eebce9b1860\nNEW_RELEASE_NAME=backup-v2-overlay-505r1-4e39404b1ddb\nNEW_RELEASE_PATH=/opt/homelab-backup-v2/releases/backup-v2-overlay-505r1-4e39404b1ddb\nNEW_WRAPPER_SHA256=894f8ea346b53a3d7846dbd6eeb5b89333957eb6d7a4f2f64fd4557cae176e1c\n=== STAGED_HELPER_REPLAY ===\nDIRECT_INVOCATION_GUARD\nSTAGED_RUN1_RC=0\nSTAGED_RUN1_STDOUT_BYTES=863\nSTAGED_RUN1_STDOUT_SHA256=d4adac82daadc6d050ddc9d4b4640bee0d6ed45114cd6d59518a001fcbf5295d\nSTAGED_RUN1_STDERR_BYTES=0\nSTAGED_RUN1_STDERR_SHA256=e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\nSTAGED_RUN1_JOB_BLOCKERS=[]\nSTAGED_RUN1_COVERAGE_ELIGIBLE=true\nSTAGED_RUN1_GLOBAL_DEFAULTS_SHA=027e4b04852a4b83d558eb861d432b6fad4f234e12ab77d327f274d0fdedbfad\nSTAGED_RUN1_ARGV_SHA256=3e71d68b3151b697af7a8f9ad8e83560dfa7274d77e1fde8a77a8cd1b8f7c25c\nSTAGED_RUN1_PASS=true\nSTAGED_RUN2_RC=0\nSTAGED_RUN2_STDOUT_BYTES=863\nSTAGED_RUN2_STDOUT_SHA256=d4adac82daadc6d050ddc9d4b4640bee0d6ed45114cd6d59518a001fcbf5295d\nSTAGED_RUN2_STDERR_BYTES=0\nSTAGED_RUN2_STDERR_SHA256=e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\nSTAGED_RUN2_JOB_BLOCKERS=[]\nSTAGED_RUN2_COVERAGE_ELIGIBLE=true\nSTAGED_RUN2_GLOBAL_DEFAULTS_SHA=027e4b04852a4b83d558eb861d432b6fad4f234e12ab77d327f274d0fdedbfad\nSTAGED_RUN2_ARGV_SHA256=3e71d68b3151b697af7a8f9ad8e83560dfa7274d77e1fde8a77a8cd1b8f7c25c\nSTAGED_RUN2_PASS=true\nSTAGED_JOB_STABLE=true\nSTAGED_ARGV_STABLE=true\nSTAGED_HELPER_REPLAY_PASS=true\nSTAGED_REPLAY_RC=0\nNEW_RELEASE_CREATED=true\nNEW_RELEASE_IDENTITY_OK=true\n=== STAGED_WRAPPER_PLAN ===\nSTAGED_PLAN_RC=0\nSTAGED_PLAN_STDERR_BYTES=0\nSTAGED_PLAN_STDOUT_SHA256=37b5456f30d9f0a5c92315844f5fab06dfb307ca6cf73ec6322d0db0dfc0c211\nPLAN_LXC_RESULT={\"job\":{\"archive_cap_bytes\":9516036916,\"blockers\":[],\"config_sha256\":\"09957aacd41ba9eeaf5fd4eda13936d580c9082a46895433379aa9dd0bad5969\",\"configured_archive_bound_bytes\":9516036916,\"configured_disk_bytes\":8589934592,\"coverage_eligible\":true,\"disks\":[{\"backup_setting\":\"included_default_rootfs\",\"class\":\"managed-volume\",\"configured_size_bytes\":8589934592,\"slot\":\"rootfs\",\"storage\":\"local-lvm\"}],\"global_defaults_sha256\":\"027e4b04852a4b83d558eb861d432b6fad4f234e12ab77d327f274d0fdedbfad\",\"node\":\"pve01\",\"status\":\"running\",\"template\":false,\"type\":\"lxc\",\"vmid\":110},\"logical_id\":\"ct110\",\"node\":\"pve01\",\"vmid\":110}\nSTAGED_WRAPPER_PLAN_PASS=true\n=== CANONICAL_SOURCE_COMMIT ===\nSOURCE_POST_HEAD=db592a25c6ac587bf16472a6132b66698c42f663\nSOURCE_COMMIT_CREATED=true\nSOURCE_PUSH_RC=0\nSOURCE_ORIGIN_PUSHURL_PRESERVED=DISABLED\nSOURCE_REMOTE_HEAD_POST=db592a25c6ac587bf16472a6132b66698c42f663\nSOURCE_LOCAL_REMOTE_EXACT=true\nSOURCE_WORKTREE_CLEAN=true\n=== CUTOVER ===\nROLLBACK_WRAPPER_SHA256=5077444065c732451cb84898680f62361b21a24ef9eb4f191253e82ead524ea2\nLIVE_WRAPPER_SHA256_POST=894f8ea346b53a3d7846dbd6eeb5b89333957eb6d7a4f2f64fd4557cae176e1c\nLIVE_WRAPPER_EXPECTED_NEW=894f8ea346b53a3d7846dbd6eeb5b89333957eb6d7a4f2f64fd4557cae176e1c\nBACKUP_HEAVY_LOCK_RELEASED=true\n=== POST_CUTOVER_PLAN ===\nPOST_PLAN_RC=0\nPOST_PLAN_STDERR_BYTES=0\nPOST_PLAN_STDOUT_SHA256=37b5456f30d9f0a5c92315844f5fab06dfb307ca6cf73ec6322d0db0dfc0c211\nPLAN_LXC_RESULT={\"job\":{\"archive_cap_bytes\":9516036916,\"blockers\":[],\"config_sha256\":\"09957aacd41ba9eeaf5fd4eda13936d580c9082a46895433379aa9dd0bad5969\",\"configured_archive_bound_bytes\":9516036916,\"configured_disk_bytes\":8589934592,\"coverage_eligible\":true,\"disks\":[{\"backup_setting\":\"included_default_rootfs\",\"class\":\"managed-volume\",\"configured_size_bytes\":8589934592,\"slot\":\"rootfs\",\"storage\":\"local-lvm\"}],\"global_defaults_sha256\":\"027e4b04852a4b83d558eb861d432b6fad4f234e12ab77d327f274d0fdedbfad\",\"node\":\"pve01\",\"status\":\"running\",\"template\":false,\"type\":\"lxc\",\"vmid\":110},\"logical_id\":\"ct110\",\"node\":\"pve01\",\"vmid\":110}\nSCHEDULER_SELECT_RC=0\nSCHEDULER_SELECT_STDERR_BYTES=0\nSELFTEST_REPLACEMENT486=PASS\nSCHEDULER_LIVE_SELECTION={\"due_seconds\":72000,\"enabled\":true,\"logical_id\":\"ct110\"}\nVZDUMP_CONF_SHA256_POST=027e4b04852a4b83d558eb861d432b6fad4f234e12ab77d327f274d0fdedbfad\nVZDUMP_CONF_PRESERVED=true\nCHANGES_MADE=true\nROLLBACK_STARTED=false\nROLLBACK_RESTORED=null\nMUTATION_OUTCOME=MUTATED\nNEW_RELEASE=/opt/homelab-backup-v2/releases/backup-v2-overlay-505r1-4e39404b1ddb\nNEW_HELPER_SHA256=4e39404b1ddb97392645adce6280f697182cca03714d3a462d363eebce9b1860\nNEW_WRAPPER_SHA256=894f8ea346b53a3d7846dbd6eeb5b89333957eb6d7a4f2f64fd4557cae176e1c\nSOURCE_PRE_HEAD=e5f577d1abe9feeafcd48b1482990ce3aa242e45\nSOURCE_POST_HEAD=db592a25c6ac587bf16472a6132b66698c42f663\nSOURCE_PUSHED=true\nSTAGED_HELPER_REPLAY=PASS\nSTAGED_WRAPPER_PLAN=PASS\nPOST_CUTOVER_PLAN=PASS\nBACKUP_EXECUTED=false\nTASK_RESULT=PASS_BACKUP_NOTIFICATION_COMPAT_HOTFIX_DEPLOYED\nDECISION=PASS_BACKUP_NOTIFICATION_COMPAT_HOTFIX_DEPLOYED\nNEXT_GATE=TARGETED_CT110_VERIFY_AND_ADAPTIVE_RPO_RECOVERY\nHOMELAB_RESULT_CONTRACT={\"version\":1,\"command_id\":\"SUPPORT-260927-HOMELAB-BACKUP-NOTIFICATION-COMPAT-HOTFIX-1230R1\",\"status\":\"OK\",\"changes_made\":true,\"rollback_started\":false,\"rollback_restored\":null}\n" } diff --git a/runtime/latest.txt b/runtime/latest.txt index d21786aa..b768211b 100644 --- a/runtime/latest.txt +++ b/runtime/latest.txt @@ -1,205 +1,142 @@ CHAT_OUTPUT_BEGIN -COMMAND_ID=SUPPORT-260927-HOMELAB-BACKUP-OVERLAY-HOTFIX-SOURCE-RCA-1229R1 +COMMAND_ID=SUPPORT-260927-HOMELAB-BACKUP-NOTIFICATION-COMPAT-HOTFIX-1230R1 STATUS=OK RC=0 HOST=pve01 -MODE=read-only -COMPONENT=homelab-backup-overlay-hotfix-source-rca +MODE=change +COMPONENT=homelab-backup-notification-compat-hotfix REFERENCE_REGISTER_CHECK=OK REFERENCE_SHA256=5a3d8e5154c41cb582a4e0aca68090be1f0138918bf82131a948df326f9d8d66 ERROR_REGISTER_CHECK=OK ERROR_REGISTER_SHA256=3b09a553ec0f527ed3afeed4753f52a74ee3036045bbfb3c685e9f8af4ba7ba0 -COMMAND_SHA256=2dc27b7a91ac007c80176806c837e4a05af12349ce8d90549bb634a60b4976fb +COMMAND_SHA256=9968455359f00703ca5b97f5595469060cc7d354c8a56e13fe5eb51378e559da DUPLICATE_FAILED_COMMAND_BLOCKED=false EXECUTION_STARTED=true -CHANGE_DECLARED=false +CHANGE_DECLARED=true RESULT_CONTRACT_VALID=true -RESULT_CONTRACT_STATUS=NOT_APPLICABLE +RESULT_CONTRACT_STATUS=OK RESULT_CONTRACT_ERROR=NONE COMMAND_RC=0 -CHANGES_MADE=false +CHANGES_MADE=true ROLLBACK_STARTED=false ROLLBACK_RESTORED=null -MUTATION_OUTCOME=NO_MUTATION +MUTATION_OUTCOME=MUTATED SANITIZED=yes SECRETS_INCLUDED=no PRIVATE_ADDRESSES_INCLUDED=no -RAW_EVIDENCE_SHA256=104229289b0d44d96b4f38fe3259b6ccba08188a68213a0d0bd59e3a2eadfec5 -SANITIZED_OUTPUT_SHA256=104229289b0d44d96b4f38fe3259b6ccba08188a68213a0d0bd59e3a2eadfec5 +RAW_EVIDENCE_SHA256=92dac56c49b25f1023be837796b07812f647e098831b7a5cf05b93e90cf8fbbb +SANITIZED_OUTPUT_SHA256=92dac56c49b25f1023be837796b07812f647e098831b7a5cf05b93e90cf8fbbb OUTPUT_BEGIN -BACKUP_OVERLAY_HOTFIX_SOURCE_RCA_BEGIN=true -COMMAND_ID=SUPPORT-260927-HOMELAB-BACKUP-OVERLAY-HOTFIX-SOURCE-RCA-1229R1 -MODE=read-only -COMPONENT=homelab-backup-overlay-hotfix-source-rca -MUTATION_BOUNDARY=READ_ONLY_SOURCE_AUTHORITY_AND_DEPLOYMENT_TOPOLOGY;NO_GIT_FETCH_NO_GIT_WRITE_NO_CONFIG_WRITE_NO_RELEASE_WRITE_NO_WRAPPER_WRITE_NO_BACKUP_NO_AUDIT_RUN_NO_SYSTEMD_ACTION_NO_LOCK_BREAK_NO_MAIL_NO_NETBIRD_SKLADCHIK_CHANGE +BACKUP_NOTIFICATION_COMPAT_HOTFIX_BEGIN=true +COMMAND_ID=SUPPORT-260927-HOMELAB-BACKUP-NOTIFICATION-COMPAT-HOTFIX-1230R1 +MODE=change +COMPONENT=homelab-backup-notification-compat-hotfix +MUTATION_BOUNDARY=NEW_IMMUTABLE_OVERLAY_505_ONLY_PLUS_NEW_WRAPPER_PLUS_CANONICAL_SOURCE_COMMIT_PUSH_IF_AVAILABLE;PRESERVE_EXACT_VZDUMP_CONF;NO_VZDUMP_CONF_CHANGE;NO_BACKUP_EXECUTION;NO_AUDIT_RUN;NO_RETENTION;NO_DELETE_EXISTING_RELEASES;NO_TIMER_CHANGE;NO_NETBIRD_SKLADCHIK_CHANGE +=== AUTHORITY === HOST=pve01 CLUSTER_QUORATE=Yes RUNNER_SHA256=b248a4c32c9cc64e5747e7dce6c7fc0a23f5124a77c71ce72e27a81aceae9d2d -SOURCE_1228_STATUS=OK -SOURCE_1228_DECISION=PASS_VZDUMP_GLOBAL_DEFAULT_RCA_COLLECTED -SOURCE_1228_NEXT_GATE=READ_EXACT_1228_AND_FIX_ONLY_PROVEN_GLOBAL_DEFAULT_CAUSE -=== LIVE_AUTHORITY === -LIVE_WRAPPER_PATH=/usr/local/sbin/homelab-backup-v2 +SOURCE_1229_STATUS=OK +SOURCE_1229_DECISION=PASS_BACKUP_OVERLAY_HOTFIX_SOURCE_RCA_COLLECTED +SOURCE_1229_NEXT_GATE=READ_EXACT_1229_AND_BUILD_IMMUTABLE_NOTIFICATION_POLICY_COMPAT_HOTFIX +=== LIVE_PRECONDITIONS === LIVE_WRAPPER_SHA256=5077444065c732451cb84898680f62361b21a24ef9eb4f191253e82ead524ea2 -LIVE_WRAPPER_MATCH=true -LIVE_HELPER_PATH=/opt/homelab-backup-v2/releases/backup-v2-overlay-504r1-ca6876fa9c3b/fresh_lxc_helper.py -LIVE_HELPER_SHA256=dbb3e6dbb71b10797df736431d9501a752a0f8c439163c9a0bddb7f76747f011 -LIVE_HELPER_MATCH=true -LIVE_LXC_PATH=/opt/homelab-backup-v2/releases/backup-v2-overlay-504r1-ca6876fa9c3b/lxc_adapter.py -LIVE_LXC_SHA256=3fa7d194010d76f7c8bc95035ae8876262e9337903e310f45f45df88c266dc8d -LIVE_LXC_MATCH=true -LIVE_ENTRY_PATH=/opt/homelab-backup-v2/releases/backup-v2-overlay-504r1-ca6876fa9c3b/entry504.py -LIVE_ENTRY_SHA256=ca6876fa9c3b1465b045344a8ad46962de16972c7dadc4ac6257c7d225047793 -LIVE_ENTRY_MATCH=true -LIVE_PVE265_PATH=/opt/homelab-backup-v2/releases/backup-v2-accepted-486r1/candidate411/pve265.py -LIVE_PVE265_SHA256=cd2f634414a8e38a3789015aeca5a9b47821f77d7d1fa61dcdbdc866172963be -LIVE_PVE265_MATCH=true LIVE_VZDUMP_CONF_SHA256=027e4b04852a4b83d558eb861d432b6fad4f234e12ab77d327f274d0fdedbfad -LIVE_VZDUMP_CONF_MATCH=true -=== GIT_SOURCE_AUTHORITY === -SOURCE_WORKTREE_EXISTS=true -SOURCE_WORKTREE=/root/homelab-ops-cr-2026-1005 -SOURCE_TOPLEVEL=/root/homelab-ops-cr-2026-1005 +LIVE_PVE265_SHA256=cd2f634414a8e38a3789015aeca5a9b47821f77d7d1fa61dcdbdc866172963be +SOURCE_FILE=fresh_lxc_helper.py LIVE_SHA=dbb3e6dbb71b10797df736431d9501a752a0f8c439163c9a0bddb7f76747f011 BASELINE_SHA=dbb3e6dbb71b10797df736431d9501a752a0f8c439163c9a0bddb7f76747f011 EXPECTED_SHA=dbb3e6dbb71b10797df736431d9501a752a0f8c439163c9a0bddb7f76747f011 +SOURCE_FILE=producer_exec_helper.py LIVE_SHA=b3b97099bcd7126670f866e81faae6a42a96d869d9989e6a67f6ea6c871c90b3 BASELINE_SHA=b3b97099bcd7126670f866e81faae6a42a96d869d9989e6a67f6ea6c871c90b3 EXPECTED_SHA=b3b97099bcd7126670f866e81faae6a42a96d869d9989e6a67f6ea6c871c90b3 +SOURCE_FILE=lxc_adapter.py LIVE_SHA=3fa7d194010d76f7c8bc95035ae8876262e9337903e310f45f45df88c266dc8d BASELINE_SHA=3fa7d194010d76f7c8bc95035ae8876262e9337903e310f45f45df88c266dc8d EXPECTED_SHA=3fa7d194010d76f7c8bc95035ae8876262e9337903e310f45f45df88c266dc8d +SOURCE_FILE=qemu_adapter.py LIVE_SHA=1906db42bd34bbe85eb46fd9797b3572d46e0a41c29d1c29be5f9df5e448f15b BASELINE_SHA=1906db42bd34bbe85eb46fd9797b3572d46e0a41c29d1c29be5f9df5e448f15b EXPECTED_SHA=1906db42bd34bbe85eb46fd9797b3572d46e0a41c29d1c29be5f9df5e448f15b +SOURCE_FILE=scheduler_adapter.py LIVE_SHA=a6f67159a64067773323f028126e3109e15cf17a8142cea5e6129970f1d4da96 BASELINE_SHA=a6f67159a64067773323f028126e3109e15cf17a8142cea5e6129970f1d4da96 EXPECTED_SHA=a6f67159a64067773323f028126e3109e15cf17a8142cea5e6129970f1d4da96 +SOURCE_FILE=entry504.py LIVE_SHA=ca6876fa9c3b1465b045344a8ad46962de16972c7dadc4ac6257c7d225047793 BASELINE_SHA=ca6876fa9c3b1465b045344a8ad46962de16972c7dadc4ac6257c7d225047793 EXPECTED_SHA=ca6876fa9c3b1465b045344a8ad46962de16972c7dadc4ac6257c7d225047793 +SOURCE_PRE_HEAD=e5f577d1abe9feeafcd48b1482990ce3aa242e45 SOURCE_BRANCH=cr-2026-1005-backup-v2-health-alerting-remediation -SOURCE_HEAD=e5f577d1abe9feeafcd48b1482990ce3aa242e45 -SOURCE_UPSTREAM=NONE SOURCE_STATUS_COUNT=0 -SOURCE_STATUS_BEGIN - -SOURCE_STATUS_END +SOURCE_REMOTE_HEAD_PRE=e5f577d1abe9feeafcd48b1482990ce3aa242e45 +BACKUP_HEAVY_LOCK_ACQUIRED=true +ACTIVE_VZDUMP_COUNT=0 +=== BUILD_STAGED_505 === +OLD_HELPER_SHA256=dbb3e6dbb71b10797df736431d9501a752a0f8c439163c9a0bddb7f76747f011 +NEW_HELPER_SHA256=4e39404b1ddb97392645adce6280f697182cca03714d3a462d363eebce9b1860 +NEW_RELEASE_NAME=backup-v2-overlay-505r1-4e39404b1ddb +NEW_RELEASE_PATH=/opt/homelab-backup-v2/releases/backup-v2-overlay-505r1-4e39404b1ddb +NEW_WRAPPER_SHA256=894f8ea346b53a3d7846dbd6eeb5b89333957eb6d7a4f2f64fd4557cae176e1c +=== STAGED_HELPER_REPLAY === +DIRECT_INVOCATION_GUARD +STAGED_RUN1_RC=0 +STAGED_RUN1_STDOUT_BYTES=863 +STAGED_RUN1_STDOUT_SHA256=d4adac82daadc6d050ddc9d4b4640bee0d6ed45114cd6d59518a001fcbf5295d +STAGED_RUN1_STDERR_BYTES=0 +STAGED_RUN1_STDERR_SHA256=e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 +STAGED_RUN1_JOB_BLOCKERS=[] +STAGED_RUN1_COVERAGE_ELIGIBLE=true +STAGED_RUN1_GLOBAL_DEFAULTS_SHA=027e4b04852a4b83d558eb861d432b6fad4f234e12ab77d327f274d0fdedbfad +STAGED_RUN1_ARGV_SHA256=3e71d68b3151b697af7a8f9ad8e83560dfa7274d77e1fde8a77a8cd1b8f7c25c +STAGED_RUN1_PASS=true +STAGED_RUN2_RC=0 +STAGED_RUN2_STDOUT_BYTES=863 +STAGED_RUN2_STDOUT_SHA256=d4adac82daadc6d050ddc9d4b4640bee0d6ed45114cd6d59518a001fcbf5295d +STAGED_RUN2_STDERR_BYTES=0 +STAGED_RUN2_STDERR_SHA256=e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 +STAGED_RUN2_JOB_BLOCKERS=[] +STAGED_RUN2_COVERAGE_ELIGIBLE=true +STAGED_RUN2_GLOBAL_DEFAULTS_SHA=027e4b04852a4b83d558eb861d432b6fad4f234e12ab77d327f274d0fdedbfad +STAGED_RUN2_ARGV_SHA256=3e71d68b3151b697af7a8f9ad8e83560dfa7274d77e1fde8a77a8cd1b8f7c25c +STAGED_RUN2_PASS=true +STAGED_JOB_STABLE=true +STAGED_ARGV_STABLE=true +STAGED_HELPER_REPLAY_PASS=true +STAGED_REPLAY_RC=0 +NEW_RELEASE_CREATED=true +NEW_RELEASE_IDENTITY_OK=true +=== STAGED_WRAPPER_PLAN === +STAGED_PLAN_RC=0 +STAGED_PLAN_STDERR_BYTES=0 +STAGED_PLAN_STDOUT_SHA256=37b5456f30d9f0a5c92315844f5fab06dfb307ca6cf73ec6322d0db0dfc0c211 +PLAN_LXC_RESULT={"job":{"archive_cap_bytes":9516036916,"blockers":[],"config_sha256":"09957aacd41ba9eeaf5fd4eda13936d580c9082a46895433379aa9dd0bad5969","configured_archive_bound_bytes":9516036916,"configured_disk_bytes":8589934592,"coverage_eligible":true,"disks":[{"backup_setting":"included_default_rootfs","class":"managed-volume","configured_size_bytes":8589934592,"slot":"rootfs","storage":"local-lvm"}],"global_defaults_sha256":"027e4b04852a4b83d558eb861d432b6fad4f234e12ab77d327f274d0fdedbfad","node":"pve01","status":"running","template":false,"type":"lxc","vmid":110},"logical_id":"ct110","node":"pve01","vmid":110} +STAGED_WRAPPER_PLAN_PASS=true +=== CANONICAL_SOURCE_COMMIT === +SOURCE_POST_HEAD=db592a25c6ac587bf16472a6132b66698c42f663 +SOURCE_COMMIT_CREATED=true +SOURCE_PUSH_RC=0 +SOURCE_ORIGIN_PUSHURL_PRESERVED=DISABLED +SOURCE_REMOTE_HEAD_POST=db592a25c6ac587bf16472a6132b66698c42f663 +SOURCE_LOCAL_REMOTE_EXACT=true SOURCE_WORKTREE_CLEAN=true -SOURCE_REMOTES_BEGIN -origin -SOURCE_REMOTES_END -SOURCE_LOG_HEAD_BEGIN -e5f577d1abe9feeafcd48b1482990ce3aa242e45|2026-09-25T11:53:41+03:00|backup alert: debounce transient health mail -6401ea1e99988b9d2550de544c9e45bd7e829bdd|2026-09-22T12:19:14+03:00|CR-2026-1005: canonicalize Cloud B audit proof -4e59d5afaa670899c56f87a84bc887175f299614|2026-09-21T07:52:31+03:00|CR-2026-1005: seal backup health alerting and DR closure -47b9be72cf2487ba66295d7da998016bbeea57be|2026-09-21T06:31:05+03:00|CR-2026-1005: close V2 backup scheduling and retention gaps -50bf24f8ee27f3d2e0d1cbc6c17b62c69ff06bae|2026-09-21T05:51:10+03:00|CR-2026-1005: hold retention timer during GFS apply -46c6f9aaf8fa93ce9f0cee686f948704c1a61336|2026-09-21T05:14:29+03:00|CR-2026-1005: add controlled GFS lifecycle remediation task -0d62d4a2077047b9b040a9378085ece09dd15883|2026-09-21T04:50:07+03:00|CR-2026-1005: make GFS critical policy lifecycle-safe -326622a4864fa9b5f43b69981733236bb42c4d7b|2026-09-01T09:09:31Z|Merge pull request 'CR0108 record Gitea reconciler production closure' (#46) from cr-2026-0108-gitea-reconciler-production-closure into main -6c970c4f1ee618149cf225b690e7a411c1b00df5|2026-09-01T11:30:57+03:00|CR0108 record Gitea reconciler production closure -030d2bcf232a43e5673684b2116c7382da3ee412|2026-09-01T07:51:45Z|Merge pull request 'CR0107 invoke staged reconciler selftest through bash' (#45) from cr-2026-0107-gitea-reconciler-selftest-bash-invocation into main -2ffbe030c6b5ebc9af1aa3aefb10520ad31153ed|2026-09-01T10:51:04+03:00|CR0107 invoke reconciler selftest through bash -c6114944985f813794821629f889d7a8c6677743|2026-09-01T06:26:03Z|Merge pull request 'CR0106 harden Gitea reconciler token lifecycle' (#44) from cr-2026-0106-gitea-reconciler-token-lifecycle-hardening into main -1d63b2607eea5dd5a8a390cd8b22e07a39aed7be|2026-09-01T09:16:48+03:00|CR0106 harden Gitea reconciler token lifecycle -69acde73c234db97f6e2e080a0f725e8abd970d6|2026-09-01T08:27:21+03:00|CR0106 define Gitea reconciler token lifecycle contract (RED) -b7adc4b1747e1ae2ab930392e2952d5d3b3a1a7e|2026-09-01T04:52:17Z|Merge pull request 'CR0105 add Gitea repository access reconciler' (#43) from cr-2026-0105-gitea-repo-access-reconciler into main -f30216d8aa7a41de534499c48fa9174cc12242c9|2026-09-01T07:10:34+03:00|CR0105 make fake-token test CI-safe -fd4273b3fc09c1b5f4497662cb3a79bf2180798a|2026-09-01T06:40:38+03:00|CR0105 implement VM170 Gitea access reconciler -68a3fd045049038bd72c4f8f06b37e644aec0438|2026-09-01T00:54:22+03:00|CR0105 define Gitea access reconciler contract (RED) -649b4b54e14281007264dda8eb4fd7d07623ad3c|2026-08-31T19:24:44Z|Merge pull request 'CR0104 record production closure' (#42) from cr-2026-0104-production-closure into main -07f709b6fc06acad11b93e66ecd9367a3396f4f1|2026-08-31T22:23:17+03:00|CR0104 record production closure -SOURCE_LOG_HEAD_END -=== EXACT_SOURCE_FILE_CANDIDATES === -SOURCE_CANDIDATE|name=entry504.py|exact=true|sha256=ca6876fa9c3b1465b045344a8ad46962de16972c7dadc4ac6257c7d225047793|path=/root/homelab-ops-cr-2026-1005/tasks/backup-v2-health-alerting-remediation-v1/assets/baseline/backup-v2-release/entry504.py -SOURCE_CANDIDATE|name=fresh_lxc_helper.py|exact=true|sha256=dbb3e6dbb71b10797df736431d9501a752a0f8c439163c9a0bddb7f76747f011|path=/root/homelab-ops-cr-2026-1005/tasks/backup-v2-health-alerting-remediation-v1/assets/baseline/backup-v2-release/fresh_lxc_helper.py -SOURCE_CANDIDATE|name=homelab-backup-v2|exact=true|sha256=5077444065c732451cb84898680f62361b21a24ef9eb4f191253e82ead524ea2|path=/root/homelab-ops-cr-2026-1005/tasks/backup-v2-health-alerting-remediation-v1/assets/baseline/homelab-backup-v2 -SOURCE_CANDIDATE|name=lxc_adapter.py|exact=true|sha256=3fa7d194010d76f7c8bc95035ae8876262e9337903e310f45f45df88c266dc8d|path=/root/homelab-ops-cr-2026-1005/tasks/backup-v2-health-alerting-remediation-v1/assets/baseline/backup-v2-release/lxc_adapter.py -SOURCE_CANDIDATE_TOTAL|name=entry504.py|count=1|exact_count=1 -SOURCE_CANDIDATE_TOTAL|name=fresh_lxc_helper.py|count=1|exact_count=1 -SOURCE_CANDIDATE_TOTAL|name=homelab-backup-v2|count=1|exact_count=1 -SOURCE_CANDIDATE_TOTAL|name=lxc_adapter.py|count=1|exact_count=1 -SOURCE_CANDIDATE_TOTAL|name=pve265.py|count=0|exact_count=0 -=== RELEVANT_SOURCE_GREP === -tasks/backup-v2-health-alerting-remediation-v1/assets/baseline/backup-v2-release/fresh_lxc_helper.py:6:PVE265_SHA='cd2f634414a8e38a3789015aeca5a9b47821f77d7d1fa61dcdbdc866172963be' -tasks/backup-v2-health-alerting-remediation-v1/assets/baseline/backup-v2-release/fresh_lxc_helper.py:17: if not p.is_file() or p.is_symlink() or sha(p)!=PVE265_SHA: fail('PVE265_IDENTITY') -tasks/backup-v2-health-alerting-remediation-v1/assets/baseline/backup-v2-release/lxc_adapter.py:6:HELPER=pathlib.Path(__file__).resolve().parent/'fresh_lxc_helper.py' -tasks/backup-v2-health-alerting-remediation-v1/assets/baseline/homelab-backup-v2:4:ACCEPTED=pathlib.Path('/opt/homelab-backup-v2/releases/backup-v2-overlay-504r1-ca6876fa9c3b') -tasks/backup-v2-health-alerting-remediation-v1/assets/baseline/homelab-backup-v2:5:EXPECTED={'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'} -=== BASELINE_WRAPPER_AUTHORITY === -BASELINE_WRAPPER_PATH=/root/homelab-ops-cr-2026-1005/tasks/backup-v2-health-alerting-remediation-v1/assets/baseline/homelab-backup-v2 -BASELINE_WRAPPER_EXISTS=true -BASELINE_WRAPPER_SHA256=5077444065c732451cb84898680f62361b21a24ef9eb4f191253e82ead524ea2 -BASELINE_WRAPPER_MATCH_LIVE=true -=== CHANGE1207_SOURCE_HINTS === -tasks/backup-v2-health-alerting-remediation-v1/assets/baseline/backup-v2-release/lxc_adapter.py:57: q=legacy.ssh_remote(node,['test','-f','/etc/vzdump.conf'],timeout=30,check=False) -tasks/backup-v2-health-alerting-remediation-v1/assets/baseline/backup-v2-release/lxc_adapter.py:59: if q.returncode==0: defaults=legacy.ssh_remote(node,['cat','--','/etc/vzdump.conf'],timeout=30).stdout -=== CURRENT_WRAPPER_SOURCE === -#!/usr/bin/python3 -from __future__ import annotations -import hashlib, importlib, os, pathlib, stat, sys -ACCEPTED=pathlib.Path('/opt/homelab-backup-v2/releases/backup-v2-overlay-504r1-ca6876fa9c3b') -EXPECTED={'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'} -def sha(p): - h=hashlib.sha256() - with open(p,'rb',buffering=0) as f: - while True: - b=f.read(1048576) - if not b: break - h.update(b) - return h.hexdigest() -def main(): - st=os.lstat(ACCEPTED) - 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') - names=sorted(p.name for p in ACCEPTED.iterdir()) - if names!=sorted(EXPECTED): raise SystemExit('RELEASE_FILESET') - for name,want in EXPECTED.items(): - p=ACCEPTED/name; s=os.lstat(p) - 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) - sys.dont_write_bytecode=True - sys.path.insert(0,str(ACCEPTED)) - e=importlib.import_module('entry504') - return int(e.main()) -if __name__=='__main__': raise SystemExit(main()) -=== CURRENT_HELPER_SOURCE === -from __future__ import annotations -import base64, hashlib, json, pathlib, sys - -BASE_RELEASE=pathlib.Path('/opt/homelab-backup-v2/releases/backup-v2-accepted-486r1') -C411=BASE_RELEASE/'candidate411' -PVE265_SHA='cd2f634414a8e38a3789015aeca5a9b47821f77d7d1fa61dcdbdc866172963be' - -def sha(p:pathlib.Path)->str: - return hashlib.sha256(p.read_bytes()).hexdigest() - -def fail(code:str): - raise RuntimeError(code) - -def main()->int: - if len(sys.argv)!=1: fail('HELPER_ARGC') - p=C411/'pve265.py' - if not p.is_file() or p.is_symlink() or sha(p)!=PVE265_SHA: fail('PVE265_IDENTITY') - sys.path.insert(0,str(C411)) - import adapter - adapter.verify_sources() - guest266,pve265,_pve270,_pve282=adapter.load_graph() - data=sys.stdin.buffer.read(4_000_001) - if not data or len(data)>4_000_000: fail('INPUT_BOUND') - raw=json.loads(data.decode('utf-8')) - if type(raw) is not dict: fail('INPUT_SCHEMA') - node=raw.get('node'); vmid=raw.get('vmid'); scratch=raw.get('scratch'); now=raw.get('now') - if type(node) is not str or type(vmid) is not int or type(scratch) is not str or type(now) is not int: fail('INPUT_FIELDS') - configs={int(k):v for k,v in raw.get('configs',[])} - defaults=None if raw.get('defaults_b64') is None else base64.b64decode(raw['defaults_b64']) - plan=pve265.make_plan(raw.get('rows'),configs,raw.get('storage_rows'),defaults,int(raw.get('staging_free')),now,node=node) - jobs=[j for j in plan['jobs'] if j.get('vmid')==vmid] - if len(jobs)!=1: fail('JOB_CARDINALITY') - job=jobs[0] - pve265.validate_job(job,now) - if job.get('type')!='lxc' or job.get('node')!=node: fail('JOB_IDENTITY') - if job.get('configured_full_cycle_fits') is not True or job.get('compression_dependent') is not False: fail('JOB_CAPACITY_POLICY') - guest266.no_active_tasks(raw.get('tasks'),vmid) - argv=pve265.dump_argv(job,'/usr/bin/vzdump',scratch,now) - keep=('vmid','type','node','status','template','config_sha256','disks','configured_disk_bytes','configured_archive_bound_bytes','archive_cap_bytes','global_defaults_sha256','blockers','coverage_eligible') - out={'schema':1,'argv':argv,'job':{k:job.get(k) for k in keep}} - sys.stdout.write(json.dumps(out,separators=(',',':'),sort_keys=True)+'\n') - return 0 - -if __name__=='__main__': - raise SystemExit(main()) -=== SOURCE_CLASSIFICATION === -SOURCE_HELPER_EXACT_COUNT=1 -SOURCE_LXC_EXACT_COUNT=1 -SOURCE_ENTRY_EXACT_COUNT=1 -SOURCE_PVE265_EXACT_COUNT=0 -SOURCE_AUTHORITY_READY=false -TASK_RESULT=PASS_BACKUP_OVERLAY_HOTFIX_SOURCE_RCA_COLLECTED -DECISION=PASS_BACKUP_OVERLAY_HOTFIX_SOURCE_RCA_COLLECTED -NEXT_GATE=READ_EXACT_1229_AND_BUILD_IMMUTABLE_NOTIFICATION_POLICY_COMPAT_HOTFIX -HOMELAB_RESULT_CONTRACT={"version":1,"command_id":"SUPPORT-260927-HOMELAB-BACKUP-OVERLAY-HOTFIX-SOURCE-RCA-1229R1","status":"OK","changes_made":false,"rollback_started":false,"rollback_restored":null} +=== CUTOVER === +ROLLBACK_WRAPPER_SHA256=5077444065c732451cb84898680f62361b21a24ef9eb4f191253e82ead524ea2 +LIVE_WRAPPER_SHA256_POST=894f8ea346b53a3d7846dbd6eeb5b89333957eb6d7a4f2f64fd4557cae176e1c +LIVE_WRAPPER_EXPECTED_NEW=894f8ea346b53a3d7846dbd6eeb5b89333957eb6d7a4f2f64fd4557cae176e1c +BACKUP_HEAVY_LOCK_RELEASED=true +=== POST_CUTOVER_PLAN === +POST_PLAN_RC=0 +POST_PLAN_STDERR_BYTES=0 +POST_PLAN_STDOUT_SHA256=37b5456f30d9f0a5c92315844f5fab06dfb307ca6cf73ec6322d0db0dfc0c211 +PLAN_LXC_RESULT={"job":{"archive_cap_bytes":9516036916,"blockers":[],"config_sha256":"09957aacd41ba9eeaf5fd4eda13936d580c9082a46895433379aa9dd0bad5969","configured_archive_bound_bytes":9516036916,"configured_disk_bytes":8589934592,"coverage_eligible":true,"disks":[{"backup_setting":"included_default_rootfs","class":"managed-volume","configured_size_bytes":8589934592,"slot":"rootfs","storage":"local-lvm"}],"global_defaults_sha256":"027e4b04852a4b83d558eb861d432b6fad4f234e12ab77d327f274d0fdedbfad","node":"pve01","status":"running","template":false,"type":"lxc","vmid":110},"logical_id":"ct110","node":"pve01","vmid":110} +SCHEDULER_SELECT_RC=0 +SCHEDULER_SELECT_STDERR_BYTES=0 +SELFTEST_REPLACEMENT486=PASS +SCHEDULER_LIVE_SELECTION={"due_seconds":72000,"enabled":true,"logical_id":"ct110"} +VZDUMP_CONF_SHA256_POST=027e4b04852a4b83d558eb861d432b6fad4f234e12ab77d327f274d0fdedbfad +VZDUMP_CONF_PRESERVED=true +CHANGES_MADE=true +ROLLBACK_STARTED=false +ROLLBACK_RESTORED=null +MUTATION_OUTCOME=MUTATED +NEW_RELEASE=/opt/homelab-backup-v2/releases/backup-v2-overlay-505r1-4e39404b1ddb +NEW_HELPER_SHA256=4e39404b1ddb97392645adce6280f697182cca03714d3a462d363eebce9b1860 +NEW_WRAPPER_SHA256=894f8ea346b53a3d7846dbd6eeb5b89333957eb6d7a4f2f64fd4557cae176e1c +SOURCE_PRE_HEAD=e5f577d1abe9feeafcd48b1482990ce3aa242e45 +SOURCE_POST_HEAD=db592a25c6ac587bf16472a6132b66698c42f663 +SOURCE_PUSHED=true +STAGED_HELPER_REPLAY=PASS +STAGED_WRAPPER_PLAN=PASS +POST_CUTOVER_PLAN=PASS +BACKUP_EXECUTED=false +TASK_RESULT=PASS_BACKUP_NOTIFICATION_COMPAT_HOTFIX_DEPLOYED +DECISION=PASS_BACKUP_NOTIFICATION_COMPAT_HOTFIX_DEPLOYED +NEXT_GATE=TARGETED_CT110_VERIFY_AND_ADAPTIVE_RPO_RECOVERY +HOMELAB_RESULT_CONTRACT={"version":1,"command_id":"SUPPORT-260927-HOMELAB-BACKUP-NOTIFICATION-COMPAT-HOTFIX-1230R1","status":"OK","changes_made":true,"rollback_started":false,"rollback_restored":null} OUTPUT_END CHAT_OUTPUT_END