From 6dba4409ec13d72301ed9c5361d8fc9758e780f4 Mon Sep 17 00:00:00 2001 From: homelab-runtime-publisher Date: Mon, 21 Sep 2026 02:30:52 +0000 Subject: [PATCH] runtime: publish SUPPORT-260921-HOMELAB-BACKUP-GFS-DIRTY-TASK-RCA-READONLY-1030R1 --- ...UP-GFS-DIRTY-TASK-RCA-READONLY-1030R1.json | 38 +++++++++ ...KUP-GFS-DIRTY-TASK-RCA-READONLY-1030R1.txt | 79 +++++++++++++++++++ runtime/latest.json | 22 +++--- runtime/latest.txt | 65 ++++++++++----- 4 files changed, 175 insertions(+), 29 deletions(-) create mode 100644 runtime/history/SUPPORT-260921-HOMELAB-BACKUP-GFS-DIRTY-TASK-RCA-READONLY-1030R1.json create mode 100644 runtime/history/SUPPORT-260921-HOMELAB-BACKUP-GFS-DIRTY-TASK-RCA-READONLY-1030R1.txt diff --git a/runtime/history/SUPPORT-260921-HOMELAB-BACKUP-GFS-DIRTY-TASK-RCA-READONLY-1030R1.json b/runtime/history/SUPPORT-260921-HOMELAB-BACKUP-GFS-DIRTY-TASK-RCA-READONLY-1030R1.json new file mode 100644 index 00000000..241380c3 --- /dev/null +++ b/runtime/history/SUPPORT-260921-HOMELAB-BACKUP-GFS-DIRTY-TASK-RCA-READONLY-1030R1.json @@ -0,0 +1,38 @@ +{ + "schema_version": 1, + "channel": "homelab-runtime", + "command_id": "SUPPORT-260921-HOMELAB-BACKUP-GFS-DIRTY-TASK-RCA-READONLY-1030R1", + "status": "OK", + "rc": 0, + "host": "pve01", + "mode": "read-only", + "component": "homelab-backup-gfs-dirty-task-rca", + "started_at_utc": "2026-09-21T02:30:51Z", + "finished_at_utc": "2026-09-21T02:30:52Z", + "reference_register_checked": true, + "reference_sha256": "5a3d8e5154c41cb582a4e0aca68090be1f0138918bf82131a948df326f9d8d66", + "error_register_checked": true, + "error_register_sha256": "3b09a553ec0f527ed3afeed4753f52a74ee3036045bbfb3c685e9f8af4ba7ba0", + "command_sha256": "7045251473b9b986be7411da3ca1e361d7158b97f80017ab93cc40fb00474618", + "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": "16f700abb07690dcd6fbcf11b671c2111c64f1b98751e4284ff0d906d9e80d61", + "sanitized_output_sha256": "16f700abb07690dcd6fbcf11b671c2111c64f1b98751e4284ff0d906d9e80d61", + "output_truncated_in_json": false, + "full_sanitized_output_url": "https://git.gram1.ru/.well-known/homelab-runtime/latest.txt", + "output": "WORKERS2_BACKUP_GFS_DIRTY_TASK_RCA_BEGIN=1\nCOMMAND_ID=SUPPORT-260921-HOMELAB-BACKUP-GFS-DIRTY-TASK-RCA-READONLY-1030R1\nMODE=read-only\nCOMPONENT=homelab-backup-gfs-dirty-task-rca\nHOST=pve01\nUID=0\nMUTATION_BOUNDARY=READ_ONLY_NO_REPO_WRITE_NO_GIT_FETCH_NO_GIT_COMMIT_NO_PUSH_NO_PRODUCTION_NO_SERVICE_ACTION_NO_BACKUP_NO_RESTORE_NO_RETENTION_NO_DELETE_NO_MAIL\nWORKTREE_BRANCH=cr-2026-1005-backup-v2-health-alerting-remediation\nWORKTREE_HEAD=46c6f9aaf8fa93ce9f0cee686f948704c1a61336\nWORKTREE_HEAD_EXPECTED=true\nWORKTREE_STATUS_LINES=[\" M tasks/backup-gfs-lifecycle-remediation-v1/task.json\"]\nDIRTY_PATHS=[\"tasks/backup-gfs-lifecycle-remediation-v1/task.json\"]\nONLY_TASK_JSON_DIRTY=true\nTASK_JSON_DIFF_RC=0\nTASK_JSON_DIFF_LINES=[\"diff --git a/tasks/backup-gfs-lifecycle-remediation-v1/task.json b/tasks/backup-gfs-lifecycle-remediation-v1/task.json\",\"index 89e5607..9d2f446 100644\",\"--- a/tasks/backup-gfs-lifecycle-remediation-v1/task.json\",\"+++ b/tasks/backup-gfs-lifecycle-remediation-v1/task.json\",\"@@ -42,32 +42,34 @@\",\" \\\"desired_state_clean\\\": false,\",\" \\\"failed_units_max\\\": 5\",\" },\",\" \\\"mutates\\\": [\",\" \\\"/var/lib/homelab-admin/staging/backup-gfs-lifecycle-remediation-v1\\\",\",\" \\\"/etc/homelab-backup/gfs-retention.json\\\",\",\" \\\"/usr/local/libexec/homelab-backup-gfs-policy\\\",\",\" \\\"systemd:homelab-backup-retention-gc.service\\\",\",\"- \\\"/var/lib/homelab-admin/seals/backup-gfs-lifecycle-remediation-v1.json\\\"\",\"+ \\\"/var/lib/homelab-admin/seals/backup-gfs-lifecycle-remediation-v1.json\\\",\",\"+ \\\"systemd:homelab-backup-retention-gc.timer\\\"\",\" ],\",\" \\\"mutation_scope\\\": \\\"controlled_apply\\\",\",\" \\\"no_change_assertions\\\": [\",\" \\\"/etc/homelab-backup/targets.json exact bytes\\\",\",\" \\\"homelab-backup-v2 runtime and timer\\\",\",\"- \\\"homelab-backup-retention-gc timer schedule and enabled/active state\\\",\",\" \\\"all cloud backup generations and replica objects\\\",\",\" \\\"all restore evidence\\\",\",\" \\\"rclone configuration\\\",\",\" \\\"network\\\",\",\" \\\"dns\\\",\",\" \\\"known_hosts\\\",\",\" \\\"backup and restore execution count remains zero\\\",\",\" \\\"retention GC execution count remains zero\\\",\",\"- \\\"cloud delete count remains zero\\\"\",\"+ \\\"cloud delete count remains zero\\\",\",\"+ \\\"homelab-backup-retention-gc timer unit bytes and schedule unchanged; enablement intentionally held disabled/inactive after apply\\\",\",\"+ \\\"homelab-backup-retention-gc service never started by this task\\\"\",\" ],\",\" \\\"phases\\\": {\",\" \\\"apply\\\": \\\"phases/apply.sh\\\",\",\" \\\"dry-run\\\": \\\"phases/dry-run.sh\\\",\",\" \\\"preflight\\\": \\\"phases/preflight.sh\\\",\",\" \\\"prepare\\\": \\\"phases/prepare.sh\\\",\",\" \\\"rollback\\\": \\\"phases/rollback.sh\\\",\",\" \\\"seal\\\": \\\"phases/seal.sh\\\",\",\"@@ -92,27 +94,31 @@\",\" \\\"source_of_truth\\\": {\",\" \\\"baseline_helper_sha256\\\": \\\"6b7ec1ab3ee1c540a9113b5620c3b4b5a50de6536f3a069d31b2e1243f23bafa\\\",\",\" \\\"baseline_policy_sha256\\\": \\\"ea6526bec7d7591bef876799cecddff4849631a936edc9f593b47211fbad715c\\\",\",\" \\\"candidate_helper_sha256\\\": \\\"a1aed0c6039f8095bd5da7f62b47f4ee6932df98c4e0e7420d3006df86bd5c94\\\",\",\" \\\"candidate_policy_sha256\\\": \\\"2c7674045dd5c68cc48d348d616494dbbe145df460a8e85d97a2c5c153ec792d\\\",\",\" \\\"change_id\\\": \\\"CR-2026-1005\\\",\",\" \\\"cloud_deletes\\\": false,\",\" \\\"cloud_writes\\\": false,\",\"+ \\\"package_parent_commit\\\": \\\"46c6f9aaf8fa93ce9f0cee686f948704c1a61336\\\",\",\" \\\"parent_commit\\\": \\\"0d62d4a2077047b9b040a9378085ece09dd15883\\\",\",\"+ \\\"retention_timer_hold_after_apply\\\": true,\",\"+ \\\"retention_timer_reenable_requires_future_safe_plan\\\": true,\",\" \\\"target_registry_sha256\\\": \\\"6ecf034ca03b52a1e6beceeae81d86a623885462c095d50b133aea4048a4626e\\\"\",\" },\",\" \\\"target_host\\\": \\\"pve01.gram1.ru\\\",\",\" \\\"task_id\\\": \\\"backup-gfs-lifecycle-remediation-v1\\\",\",\" \\\"writes\\\": [\",\" \\\"/var/lib/homelab-admin/staging/backup-gfs-lifecycle-remediation-v1\\\",\",\" \\\"/etc/homelab-backup/gfs-retention.json\\\",\",\" \\\"/usr/local/libexec/homelab-backup-gfs-policy\\\",\",\" \\\"/var/lib/homelab-admin/seals/backup-gfs-lifecycle-remediation-v1.json\\\",\",\" \\\"$HOMELAB_RUN_DIR/preflight.json\\\",\",\" \\\"$HOMELAB_RUN_DIR/prepare.json\\\",\",\" \\\"$HOMELAB_RUN_DIR/dry-run.json\\\",\",\" \\\"$HOMELAB_RUN_DIR/apply.json\\\",\",\" \\\"$HOMELAB_RUN_DIR/verify.json\\\",\",\" \\\"$HOMELAB_RUN_DIR/rollback.json\\\",\",\"- \\\"$HOMELAB_RUN_DIR/seal.json\\\"\",\"+ \\\"$HOMELAB_RUN_DIR/seal.json\\\",\",\"+ \\\"systemd:homelab-backup-retention-gc.timer\\\"\",\" ]\",\" }\"]\nTASK_JSON_DIFF_SHA256=4b0f0bf4cb0d00d48e702d78823ab8bf2842c854d665bfd33bcc997d163c09b1\nHEAD_TASK_JSON_SHA256=665319f09578db5e0f5b3260517c470cf21fe4f6da6366886f8f283c8a895cd0\nWORK_TASK_JSON_SHA256=861bac805089ed92400df50824d3afeb5dbf312d96f268a8351a1f5e64f719a7\nTASK_JSON_SEMANTIC_CHANGES=[{\"after\":[\"/var/lib/homelab-admin/staging/backup-gfs-lifecycle-remediation-v1\",\"/etc/homelab-backup/gfs-retention.json\",\"/usr/local/libexec/homelab-backup-gfs-policy\",\"systemd:homelab-backup-retention-gc.service\",\"/var/lib/homelab-admin/seals/backup-gfs-lifecycle-remediation-v1.json\",\"systemd:homelab-backup-retention-gc.timer\"],\"before\":[\"/var/lib/homelab-admin/staging/backup-gfs-lifecycle-remediation-v1\",\"/etc/homelab-backup/gfs-retention.json\",\"/usr/local/libexec/homelab-backup-gfs-policy\",\"systemd:homelab-backup-retention-gc.service\",\"/var/lib/homelab-admin/seals/backup-gfs-lifecycle-remediation-v1.json\"],\"change\":\"list_changed\",\"path\":\"$.mutates\"},{\"after\":[\"/etc/homelab-backup/targets.json exact bytes\",\"homelab-backup-v2 runtime and timer\",\"all cloud backup generations and replica objects\",\"all restore evidence\",\"rclone configuration\",\"network\",\"dns\",\"known_hosts\",\"backup and restore execution count remains zero\",\"retention GC execution count remains zero\",\"cloud delete count remains zero\",\"homelab-backup-retention-gc timer unit bytes and schedule unchanged; enablement intentionally held disabled/inactive after apply\",\"homelab-backup-retention-gc service never started by this task\"],\"before\":[\"/etc/homelab-backup/targets.json exact bytes\",\"homelab-backup-v2 runtime and timer\",\"homelab-backup-retention-gc timer schedule and enabled/active state\",\"all cloud backup generations and replica objects\",\"all restore evidence\",\"rclone configuration\",\"network\",\"dns\",\"known_hosts\",\"backup and restore execution count remains zero\",\"retention GC execution count remains zero\",\"cloud delete count remains zero\"],\"change\":\"list_changed\",\"path\":\"$.no_change_assertions\"},{\"after\":\"46c6f9aaf8fa93ce9f0cee686f948704c1a61336\",\"change\":\"added\",\"path\":\"$.source_of_truth.package_parent_commit\"},{\"after\":true,\"change\":\"added\",\"path\":\"$.source_of_truth.retention_timer_hold_after_apply\"},{\"after\":true,\"change\":\"added\",\"path\":\"$.source_of_truth.retention_timer_reenable_requires_future_safe_plan\"},{\"after\":[\"/var/lib/homelab-admin/staging/backup-gfs-lifecycle-remediation-v1\",\"/etc/homelab-backup/gfs-retention.json\",\"/usr/local/libexec/homelab-backup-gfs-policy\",\"/var/lib/homelab-admin/seals/backup-gfs-lifecycle-remediation-v1.json\",\"$HOMELAB_RUN_DIR/preflight.json\",\"$HOMELAB_RUN_DIR/prepare.json\",\"$HOMELAB_RUN_DIR/dry-run.json\",\"$HOMELAB_RUN_DIR/apply.json\",\"$HOMELAB_RUN_DIR/verify.json\",\"$HOMELAB_RUN_DIR/rollback.json\",\"$HOMELAB_RUN_DIR/seal.json\",\"systemd:homelab-backup-retention-gc.timer\"],\"before\":[\"/var/lib/homelab-admin/staging/backup-gfs-lifecycle-remediation-v1\",\"/etc/homelab-backup/gfs-retention.json\",\"/usr/local/libexec/homelab-backup-gfs-policy\",\"/var/lib/homelab-admin/seals/backup-gfs-lifecycle-remediation-v1.json\",\"$HOMELAB_RUN_DIR/preflight.json\",\"$HOMELAB_RUN_DIR/prepare.json\",\"$HOMELAB_RUN_DIR/dry-run.json\",\"$HOMELAB_RUN_DIR/apply.json\",\"$HOMELAB_RUN_DIR/verify.json\",\"$HOMELAB_RUN_DIR/rollback.json\",\"$HOMELAB_RUN_DIR/seal.json\"],\"change\":\"list_changed\",\"path\":\"$.writes\"}]\nTASK_JSON_SEMANTIC_CHANGE_COUNT=6\nHEAD_TASK_FILE_TREE=[\"tasks/backup-gfs-lifecycle-remediation-v1/README.md\",\"tasks/backup-gfs-lifecycle-remediation-v1/assets/baseline-gfs-retention.json\",\"tasks/backup-gfs-lifecycle-remediation-v1/assets/baseline-homelab-backup-gfs-policy\",\"tasks/backup-gfs-lifecycle-remediation-v1/assets/gfs-retention.json\",\"tasks/backup-gfs-lifecycle-remediation-v1/assets/homelab-backup-gfs-policy\",\"tasks/backup-gfs-lifecycle-remediation-v1/assets/targets.json\",\"tasks/backup-gfs-lifecycle-remediation-v1/phases/apply.sh\",\"tasks/backup-gfs-lifecycle-remediation-v1/phases/dry-run.sh\",\"tasks/backup-gfs-lifecycle-remediation-v1/phases/preflight.sh\",\"tasks/backup-gfs-lifecycle-remediation-v1/phases/prepare.sh\",\"tasks/backup-gfs-lifecycle-remediation-v1/phases/rollback.sh\",\"tasks/backup-gfs-lifecycle-remediation-v1/phases/seal.sh\",\"tasks/backup-gfs-lifecycle-remediation-v1/phases/verify.sh\",\"tasks/backup-gfs-lifecycle-remediation-v1/task.json\"]\nHEAD_TASK_FILE_COUNT=14\nHEAD_TOOLS_COMMON_EXISTS=false\nHEAD_PHASE_STRUCTURE=[{\"anchor_counts\":{\"check_no_active_backup_call\":1,\"check_no_active_backup_def\":1,\"require_assets_def\":1,\"require_live_baseline_def\":1,\"rollback_now_def\":1,\"service_mentions\":1,\"timer_mentions\":0,\"validate_candidate_def\":1},\"focus_lines\":[{\"line\":2,\"text\":\"set -Eeuo pipefail\"},{\"line\":18,\"text\":\"die(){ echo \\\"ROOT_CAUSE=$1|ROOT_CAUSE_COUNT=1\\\" >&2; exit \\\"${2:-66}\\\"; }\"},{\"line\":19,\"text\":\"on_err(){ rc=$?; echo \\\"ROOT_CAUSE=UNEXPECTED_RUNTIME_FAILURE|ROOT_CAUSE_COUNT=1|RC=$rc\\\" >&2; exit \\\"$rc\\\"; }\"},{\"line\":20,\"text\":\"trap on_err ERR\"},{\"line\":21,\"text\":\"require_live_baseline(){\"},{\"line\":26,\"text\":\"require_assets(){\"},{\"line\":31,\"text\":\"validate_candidate(){\"},{\"line\":34,\"text\":\"check_no_active_backup(){\"},{\"line\":46,\"text\":\"rollback_now(){\"},{\"line\":47,\"text\":\" install -m 0644 -o root -g root \\\"$STAGE/gfs-retention.json\\\" \\\"$LIVE_POLICY\\\"\"},{\"line\":48,\"text\":\" install -m 0755 -o root -g root \\\"$STAGE/homelab-backup-gfs-policy\\\" \\\"$LIVE_HELPER\\\"\"},{\"line\":50,\"text\":\"trap 'rc=$?; rollback_now || true; echo \\\"ROOT_CAUSE=APPLY_FAILED|ROOT_CAUSE_COUNT=1|RC=$rc\\\" >&2; exit \\\"$rc\\\"' ERR\"},{\"line\":51,\"text\":\"install -m 0644 -o root -g root \\\"$ASSET_POLICY\\\" \\\"$LIVE_POLICY\\\"\"},{\"line\":52,\"text\":\"install -m 0755 -o root -g root \\\"$ASSET_HELPER\\\" \\\"$LIVE_HELPER\\\"\"},{\"line\":56,\"text\":\"systemctl reset-failed homelab-backup-retention-gc.service\"},{\"line\":57,\"text\":\"trap on_err ERR\"}],\"git_path\":\"tasks/backup-gfs-lifecycle-remediation-v1/phases/apply.sh\",\"line_count\":59,\"path\":\"phases/apply.sh\",\"phase\":\"apply\",\"rc\":0,\"sha256\":\"22d00f65cb8a2011d34e8d61ca07082c9722d59fe735152059884ac75666d81c\"},{\"anchor_counts\":{\"check_no_active_backup_call\":1,\"check_no_active_backup_def\":1,\"require_assets_def\":1,\"require_live_baseline_def\":1,\"rollback_now_def\":0,\"service_mentions\":0,\"timer_mentions\":0,\"validate_candidate_def\":1},\"focus_lines\":[{\"line\":2,\"text\":\"set -Eeuo pipefail\"},{\"line\":18,\"text\":\"die(){ echo \\\"ROOT_CAUSE=$1|ROOT_CAUSE_COUNT=1\\\" >&2; exit \\\"${2:-66}\\\"; }\"},{\"line\":19,\"text\":\"on_err(){ rc=$?; echo \\\"ROOT_CAUSE=UNEXPECTED_RUNTIME_FAILURE|ROOT_CAUSE_COUNT=1|RC=$rc\\\" >&2; exit \\\"$rc\\\"; }\"},{\"line\":20,\"text\":\"trap on_err ERR\"},{\"line\":21,\"text\":\"require_live_baseline(){\"},{\"line\":26,\"text\":\"require_assets(){\"},{\"line\":31,\"text\":\"validate_candidate(){\"},{\"line\":34,\"text\":\"check_no_active_backup(){\"}],\"git_path\":\"tasks/backup-gfs-lifecycle-remediation-v1/phases/dry-run.sh\",\"line_count\":52,\"path\":\"phases/dry-run.sh\",\"phase\":\"dry-run\",\"rc\":0,\"sha256\":\"9ce7dce7604a8f116c1b874f8348692d0c19eb7058e51ae4d2f2165a41f6cdba\"},{\"anchor_counts\":{\"check_no_active_backup_call\":0,\"check_no_active_backup_def\":1,\"require_assets_def\":1,\"require_live_baseline_def\":1,\"rollback_now_def\":0,\"service_mentions\":0,\"timer_mentions\":2,\"validate_candidate_def\":1},\"focus_lines\":[{\"line\":2,\"text\":\"set -Eeuo pipefail\"},{\"line\":18,\"text\":\"die(){ echo \\\"ROOT_CAUSE=$1|ROOT_CAUSE_COUNT=1\\\" >&2; exit \\\"${2:-66}\\\"; }\"},{\"line\":19,\"text\":\"on_err(){ rc=$?; echo \\\"ROOT_CAUSE=UNEXPECTED_RUNTIME_FAILURE|ROOT_CAUSE_COUNT=1|RC=$rc\\\" >&2; exit \\\"$rc\\\"; }\"},{\"line\":20,\"text\":\"trap on_err ERR\"},{\"line\":21,\"text\":\"require_live_baseline(){\"},{\"line\":26,\"text\":\"require_assets(){\"},{\"line\":31,\"text\":\"validate_candidate(){\"},{\"line\":34,\"text\":\"check_no_active_backup(){\"},{\"line\":42,\"text\":\"systemctl is-enabled --quiet homelab-backup-retention-gc.timer || die RETENTION_TIMER_NOT_ENABLED\"},{\"line\":43,\"text\":\"systemctl is-active --quiet homelab-backup-retention-gc.timer || die RETENTION_TIMER_NOT_ACTIVE\"}],\"git_path\":\"tasks/backup-gfs-lifecycle-remediation-v1/phases/preflight.sh\",\"line_count\":54,\"path\":\"phases/preflight.sh\",\"phase\":\"preflight\",\"rc\":0,\"sha256\":\"336de004b64c90eac8769dbd0e7e4d2637ae700d48149d000ec04b39355a5a6a\"},{\"anchor_counts\":{\"check_no_active_backup_call\":1,\"check_no_active_backup_def\":1,\"require_assets_def\":1,\"require_live_baseline_def\":1,\"rollback_now_def\":0,\"service_mentions\":0,\"timer_mentions\":0,\"validate_candidate_def\":1},\"focus_lines\":[{\"line\":2,\"text\":\"set -Eeuo pipefail\"},{\"line\":18,\"text\":\"die(){ echo \\\"ROOT_CAUSE=$1|ROOT_CAUSE_COUNT=1\\\" >&2; exit \\\"${2:-66}\\\"; }\"},{\"line\":19,\"text\":\"on_err(){ rc=$?; echo \\\"ROOT_CAUSE=UNEXPECTED_RUNTIME_FAILURE|ROOT_CAUSE_COUNT=1|RC=$rc\\\" >&2; exit \\\"$rc\\\"; }\"},{\"line\":20,\"text\":\"trap on_err ERR\"},{\"line\":21,\"text\":\"require_live_baseline(){\"},{\"line\":26,\"text\":\"require_assets(){\"},{\"line\":31,\"text\":\"validate_candidate(){\"},{\"line\":34,\"text\":\"check_no_active_backup(){\"}],\"git_path\":\"tasks/backup-gfs-lifecycle-remediation-v1/phases/prepare.sh\",\"line_count\":53,\"path\":\"phases/prepare.sh\",\"phase\":\"prepare\",\"rc\":0,\"sha256\":\"fe72a477297169f6bad1449032ab56b4b23a700aeb9828b3cb5b78304e020dba\"},{\"anchor_counts\":{\"check_no_active_backup_call\":0,\"check_no_active_backup_def\":1,\"require_assets_def\":1,\"require_live_baseline_def\":1,\"rollback_now_def\":0,\"service_mentions\":0,\"timer_mentions\":0,\"validate_candidate_def\":1},\"focus_lines\":[{\"line\":2,\"text\":\"set -Eeuo pipefail\"},{\"line\":18,\"text\":\"die(){ echo \\\"ROOT_CAUSE=$1|ROOT_CAUSE_COUNT=1\\\" >&2; exit \\\"${2:-66}\\\"; }\"},{\"line\":19,\"text\":\"on_err(){ rc=$?; echo \\\"ROOT_CAUSE=UNEXPECTED_RUNTIME_FAILURE|ROOT_CAUSE_COUNT=1|RC=$rc\\\" >&2; exit \\\"$rc\\\"; }\"},{\"line\":20,\"text\":\"trap on_err ERR\"},{\"line\":21,\"text\":\"require_live_baseline(){\"},{\"line\":26,\"text\":\"require_assets(){\"},{\"line\":31,\"text\":\"validate_candidate(){\"},{\"line\":34,\"text\":\"check_no_active_backup(){\"},{\"line\":43,\"text\":\"install -m 0644 -o root -g root \\\"$STAGE/gfs-retention.json\\\" \\\"$LIVE_POLICY\\\"\"},{\"line\":44,\"text\":\"install -m 0755 -o root -g root \\\"$STAGE/homelab-backup-gfs-policy\\\" \\\"$LIVE_HELPER\\\"\"}],\"git_path\":\"tasks/backup-gfs-lifecycle-remediation-v1/phases/rollback.sh\",\"line_count\":48,\"path\":\"phases/rollback.sh\",\"phase\":\"rollback\",\"rc\":0,\"sha256\":\"731594042479cdcb26a9bebb5852ab7e639541071195a235a671fc7e5562cd4a\"},{\"anchor_counts\":{\"check_no_active_backup_call\":0,\"check_no_active_backup_def\":1,\"require_assets_def\":1,\"require_live_baseline_def\":1,\"rollback_now_def\":0,\"service_mentions\":0,\"timer_mentions\":0,\"validate_candidate_def\":1},\"focus_lines\":[{\"line\":2,\"text\":\"set -Eeuo pipefail\"},{\"line\":18,\"text\":\"die(){ echo \\\"ROOT_CAUSE=$1|ROOT_CAUSE_COUNT=1\\\" >&2; exit \\\"${2:-66}\\\"; }\"},{\"line\":19,\"text\":\"on_err(){ rc=$?; echo \\\"ROOT_CAUSE=UNEXPECTED_RUNTIME_FAILURE|ROOT_CAUSE_COUNT=1|RC=$rc\\\" >&2; exit \\\"$rc\\\"; }\"},{\"line\":20,\"text\":\"trap on_err ERR\"},{\"line\":21,\"text\":\"require_live_baseline(){\"},{\"line\":26,\"text\":\"require_assets(){\"},{\"line\":31,\"text\":\"validate_candidate(){\"},{\"line\":34,\"text\":\"check_no_active_backup(){\"}],\"git_path\":\"tasks/backup-gfs-lifecycle-remediation-v1/phases/seal.sh\",\"line_count\":49,\"path\":\"phases/seal.sh\",\"phase\":\"seal\",\"rc\":0,\"sha256\":\"719d37dcff71ca0c944df2410e81d70574bdbeab4bc60cd79ac15b783405e56f\"},{\"anchor_counts\":{\"check_no_active_backup_call\":0,\"check_no_active_backup_def\":1,\"require_assets_def\":1,\"require_live_baseline_def\":1,\"rollback_now_def\":0,\"service_mentions\":1,\"timer_mentions\":2,\"validate_candidate_def\":1},\"focus_lines\":[{\"line\":2,\"text\":\"set -Eeuo pipefail\"},{\"line\":18,\"text\":\"die(){ echo \\\"ROOT_CAUSE=$1|ROOT_CAUSE_COUNT=1\\\" >&2; exit \\\"${2:-66}\\\"; }\"},{\"line\":19,\"text\":\"on_err(){ rc=$?; echo \\\"ROOT_CAUSE=UNEXPECTED_RUNTIME_FAILURE|ROOT_CAUSE_COUNT=1|RC=$rc\\\" >&2; exit \\\"$rc\\\"; }\"},{\"line\":20,\"text\":\"trap on_err ERR\"},{\"line\":21,\"text\":\"require_live_baseline(){\"},{\"line\":26,\"text\":\"require_assets(){\"},{\"line\":31,\"text\":\"validate_candidate(){\"},{\"line\":34,\"text\":\"check_no_active_backup(){\"},{\"line\":43,\"text\":\"mapfile -t CRIT < <(HOMELAB_BACKUP_GFS_POLICY=\\\"$LIVE_POLICY\\\" HOMELAB_BACKUP_TARGET_REGISTRY=\\\"$LIVE_REGISTRY\\\" \\\"$LIVE_HELPER\\\" critical-logicals)\"},{\"line\":46,\"text\":\"systemctl is-enabled --quiet homelab-backup-retention-gc.timer || die VERIFY_TIMER_NOT_ENABLED\"},{\"line\":47,\"text\":\"systemctl is-active --quiet homelab-backup-retention-gc.timer || die VERIFY_TIMER_NOT_ACTIVE\"},{\"line\":48,\"text\":\"if systemctl is-failed --quiet homelab-backup-retention-gc.service; then die VERIFY_RETENTION_SERVICE_FAILED; fi\"}],\"git_path\":\"tasks/backup-gfs-lifecycle-remediation-v1/phases/verify.sh\",\"line_count\":50,\"path\":\"phases/verify.sh\",\"phase\":\"verify\",\"rc\":0,\"sha256\":\"b3589070dc915211e091984800ec76976fef74669288440103bcb7c1eb69e0c4\"}]\nWORKING_TASK_LINT={\"rc\":0,\"stderr_lines\":[],\"stdout_lines\":[\"LINT_STATUS=OK\",\"TASK_ID=backup-gfs-lifecycle-remediation-v1\",\"POLICY_ID=homelab-admin-guardrails-v1.2\",\"RULES_CHECKED=14\",\"SOURCE_FILES_CHECKED=7\"]}\nWORKING_TASK_VALIDATE={\"rc\":0,\"stderr_lines\":[],\"stdout_lines\":[\"LINT_STATUS=OK\",\"TASK_ID=backup-gfs-lifecycle-remediation-v1\",\"POLICY_ID=homelab-admin-guardrails-v1.2\",\"RULES_CHECKED=14\",\"SOURCE_FILES_CHECKED=7\",\"TASK_VALID=YES\",\"TASK_ID=backup-gfs-lifecycle-remediation-v1\",\"TASK_SCOPE=controlled_apply\",\"PRODUCTION_CHANGE=YES\"]}\nLIVE_POLICY_META={\"exists\":true,\"expected\":\"ea6526bec7d7591bef876799cecddff4849631a936edc9f593b47211fbad715c\",\"match\":true,\"sha256\":\"ea6526bec7d7591bef876799cecddff4849631a936edc9f593b47211fbad715c\"}\nLIVE_HELPER_META={\"exists\":true,\"expected\":\"6b7ec1ab3ee1c540a9113b5620c3b4b5a50de6536f3a069d31b2e1243f23bafa\",\"match\":true,\"sha256\":\"6b7ec1ab3ee1c540a9113b5620c3b4b5a50de6536f3a069d31b2e1243f23bafa\"}\nLIVE_REGISTRY_META={\"exists\":true,\"expected\":\"6ecf034ca03b52a1e6beceeae81d86a623885462c095d50b133aea4048a4626e\",\"match\":true,\"sha256\":\"6ecf034ca03b52a1e6beceeae81d86a623885462c095d50b133aea4048a4626e\"}\nRETENTION_UNIT_STATE={\"homelab-backup-retention-gc.service\":{\"ActiveState\":{\"rc\":0,\"value\":\"failed\"},\"LastTriggerUSec\":{\"rc\":0,\"value\":\"\"},\"LoadState\":{\"rc\":0,\"value\":\"loaded\"},\"NextElapseUSecRealtime\":{\"rc\":0,\"value\":\"\"},\"Result\":{\"rc\":0,\"value\":\"exit-code\"},\"SubState\":{\"rc\":0,\"value\":\"failed\"},\"UnitFileState\":{\"rc\":0,\"value\":\"static\"}},\"homelab-backup-retention-gc.timer\":{\"ActiveState\":{\"rc\":0,\"value\":\"active\"},\"LastTriggerUSec\":{\"rc\":0,\"value\":\"Mon 2026-09-21 03:22:42 MSK\"},\"LoadState\":{\"rc\":0,\"value\":\"loaded\"},\"NextElapseUSecRealtime\":{\"rc\":0,\"value\":\"Tue 2026-09-22 03:32:10 MSK\"},\"Result\":{\"rc\":0,\"value\":\"success\"},\"SubState\":{\"rc\":0,\"value\":\"waiting\"},\"UnitFileState\":{\"rc\":0,\"value\":\"enabled\"}}}\nDIRTY_PROVENANCE_CLASSIFICATION={\"added_timer_mutate\":true,\"added_timer_write\":true,\"consistent_with_1028_pre_tools_common_patch\":true,\"source_hold\":true,\"source_reenable\":true}\nNO_MUTATION=true\nNO_REPO_WRITE=true\nNO_GIT_FETCH=true\nNO_GIT_COMMIT=true\nNO_GIT_PUSH_UPDATE=true\nNO_PRODUCTION_MUTATION=true\nNO_SERVICE_ACTION=true\nNO_BACKUP_STARTED=true\nNO_RESTORE_STARTED=true\nNO_RETENTION_STARTED=true\nNO_DELETE=true\nNO_MAIL_SENT=true\nRCA_DURATION_SEC=0.219\nTASK_RESULT=PASS_HOMELAB_BACKUP_GFS_DIRTY_TASK_RCA_READONLY\nHOMELAB_RESULT_CONTRACT={\"changes_made\":false,\"command_id\":\"SUPPORT-260921-HOMELAB-BACKUP-GFS-DIRTY-TASK-RCA-READONLY-1030R1\",\"rollback_restored\":null,\"rollback_started\":false,\"status\":\"OK\",\"version\":1}\nWORKERS2_BACKUP_GFS_DIRTY_TASK_RCA_END=1\n" +} diff --git a/runtime/history/SUPPORT-260921-HOMELAB-BACKUP-GFS-DIRTY-TASK-RCA-READONLY-1030R1.txt b/runtime/history/SUPPORT-260921-HOMELAB-BACKUP-GFS-DIRTY-TASK-RCA-READONLY-1030R1.txt new file mode 100644 index 00000000..25584197 --- /dev/null +++ b/runtime/history/SUPPORT-260921-HOMELAB-BACKUP-GFS-DIRTY-TASK-RCA-READONLY-1030R1.txt @@ -0,0 +1,79 @@ +CHAT_OUTPUT_BEGIN +COMMAND_ID=SUPPORT-260921-HOMELAB-BACKUP-GFS-DIRTY-TASK-RCA-READONLY-1030R1 +STATUS=OK +RC=0 +HOST=pve01 +MODE=read-only +COMPONENT=homelab-backup-gfs-dirty-task-rca +REFERENCE_REGISTER_CHECK=OK +REFERENCE_SHA256=5a3d8e5154c41cb582a4e0aca68090be1f0138918bf82131a948df326f9d8d66 +ERROR_REGISTER_CHECK=OK +ERROR_REGISTER_SHA256=3b09a553ec0f527ed3afeed4753f52a74ee3036045bbfb3c685e9f8af4ba7ba0 +COMMAND_SHA256=7045251473b9b986be7411da3ca1e361d7158b97f80017ab93cc40fb00474618 +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=16f700abb07690dcd6fbcf11b671c2111c64f1b98751e4284ff0d906d9e80d61 +SANITIZED_OUTPUT_SHA256=16f700abb07690dcd6fbcf11b671c2111c64f1b98751e4284ff0d906d9e80d61 +OUTPUT_BEGIN +WORKERS2_BACKUP_GFS_DIRTY_TASK_RCA_BEGIN=1 +COMMAND_ID=SUPPORT-260921-HOMELAB-BACKUP-GFS-DIRTY-TASK-RCA-READONLY-1030R1 +MODE=read-only +COMPONENT=homelab-backup-gfs-dirty-task-rca +HOST=pve01 +UID=0 +MUTATION_BOUNDARY=READ_ONLY_NO_REPO_WRITE_NO_GIT_FETCH_NO_GIT_COMMIT_NO_PUSH_NO_PRODUCTION_NO_SERVICE_ACTION_NO_BACKUP_NO_RESTORE_NO_RETENTION_NO_DELETE_NO_MAIL +WORKTREE_BRANCH=cr-2026-1005-backup-v2-health-alerting-remediation +WORKTREE_HEAD=46c6f9aaf8fa93ce9f0cee686f948704c1a61336 +WORKTREE_HEAD_EXPECTED=true +WORKTREE_STATUS_LINES=[" M tasks/backup-gfs-lifecycle-remediation-v1/task.json"] +DIRTY_PATHS=["tasks/backup-gfs-lifecycle-remediation-v1/task.json"] +ONLY_TASK_JSON_DIRTY=true +TASK_JSON_DIFF_RC=0 +TASK_JSON_DIFF_LINES=["diff --git a/tasks/backup-gfs-lifecycle-remediation-v1/task.json b/tasks/backup-gfs-lifecycle-remediation-v1/task.json","index 89e5607..9d2f446 100644","--- a/tasks/backup-gfs-lifecycle-remediation-v1/task.json","+++ b/tasks/backup-gfs-lifecycle-remediation-v1/task.json","@@ -42,32 +42,34 @@"," \"desired_state_clean\": false,"," \"failed_units_max\": 5"," },"," \"mutates\": ["," \"/var/lib/homelab-admin/staging/backup-gfs-lifecycle-remediation-v1\","," \"/etc/homelab-backup/gfs-retention.json\","," \"/usr/local/libexec/homelab-backup-gfs-policy\","," \"systemd:homelab-backup-retention-gc.service\",","- \"/var/lib/homelab-admin/seals/backup-gfs-lifecycle-remediation-v1.json\"","+ \"/var/lib/homelab-admin/seals/backup-gfs-lifecycle-remediation-v1.json\",","+ \"systemd:homelab-backup-retention-gc.timer\""," ],"," \"mutation_scope\": \"controlled_apply\","," \"no_change_assertions\": ["," \"/etc/homelab-backup/targets.json exact bytes\","," \"homelab-backup-v2 runtime and timer\",","- \"homelab-backup-retention-gc timer schedule and enabled/active state\","," \"all cloud backup generations and replica objects\","," \"all restore evidence\","," \"rclone configuration\","," \"network\","," \"dns\","," \"known_hosts\","," \"backup and restore execution count remains zero\","," \"retention GC execution count remains zero\",","- \"cloud delete count remains zero\"","+ \"cloud delete count remains zero\",","+ \"homelab-backup-retention-gc timer unit bytes and schedule unchanged; enablement intentionally held disabled/inactive after apply\",","+ \"homelab-backup-retention-gc service never started by this task\""," ],"," \"phases\": {"," \"apply\": \"phases/apply.sh\","," \"dry-run\": \"phases/dry-run.sh\","," \"preflight\": \"phases/preflight.sh\","," \"prepare\": \"phases/prepare.sh\","," \"rollback\": \"phases/rollback.sh\","," \"seal\": \"phases/seal.sh\",","@@ -92,27 +94,31 @@"," \"source_of_truth\": {"," \"baseline_helper_sha256\": \"6b7ec1ab3ee1c540a9113b5620c3b4b5a50de6536f3a069d31b2e1243f23bafa\","," \"baseline_policy_sha256\": \"ea6526bec7d7591bef876799cecddff4849631a936edc9f593b47211fbad715c\","," \"candidate_helper_sha256\": \"a1aed0c6039f8095bd5da7f62b47f4ee6932df98c4e0e7420d3006df86bd5c94\","," \"candidate_policy_sha256\": \"2c7674045dd5c68cc48d348d616494dbbe145df460a8e85d97a2c5c153ec792d\","," \"change_id\": \"CR-2026-1005\","," \"cloud_deletes\": false,"," \"cloud_writes\": false,","+ \"package_parent_commit\": \"46c6f9aaf8fa93ce9f0cee686f948704c1a61336\","," \"parent_commit\": \"0d62d4a2077047b9b040a9378085ece09dd15883\",","+ \"retention_timer_hold_after_apply\": true,","+ \"retention_timer_reenable_requires_future_safe_plan\": true,"," \"target_registry_sha256\": \"6ecf034ca03b52a1e6beceeae81d86a623885462c095d50b133aea4048a4626e\""," },"," \"target_host\": \"pve01.gram1.ru\","," \"task_id\": \"backup-gfs-lifecycle-remediation-v1\","," \"writes\": ["," \"/var/lib/homelab-admin/staging/backup-gfs-lifecycle-remediation-v1\","," \"/etc/homelab-backup/gfs-retention.json\","," \"/usr/local/libexec/homelab-backup-gfs-policy\","," \"/var/lib/homelab-admin/seals/backup-gfs-lifecycle-remediation-v1.json\","," \"$HOMELAB_RUN_DIR/preflight.json\","," \"$HOMELAB_RUN_DIR/prepare.json\","," \"$HOMELAB_RUN_DIR/dry-run.json\","," \"$HOMELAB_RUN_DIR/apply.json\","," \"$HOMELAB_RUN_DIR/verify.json\","," \"$HOMELAB_RUN_DIR/rollback.json\",","- \"$HOMELAB_RUN_DIR/seal.json\"","+ \"$HOMELAB_RUN_DIR/seal.json\",","+ \"systemd:homelab-backup-retention-gc.timer\""," ]"," }"] +TASK_JSON_DIFF_SHA256=4b0f0bf4cb0d00d48e702d78823ab8bf2842c854d665bfd33bcc997d163c09b1 +HEAD_TASK_JSON_SHA256=665319f09578db5e0f5b3260517c470cf21fe4f6da6366886f8f283c8a895cd0 +WORK_TASK_JSON_SHA256=861bac805089ed92400df50824d3afeb5dbf312d96f268a8351a1f5e64f719a7 +TASK_JSON_SEMANTIC_CHANGES=[{"after":["/var/lib/homelab-admin/staging/backup-gfs-lifecycle-remediation-v1","/etc/homelab-backup/gfs-retention.json","/usr/local/libexec/homelab-backup-gfs-policy","systemd:homelab-backup-retention-gc.service","/var/lib/homelab-admin/seals/backup-gfs-lifecycle-remediation-v1.json","systemd:homelab-backup-retention-gc.timer"],"before":["/var/lib/homelab-admin/staging/backup-gfs-lifecycle-remediation-v1","/etc/homelab-backup/gfs-retention.json","/usr/local/libexec/homelab-backup-gfs-policy","systemd:homelab-backup-retention-gc.service","/var/lib/homelab-admin/seals/backup-gfs-lifecycle-remediation-v1.json"],"change":"list_changed","path":"$.mutates"},{"after":["/etc/homelab-backup/targets.json exact bytes","homelab-backup-v2 runtime and timer","all cloud backup generations and replica objects","all restore evidence","rclone configuration","network","dns","known_hosts","backup and restore execution count remains zero","retention GC execution count remains zero","cloud delete count remains zero","homelab-backup-retention-gc timer unit bytes and schedule unchanged; enablement intentionally held disabled/inactive after apply","homelab-backup-retention-gc service never started by this task"],"before":["/etc/homelab-backup/targets.json exact bytes","homelab-backup-v2 runtime and timer","homelab-backup-retention-gc timer schedule and enabled/active state","all cloud backup generations and replica objects","all restore evidence","rclone configuration","network","dns","known_hosts","backup and restore execution count remains zero","retention GC execution count remains zero","cloud delete count remains zero"],"change":"list_changed","path":"$.no_change_assertions"},{"after":"46c6f9aaf8fa93ce9f0cee686f948704c1a61336","change":"added","path":"$.source_of_truth.package_parent_commit"},{"after":true,"change":"added","path":"$.source_of_truth.retention_timer_hold_after_apply"},{"after":true,"change":"added","path":"$.source_of_truth.retention_timer_reenable_requires_future_safe_plan"},{"after":["/var/lib/homelab-admin/staging/backup-gfs-lifecycle-remediation-v1","/etc/homelab-backup/gfs-retention.json","/usr/local/libexec/homelab-backup-gfs-policy","/var/lib/homelab-admin/seals/backup-gfs-lifecycle-remediation-v1.json","$HOMELAB_RUN_DIR/preflight.json","$HOMELAB_RUN_DIR/prepare.json","$HOMELAB_RUN_DIR/dry-run.json","$HOMELAB_RUN_DIR/apply.json","$HOMELAB_RUN_DIR/verify.json","$HOMELAB_RUN_DIR/rollback.json","$HOMELAB_RUN_DIR/seal.json","systemd:homelab-backup-retention-gc.timer"],"before":["/var/lib/homelab-admin/staging/backup-gfs-lifecycle-remediation-v1","/etc/homelab-backup/gfs-retention.json","/usr/local/libexec/homelab-backup-gfs-policy","/var/lib/homelab-admin/seals/backup-gfs-lifecycle-remediation-v1.json","$HOMELAB_RUN_DIR/preflight.json","$HOMELAB_RUN_DIR/prepare.json","$HOMELAB_RUN_DIR/dry-run.json","$HOMELAB_RUN_DIR/apply.json","$HOMELAB_RUN_DIR/verify.json","$HOMELAB_RUN_DIR/rollback.json","$HOMELAB_RUN_DIR/seal.json"],"change":"list_changed","path":"$.writes"}] +TASK_JSON_SEMANTIC_CHANGE_COUNT=6 +HEAD_TASK_FILE_TREE=["tasks/backup-gfs-lifecycle-remediation-v1/README.md","tasks/backup-gfs-lifecycle-remediation-v1/assets/baseline-gfs-retention.json","tasks/backup-gfs-lifecycle-remediation-v1/assets/baseline-homelab-backup-gfs-policy","tasks/backup-gfs-lifecycle-remediation-v1/assets/gfs-retention.json","tasks/backup-gfs-lifecycle-remediation-v1/assets/homelab-backup-gfs-policy","tasks/backup-gfs-lifecycle-remediation-v1/assets/targets.json","tasks/backup-gfs-lifecycle-remediation-v1/phases/apply.sh","tasks/backup-gfs-lifecycle-remediation-v1/phases/dry-run.sh","tasks/backup-gfs-lifecycle-remediation-v1/phases/preflight.sh","tasks/backup-gfs-lifecycle-remediation-v1/phases/prepare.sh","tasks/backup-gfs-lifecycle-remediation-v1/phases/rollback.sh","tasks/backup-gfs-lifecycle-remediation-v1/phases/seal.sh","tasks/backup-gfs-lifecycle-remediation-v1/phases/verify.sh","tasks/backup-gfs-lifecycle-remediation-v1/task.json"] +HEAD_TASK_FILE_COUNT=14 +HEAD_TOOLS_COMMON_EXISTS=false +HEAD_PHASE_STRUCTURE=[{"anchor_counts":{"check_no_active_backup_call":1,"check_no_active_backup_def":1,"require_assets_def":1,"require_live_baseline_def":1,"rollback_now_def":1,"service_mentions":1,"timer_mentions":0,"validate_candidate_def":1},"focus_lines":[{"line":2,"text":"set -Eeuo pipefail"},{"line":18,"text":"die(){ echo \"ROOT_CAUSE=$1|ROOT_CAUSE_COUNT=1\" >&2; exit \"${2:-66}\"; }"},{"line":19,"text":"on_err(){ rc=$?; echo \"ROOT_CAUSE=UNEXPECTED_RUNTIME_FAILURE|ROOT_CAUSE_COUNT=1|RC=$rc\" >&2; exit \"$rc\"; }"},{"line":20,"text":"trap on_err ERR"},{"line":21,"text":"require_live_baseline(){"},{"line":26,"text":"require_assets(){"},{"line":31,"text":"validate_candidate(){"},{"line":34,"text":"check_no_active_backup(){"},{"line":46,"text":"rollback_now(){"},{"line":47,"text":" install -m 0644 -o root -g root \"$STAGE/gfs-retention.json\" \"$LIVE_POLICY\""},{"line":48,"text":" install -m 0755 -o root -g root \"$STAGE/homelab-backup-gfs-policy\" \"$LIVE_HELPER\""},{"line":50,"text":"trap 'rc=$?; rollback_now || true; echo \"ROOT_CAUSE=APPLY_FAILED|ROOT_CAUSE_COUNT=1|RC=$rc\" >&2; exit \"$rc\"' ERR"},{"line":51,"text":"install -m 0644 -o root -g root \"$ASSET_POLICY\" \"$LIVE_POLICY\""},{"line":52,"text":"install -m 0755 -o root -g root \"$ASSET_HELPER\" \"$LIVE_HELPER\""},{"line":56,"text":"systemctl reset-failed homelab-backup-retention-gc.service"},{"line":57,"text":"trap on_err ERR"}],"git_path":"tasks/backup-gfs-lifecycle-remediation-v1/phases/apply.sh","line_count":59,"path":"phases/apply.sh","phase":"apply","rc":0,"sha256":"22d00f65cb8a2011d34e8d61ca07082c9722d59fe735152059884ac75666d81c"},{"anchor_counts":{"check_no_active_backup_call":1,"check_no_active_backup_def":1,"require_assets_def":1,"require_live_baseline_def":1,"rollback_now_def":0,"service_mentions":0,"timer_mentions":0,"validate_candidate_def":1},"focus_lines":[{"line":2,"text":"set -Eeuo pipefail"},{"line":18,"text":"die(){ echo \"ROOT_CAUSE=$1|ROOT_CAUSE_COUNT=1\" >&2; exit \"${2:-66}\"; }"},{"line":19,"text":"on_err(){ rc=$?; echo \"ROOT_CAUSE=UNEXPECTED_RUNTIME_FAILURE|ROOT_CAUSE_COUNT=1|RC=$rc\" >&2; exit \"$rc\"; }"},{"line":20,"text":"trap on_err ERR"},{"line":21,"text":"require_live_baseline(){"},{"line":26,"text":"require_assets(){"},{"line":31,"text":"validate_candidate(){"},{"line":34,"text":"check_no_active_backup(){"}],"git_path":"tasks/backup-gfs-lifecycle-remediation-v1/phases/dry-run.sh","line_count":52,"path":"phases/dry-run.sh","phase":"dry-run","rc":0,"sha256":"9ce7dce7604a8f116c1b874f8348692d0c19eb7058e51ae4d2f2165a41f6cdba"},{"anchor_counts":{"check_no_active_backup_call":0,"check_no_active_backup_def":1,"require_assets_def":1,"require_live_baseline_def":1,"rollback_now_def":0,"service_mentions":0,"timer_mentions":2,"validate_candidate_def":1},"focus_lines":[{"line":2,"text":"set -Eeuo pipefail"},{"line":18,"text":"die(){ echo \"ROOT_CAUSE=$1|ROOT_CAUSE_COUNT=1\" >&2; exit \"${2:-66}\"; }"},{"line":19,"text":"on_err(){ rc=$?; echo \"ROOT_CAUSE=UNEXPECTED_RUNTIME_FAILURE|ROOT_CAUSE_COUNT=1|RC=$rc\" >&2; exit \"$rc\"; }"},{"line":20,"text":"trap on_err ERR"},{"line":21,"text":"require_live_baseline(){"},{"line":26,"text":"require_assets(){"},{"line":31,"text":"validate_candidate(){"},{"line":34,"text":"check_no_active_backup(){"},{"line":42,"text":"systemctl is-enabled --quiet homelab-backup-retention-gc.timer || die RETENTION_TIMER_NOT_ENABLED"},{"line":43,"text":"systemctl is-active --quiet homelab-backup-retention-gc.timer || die RETENTION_TIMER_NOT_ACTIVE"}],"git_path":"tasks/backup-gfs-lifecycle-remediation-v1/phases/preflight.sh","line_count":54,"path":"phases/preflight.sh","phase":"preflight","rc":0,"sha256":"336de004b64c90eac8769dbd0e7e4d2637ae700d48149d000ec04b39355a5a6a"},{"anchor_counts":{"check_no_active_backup_call":1,"check_no_active_backup_def":1,"require_assets_def":1,"require_live_baseline_def":1,"rollback_now_def":0,"service_mentions":0,"timer_mentions":0,"validate_candidate_def":1},"focus_lines":[{"line":2,"text":"set -Eeuo pipefail"},{"line":18,"text":"die(){ echo \"ROOT_CAUSE=$1|ROOT_CAUSE_COUNT=1\" >&2; exit \"${2:-66}\"; }"},{"line":19,"text":"on_err(){ rc=$?; echo \"ROOT_CAUSE=UNEXPECTED_RUNTIME_FAILURE|ROOT_CAUSE_COUNT=1|RC=$rc\" >&2; exit \"$rc\"; }"},{"line":20,"text":"trap on_err ERR"},{"line":21,"text":"require_live_baseline(){"},{"line":26,"text":"require_assets(){"},{"line":31,"text":"validate_candidate(){"},{"line":34,"text":"check_no_active_backup(){"}],"git_path":"tasks/backup-gfs-lifecycle-remediation-v1/phases/prepare.sh","line_count":53,"path":"phases/prepare.sh","phase":"prepare","rc":0,"sha256":"fe72a477297169f6bad1449032ab56b4b23a700aeb9828b3cb5b78304e020dba"},{"anchor_counts":{"check_no_active_backup_call":0,"check_no_active_backup_def":1,"require_assets_def":1,"require_live_baseline_def":1,"rollback_now_def":0,"service_mentions":0,"timer_mentions":0,"validate_candidate_def":1},"focus_lines":[{"line":2,"text":"set -Eeuo pipefail"},{"line":18,"text":"die(){ echo \"ROOT_CAUSE=$1|ROOT_CAUSE_COUNT=1\" >&2; exit \"${2:-66}\"; }"},{"line":19,"text":"on_err(){ rc=$?; echo \"ROOT_CAUSE=UNEXPECTED_RUNTIME_FAILURE|ROOT_CAUSE_COUNT=1|RC=$rc\" >&2; exit \"$rc\"; }"},{"line":20,"text":"trap on_err ERR"},{"line":21,"text":"require_live_baseline(){"},{"line":26,"text":"require_assets(){"},{"line":31,"text":"validate_candidate(){"},{"line":34,"text":"check_no_active_backup(){"},{"line":43,"text":"install -m 0644 -o root -g root \"$STAGE/gfs-retention.json\" \"$LIVE_POLICY\""},{"line":44,"text":"install -m 0755 -o root -g root \"$STAGE/homelab-backup-gfs-policy\" \"$LIVE_HELPER\""}],"git_path":"tasks/backup-gfs-lifecycle-remediation-v1/phases/rollback.sh","line_count":48,"path":"phases/rollback.sh","phase":"rollback","rc":0,"sha256":"731594042479cdcb26a9bebb5852ab7e639541071195a235a671fc7e5562cd4a"},{"anchor_counts":{"check_no_active_backup_call":0,"check_no_active_backup_def":1,"require_assets_def":1,"require_live_baseline_def":1,"rollback_now_def":0,"service_mentions":0,"timer_mentions":0,"validate_candidate_def":1},"focus_lines":[{"line":2,"text":"set -Eeuo pipefail"},{"line":18,"text":"die(){ echo \"ROOT_CAUSE=$1|ROOT_CAUSE_COUNT=1\" >&2; exit \"${2:-66}\"; }"},{"line":19,"text":"on_err(){ rc=$?; echo \"ROOT_CAUSE=UNEXPECTED_RUNTIME_FAILURE|ROOT_CAUSE_COUNT=1|RC=$rc\" >&2; exit \"$rc\"; }"},{"line":20,"text":"trap on_err ERR"},{"line":21,"text":"require_live_baseline(){"},{"line":26,"text":"require_assets(){"},{"line":31,"text":"validate_candidate(){"},{"line":34,"text":"check_no_active_backup(){"}],"git_path":"tasks/backup-gfs-lifecycle-remediation-v1/phases/seal.sh","line_count":49,"path":"phases/seal.sh","phase":"seal","rc":0,"sha256":"719d37dcff71ca0c944df2410e81d70574bdbeab4bc60cd79ac15b783405e56f"},{"anchor_counts":{"check_no_active_backup_call":0,"check_no_active_backup_def":1,"require_assets_def":1,"require_live_baseline_def":1,"rollback_now_def":0,"service_mentions":1,"timer_mentions":2,"validate_candidate_def":1},"focus_lines":[{"line":2,"text":"set -Eeuo pipefail"},{"line":18,"text":"die(){ echo \"ROOT_CAUSE=$1|ROOT_CAUSE_COUNT=1\" >&2; exit \"${2:-66}\"; }"},{"line":19,"text":"on_err(){ rc=$?; echo \"ROOT_CAUSE=UNEXPECTED_RUNTIME_FAILURE|ROOT_CAUSE_COUNT=1|RC=$rc\" >&2; exit \"$rc\"; }"},{"line":20,"text":"trap on_err ERR"},{"line":21,"text":"require_live_baseline(){"},{"line":26,"text":"require_assets(){"},{"line":31,"text":"validate_candidate(){"},{"line":34,"text":"check_no_active_backup(){"},{"line":43,"text":"mapfile -t CRIT < <(HOMELAB_BACKUP_GFS_POLICY=\"$LIVE_POLICY\" HOMELAB_BACKUP_TARGET_REGISTRY=\"$LIVE_REGISTRY\" \"$LIVE_HELPER\" critical-logicals)"},{"line":46,"text":"systemctl is-enabled --quiet homelab-backup-retention-gc.timer || die VERIFY_TIMER_NOT_ENABLED"},{"line":47,"text":"systemctl is-active --quiet homelab-backup-retention-gc.timer || die VERIFY_TIMER_NOT_ACTIVE"},{"line":48,"text":"if systemctl is-failed --quiet homelab-backup-retention-gc.service; then die VERIFY_RETENTION_SERVICE_FAILED; fi"}],"git_path":"tasks/backup-gfs-lifecycle-remediation-v1/phases/verify.sh","line_count":50,"path":"phases/verify.sh","phase":"verify","rc":0,"sha256":"b3589070dc915211e091984800ec76976fef74669288440103bcb7c1eb69e0c4"}] +WORKING_TASK_LINT={"rc":0,"stderr_lines":[],"stdout_lines":["LINT_STATUS=OK","TASK_ID=backup-gfs-lifecycle-remediation-v1","POLICY_ID=homelab-admin-guardrails-v1.2","RULES_CHECKED=14","SOURCE_FILES_CHECKED=7"]} +WORKING_TASK_VALIDATE={"rc":0,"stderr_lines":[],"stdout_lines":["LINT_STATUS=OK","TASK_ID=backup-gfs-lifecycle-remediation-v1","POLICY_ID=homelab-admin-guardrails-v1.2","RULES_CHECKED=14","SOURCE_FILES_CHECKED=7","TASK_VALID=YES","TASK_ID=backup-gfs-lifecycle-remediation-v1","TASK_SCOPE=controlled_apply","PRODUCTION_CHANGE=YES"]} +LIVE_POLICY_META={"exists":true,"expected":"ea6526bec7d7591bef876799cecddff4849631a936edc9f593b47211fbad715c","match":true,"sha256":"ea6526bec7d7591bef876799cecddff4849631a936edc9f593b47211fbad715c"} +LIVE_HELPER_META={"exists":true,"expected":"6b7ec1ab3ee1c540a9113b5620c3b4b5a50de6536f3a069d31b2e1243f23bafa","match":true,"sha256":"6b7ec1ab3ee1c540a9113b5620c3b4b5a50de6536f3a069d31b2e1243f23bafa"} +LIVE_REGISTRY_META={"exists":true,"expected":"6ecf034ca03b52a1e6beceeae81d86a623885462c095d50b133aea4048a4626e","match":true,"sha256":"6ecf034ca03b52a1e6beceeae81d86a623885462c095d50b133aea4048a4626e"} +RETENTION_UNIT_STATE={"homelab-backup-retention-gc.service":{"ActiveState":{"rc":0,"value":"failed"},"LastTriggerUSec":{"rc":0,"value":""},"LoadState":{"rc":0,"value":"loaded"},"NextElapseUSecRealtime":{"rc":0,"value":""},"Result":{"rc":0,"value":"exit-code"},"SubState":{"rc":0,"value":"failed"},"UnitFileState":{"rc":0,"value":"static"}},"homelab-backup-retention-gc.timer":{"ActiveState":{"rc":0,"value":"active"},"LastTriggerUSec":{"rc":0,"value":"Mon 2026-09-21 03:22:42 MSK"},"LoadState":{"rc":0,"value":"loaded"},"NextElapseUSecRealtime":{"rc":0,"value":"Tue 2026-09-22 03:32:10 MSK"},"Result":{"rc":0,"value":"success"},"SubState":{"rc":0,"value":"waiting"},"UnitFileState":{"rc":0,"value":"enabled"}}} +DIRTY_PROVENANCE_CLASSIFICATION={"added_timer_mutate":true,"added_timer_write":true,"consistent_with_1028_pre_tools_common_patch":true,"source_hold":true,"source_reenable":true} +NO_MUTATION=true +NO_REPO_WRITE=true +NO_GIT_FETCH=true +NO_GIT_COMMIT=true +NO_GIT_PUSH_UPDATE=true +NO_PRODUCTION_MUTATION=true +NO_SERVICE_ACTION=true +NO_BACKUP_STARTED=true +NO_RESTORE_STARTED=true +NO_RETENTION_STARTED=true +NO_DELETE=true +NO_MAIL_SENT=true +RCA_DURATION_SEC=0.219 +TASK_RESULT=PASS_HOMELAB_BACKUP_GFS_DIRTY_TASK_RCA_READONLY +HOMELAB_RESULT_CONTRACT={"changes_made":false,"command_id":"SUPPORT-260921-HOMELAB-BACKUP-GFS-DIRTY-TASK-RCA-READONLY-1030R1","rollback_restored":null,"rollback_started":false,"status":"OK","version":1} +WORKERS2_BACKUP_GFS_DIRTY_TASK_RCA_END=1 + +OUTPUT_END +CHAT_OUTPUT_END diff --git a/runtime/latest.json b/runtime/latest.json index ba18539f..241380c3 100644 --- a/runtime/latest.json +++ b/runtime/latest.json @@ -1,19 +1,19 @@ { "schema_version": 1, "channel": "homelab-runtime", - "command_id": "SUPPORT-260921-HOMELAB-BACKUP-GFS-TASK-STRUCTURE-RCA-READONLY-1029R1", - "status": "FAIL", - "rc": 1, + "command_id": "SUPPORT-260921-HOMELAB-BACKUP-GFS-DIRTY-TASK-RCA-READONLY-1030R1", + "status": "OK", + "rc": 0, "host": "pve01", "mode": "read-only", - "component": "homelab-backup-gfs-task-structure-rca", - "started_at_utc": "2026-09-21T02:28:26Z", - "finished_at_utc": "2026-09-21T02:28:26Z", + "component": "homelab-backup-gfs-dirty-task-rca", + "started_at_utc": "2026-09-21T02:30:51Z", + "finished_at_utc": "2026-09-21T02:30:52Z", "reference_register_checked": true, "reference_sha256": "5a3d8e5154c41cb582a4e0aca68090be1f0138918bf82131a948df326f9d8d66", "error_register_checked": true, "error_register_sha256": "3b09a553ec0f527ed3afeed4753f52a74ee3036045bbfb3c685e9f8af4ba7ba0", - "command_sha256": "b18c567397a9d435c5d98c037e2ffdcce4c927fbeb0b3f6a156527cc54b6283a", + "command_sha256": "7045251473b9b986be7411da3ca1e361d7158b97f80017ab93cc40fb00474618", "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": 1, + "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": "8712772631a47d281419503dba2be7ab6363355934fe8b4bd11005c8ade3d2ee", - "sanitized_output_sha256": "8712772631a47d281419503dba2be7ab6363355934fe8b4bd11005c8ade3d2ee", + "raw_evidence_sha256": "16f700abb07690dcd6fbcf11b671c2111c64f1b98751e4284ff0d906d9e80d61", + "sanitized_output_sha256": "16f700abb07690dcd6fbcf11b671c2111c64f1b98751e4284ff0d906d9e80d61", "output_truncated_in_json": false, "full_sanitized_output_url": "https://git.gram1.ru/.well-known/homelab-runtime/latest.txt", - "output": "Traceback (most recent call last):\n File \"\", line 1, in \n import base64,zlib;exec(compile(zlib.decompress(base64.b64decode(\"eNqtWm1z4jgS/s6v8Opqr8yuTXgJJLDlDwzxTLghQPGyc1PZlEu25eAdY/ssm0lukv9+3ZJtDCSZ2drLVjYgtfpF6n66W5qav42jJFUirvHMjpPIYZxrf/Io1DaUbwLf1mKair8J01J/y2qj8ZVBluv5fLZY6e1es99u6dezG3MyfKe/G44+ruf6h/dLfTVcftSXq8V6tFovTH0xGuoLc3g1m04+661mu79okdqnlZFzb8zhr0rOkihKzzbRlgXU1qOY606it5vtHixpdkm9hlyNT6szklL+hZMzYlPnSxbr9x7XA99jzqMTMD1hW+b6NPWjUN+BnOHVzXhqkLMo3jOn7tYPz2z4PRghNfPfc3O0Mq+sa1DXIOc9p+f1KfUuPdrvOKzvNR3GepcweH550Tx3WrTX6nR6pPZuuDSt+WwyHn22ltdDgzDa67Z7NnMu3Ituv2Uz7/Kid9HvO8xxXc87vzzv9zot4NpjrtP3uv2OfX7RbrU8m7oXra6Ts7w2J3NzIVn27AsGEu0OYy2ne96k/VarY3d77aYDi+0u7TZd1ut2el6HNnt9t9Oy26zVPu947Y5NPZqzXJgfxnA2uZ495njNzrlDm8CqTVsMdWaMssuWe9mjvXbn8rJ73ms7zX7X7TZtMJcyet48v6Qw2mOktlwNFysD3aOB/1PrtZrLPCXJQtXZuhoLd8Y0Cll9UFPgJzb2vtYoaFL2kBqrJGMaT90oS6s08/HcxGGWJCfDyBt+64JzwtIsCZW4IT84kcu0uCEZyg/AQurGN1SNc4U2Ru7sDRhtd3uq5PbVTzdKFLNQjTWS2ESzM89jiR/eG826QrniyeWCduMHTEH992P4YxseKENdtQXb1b3o1Q9mfU8Jo1SxD9eIdbDoy8HoppHFLk2Zah/Yumls2IPr3zOeFtvOtn6qftF2uXUgxOd+yFMaOkzdaarrO6kW+DzV7CgKND9MNS+IaFqvK1Gi7IBawdPaKxWDzcDxV2KQXxEbGm62jTmw4iymCU2jhBsq0eC/AalrHADF+sIeuTjOutSWBfwVhjxN1B1Q1eQg+TRbfDQXy7YlwcQCMLEw7K0STCwAE+sduPDUaAEmCHPJaHZzM5xeWeMrogFEFcM3sysT9MIj0KMweKzSz2dTc7qC2QIBKmCC+KKDapkDuwyI4tBy5fVsCYsi3shCir7eCMHN8GNBsEYdYP6epSzzXbVeKrNeDVfj2dR6N1tPr4aLzyAbQdFCVLSmM4jL+cz6tBivTPz2Ybyy3pur0XXxBW2EP/Btvl6K0flidgWbgjzh29Jc/D4emdawHMn3ULBermYLU35cgd05xZU5MaW4m+F4AkbWwF+qyv9kNNEtXrC3weMAzWqQ+m3z7ieDxDvWbBF5zAn1OVMWWYiAYCZJlMids2B3rJvx8mYIhoG4PAQ+rRo+t1w/UYUT4hAeejn4OlP0l9XCNK3ZQvoJMF+Opx/QlMTRbA1RA1Hmltz7Key4PiIaOt2nVV0jdgJRscFRnW+ir7qTJQkLU3JXh8VtbYOr268vT9hOhxDgDCYwX8h1HY3jus7r6yAY04wLsZB/HfA+PzQgVeEAWJeAIzJX9wBTuEGDANlKFyqtfbcYTmEDNcCsNPHjvZOVFEIfbfPmvFVkuwqhYRykwJN1o4k5nBJNABfgh8pLCSekkBdW66U1GU/NJVgvHSbwQ8bV+u0AcvqdcIBS9E+HotETSu6ve8Ac3ApKiksZPijTtNbT0jLwg38o5gN1UgWjWsFdVdKEsUZNbvDtXc0DSbHihwqCF3NV4XvJfRDZKvmF1PdIGqNH4rJCIfzhqYHJhabqHt4F6waNIX246rcDJCdY9JABOgNmqgAKlR2z0ghdo64dktqPKeNIC/wt7v+XHc1vIRbJIHJSVZLgd+WfSjO6uLg45iWTGzATqa+cey6OTUTP+/HEtPDwiCZMOJ0cAXgBAAaQFyVFSTKbTZYCpABazH9DhQGHLrYS6jXwFKjmou0W0gffkPp+H8X5jGTcyRNyIhECaaOW/mmIhAPpyeVqwQtoGjgMXBDYLawdVIbpHnMzyVJPvyT1A83/tQSdVrO59dH8jK4ojzn9s4GJquK6e+IRoCXR5MkJkZbvkgGsAGRUy4F8jwl3NmxLrR1LOFSde7qj8YJ8m6WiPLW4AwXGnvxovCCHiseFTIQTzoaG95UVp1PlIihq0HdKSvn9QIXqfDFQEIRRztGinLMERVSoX5wtRT+mG1BIuEdFgepoQQq1epQysBeCPK0QH42X5DLyrS0FVHiokB+O12vPwq0mUFKc7WjgY+Wk5OCuoBv6KTiAEgPQ0ntAggBSRYBVYlCmC9E1aATgKpXIjb5RB8TaAe0OaXfHtIWkQ/q84FgvFpB2ZY4CRIQQ+kYShwxQNJE1qiWwEYbg8xFYXjbvBBWILKng8ynV84sCfx9OxlcAjIXQ3anQ3Q8J3b0mFHZ7jh6mYEKFinAAVV60Y8qGBTFLFC8LhZdyhSYMSlSbuS4cAEAuo85GEc6pibzPowwyoqt4SbRVjnADIDtyMm4lzEhYA4ZjhJCEqJylim6yLFJiP2Ye9YMngJBYafyimIvF02I2g/JpuF7m8GW0nhL2n8xPGNgF4GuDdLTnD/WPejmDjp1yMVQcrOXQ0BWfxDAEt/PFglAAsJJssICUTKIgwK8w+1UM8Eeesq2TBqAT1O7gh9ie3jtPojQPAkXfKs3b3sXd7XlX/D5hHVpS/iEQ7+mFUjWOAt95fIJASX2HBnoQ3eNfXocoENtq+aEXFVkOCzfo5YNKslOPEQLz7rdngGhQGMGxaNsE/MLavP9wjG9yCRkIrnleAwKNsAfoL8BdKvlSO0pAR+lUtAii8Xh+M9kKtzPiN5Afay9sSQBD4oA6gIgHDlty2vipSP5lygazfQ2phFuG2ZYl2HCJdVqrPjju3QpfbHBGE2cjCOunvRzKKSsBxBPYMF8jqDsEMXy9HfSbItLy/TnqRpGkIYzEbFnt9573xsBx3ArelhNlWMAamKCF6kdEUmsZzncGKgelGMTwIZWMYskM6Y5KmJc934L2E44326otsZsPuJFCEm7Xw77CfGW9Wv9GjquWVyQ5WBb/DVEncl7Egx836MXlL9lzCiU/LuR07UsSqtDzFwyorHqJK6bXxILGzw6Ya4lN5a9zPu6pq4gn7ogSgvQPkC1chfhczxnL0Zdl5+f3fxct+b4l2fU5aiec7i3JOZ2i67CJyg/q8dZGf1eiJPuLAvelvwT2MkkUKAUIUFQR82u8MCzvXoi2p5aFu6ilRMmOpRXk/MhrYON9jxXS/ZvNN3bcouUFw6BwM36+fvp5/vSz7IsxpeiVPjmMwCAchK8HXWJZYc2Ho4/DD2ZxTbK8nn0iQo2jeqXdxr4T65WydsY7L576kIWL0BXeITZNAQSMMvA6V6FeCt+x12yIZAqbDcku1r5SMB229lbsp0om49+Lq2CiHV1xs9Q5Ozyos4NEn3c22tF1cu4lOW95J3zCO+PJWRCBz5zBIHtgx5Iq9UIhYX+7fCihuCL+Ef1TmkD9wA80r14x12t3MiveR6nxneQvbwvxPMXm/kqsG3M1xLL1zZICOGPRETMHKhoywAPRCPiUsxFzhoEjWKVmoQ+NNHY6xrdncYg4Ig7vB4BDe5MG+qCdD/VGbq2okGSIifuFJIqlnAl0s8tU9AlkDdLfgzHF96EAo+LbMrOLjwvGswBDaEJ5ukr8e4it9ZI5MDKFSsIMaMwZDiwYDVDbQg2hiqNFGssjsaxESRGCuAUQYzEcNiiJ0QaZJmN47VQtCnASKgHRQGD/IIkGUZFFpK37Hb7Fj3dQqTt5hO5vHtdTjNCV6Ej2CypXNVs/9Lc0gA4NzlDZQikPXQjsTN4XFK2cQCOlvKht1AQ9tIFxXrEQ2TtY4DNF02FBP2LlhasC+KpWjZSV8GH1o2ExnHelrxUJWhOSaOuglgRueN57wESnL0Xk7ix3uGhvRbtj5Sqjj1u5RPBp5T0U9aza3FvS2Dz8yGBfo5E4wat5MJBQ11XKEqh01zyZ5oj2con0m+LQGHcVXJflWMilN+4FucmjDm71twRV+UEGCh6/x+03Jc+0ZzyFoJKq2Qw2HUt30U79plQLGtj2vMLgSh7Je5HQ0voeysz3OueXi3DP/LCwAVJCqYqSR7tSTFdZFrIFU9ARmJaJRVzpCV5SI7CBJumpWtBUBH9fKcHvWatcYyFKS88B7i5zAmzIJSa4g+9CIHr0V2g1GT/LL4wqmXITBa5sLLGFtyLPgsBMN2cvXhbVnotnkfF0fDOcWHN8ErBuhnORc2QUAyJIInygyJ9PiCYelvYT+2eTk6nyDeXFGVkpvDglXljWc3lncjRfeXV5VafDt5iT6fxhRjyc4u37iUXyteb1+QJIX6OQ7zonw/jIA7pNj4zGF7Wr9UK+Ti1NKNISgD5XrTzp6kKS1qnXi5c6cbEEmq4nK2M+XC6t/J8BfOflrvhnAKRkVKyTvOBUpqsF7Nvha+M3Ul6utjSB6uB34k52NL4qX1QGZPYR0pr0Ng4ehNfjEjj3HY4IOITU44k8VmFG3EP84PvmX3u4NKdX4tnyf+ZSp8k=\")).decode(\"utf-8\"),\"w2_gfs_task_structure_rca\",\"exec\"))\n ~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"w2_gfs_task_structure_rca\", line 55, in \nRuntimeError: POST1028_REPO_STATE_UNEXPECTED\nWORKERS2_BACKUP_GFS_TASK_STRUCTURE_RCA_BEGIN=1\nCOMMAND_ID=SUPPORT-260921-HOMELAB-BACKUP-GFS-TASK-STRUCTURE-RCA-READONLY-1029R1\nMODE=read-only\nCOMPONENT=homelab-backup-gfs-task-structure-rca\nHOST=pve01\nUID=0\nMUTATION_BOUNDARY=READ_ONLY_NO_REPO_WRITE_NO_GIT_FETCH_NO_GIT_COMMIT_NO_PUSH_NO_PRODUCTION_NO_SERVICE_ACTION_NO_BACKUP_NO_RESTORE_NO_RETENTION_NO_DELETE_NO_MAIL\nWORKTREE_BRANCH=cr-2026-1005-backup-v2-health-alerting-remediation\nWORKTREE_HEAD=46c6f9aaf8fa93ce9f0cee686f948704c1a61336\nWORKTREE_HEAD_EXPECTED=true\nWORKTREE_CLEAN=false\nWORKTREE_STATUS_LINES=[\" M tasks/backup-gfs-lifecycle-remediation-v1/task.json\"]\n" + "output": "WORKERS2_BACKUP_GFS_DIRTY_TASK_RCA_BEGIN=1\nCOMMAND_ID=SUPPORT-260921-HOMELAB-BACKUP-GFS-DIRTY-TASK-RCA-READONLY-1030R1\nMODE=read-only\nCOMPONENT=homelab-backup-gfs-dirty-task-rca\nHOST=pve01\nUID=0\nMUTATION_BOUNDARY=READ_ONLY_NO_REPO_WRITE_NO_GIT_FETCH_NO_GIT_COMMIT_NO_PUSH_NO_PRODUCTION_NO_SERVICE_ACTION_NO_BACKUP_NO_RESTORE_NO_RETENTION_NO_DELETE_NO_MAIL\nWORKTREE_BRANCH=cr-2026-1005-backup-v2-health-alerting-remediation\nWORKTREE_HEAD=46c6f9aaf8fa93ce9f0cee686f948704c1a61336\nWORKTREE_HEAD_EXPECTED=true\nWORKTREE_STATUS_LINES=[\" M tasks/backup-gfs-lifecycle-remediation-v1/task.json\"]\nDIRTY_PATHS=[\"tasks/backup-gfs-lifecycle-remediation-v1/task.json\"]\nONLY_TASK_JSON_DIRTY=true\nTASK_JSON_DIFF_RC=0\nTASK_JSON_DIFF_LINES=[\"diff --git a/tasks/backup-gfs-lifecycle-remediation-v1/task.json b/tasks/backup-gfs-lifecycle-remediation-v1/task.json\",\"index 89e5607..9d2f446 100644\",\"--- a/tasks/backup-gfs-lifecycle-remediation-v1/task.json\",\"+++ b/tasks/backup-gfs-lifecycle-remediation-v1/task.json\",\"@@ -42,32 +42,34 @@\",\" \\\"desired_state_clean\\\": false,\",\" \\\"failed_units_max\\\": 5\",\" },\",\" \\\"mutates\\\": [\",\" \\\"/var/lib/homelab-admin/staging/backup-gfs-lifecycle-remediation-v1\\\",\",\" \\\"/etc/homelab-backup/gfs-retention.json\\\",\",\" \\\"/usr/local/libexec/homelab-backup-gfs-policy\\\",\",\" \\\"systemd:homelab-backup-retention-gc.service\\\",\",\"- \\\"/var/lib/homelab-admin/seals/backup-gfs-lifecycle-remediation-v1.json\\\"\",\"+ \\\"/var/lib/homelab-admin/seals/backup-gfs-lifecycle-remediation-v1.json\\\",\",\"+ \\\"systemd:homelab-backup-retention-gc.timer\\\"\",\" ],\",\" \\\"mutation_scope\\\": \\\"controlled_apply\\\",\",\" \\\"no_change_assertions\\\": [\",\" \\\"/etc/homelab-backup/targets.json exact bytes\\\",\",\" \\\"homelab-backup-v2 runtime and timer\\\",\",\"- \\\"homelab-backup-retention-gc timer schedule and enabled/active state\\\",\",\" \\\"all cloud backup generations and replica objects\\\",\",\" \\\"all restore evidence\\\",\",\" \\\"rclone configuration\\\",\",\" \\\"network\\\",\",\" \\\"dns\\\",\",\" \\\"known_hosts\\\",\",\" \\\"backup and restore execution count remains zero\\\",\",\" \\\"retention GC execution count remains zero\\\",\",\"- \\\"cloud delete count remains zero\\\"\",\"+ \\\"cloud delete count remains zero\\\",\",\"+ \\\"homelab-backup-retention-gc timer unit bytes and schedule unchanged; enablement intentionally held disabled/inactive after apply\\\",\",\"+ \\\"homelab-backup-retention-gc service never started by this task\\\"\",\" ],\",\" \\\"phases\\\": {\",\" \\\"apply\\\": \\\"phases/apply.sh\\\",\",\" \\\"dry-run\\\": \\\"phases/dry-run.sh\\\",\",\" \\\"preflight\\\": \\\"phases/preflight.sh\\\",\",\" \\\"prepare\\\": \\\"phases/prepare.sh\\\",\",\" \\\"rollback\\\": \\\"phases/rollback.sh\\\",\",\" \\\"seal\\\": \\\"phases/seal.sh\\\",\",\"@@ -92,27 +94,31 @@\",\" \\\"source_of_truth\\\": {\",\" \\\"baseline_helper_sha256\\\": \\\"6b7ec1ab3ee1c540a9113b5620c3b4b5a50de6536f3a069d31b2e1243f23bafa\\\",\",\" \\\"baseline_policy_sha256\\\": \\\"ea6526bec7d7591bef876799cecddff4849631a936edc9f593b47211fbad715c\\\",\",\" \\\"candidate_helper_sha256\\\": \\\"a1aed0c6039f8095bd5da7f62b47f4ee6932df98c4e0e7420d3006df86bd5c94\\\",\",\" \\\"candidate_policy_sha256\\\": \\\"2c7674045dd5c68cc48d348d616494dbbe145df460a8e85d97a2c5c153ec792d\\\",\",\" \\\"change_id\\\": \\\"CR-2026-1005\\\",\",\" \\\"cloud_deletes\\\": false,\",\" \\\"cloud_writes\\\": false,\",\"+ \\\"package_parent_commit\\\": \\\"46c6f9aaf8fa93ce9f0cee686f948704c1a61336\\\",\",\" \\\"parent_commit\\\": \\\"0d62d4a2077047b9b040a9378085ece09dd15883\\\",\",\"+ \\\"retention_timer_hold_after_apply\\\": true,\",\"+ \\\"retention_timer_reenable_requires_future_safe_plan\\\": true,\",\" \\\"target_registry_sha256\\\": \\\"6ecf034ca03b52a1e6beceeae81d86a623885462c095d50b133aea4048a4626e\\\"\",\" },\",\" \\\"target_host\\\": \\\"pve01.gram1.ru\\\",\",\" \\\"task_id\\\": \\\"backup-gfs-lifecycle-remediation-v1\\\",\",\" \\\"writes\\\": [\",\" \\\"/var/lib/homelab-admin/staging/backup-gfs-lifecycle-remediation-v1\\\",\",\" \\\"/etc/homelab-backup/gfs-retention.json\\\",\",\" \\\"/usr/local/libexec/homelab-backup-gfs-policy\\\",\",\" \\\"/var/lib/homelab-admin/seals/backup-gfs-lifecycle-remediation-v1.json\\\",\",\" \\\"$HOMELAB_RUN_DIR/preflight.json\\\",\",\" \\\"$HOMELAB_RUN_DIR/prepare.json\\\",\",\" \\\"$HOMELAB_RUN_DIR/dry-run.json\\\",\",\" \\\"$HOMELAB_RUN_DIR/apply.json\\\",\",\" \\\"$HOMELAB_RUN_DIR/verify.json\\\",\",\" \\\"$HOMELAB_RUN_DIR/rollback.json\\\",\",\"- \\\"$HOMELAB_RUN_DIR/seal.json\\\"\",\"+ \\\"$HOMELAB_RUN_DIR/seal.json\\\",\",\"+ \\\"systemd:homelab-backup-retention-gc.timer\\\"\",\" ]\",\" }\"]\nTASK_JSON_DIFF_SHA256=4b0f0bf4cb0d00d48e702d78823ab8bf2842c854d665bfd33bcc997d163c09b1\nHEAD_TASK_JSON_SHA256=665319f09578db5e0f5b3260517c470cf21fe4f6da6366886f8f283c8a895cd0\nWORK_TASK_JSON_SHA256=861bac805089ed92400df50824d3afeb5dbf312d96f268a8351a1f5e64f719a7\nTASK_JSON_SEMANTIC_CHANGES=[{\"after\":[\"/var/lib/homelab-admin/staging/backup-gfs-lifecycle-remediation-v1\",\"/etc/homelab-backup/gfs-retention.json\",\"/usr/local/libexec/homelab-backup-gfs-policy\",\"systemd:homelab-backup-retention-gc.service\",\"/var/lib/homelab-admin/seals/backup-gfs-lifecycle-remediation-v1.json\",\"systemd:homelab-backup-retention-gc.timer\"],\"before\":[\"/var/lib/homelab-admin/staging/backup-gfs-lifecycle-remediation-v1\",\"/etc/homelab-backup/gfs-retention.json\",\"/usr/local/libexec/homelab-backup-gfs-policy\",\"systemd:homelab-backup-retention-gc.service\",\"/var/lib/homelab-admin/seals/backup-gfs-lifecycle-remediation-v1.json\"],\"change\":\"list_changed\",\"path\":\"$.mutates\"},{\"after\":[\"/etc/homelab-backup/targets.json exact bytes\",\"homelab-backup-v2 runtime and timer\",\"all cloud backup generations and replica objects\",\"all restore evidence\",\"rclone configuration\",\"network\",\"dns\",\"known_hosts\",\"backup and restore execution count remains zero\",\"retention GC execution count remains zero\",\"cloud delete count remains zero\",\"homelab-backup-retention-gc timer unit bytes and schedule unchanged; enablement intentionally held disabled/inactive after apply\",\"homelab-backup-retention-gc service never started by this task\"],\"before\":[\"/etc/homelab-backup/targets.json exact bytes\",\"homelab-backup-v2 runtime and timer\",\"homelab-backup-retention-gc timer schedule and enabled/active state\",\"all cloud backup generations and replica objects\",\"all restore evidence\",\"rclone configuration\",\"network\",\"dns\",\"known_hosts\",\"backup and restore execution count remains zero\",\"retention GC execution count remains zero\",\"cloud delete count remains zero\"],\"change\":\"list_changed\",\"path\":\"$.no_change_assertions\"},{\"after\":\"46c6f9aaf8fa93ce9f0cee686f948704c1a61336\",\"change\":\"added\",\"path\":\"$.source_of_truth.package_parent_commit\"},{\"after\":true,\"change\":\"added\",\"path\":\"$.source_of_truth.retention_timer_hold_after_apply\"},{\"after\":true,\"change\":\"added\",\"path\":\"$.source_of_truth.retention_timer_reenable_requires_future_safe_plan\"},{\"after\":[\"/var/lib/homelab-admin/staging/backup-gfs-lifecycle-remediation-v1\",\"/etc/homelab-backup/gfs-retention.json\",\"/usr/local/libexec/homelab-backup-gfs-policy\",\"/var/lib/homelab-admin/seals/backup-gfs-lifecycle-remediation-v1.json\",\"$HOMELAB_RUN_DIR/preflight.json\",\"$HOMELAB_RUN_DIR/prepare.json\",\"$HOMELAB_RUN_DIR/dry-run.json\",\"$HOMELAB_RUN_DIR/apply.json\",\"$HOMELAB_RUN_DIR/verify.json\",\"$HOMELAB_RUN_DIR/rollback.json\",\"$HOMELAB_RUN_DIR/seal.json\",\"systemd:homelab-backup-retention-gc.timer\"],\"before\":[\"/var/lib/homelab-admin/staging/backup-gfs-lifecycle-remediation-v1\",\"/etc/homelab-backup/gfs-retention.json\",\"/usr/local/libexec/homelab-backup-gfs-policy\",\"/var/lib/homelab-admin/seals/backup-gfs-lifecycle-remediation-v1.json\",\"$HOMELAB_RUN_DIR/preflight.json\",\"$HOMELAB_RUN_DIR/prepare.json\",\"$HOMELAB_RUN_DIR/dry-run.json\",\"$HOMELAB_RUN_DIR/apply.json\",\"$HOMELAB_RUN_DIR/verify.json\",\"$HOMELAB_RUN_DIR/rollback.json\",\"$HOMELAB_RUN_DIR/seal.json\"],\"change\":\"list_changed\",\"path\":\"$.writes\"}]\nTASK_JSON_SEMANTIC_CHANGE_COUNT=6\nHEAD_TASK_FILE_TREE=[\"tasks/backup-gfs-lifecycle-remediation-v1/README.md\",\"tasks/backup-gfs-lifecycle-remediation-v1/assets/baseline-gfs-retention.json\",\"tasks/backup-gfs-lifecycle-remediation-v1/assets/baseline-homelab-backup-gfs-policy\",\"tasks/backup-gfs-lifecycle-remediation-v1/assets/gfs-retention.json\",\"tasks/backup-gfs-lifecycle-remediation-v1/assets/homelab-backup-gfs-policy\",\"tasks/backup-gfs-lifecycle-remediation-v1/assets/targets.json\",\"tasks/backup-gfs-lifecycle-remediation-v1/phases/apply.sh\",\"tasks/backup-gfs-lifecycle-remediation-v1/phases/dry-run.sh\",\"tasks/backup-gfs-lifecycle-remediation-v1/phases/preflight.sh\",\"tasks/backup-gfs-lifecycle-remediation-v1/phases/prepare.sh\",\"tasks/backup-gfs-lifecycle-remediation-v1/phases/rollback.sh\",\"tasks/backup-gfs-lifecycle-remediation-v1/phases/seal.sh\",\"tasks/backup-gfs-lifecycle-remediation-v1/phases/verify.sh\",\"tasks/backup-gfs-lifecycle-remediation-v1/task.json\"]\nHEAD_TASK_FILE_COUNT=14\nHEAD_TOOLS_COMMON_EXISTS=false\nHEAD_PHASE_STRUCTURE=[{\"anchor_counts\":{\"check_no_active_backup_call\":1,\"check_no_active_backup_def\":1,\"require_assets_def\":1,\"require_live_baseline_def\":1,\"rollback_now_def\":1,\"service_mentions\":1,\"timer_mentions\":0,\"validate_candidate_def\":1},\"focus_lines\":[{\"line\":2,\"text\":\"set -Eeuo pipefail\"},{\"line\":18,\"text\":\"die(){ echo \\\"ROOT_CAUSE=$1|ROOT_CAUSE_COUNT=1\\\" >&2; exit \\\"${2:-66}\\\"; }\"},{\"line\":19,\"text\":\"on_err(){ rc=$?; echo \\\"ROOT_CAUSE=UNEXPECTED_RUNTIME_FAILURE|ROOT_CAUSE_COUNT=1|RC=$rc\\\" >&2; exit \\\"$rc\\\"; }\"},{\"line\":20,\"text\":\"trap on_err ERR\"},{\"line\":21,\"text\":\"require_live_baseline(){\"},{\"line\":26,\"text\":\"require_assets(){\"},{\"line\":31,\"text\":\"validate_candidate(){\"},{\"line\":34,\"text\":\"check_no_active_backup(){\"},{\"line\":46,\"text\":\"rollback_now(){\"},{\"line\":47,\"text\":\" install -m 0644 -o root -g root \\\"$STAGE/gfs-retention.json\\\" \\\"$LIVE_POLICY\\\"\"},{\"line\":48,\"text\":\" install -m 0755 -o root -g root \\\"$STAGE/homelab-backup-gfs-policy\\\" \\\"$LIVE_HELPER\\\"\"},{\"line\":50,\"text\":\"trap 'rc=$?; rollback_now || true; echo \\\"ROOT_CAUSE=APPLY_FAILED|ROOT_CAUSE_COUNT=1|RC=$rc\\\" >&2; exit \\\"$rc\\\"' ERR\"},{\"line\":51,\"text\":\"install -m 0644 -o root -g root \\\"$ASSET_POLICY\\\" \\\"$LIVE_POLICY\\\"\"},{\"line\":52,\"text\":\"install -m 0755 -o root -g root \\\"$ASSET_HELPER\\\" \\\"$LIVE_HELPER\\\"\"},{\"line\":56,\"text\":\"systemctl reset-failed homelab-backup-retention-gc.service\"},{\"line\":57,\"text\":\"trap on_err ERR\"}],\"git_path\":\"tasks/backup-gfs-lifecycle-remediation-v1/phases/apply.sh\",\"line_count\":59,\"path\":\"phases/apply.sh\",\"phase\":\"apply\",\"rc\":0,\"sha256\":\"22d00f65cb8a2011d34e8d61ca07082c9722d59fe735152059884ac75666d81c\"},{\"anchor_counts\":{\"check_no_active_backup_call\":1,\"check_no_active_backup_def\":1,\"require_assets_def\":1,\"require_live_baseline_def\":1,\"rollback_now_def\":0,\"service_mentions\":0,\"timer_mentions\":0,\"validate_candidate_def\":1},\"focus_lines\":[{\"line\":2,\"text\":\"set -Eeuo pipefail\"},{\"line\":18,\"text\":\"die(){ echo \\\"ROOT_CAUSE=$1|ROOT_CAUSE_COUNT=1\\\" >&2; exit \\\"${2:-66}\\\"; }\"},{\"line\":19,\"text\":\"on_err(){ rc=$?; echo \\\"ROOT_CAUSE=UNEXPECTED_RUNTIME_FAILURE|ROOT_CAUSE_COUNT=1|RC=$rc\\\" >&2; exit \\\"$rc\\\"; }\"},{\"line\":20,\"text\":\"trap on_err ERR\"},{\"line\":21,\"text\":\"require_live_baseline(){\"},{\"line\":26,\"text\":\"require_assets(){\"},{\"line\":31,\"text\":\"validate_candidate(){\"},{\"line\":34,\"text\":\"check_no_active_backup(){\"}],\"git_path\":\"tasks/backup-gfs-lifecycle-remediation-v1/phases/dry-run.sh\",\"line_count\":52,\"path\":\"phases/dry-run.sh\",\"phase\":\"dry-run\",\"rc\":0,\"sha256\":\"9ce7dce7604a8f116c1b874f8348692d0c19eb7058e51ae4d2f2165a41f6cdba\"},{\"anchor_counts\":{\"check_no_active_backup_call\":0,\"check_no_active_backup_def\":1,\"require_assets_def\":1,\"require_live_baseline_def\":1,\"rollback_now_def\":0,\"service_mentions\":0,\"timer_mentions\":2,\"validate_candidate_def\":1},\"focus_lines\":[{\"line\":2,\"text\":\"set -Eeuo pipefail\"},{\"line\":18,\"text\":\"die(){ echo \\\"ROOT_CAUSE=$1|ROOT_CAUSE_COUNT=1\\\" >&2; exit \\\"${2:-66}\\\"; }\"},{\"line\":19,\"text\":\"on_err(){ rc=$?; echo \\\"ROOT_CAUSE=UNEXPECTED_RUNTIME_FAILURE|ROOT_CAUSE_COUNT=1|RC=$rc\\\" >&2; exit \\\"$rc\\\"; }\"},{\"line\":20,\"text\":\"trap on_err ERR\"},{\"line\":21,\"text\":\"require_live_baseline(){\"},{\"line\":26,\"text\":\"require_assets(){\"},{\"line\":31,\"text\":\"validate_candidate(){\"},{\"line\":34,\"text\":\"check_no_active_backup(){\"},{\"line\":42,\"text\":\"systemctl is-enabled --quiet homelab-backup-retention-gc.timer || die RETENTION_TIMER_NOT_ENABLED\"},{\"line\":43,\"text\":\"systemctl is-active --quiet homelab-backup-retention-gc.timer || die RETENTION_TIMER_NOT_ACTIVE\"}],\"git_path\":\"tasks/backup-gfs-lifecycle-remediation-v1/phases/preflight.sh\",\"line_count\":54,\"path\":\"phases/preflight.sh\",\"phase\":\"preflight\",\"rc\":0,\"sha256\":\"336de004b64c90eac8769dbd0e7e4d2637ae700d48149d000ec04b39355a5a6a\"},{\"anchor_counts\":{\"check_no_active_backup_call\":1,\"check_no_active_backup_def\":1,\"require_assets_def\":1,\"require_live_baseline_def\":1,\"rollback_now_def\":0,\"service_mentions\":0,\"timer_mentions\":0,\"validate_candidate_def\":1},\"focus_lines\":[{\"line\":2,\"text\":\"set -Eeuo pipefail\"},{\"line\":18,\"text\":\"die(){ echo \\\"ROOT_CAUSE=$1|ROOT_CAUSE_COUNT=1\\\" >&2; exit \\\"${2:-66}\\\"; }\"},{\"line\":19,\"text\":\"on_err(){ rc=$?; echo \\\"ROOT_CAUSE=UNEXPECTED_RUNTIME_FAILURE|ROOT_CAUSE_COUNT=1|RC=$rc\\\" >&2; exit \\\"$rc\\\"; }\"},{\"line\":20,\"text\":\"trap on_err ERR\"},{\"line\":21,\"text\":\"require_live_baseline(){\"},{\"line\":26,\"text\":\"require_assets(){\"},{\"line\":31,\"text\":\"validate_candidate(){\"},{\"line\":34,\"text\":\"check_no_active_backup(){\"}],\"git_path\":\"tasks/backup-gfs-lifecycle-remediation-v1/phases/prepare.sh\",\"line_count\":53,\"path\":\"phases/prepare.sh\",\"phase\":\"prepare\",\"rc\":0,\"sha256\":\"fe72a477297169f6bad1449032ab56b4b23a700aeb9828b3cb5b78304e020dba\"},{\"anchor_counts\":{\"check_no_active_backup_call\":0,\"check_no_active_backup_def\":1,\"require_assets_def\":1,\"require_live_baseline_def\":1,\"rollback_now_def\":0,\"service_mentions\":0,\"timer_mentions\":0,\"validate_candidate_def\":1},\"focus_lines\":[{\"line\":2,\"text\":\"set -Eeuo pipefail\"},{\"line\":18,\"text\":\"die(){ echo \\\"ROOT_CAUSE=$1|ROOT_CAUSE_COUNT=1\\\" >&2; exit \\\"${2:-66}\\\"; }\"},{\"line\":19,\"text\":\"on_err(){ rc=$?; echo \\\"ROOT_CAUSE=UNEXPECTED_RUNTIME_FAILURE|ROOT_CAUSE_COUNT=1|RC=$rc\\\" >&2; exit \\\"$rc\\\"; }\"},{\"line\":20,\"text\":\"trap on_err ERR\"},{\"line\":21,\"text\":\"require_live_baseline(){\"},{\"line\":26,\"text\":\"require_assets(){\"},{\"line\":31,\"text\":\"validate_candidate(){\"},{\"line\":34,\"text\":\"check_no_active_backup(){\"},{\"line\":43,\"text\":\"install -m 0644 -o root -g root \\\"$STAGE/gfs-retention.json\\\" \\\"$LIVE_POLICY\\\"\"},{\"line\":44,\"text\":\"install -m 0755 -o root -g root \\\"$STAGE/homelab-backup-gfs-policy\\\" \\\"$LIVE_HELPER\\\"\"}],\"git_path\":\"tasks/backup-gfs-lifecycle-remediation-v1/phases/rollback.sh\",\"line_count\":48,\"path\":\"phases/rollback.sh\",\"phase\":\"rollback\",\"rc\":0,\"sha256\":\"731594042479cdcb26a9bebb5852ab7e639541071195a235a671fc7e5562cd4a\"},{\"anchor_counts\":{\"check_no_active_backup_call\":0,\"check_no_active_backup_def\":1,\"require_assets_def\":1,\"require_live_baseline_def\":1,\"rollback_now_def\":0,\"service_mentions\":0,\"timer_mentions\":0,\"validate_candidate_def\":1},\"focus_lines\":[{\"line\":2,\"text\":\"set -Eeuo pipefail\"},{\"line\":18,\"text\":\"die(){ echo \\\"ROOT_CAUSE=$1|ROOT_CAUSE_COUNT=1\\\" >&2; exit \\\"${2:-66}\\\"; }\"},{\"line\":19,\"text\":\"on_err(){ rc=$?; echo \\\"ROOT_CAUSE=UNEXPECTED_RUNTIME_FAILURE|ROOT_CAUSE_COUNT=1|RC=$rc\\\" >&2; exit \\\"$rc\\\"; }\"},{\"line\":20,\"text\":\"trap on_err ERR\"},{\"line\":21,\"text\":\"require_live_baseline(){\"},{\"line\":26,\"text\":\"require_assets(){\"},{\"line\":31,\"text\":\"validate_candidate(){\"},{\"line\":34,\"text\":\"check_no_active_backup(){\"}],\"git_path\":\"tasks/backup-gfs-lifecycle-remediation-v1/phases/seal.sh\",\"line_count\":49,\"path\":\"phases/seal.sh\",\"phase\":\"seal\",\"rc\":0,\"sha256\":\"719d37dcff71ca0c944df2410e81d70574bdbeab4bc60cd79ac15b783405e56f\"},{\"anchor_counts\":{\"check_no_active_backup_call\":0,\"check_no_active_backup_def\":1,\"require_assets_def\":1,\"require_live_baseline_def\":1,\"rollback_now_def\":0,\"service_mentions\":1,\"timer_mentions\":2,\"validate_candidate_def\":1},\"focus_lines\":[{\"line\":2,\"text\":\"set -Eeuo pipefail\"},{\"line\":18,\"text\":\"die(){ echo \\\"ROOT_CAUSE=$1|ROOT_CAUSE_COUNT=1\\\" >&2; exit \\\"${2:-66}\\\"; }\"},{\"line\":19,\"text\":\"on_err(){ rc=$?; echo \\\"ROOT_CAUSE=UNEXPECTED_RUNTIME_FAILURE|ROOT_CAUSE_COUNT=1|RC=$rc\\\" >&2; exit \\\"$rc\\\"; }\"},{\"line\":20,\"text\":\"trap on_err ERR\"},{\"line\":21,\"text\":\"require_live_baseline(){\"},{\"line\":26,\"text\":\"require_assets(){\"},{\"line\":31,\"text\":\"validate_candidate(){\"},{\"line\":34,\"text\":\"check_no_active_backup(){\"},{\"line\":43,\"text\":\"mapfile -t CRIT < <(HOMELAB_BACKUP_GFS_POLICY=\\\"$LIVE_POLICY\\\" HOMELAB_BACKUP_TARGET_REGISTRY=\\\"$LIVE_REGISTRY\\\" \\\"$LIVE_HELPER\\\" critical-logicals)\"},{\"line\":46,\"text\":\"systemctl is-enabled --quiet homelab-backup-retention-gc.timer || die VERIFY_TIMER_NOT_ENABLED\"},{\"line\":47,\"text\":\"systemctl is-active --quiet homelab-backup-retention-gc.timer || die VERIFY_TIMER_NOT_ACTIVE\"},{\"line\":48,\"text\":\"if systemctl is-failed --quiet homelab-backup-retention-gc.service; then die VERIFY_RETENTION_SERVICE_FAILED; fi\"}],\"git_path\":\"tasks/backup-gfs-lifecycle-remediation-v1/phases/verify.sh\",\"line_count\":50,\"path\":\"phases/verify.sh\",\"phase\":\"verify\",\"rc\":0,\"sha256\":\"b3589070dc915211e091984800ec76976fef74669288440103bcb7c1eb69e0c4\"}]\nWORKING_TASK_LINT={\"rc\":0,\"stderr_lines\":[],\"stdout_lines\":[\"LINT_STATUS=OK\",\"TASK_ID=backup-gfs-lifecycle-remediation-v1\",\"POLICY_ID=homelab-admin-guardrails-v1.2\",\"RULES_CHECKED=14\",\"SOURCE_FILES_CHECKED=7\"]}\nWORKING_TASK_VALIDATE={\"rc\":0,\"stderr_lines\":[],\"stdout_lines\":[\"LINT_STATUS=OK\",\"TASK_ID=backup-gfs-lifecycle-remediation-v1\",\"POLICY_ID=homelab-admin-guardrails-v1.2\",\"RULES_CHECKED=14\",\"SOURCE_FILES_CHECKED=7\",\"TASK_VALID=YES\",\"TASK_ID=backup-gfs-lifecycle-remediation-v1\",\"TASK_SCOPE=controlled_apply\",\"PRODUCTION_CHANGE=YES\"]}\nLIVE_POLICY_META={\"exists\":true,\"expected\":\"ea6526bec7d7591bef876799cecddff4849631a936edc9f593b47211fbad715c\",\"match\":true,\"sha256\":\"ea6526bec7d7591bef876799cecddff4849631a936edc9f593b47211fbad715c\"}\nLIVE_HELPER_META={\"exists\":true,\"expected\":\"6b7ec1ab3ee1c540a9113b5620c3b4b5a50de6536f3a069d31b2e1243f23bafa\",\"match\":true,\"sha256\":\"6b7ec1ab3ee1c540a9113b5620c3b4b5a50de6536f3a069d31b2e1243f23bafa\"}\nLIVE_REGISTRY_META={\"exists\":true,\"expected\":\"6ecf034ca03b52a1e6beceeae81d86a623885462c095d50b133aea4048a4626e\",\"match\":true,\"sha256\":\"6ecf034ca03b52a1e6beceeae81d86a623885462c095d50b133aea4048a4626e\"}\nRETENTION_UNIT_STATE={\"homelab-backup-retention-gc.service\":{\"ActiveState\":{\"rc\":0,\"value\":\"failed\"},\"LastTriggerUSec\":{\"rc\":0,\"value\":\"\"},\"LoadState\":{\"rc\":0,\"value\":\"loaded\"},\"NextElapseUSecRealtime\":{\"rc\":0,\"value\":\"\"},\"Result\":{\"rc\":0,\"value\":\"exit-code\"},\"SubState\":{\"rc\":0,\"value\":\"failed\"},\"UnitFileState\":{\"rc\":0,\"value\":\"static\"}},\"homelab-backup-retention-gc.timer\":{\"ActiveState\":{\"rc\":0,\"value\":\"active\"},\"LastTriggerUSec\":{\"rc\":0,\"value\":\"Mon 2026-09-21 03:22:42 MSK\"},\"LoadState\":{\"rc\":0,\"value\":\"loaded\"},\"NextElapseUSecRealtime\":{\"rc\":0,\"value\":\"Tue 2026-09-22 03:32:10 MSK\"},\"Result\":{\"rc\":0,\"value\":\"success\"},\"SubState\":{\"rc\":0,\"value\":\"waiting\"},\"UnitFileState\":{\"rc\":0,\"value\":\"enabled\"}}}\nDIRTY_PROVENANCE_CLASSIFICATION={\"added_timer_mutate\":true,\"added_timer_write\":true,\"consistent_with_1028_pre_tools_common_patch\":true,\"source_hold\":true,\"source_reenable\":true}\nNO_MUTATION=true\nNO_REPO_WRITE=true\nNO_GIT_FETCH=true\nNO_GIT_COMMIT=true\nNO_GIT_PUSH_UPDATE=true\nNO_PRODUCTION_MUTATION=true\nNO_SERVICE_ACTION=true\nNO_BACKUP_STARTED=true\nNO_RESTORE_STARTED=true\nNO_RETENTION_STARTED=true\nNO_DELETE=true\nNO_MAIL_SENT=true\nRCA_DURATION_SEC=0.219\nTASK_RESULT=PASS_HOMELAB_BACKUP_GFS_DIRTY_TASK_RCA_READONLY\nHOMELAB_RESULT_CONTRACT={\"changes_made\":false,\"command_id\":\"SUPPORT-260921-HOMELAB-BACKUP-GFS-DIRTY-TASK-RCA-READONLY-1030R1\",\"rollback_restored\":null,\"rollback_started\":false,\"status\":\"OK\",\"version\":1}\nWORKERS2_BACKUP_GFS_DIRTY_TASK_RCA_END=1\n" } diff --git a/runtime/latest.txt b/runtime/latest.txt index 24dedf18..25584197 100644 --- a/runtime/latest.txt +++ b/runtime/latest.txt @@ -1,22 +1,22 @@ CHAT_OUTPUT_BEGIN -COMMAND_ID=SUPPORT-260921-HOMELAB-BACKUP-GFS-TASK-STRUCTURE-RCA-READONLY-1029R1 -STATUS=FAIL -RC=1 +COMMAND_ID=SUPPORT-260921-HOMELAB-BACKUP-GFS-DIRTY-TASK-RCA-READONLY-1030R1 +STATUS=OK +RC=0 HOST=pve01 MODE=read-only -COMPONENT=homelab-backup-gfs-task-structure-rca +COMPONENT=homelab-backup-gfs-dirty-task-rca REFERENCE_REGISTER_CHECK=OK REFERENCE_SHA256=5a3d8e5154c41cb582a4e0aca68090be1f0138918bf82131a948df326f9d8d66 ERROR_REGISTER_CHECK=OK ERROR_REGISTER_SHA256=3b09a553ec0f527ed3afeed4753f52a74ee3036045bbfb3c685e9f8af4ba7ba0 -COMMAND_SHA256=b18c567397a9d435c5d98c037e2ffdcce4c927fbeb0b3f6a156527cc54b6283a +COMMAND_SHA256=7045251473b9b986be7411da3ca1e361d7158b97f80017ab93cc40fb00474618 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=1 +COMMAND_RC=0 CHANGES_MADE=false ROLLBACK_STARTED=false ROLLBACK_RESTORED=null @@ -24,27 +24,56 @@ MUTATION_OUTCOME=NO_MUTATION SANITIZED=yes SECRETS_INCLUDED=no PRIVATE_ADDRESSES_INCLUDED=no -RAW_EVIDENCE_SHA256=8712772631a47d281419503dba2be7ab6363355934fe8b4bd11005c8ade3d2ee -SANITIZED_OUTPUT_SHA256=8712772631a47d281419503dba2be7ab6363355934fe8b4bd11005c8ade3d2ee +RAW_EVIDENCE_SHA256=16f700abb07690dcd6fbcf11b671c2111c64f1b98751e4284ff0d906d9e80d61 +SANITIZED_OUTPUT_SHA256=16f700abb07690dcd6fbcf11b671c2111c64f1b98751e4284ff0d906d9e80d61 OUTPUT_BEGIN -Traceback (most recent call last): - File "", line 1, in - import base64,zlib;exec(compile(zlib.decompress(base64.b64decode("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")).decode("utf-8"),"w2_gfs_task_structure_rca","exec")) - ~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "w2_gfs_task_structure_rca", line 55, in -RuntimeError: POST1028_REPO_STATE_UNEXPECTED -WORKERS2_BACKUP_GFS_TASK_STRUCTURE_RCA_BEGIN=1 -COMMAND_ID=SUPPORT-260921-HOMELAB-BACKUP-GFS-TASK-STRUCTURE-RCA-READONLY-1029R1 +WORKERS2_BACKUP_GFS_DIRTY_TASK_RCA_BEGIN=1 +COMMAND_ID=SUPPORT-260921-HOMELAB-BACKUP-GFS-DIRTY-TASK-RCA-READONLY-1030R1 MODE=read-only -COMPONENT=homelab-backup-gfs-task-structure-rca +COMPONENT=homelab-backup-gfs-dirty-task-rca HOST=pve01 UID=0 MUTATION_BOUNDARY=READ_ONLY_NO_REPO_WRITE_NO_GIT_FETCH_NO_GIT_COMMIT_NO_PUSH_NO_PRODUCTION_NO_SERVICE_ACTION_NO_BACKUP_NO_RESTORE_NO_RETENTION_NO_DELETE_NO_MAIL WORKTREE_BRANCH=cr-2026-1005-backup-v2-health-alerting-remediation WORKTREE_HEAD=46c6f9aaf8fa93ce9f0cee686f948704c1a61336 WORKTREE_HEAD_EXPECTED=true -WORKTREE_CLEAN=false WORKTREE_STATUS_LINES=[" M tasks/backup-gfs-lifecycle-remediation-v1/task.json"] +DIRTY_PATHS=["tasks/backup-gfs-lifecycle-remediation-v1/task.json"] +ONLY_TASK_JSON_DIRTY=true +TASK_JSON_DIFF_RC=0 +TASK_JSON_DIFF_LINES=["diff --git a/tasks/backup-gfs-lifecycle-remediation-v1/task.json b/tasks/backup-gfs-lifecycle-remediation-v1/task.json","index 89e5607..9d2f446 100644","--- a/tasks/backup-gfs-lifecycle-remediation-v1/task.json","+++ b/tasks/backup-gfs-lifecycle-remediation-v1/task.json","@@ -42,32 +42,34 @@"," \"desired_state_clean\": false,"," \"failed_units_max\": 5"," },"," \"mutates\": ["," \"/var/lib/homelab-admin/staging/backup-gfs-lifecycle-remediation-v1\","," \"/etc/homelab-backup/gfs-retention.json\","," \"/usr/local/libexec/homelab-backup-gfs-policy\","," \"systemd:homelab-backup-retention-gc.service\",","- \"/var/lib/homelab-admin/seals/backup-gfs-lifecycle-remediation-v1.json\"","+ \"/var/lib/homelab-admin/seals/backup-gfs-lifecycle-remediation-v1.json\",","+ \"systemd:homelab-backup-retention-gc.timer\""," ],"," \"mutation_scope\": \"controlled_apply\","," \"no_change_assertions\": ["," \"/etc/homelab-backup/targets.json exact bytes\","," \"homelab-backup-v2 runtime and timer\",","- \"homelab-backup-retention-gc timer schedule and enabled/active state\","," \"all cloud backup generations and replica objects\","," \"all restore evidence\","," \"rclone configuration\","," \"network\","," \"dns\","," \"known_hosts\","," \"backup and restore execution count remains zero\","," \"retention GC execution count remains zero\",","- \"cloud delete count remains zero\"","+ \"cloud delete count remains zero\",","+ \"homelab-backup-retention-gc timer unit bytes and schedule unchanged; enablement intentionally held disabled/inactive after apply\",","+ \"homelab-backup-retention-gc service never started by this task\""," ],"," \"phases\": {"," \"apply\": \"phases/apply.sh\","," \"dry-run\": \"phases/dry-run.sh\","," \"preflight\": \"phases/preflight.sh\","," \"prepare\": \"phases/prepare.sh\","," \"rollback\": \"phases/rollback.sh\","," \"seal\": \"phases/seal.sh\",","@@ -92,27 +94,31 @@"," \"source_of_truth\": {"," \"baseline_helper_sha256\": \"6b7ec1ab3ee1c540a9113b5620c3b4b5a50de6536f3a069d31b2e1243f23bafa\","," \"baseline_policy_sha256\": \"ea6526bec7d7591bef876799cecddff4849631a936edc9f593b47211fbad715c\","," \"candidate_helper_sha256\": \"a1aed0c6039f8095bd5da7f62b47f4ee6932df98c4e0e7420d3006df86bd5c94\","," \"candidate_policy_sha256\": \"2c7674045dd5c68cc48d348d616494dbbe145df460a8e85d97a2c5c153ec792d\","," \"change_id\": \"CR-2026-1005\","," \"cloud_deletes\": false,"," \"cloud_writes\": false,","+ \"package_parent_commit\": \"46c6f9aaf8fa93ce9f0cee686f948704c1a61336\","," \"parent_commit\": \"0d62d4a2077047b9b040a9378085ece09dd15883\",","+ \"retention_timer_hold_after_apply\": true,","+ \"retention_timer_reenable_requires_future_safe_plan\": true,"," \"target_registry_sha256\": \"6ecf034ca03b52a1e6beceeae81d86a623885462c095d50b133aea4048a4626e\""," },"," \"target_host\": \"pve01.gram1.ru\","," \"task_id\": \"backup-gfs-lifecycle-remediation-v1\","," \"writes\": ["," \"/var/lib/homelab-admin/staging/backup-gfs-lifecycle-remediation-v1\","," \"/etc/homelab-backup/gfs-retention.json\","," \"/usr/local/libexec/homelab-backup-gfs-policy\","," \"/var/lib/homelab-admin/seals/backup-gfs-lifecycle-remediation-v1.json\","," \"$HOMELAB_RUN_DIR/preflight.json\","," \"$HOMELAB_RUN_DIR/prepare.json\","," \"$HOMELAB_RUN_DIR/dry-run.json\","," \"$HOMELAB_RUN_DIR/apply.json\","," \"$HOMELAB_RUN_DIR/verify.json\","," \"$HOMELAB_RUN_DIR/rollback.json\",","- \"$HOMELAB_RUN_DIR/seal.json\"","+ \"$HOMELAB_RUN_DIR/seal.json\",","+ \"systemd:homelab-backup-retention-gc.timer\""," ]"," }"] +TASK_JSON_DIFF_SHA256=4b0f0bf4cb0d00d48e702d78823ab8bf2842c854d665bfd33bcc997d163c09b1 +HEAD_TASK_JSON_SHA256=665319f09578db5e0f5b3260517c470cf21fe4f6da6366886f8f283c8a895cd0 +WORK_TASK_JSON_SHA256=861bac805089ed92400df50824d3afeb5dbf312d96f268a8351a1f5e64f719a7 +TASK_JSON_SEMANTIC_CHANGES=[{"after":["/var/lib/homelab-admin/staging/backup-gfs-lifecycle-remediation-v1","/etc/homelab-backup/gfs-retention.json","/usr/local/libexec/homelab-backup-gfs-policy","systemd:homelab-backup-retention-gc.service","/var/lib/homelab-admin/seals/backup-gfs-lifecycle-remediation-v1.json","systemd:homelab-backup-retention-gc.timer"],"before":["/var/lib/homelab-admin/staging/backup-gfs-lifecycle-remediation-v1","/etc/homelab-backup/gfs-retention.json","/usr/local/libexec/homelab-backup-gfs-policy","systemd:homelab-backup-retention-gc.service","/var/lib/homelab-admin/seals/backup-gfs-lifecycle-remediation-v1.json"],"change":"list_changed","path":"$.mutates"},{"after":["/etc/homelab-backup/targets.json exact bytes","homelab-backup-v2 runtime and timer","all cloud backup generations and replica objects","all restore evidence","rclone configuration","network","dns","known_hosts","backup and restore execution count remains zero","retention GC execution count remains zero","cloud delete count remains zero","homelab-backup-retention-gc timer unit bytes and schedule unchanged; enablement intentionally held disabled/inactive after apply","homelab-backup-retention-gc service never started by this task"],"before":["/etc/homelab-backup/targets.json exact bytes","homelab-backup-v2 runtime and timer","homelab-backup-retention-gc timer schedule and enabled/active state","all cloud backup generations and replica objects","all restore evidence","rclone configuration","network","dns","known_hosts","backup and restore execution count remains zero","retention GC execution count remains zero","cloud delete count remains zero"],"change":"list_changed","path":"$.no_change_assertions"},{"after":"46c6f9aaf8fa93ce9f0cee686f948704c1a61336","change":"added","path":"$.source_of_truth.package_parent_commit"},{"after":true,"change":"added","path":"$.source_of_truth.retention_timer_hold_after_apply"},{"after":true,"change":"added","path":"$.source_of_truth.retention_timer_reenable_requires_future_safe_plan"},{"after":["/var/lib/homelab-admin/staging/backup-gfs-lifecycle-remediation-v1","/etc/homelab-backup/gfs-retention.json","/usr/local/libexec/homelab-backup-gfs-policy","/var/lib/homelab-admin/seals/backup-gfs-lifecycle-remediation-v1.json","$HOMELAB_RUN_DIR/preflight.json","$HOMELAB_RUN_DIR/prepare.json","$HOMELAB_RUN_DIR/dry-run.json","$HOMELAB_RUN_DIR/apply.json","$HOMELAB_RUN_DIR/verify.json","$HOMELAB_RUN_DIR/rollback.json","$HOMELAB_RUN_DIR/seal.json","systemd:homelab-backup-retention-gc.timer"],"before":["/var/lib/homelab-admin/staging/backup-gfs-lifecycle-remediation-v1","/etc/homelab-backup/gfs-retention.json","/usr/local/libexec/homelab-backup-gfs-policy","/var/lib/homelab-admin/seals/backup-gfs-lifecycle-remediation-v1.json","$HOMELAB_RUN_DIR/preflight.json","$HOMELAB_RUN_DIR/prepare.json","$HOMELAB_RUN_DIR/dry-run.json","$HOMELAB_RUN_DIR/apply.json","$HOMELAB_RUN_DIR/verify.json","$HOMELAB_RUN_DIR/rollback.json","$HOMELAB_RUN_DIR/seal.json"],"change":"list_changed","path":"$.writes"}] +TASK_JSON_SEMANTIC_CHANGE_COUNT=6 +HEAD_TASK_FILE_TREE=["tasks/backup-gfs-lifecycle-remediation-v1/README.md","tasks/backup-gfs-lifecycle-remediation-v1/assets/baseline-gfs-retention.json","tasks/backup-gfs-lifecycle-remediation-v1/assets/baseline-homelab-backup-gfs-policy","tasks/backup-gfs-lifecycle-remediation-v1/assets/gfs-retention.json","tasks/backup-gfs-lifecycle-remediation-v1/assets/homelab-backup-gfs-policy","tasks/backup-gfs-lifecycle-remediation-v1/assets/targets.json","tasks/backup-gfs-lifecycle-remediation-v1/phases/apply.sh","tasks/backup-gfs-lifecycle-remediation-v1/phases/dry-run.sh","tasks/backup-gfs-lifecycle-remediation-v1/phases/preflight.sh","tasks/backup-gfs-lifecycle-remediation-v1/phases/prepare.sh","tasks/backup-gfs-lifecycle-remediation-v1/phases/rollback.sh","tasks/backup-gfs-lifecycle-remediation-v1/phases/seal.sh","tasks/backup-gfs-lifecycle-remediation-v1/phases/verify.sh","tasks/backup-gfs-lifecycle-remediation-v1/task.json"] +HEAD_TASK_FILE_COUNT=14 +HEAD_TOOLS_COMMON_EXISTS=false +HEAD_PHASE_STRUCTURE=[{"anchor_counts":{"check_no_active_backup_call":1,"check_no_active_backup_def":1,"require_assets_def":1,"require_live_baseline_def":1,"rollback_now_def":1,"service_mentions":1,"timer_mentions":0,"validate_candidate_def":1},"focus_lines":[{"line":2,"text":"set -Eeuo pipefail"},{"line":18,"text":"die(){ echo \"ROOT_CAUSE=$1|ROOT_CAUSE_COUNT=1\" >&2; exit \"${2:-66}\"; }"},{"line":19,"text":"on_err(){ rc=$?; echo \"ROOT_CAUSE=UNEXPECTED_RUNTIME_FAILURE|ROOT_CAUSE_COUNT=1|RC=$rc\" >&2; exit \"$rc\"; }"},{"line":20,"text":"trap on_err ERR"},{"line":21,"text":"require_live_baseline(){"},{"line":26,"text":"require_assets(){"},{"line":31,"text":"validate_candidate(){"},{"line":34,"text":"check_no_active_backup(){"},{"line":46,"text":"rollback_now(){"},{"line":47,"text":" install -m 0644 -o root -g root \"$STAGE/gfs-retention.json\" \"$LIVE_POLICY\""},{"line":48,"text":" install -m 0755 -o root -g root \"$STAGE/homelab-backup-gfs-policy\" \"$LIVE_HELPER\""},{"line":50,"text":"trap 'rc=$?; rollback_now || true; echo \"ROOT_CAUSE=APPLY_FAILED|ROOT_CAUSE_COUNT=1|RC=$rc\" >&2; exit \"$rc\"' ERR"},{"line":51,"text":"install -m 0644 -o root -g root \"$ASSET_POLICY\" \"$LIVE_POLICY\""},{"line":52,"text":"install -m 0755 -o root -g root \"$ASSET_HELPER\" \"$LIVE_HELPER\""},{"line":56,"text":"systemctl reset-failed homelab-backup-retention-gc.service"},{"line":57,"text":"trap on_err ERR"}],"git_path":"tasks/backup-gfs-lifecycle-remediation-v1/phases/apply.sh","line_count":59,"path":"phases/apply.sh","phase":"apply","rc":0,"sha256":"22d00f65cb8a2011d34e8d61ca07082c9722d59fe735152059884ac75666d81c"},{"anchor_counts":{"check_no_active_backup_call":1,"check_no_active_backup_def":1,"require_assets_def":1,"require_live_baseline_def":1,"rollback_now_def":0,"service_mentions":0,"timer_mentions":0,"validate_candidate_def":1},"focus_lines":[{"line":2,"text":"set -Eeuo pipefail"},{"line":18,"text":"die(){ echo \"ROOT_CAUSE=$1|ROOT_CAUSE_COUNT=1\" >&2; exit \"${2:-66}\"; }"},{"line":19,"text":"on_err(){ rc=$?; echo \"ROOT_CAUSE=UNEXPECTED_RUNTIME_FAILURE|ROOT_CAUSE_COUNT=1|RC=$rc\" >&2; exit \"$rc\"; }"},{"line":20,"text":"trap on_err ERR"},{"line":21,"text":"require_live_baseline(){"},{"line":26,"text":"require_assets(){"},{"line":31,"text":"validate_candidate(){"},{"line":34,"text":"check_no_active_backup(){"}],"git_path":"tasks/backup-gfs-lifecycle-remediation-v1/phases/dry-run.sh","line_count":52,"path":"phases/dry-run.sh","phase":"dry-run","rc":0,"sha256":"9ce7dce7604a8f116c1b874f8348692d0c19eb7058e51ae4d2f2165a41f6cdba"},{"anchor_counts":{"check_no_active_backup_call":0,"check_no_active_backup_def":1,"require_assets_def":1,"require_live_baseline_def":1,"rollback_now_def":0,"service_mentions":0,"timer_mentions":2,"validate_candidate_def":1},"focus_lines":[{"line":2,"text":"set -Eeuo pipefail"},{"line":18,"text":"die(){ echo \"ROOT_CAUSE=$1|ROOT_CAUSE_COUNT=1\" >&2; exit \"${2:-66}\"; }"},{"line":19,"text":"on_err(){ rc=$?; echo \"ROOT_CAUSE=UNEXPECTED_RUNTIME_FAILURE|ROOT_CAUSE_COUNT=1|RC=$rc\" >&2; exit \"$rc\"; }"},{"line":20,"text":"trap on_err ERR"},{"line":21,"text":"require_live_baseline(){"},{"line":26,"text":"require_assets(){"},{"line":31,"text":"validate_candidate(){"},{"line":34,"text":"check_no_active_backup(){"},{"line":42,"text":"systemctl is-enabled --quiet homelab-backup-retention-gc.timer || die RETENTION_TIMER_NOT_ENABLED"},{"line":43,"text":"systemctl is-active --quiet homelab-backup-retention-gc.timer || die RETENTION_TIMER_NOT_ACTIVE"}],"git_path":"tasks/backup-gfs-lifecycle-remediation-v1/phases/preflight.sh","line_count":54,"path":"phases/preflight.sh","phase":"preflight","rc":0,"sha256":"336de004b64c90eac8769dbd0e7e4d2637ae700d48149d000ec04b39355a5a6a"},{"anchor_counts":{"check_no_active_backup_call":1,"check_no_active_backup_def":1,"require_assets_def":1,"require_live_baseline_def":1,"rollback_now_def":0,"service_mentions":0,"timer_mentions":0,"validate_candidate_def":1},"focus_lines":[{"line":2,"text":"set -Eeuo pipefail"},{"line":18,"text":"die(){ echo \"ROOT_CAUSE=$1|ROOT_CAUSE_COUNT=1\" >&2; exit \"${2:-66}\"; }"},{"line":19,"text":"on_err(){ rc=$?; echo \"ROOT_CAUSE=UNEXPECTED_RUNTIME_FAILURE|ROOT_CAUSE_COUNT=1|RC=$rc\" >&2; exit \"$rc\"; }"},{"line":20,"text":"trap on_err ERR"},{"line":21,"text":"require_live_baseline(){"},{"line":26,"text":"require_assets(){"},{"line":31,"text":"validate_candidate(){"},{"line":34,"text":"check_no_active_backup(){"}],"git_path":"tasks/backup-gfs-lifecycle-remediation-v1/phases/prepare.sh","line_count":53,"path":"phases/prepare.sh","phase":"prepare","rc":0,"sha256":"fe72a477297169f6bad1449032ab56b4b23a700aeb9828b3cb5b78304e020dba"},{"anchor_counts":{"check_no_active_backup_call":0,"check_no_active_backup_def":1,"require_assets_def":1,"require_live_baseline_def":1,"rollback_now_def":0,"service_mentions":0,"timer_mentions":0,"validate_candidate_def":1},"focus_lines":[{"line":2,"text":"set -Eeuo pipefail"},{"line":18,"text":"die(){ echo \"ROOT_CAUSE=$1|ROOT_CAUSE_COUNT=1\" >&2; exit \"${2:-66}\"; }"},{"line":19,"text":"on_err(){ rc=$?; echo \"ROOT_CAUSE=UNEXPECTED_RUNTIME_FAILURE|ROOT_CAUSE_COUNT=1|RC=$rc\" >&2; exit \"$rc\"; }"},{"line":20,"text":"trap on_err ERR"},{"line":21,"text":"require_live_baseline(){"},{"line":26,"text":"require_assets(){"},{"line":31,"text":"validate_candidate(){"},{"line":34,"text":"check_no_active_backup(){"},{"line":43,"text":"install -m 0644 -o root -g root \"$STAGE/gfs-retention.json\" \"$LIVE_POLICY\""},{"line":44,"text":"install -m 0755 -o root -g root \"$STAGE/homelab-backup-gfs-policy\" \"$LIVE_HELPER\""}],"git_path":"tasks/backup-gfs-lifecycle-remediation-v1/phases/rollback.sh","line_count":48,"path":"phases/rollback.sh","phase":"rollback","rc":0,"sha256":"731594042479cdcb26a9bebb5852ab7e639541071195a235a671fc7e5562cd4a"},{"anchor_counts":{"check_no_active_backup_call":0,"check_no_active_backup_def":1,"require_assets_def":1,"require_live_baseline_def":1,"rollback_now_def":0,"service_mentions":0,"timer_mentions":0,"validate_candidate_def":1},"focus_lines":[{"line":2,"text":"set -Eeuo pipefail"},{"line":18,"text":"die(){ echo \"ROOT_CAUSE=$1|ROOT_CAUSE_COUNT=1\" >&2; exit \"${2:-66}\"; }"},{"line":19,"text":"on_err(){ rc=$?; echo \"ROOT_CAUSE=UNEXPECTED_RUNTIME_FAILURE|ROOT_CAUSE_COUNT=1|RC=$rc\" >&2; exit \"$rc\"; }"},{"line":20,"text":"trap on_err ERR"},{"line":21,"text":"require_live_baseline(){"},{"line":26,"text":"require_assets(){"},{"line":31,"text":"validate_candidate(){"},{"line":34,"text":"check_no_active_backup(){"}],"git_path":"tasks/backup-gfs-lifecycle-remediation-v1/phases/seal.sh","line_count":49,"path":"phases/seal.sh","phase":"seal","rc":0,"sha256":"719d37dcff71ca0c944df2410e81d70574bdbeab4bc60cd79ac15b783405e56f"},{"anchor_counts":{"check_no_active_backup_call":0,"check_no_active_backup_def":1,"require_assets_def":1,"require_live_baseline_def":1,"rollback_now_def":0,"service_mentions":1,"timer_mentions":2,"validate_candidate_def":1},"focus_lines":[{"line":2,"text":"set -Eeuo pipefail"},{"line":18,"text":"die(){ echo \"ROOT_CAUSE=$1|ROOT_CAUSE_COUNT=1\" >&2; exit \"${2:-66}\"; }"},{"line":19,"text":"on_err(){ rc=$?; echo \"ROOT_CAUSE=UNEXPECTED_RUNTIME_FAILURE|ROOT_CAUSE_COUNT=1|RC=$rc\" >&2; exit \"$rc\"; }"},{"line":20,"text":"trap on_err ERR"},{"line":21,"text":"require_live_baseline(){"},{"line":26,"text":"require_assets(){"},{"line":31,"text":"validate_candidate(){"},{"line":34,"text":"check_no_active_backup(){"},{"line":43,"text":"mapfile -t CRIT < <(HOMELAB_BACKUP_GFS_POLICY=\"$LIVE_POLICY\" HOMELAB_BACKUP_TARGET_REGISTRY=\"$LIVE_REGISTRY\" \"$LIVE_HELPER\" critical-logicals)"},{"line":46,"text":"systemctl is-enabled --quiet homelab-backup-retention-gc.timer || die VERIFY_TIMER_NOT_ENABLED"},{"line":47,"text":"systemctl is-active --quiet homelab-backup-retention-gc.timer || die VERIFY_TIMER_NOT_ACTIVE"},{"line":48,"text":"if systemctl is-failed --quiet homelab-backup-retention-gc.service; then die VERIFY_RETENTION_SERVICE_FAILED; fi"}],"git_path":"tasks/backup-gfs-lifecycle-remediation-v1/phases/verify.sh","line_count":50,"path":"phases/verify.sh","phase":"verify","rc":0,"sha256":"b3589070dc915211e091984800ec76976fef74669288440103bcb7c1eb69e0c4"}] +WORKING_TASK_LINT={"rc":0,"stderr_lines":[],"stdout_lines":["LINT_STATUS=OK","TASK_ID=backup-gfs-lifecycle-remediation-v1","POLICY_ID=homelab-admin-guardrails-v1.2","RULES_CHECKED=14","SOURCE_FILES_CHECKED=7"]} +WORKING_TASK_VALIDATE={"rc":0,"stderr_lines":[],"stdout_lines":["LINT_STATUS=OK","TASK_ID=backup-gfs-lifecycle-remediation-v1","POLICY_ID=homelab-admin-guardrails-v1.2","RULES_CHECKED=14","SOURCE_FILES_CHECKED=7","TASK_VALID=YES","TASK_ID=backup-gfs-lifecycle-remediation-v1","TASK_SCOPE=controlled_apply","PRODUCTION_CHANGE=YES"]} +LIVE_POLICY_META={"exists":true,"expected":"ea6526bec7d7591bef876799cecddff4849631a936edc9f593b47211fbad715c","match":true,"sha256":"ea6526bec7d7591bef876799cecddff4849631a936edc9f593b47211fbad715c"} +LIVE_HELPER_META={"exists":true,"expected":"6b7ec1ab3ee1c540a9113b5620c3b4b5a50de6536f3a069d31b2e1243f23bafa","match":true,"sha256":"6b7ec1ab3ee1c540a9113b5620c3b4b5a50de6536f3a069d31b2e1243f23bafa"} +LIVE_REGISTRY_META={"exists":true,"expected":"6ecf034ca03b52a1e6beceeae81d86a623885462c095d50b133aea4048a4626e","match":true,"sha256":"6ecf034ca03b52a1e6beceeae81d86a623885462c095d50b133aea4048a4626e"} +RETENTION_UNIT_STATE={"homelab-backup-retention-gc.service":{"ActiveState":{"rc":0,"value":"failed"},"LastTriggerUSec":{"rc":0,"value":""},"LoadState":{"rc":0,"value":"loaded"},"NextElapseUSecRealtime":{"rc":0,"value":""},"Result":{"rc":0,"value":"exit-code"},"SubState":{"rc":0,"value":"failed"},"UnitFileState":{"rc":0,"value":"static"}},"homelab-backup-retention-gc.timer":{"ActiveState":{"rc":0,"value":"active"},"LastTriggerUSec":{"rc":0,"value":"Mon 2026-09-21 03:22:42 MSK"},"LoadState":{"rc":0,"value":"loaded"},"NextElapseUSecRealtime":{"rc":0,"value":"Tue 2026-09-22 03:32:10 MSK"},"Result":{"rc":0,"value":"success"},"SubState":{"rc":0,"value":"waiting"},"UnitFileState":{"rc":0,"value":"enabled"}}} +DIRTY_PROVENANCE_CLASSIFICATION={"added_timer_mutate":true,"added_timer_write":true,"consistent_with_1028_pre_tools_common_patch":true,"source_hold":true,"source_reenable":true} +NO_MUTATION=true +NO_REPO_WRITE=true +NO_GIT_FETCH=true +NO_GIT_COMMIT=true +NO_GIT_PUSH_UPDATE=true +NO_PRODUCTION_MUTATION=true +NO_SERVICE_ACTION=true +NO_BACKUP_STARTED=true +NO_RESTORE_STARTED=true +NO_RETENTION_STARTED=true +NO_DELETE=true +NO_MAIL_SENT=true +RCA_DURATION_SEC=0.219 +TASK_RESULT=PASS_HOMELAB_BACKUP_GFS_DIRTY_TASK_RCA_READONLY +HOMELAB_RESULT_CONTRACT={"changes_made":false,"command_id":"SUPPORT-260921-HOMELAB-BACKUP-GFS-DIRTY-TASK-RCA-READONLY-1030R1","rollback_restored":null,"rollback_started":false,"status":"OK","version":1} +WORKERS2_BACKUP_GFS_DIRTY_TASK_RCA_END=1 OUTPUT_END CHAT_OUTPUT_END