CHAT_OUTPUT_BEGIN
COMMAND_ID=SUPPORT-260921-HOMELAB-BACKUP-GFS-PARTIAL-RCA-READONLY-1013R1
STATUS=OK
RC=0
HOST=pve01
MODE=read-only
COMPONENT=homelab-backup-gfs-partial-rca
REFERENCE_REGISTER_CHECK=OK
REFERENCE_SHA256=5a3d8e5154c41cb582a4e0aca68090be1f0138918bf82131a948df326f9d8d66
ERROR_REGISTER_CHECK=OK
ERROR_REGISTER_SHA256=3b09a553ec0f527ed3afeed4753f52a74ee3036045bbfb3c685e9f8af4ba7ba0
COMMAND_SHA256=35b236613d6860b2e4136d3e1e3107102f08d5803afd08f853873173625af3d5
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=e7f29e20bf01daf4023cb87cd8aa68b8c9ab3150fb95414463311a5d198f6d2e
SANITIZED_OUTPUT_SHA256=e7f29e20bf01daf4023cb87cd8aa68b8c9ab3150fb95414463311a5d198f6d2e
OUTPUT_BEGIN
WORKERS2_BACKUP_GFS_PARTIAL_RCA_BEGIN=1
COMMAND_ID=SUPPORT-260921-HOMELAB-BACKUP-GFS-PARTIAL-RCA-READONLY-1013R1
MODE=read-only
COMPONENT=homelab-backup-gfs-partial-rca
HOST=pve01
UID=0
MUTATION_BOUNDARY=READ_ONLY_NO_FETCH_NO_RESET_NO_CHECKOUT_NO_WRITE_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=326622a4864fa9b5f43b69981733236bb42c4d7b
WORKTREE_STATUS_LINES=["?? tasks/backup-v2-health-alerting-remediation-v1/assets/baseline/backup-v2-release/entry504.py","?? tasks/backup-v2-health-alerting-remediation-v1/assets/baseline/backup-v2-release/fresh_lxc_helper.py","?? tasks/backup-v2-health-alerting-remediation-v1/assets/baseline/backup-v2-release/lxc_adapter.py","?? tasks/backup-v2-health-alerting-remediation-v1/assets/baseline/backup-v2-release/producer_exec_helper.py","?? tasks/backup-v2-health-alerting-remediation-v1/assets/baseline/backup-v2-release/qemu_adapter.py","?? tasks/backup-v2-health-alerting-remediation-v1/assets/baseline/backup-v2-release/scheduler_adapter.py","?? tasks/backup-v2-health-alerting-remediation-v1/assets/baseline/gfs-retention.json","?? tasks/backup-v2-health-alerting-remediation-v1/assets/baseline/homelab-alertmanager-backup-run","?? tasks/backup-v2-health-alerting-remediation-v1/assets/baseline/homelab-backup-audit","?? tasks/backup-v2-health-alerting-remediation-v1/assets/baseline/homelab-backup-audit.service","?? tasks/backup-v2-health-alerting-remediation-v1/assets/baseline/homelab-backup-audit.timer","?? tasks/backup-v2-health-alerting-remediation-v1/assets/baseline/homelab-backup-gfs-policy","?? tasks/backup-v2-health-alerting-remediation-v1/assets/baseline/homelab-backup-retention-gc","?? tasks/backup-v2-health-alerting-remediation-v1/assets/baseline/homelab-backup-retention-gc.service","?? tasks/backup-v2-health-alerting-remediation-v1/assets/baseline/homelab-backup-retention-gc.timer","?? tasks/backup-v2-health-alerting-remediation-v1/assets/baseline/homelab-backup-target-registry","?? tasks/backup-v2-health-alerting-remediation-v1/assets/baseline/homelab-backup-v2","?? tasks/backup-v2-health-alerting-remediation-v1/assets/baseline/homelab-backup-v2.service","?? tasks/backup-v2-health-alerting-remediation-v1/assets/baseline/homelab-backup-v2.timer","?? tasks/backup-v2-health-alerting-remediation-v1/assets/baseline/targets.json","?? tasks/backup-v2-health-alerting-remediation-v1/assets/candidate/gfs-retention.json"]
COMMITS_SINCE_BASE=0
CACHED_DIFF=[]
CHANGE_FILES=[]
TASK_FILES=[{"bytes":10566,"path":"tasks/backup-v2-health-alerting-remediation-v1/assets/baseline/backup-v2-release/entry504.py","sha256":"ca6876fa9c3b1465b045344a8ad46962de16972c7dadc4ac6257c7d225047793"},{"bytes":2320,"path":"tasks/backup-v2-health-alerting-remediation-v1/assets/baseline/backup-v2-release/fresh_lxc_helper.py","sha256":"dbb3e6dbb71b10797df736431d9501a752a0f8c439163c9a0bddb7f76747f011"},{"bytes":13825,"path":"tasks/backup-v2-health-alerting-remediation-v1/assets/baseline/backup-v2-release/lxc_adapter.py","sha256":"3fa7d194010d76f7c8bc95035ae8876262e9337903e310f45f45df88c266dc8d"},{"bytes":3449,"path":"tasks/backup-v2-health-alerting-remediation-v1/assets/baseline/backup-v2-release/producer_exec_helper.py","sha256":"b3b97099bcd7126670f866e81faae6a42a96d869d9989e6a67f6ea6c871c90b3"},{"bytes":4627,"path":"tasks/backup-v2-health-alerting-remediation-v1/assets/baseline/backup-v2-release/qemu_adapter.py","sha256":"1906db42bd34bbe85eb46fd9797b3572d46e0a41c29d1c29be5f9df5e448f15b"},{"bytes":4097,"path":"tasks/backup-v2-health-alerting-remediation-v1/assets/baseline/backup-v2-release/scheduler_adapter.py","sha256":"a6f67159a64067773323f028126e3109e15cf17a8142cea5e6129970f1d4da96"},{"bytes":449,"path":"tasks/backup-v2-health-alerting-remediation-v1/assets/baseline/gfs-retention.json","sha256":"ea6526bec7d7591bef876799cecddff4849631a936edc9f593b47211fbad715c"},{"bytes":1806,"path":"tasks/backup-v2-health-alerting-remediation-v1/assets/baseline/homelab-alertmanager-backup-run","sha256":"6deef30b4708a7e5b2ac0f0d98bb6b37b22d858afde994483b67baa18dffdc2a"},{"bytes":39160,"path":"tasks/backup-v2-health-alerting-remediation-v1/assets/baseline/homelab-backup-audit","sha256":"1474c9ce58bbc1b3ae7437261d1bdb923232926fb2943c7c830253f8b284724c"},{"bytes":285,"path":"tasks/backup-v2-health-alerting-remediation-v1/assets/baseline/homelab-backup-audit.service","sha256":"7b64362ef0d0d7e59f5305afd642386082a275bba359c3c9b3def97dd6c2c4aa"},{"bytes":221,"path":"tasks/backup-v2-health-alerting-remediation-v1/assets/baseline/homelab-backup-audit.timer","sha256":"987695f83ee993bd4d716b8365308211110ac4c684f0bd9b17dfdb1e523e466a"},{"bytes":3455,"path":"tasks/backup-v2-health-alerting-remediation-v1/assets/baseline/homelab-backup-gfs-policy","sha256":"6b7ec1ab3ee1c540a9113b5620c3b4b5a50de6536f3a069d31b2e1243f23bafa"},{"bytes":32975,"path":"tasks/backup-v2-health-alerting-remediation-v1/assets/baseline/homelab-backup-retention-gc","sha256":"8adb6c10f5911f39c53775b89eac3cd1823f1ed34b4caccade5279c213e998a3"},{"bytes":327,"path":"tasks/backup-v2-health-alerting-remediation-v1/assets/baseline/homelab-backup-retention-gc.service","sha256":"0c49e10bdb225eeca0af5fca80aaf109addec2b18a6b892c0fe17c28b656ad7c"},{"bytes":237,"path":"tasks/backup-v2-health-alerting-remediation-v1/assets/baseline/homelab-backup-retention-gc.timer","sha256":"a0e763670745a5ef7c04b54da23114a013f47075cf36cceef0218bae9b82ea2f"},{"bytes":4406,"path":"tasks/backup-v2-health-alerting-remediation-v1/assets/baseline/homelab-backup-target-registry","sha256":"c681c44be7557d192d7b453b67e31164237874596168f1d4c78e1e926e2e9cb4"},{"bytes":1656,"path":"tasks/backup-v2-health-alerting-remediation-v1/assets/baseline/homelab-backup-v2","sha256":"5077444065c732451cb84898680f62361b21a24ef9eb4f191253e82ead524ea2"},{"bytes":309,"path":"tasks/backup-v2-health-alerting-remediation-v1/assets/baseline/homelab-backup-v2.service","sha256":"1ef3e6bc660767a1f29a6a0bfa8d1b7a2419370b2250764ca181c34c93188565"},{"bytes":192,"path":"tasks/backup-v2-health-alerting-remediation-v1/assets/baseline/homelab-backup-v2.timer","sha256":"5469057602452b303a01ccb8057085c1b0e447973e5ed198cebf7dd5daf58e9d"},{"bytes":4758,"path":"tasks/backup-v2-health-alerting-remediation-v1/assets/baseline/targets.json","sha256":"6ecf034ca03b52a1e6beceeae81d86a623885462c095d50b133aea4048a4626e"},{"bytes":436,"path":"tasks/backup-v2-health-alerting-remediation-v1/assets/candidate/gfs-retention.json","sha256":"2c7674045dd5c68cc48d348d616494dbbe145df460a8e85d97a2c5c153ec792d"}]
CANDIDATE_FILES=[{"bytes":436,"path":"tasks/backup-v2-health-alerting-remediation-v1/assets/candidate/gfs-retention.json","sha256":"2c7674045dd5c68cc48d348d616494dbbe145df460a8e85d97a2c5c153ec792d"}]
BASELINE_RELEASE_FILES=[{"bytes":10566,"path":"tasks/backup-v2-health-alerting-remediation-v1/assets/baseline/backup-v2-release/entry504.py","sha256":"ca6876fa9c3b1465b045344a8ad46962de16972c7dadc4ac6257c7d225047793"},{"bytes":2320,"path":"tasks/backup-v2-health-alerting-remediation-v1/assets/baseline/backup-v2-release/fresh_lxc_helper.py","sha256":"dbb3e6dbb71b10797df736431d9501a752a0f8c439163c9a0bddb7f76747f011"},{"bytes":13825,"path":"tasks/backup-v2-health-alerting-remediation-v1/assets/baseline/backup-v2-release/lxc_adapter.py","sha256":"3fa7d194010d76f7c8bc95035ae8876262e9337903e310f45f45df88c266dc8d"},{"bytes":3449,"path":"tasks/backup-v2-health-alerting-remediation-v1/assets/baseline/backup-v2-release/producer_exec_helper.py","sha256":"b3b97099bcd7126670f866e81faae6a42a96d869d9989e6a67f6ea6c871c90b3"},{"bytes":4627,"path":"tasks/backup-v2-health-alerting-remediation-v1/assets/baseline/backup-v2-release/qemu_adapter.py","sha256":"1906db42bd34bbe85eb46fd9797b3572d46e0a41c29d1c29be5f9df5e448f15b"},{"bytes":4097,"path":"tasks/backup-v2-health-alerting-remediation-v1/assets/baseline/backup-v2-release/scheduler_adapter.py","sha256":"a6f67159a64067773323f028126e3109e15cf17a8142cea5e6129970f1d4da96"}]
LIVE_GFS_META={"bytes":449,"exists":true,"sha256":"ea6526bec7d7591bef876799cecddff4849631a936edc9f593b47211fbad715c"}
LIVE_TARGETS_META={"bytes":4758,"exists":true,"sha256":"6ecf034ca03b52a1e6beceeae81d86a623885462c095d50b133aea4048a4626e"}
GFS_HELPER_META={"bytes":3455,"exists":true,"sha256":"6b7ec1ab3ee1c540a9113b5620c3b4b5a50de6536f3a069d31b2e1243f23bafa"}
GFS_CRITICAL_VM_LOGICALS=["vm110","vm111","vm112","vm113","vm130","vm150","vm160","vm170","vm200"]
ACTIVE_VM_LOGICALS=["vm110","vm111","vm112","vm113","vm130","vm150","vm160","vm170","vm171","vm190","vm9130"]
GFS_CRITICAL_ACTIVE_INTERSECTION=["vm110","vm111","vm112","vm113","vm130","vm150","vm160","vm170"]
GFS_CRITICAL_NOT_ACTIVE=["vm200"]
GFS_CRITICAL_RECORDS={"vm110":[{"id":"110","kind":"VM","lifecycle":"ACTIVE","logical_id":"vm110","owner":"pve01"}],"vm111":[{"id":"111","kind":"VM","lifecycle":"ACTIVE","logical_id":"vm111","owner":"pve02"}],"vm112":[{"id":"112","kind":"VM","lifecycle":"ACTIVE","logical_id":"vm112","owner":"pve01"}],"vm113":[{"id":"113","kind":"VM","lifecycle":"ACTIVE","logical_id":"vm113","owner":"pve02"}],"vm130":[{"id":"130","kind":"VM","lifecycle":"ACTIVE","logical_id":"vm130","owner":"pve03"}],"vm150":[{"id":"150","kind":"VM","lifecycle":"ACTIVE","logical_id":"vm150","owner":"pve01"}],"vm160":[{"id":"160","kind":"VM","lifecycle":"ACTIVE","logical_id":"vm160","owner":"pve02"}],"vm170":[{"id":"170","kind":"VM","lifecycle":"ACTIVE","logical_id":"vm170","owner":"pve01"}],"vm200":[{"id":"200","kind":"VM","lifecycle":"RETIRED_PRESERVE","logical_id":"vm200","owner":"pve03"}]}
LIVE_POLICY_VALIDATE={"path":"/etc/homelab-backup/gfs-retention.json","rc":66,"stderr_lines":["GFS_POLICY_ERROR=CRITICAL_NOT_ACTIVE_VM_vm200"],"stdout_lines":[]}
LIVE_POLICY_CRITICAL_LOGICALS={"rc":66,"stderr_lines":["GFS_POLICY_ERROR=CRITICAL_NOT_ACTIVE_VM_vm200"],"stdout_lines":[]}
CANDIDATE_GFS_EXISTS=true
CANDIDATE_GFS_META={"bytes":436,"critical_not_active":[],"critical_vm_logicals":["vm110","vm111","vm112","vm113","vm130","vm150","vm160","vm170"],"sha256":"2c7674045dd5c68cc48d348d616494dbbe145df460a8e85d97a2c5c153ec792d"}
CANDIDATE_POLICY_VALIDATE={"path":"/root/homelab-ops-cr-2026-1005/tasks/backup-v2-health-alerting-remediation-v1/assets/candidate/gfs-retention.json","rc":66,"stderr_lines":["GFS_POLICY_ERROR=CRITICAL_SET_INVALID"],"stdout_lines":[]}
CANDIDATE_POLICY_CRITICAL_LOGICALS={"rc":66,"stderr_lines":["GFS_POLICY_ERROR=CRITICAL_SET_INVALID"],"stdout_lines":[]}
IN_MEMORY_CORRECTED_CRITICAL_VM_LOGICALS=["vm110","vm111","vm112","vm113","vm130","vm150","vm160","vm170"]
IN_MEMORY_REMOVALS=["vm200"]
GFS_HELPER_VALIDATION_FOCUS=[{"line":4,"sha256":"f73eaf5c141167f26d3cd9b0cdfca9b1cb34bc48e2a47efcfe8473d4148a89c4","text":"REG=pathlib.Path(os.environ.get(\"HOMELAB_BACKUP_TARGET_REGISTRY\",\"/etc/homelab-backup/targets.json\"))"},{"line":11,"sha256":"17d911bfd01a1f638cca468224effdf6f9cc7ee8511bd556cb236fbc64e3e7ff","text":"    if c.get(\"completed_periods_only\") is not True or c.get(\"weekly_buckets\")!=4 or c.get(\"monthly_buckets\")!=6 or c.get(\"capacity_guard_max_free_fraction_milli\")!=500 or c.get(\"capacity_guard_target_max_age_seconds\")!=172800 or c.get(\"capacity_guard_cloud_max_age_seconds\")!=14400: die(\"POLICY_INVALID\",66)"},{"line":12,"sha256":"880f2144e950185b2bed0118c1ba10498b909a176b421d285cb96573a204c855","text":"    crit=c.get(\"critical_vm_logicals\")"},{"line":13,"sha256":"c44f6760ffd70ef6bcdc3064327167b3f0e6a79ae984f364195f1b218c62502a","text":"    if not isinstance(crit,list) or len(crit)!=9 or len(set(crit))!=9: die(\"CRITICAL_SET_INVALID\",66)"},{"line":14,"sha256":"a7894fb8f64ddd7cfe49ce592ad92002276da503fb5d9e2ea630aa9712b3555d","text":"    rows={x.get(\"logical_id\"):x for x in r.get(\"targets\",[])}"},{"line":17,"sha256":"1a59b8ac77450c24932f51e77bb0e485edca8b0664f74f5bfa3983aa9ba009c5","text":"        if not rec or rec.get(\"kind\")!=\"VM\" or rec.get(\"lifecycle\")!=\"ACTIVE\": die(f\"CRITICAL_NOT_ACTIVE_VM_{logical}\",66)"},{"line":30,"sha256":"4c9978e610851b78ae6d9f76e29b9021cb62944940640dc68ecc71dc41e2f378","text":"    if logical not in c[\"critical_vm_logicals\"]: return"},{"line":32,"sha256":"5c149f5d84df11ab050d1ab21e70b6259e8facc6d5ec60c8c6005400bdd9ccc1","text":"    weekly=[]; monthly=[]; seen_w=set(); seen_m=set()"},{"line":39,"sha256":"3a95b6ce11458868739c37ad6b934f4f69ee821f18c4fc655e913742a8bd3d05","text":"        if wb!=cur_week and len(weekly)<c[\"weekly_buckets\"] and wb not in seen_w:"},{"line":40,"sha256":"f2c15e597c176ac1a7d21d08e9c7b709ddf23a58920f4002c307c05edd0d1dac","text":"            seen_w.add(wb); weekly.append((gen,f\"{wb[0]:04d}-W{wb[1]:02d}\"))"},{"line":41,"sha256":"990e69478777e97050fe763208d180aa24b8d67ead01f156e2cb8f5ba5401c03","text":"        if mb!=cur_month and len(monthly)<c[\"monthly_buckets\"] and mb not in seen_m:"},{"line":42,"sha256":"6e37db2dd72a6a2a3df60cf0e96c6d3c797b36b36f4b9512d608c89645232346","text":"            seen_m.add(mb); monthly.append((gen,f\"{mb[0]:04d}-{mb[1]:02d}\"))"},{"line":43,"sha256":"1ccbfecf7d671261a24d4a38525610ccd67402f9a0919f83c9847b824c14b30c","text":"        if len(weekly)>=c[\"weekly_buckets\"] and len(monthly)>=c[\"monthly_buckets\"]: break"},{"line":44,"sha256":"8ddd05307b16bdb65e27ed4daaa771bff5c79cef98f456936e8fe5a1702258be","text":"    for gen,b in weekly: print(f\"WEEKLY\\t{gen}\\t{b}\")"},{"line":45,"sha256":"1117b07f51ec1fecccdde8595f3f4c22d1468fb33b1bee17fb70df87e24a3a14","text":"    for gen,b in monthly: print(f\"MONTHLY\\t{gen}\\t{b}\")"},{"line":48,"sha256":"0a7ee6ef3c083194f0004d25d05a420f3d4b36231bdbbb86faefe3df3e22bfb5","text":"    if args==[\"validate\"]: print(\"GFS_POLICY=OK\"); return"},{"line":49,"sha256":"c61eee89554bc74f8ccab7518825e202e69d626bd7385132da86752e4e997187","text":"    if args==[\"critical-logicals\"]:"},{"line":50,"sha256":"a6db40d91e1d862c8ca704051a4bd342a8dc443673314f5713b926709a5369d5","text":"        print(\"\\n\".join(c[\"critical_vm_logicals\"])); return"},{"line":51,"sha256":"41e05ff5ca7a41dadee3e5d88a28a843d3d0a8c48c382142b386aebf2b9b55be","text":"    if args==[\"weekly-buckets\"]: print(c[\"weekly_buckets\"]); return"},{"line":52,"sha256":"7187022be500b823309292b134f1d87a2148def6a60db7ec4450e3a470e10eac","text":"    if args==[\"monthly-buckets\"]: print(c[\"monthly_buckets\"]); return"},{"line":53,"sha256":"bec70750c2fa1733ce3829a85169999d3a0f90eb879021467c16e88683851999","text":"    if args==[\"capacity-guard-milli\"]: print(c[\"capacity_guard_max_free_fraction_milli\"]); return"},{"line":54,"sha256":"9b69cba2b5792004710d50ad75c02583c68431d7d928faee8d29925dbdafa785","text":"    if len(args)==2 and args[0]==\"is-critical\": raise SystemExit(0 if args[1] in c[\"critical_vm_logicals\"] else 1)"}]
PARTIAL_REPO_STATE_PRESENT=true
NO_MUTATION=true
NO_GIT_FETCH=true
NO_RESET=true
NO_CHECKOUT=true
NO_SERVICE_ACTION=true
NO_BACKUP_STARTED=true
NO_RESTORE_STARTED=true
NO_RETENTION_RUN_STARTED=true
NO_DELETE=true
NO_MAIL_SENT=true
RCA_DURATION_SEC=0.089
TASK_RESULT=PASS_HOMELAB_BACKUP_GFS_PARTIAL_RCA_READONLY
HOMELAB_RESULT_CONTRACT={"changes_made":false,"command_id":"SUPPORT-260921-HOMELAB-BACKUP-GFS-PARTIAL-RCA-READONLY-1013R1","rollback_restored":null,"rollback_started":false,"status":"OK","version":1}
WORKERS2_BACKUP_GFS_PARTIAL_RCA_END=1

OUTPUT_END
CHAT_OUTPUT_END
