CHAT_OUTPUT_BEGIN
COMMAND_ID=SUPPORT-260921-HOMELAB-BACKUP-V2-WRAPPER-TOPOLOGY-READONLY-1010R1
STATUS=OK
RC=0
HOST=pve01
MODE=read-only
COMPONENT=homelab-backup-v2-wrapper-topology
REFERENCE_REGISTER_CHECK=OK
REFERENCE_SHA256=5a3d8e5154c41cb582a4e0aca68090be1f0138918bf82131a948df326f9d8d66
ERROR_REGISTER_CHECK=OK
ERROR_REGISTER_SHA256=3b09a553ec0f527ed3afeed4753f52a74ee3036045bbfb3c685e9f8af4ba7ba0
COMMAND_SHA256=5e5fdf246ba93cf69bd15007c0f7841be1336d6804b8f438fcd8c9cdc2fb7777
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=6bc6bee22d47b1f894187fc6de7668c0043a3a7c662da9f032ed015b6c3a35df
SANITIZED_OUTPUT_SHA256=6bc6bee22d47b1f894187fc6de7668c0043a3a7c662da9f032ed015b6c3a35df
OUTPUT_BEGIN
WORKERS2_BACKUP_V2_WRAPPER_TOPOLOGY_BEGIN=1
COMMAND_ID=SUPPORT-260921-HOMELAB-BACKUP-V2-WRAPPER-TOPOLOGY-READONLY-1010R1
MODE=read-only
COMPONENT=homelab-backup-v2-wrapper-topology
HOST=pve01
UID=0
MUTATION_BOUNDARY=READ_ONLY_NO_FETCH_NO_WRITE_NO_SERVICE_ACTION_NO_BACKUP_NO_RESTORE_NO_RETENTION_NO_DELETE_NO_MAIL
BASELINE_WRAPPER={"bytes":1656,"line_count":26,"path":"/root/homelab-ops-cr-2026-1005/tasks/backup-v2-health-alerting-remediation-v1/assets/baseline/homelab-backup-v2","sha256":"5077444065c732451cb84898680f62361b21a24ef9eb4f191253e82ead524ea2"}
LIVE_WRAPPER={"bytes":1656,"exists":true,"matches_baseline":true,"sha256":"5077444065c732451cb84898680f62361b21a24ef9eb4f191253e82ead524ea2"}
WRAPPER_STRUCTURAL_LINES=[{"line":1,"sha256":"b8e3eb3a9453a6029acccdb951bd492355329b651710c125505dc3bdd93e2dda","text":"#!/usr/bin/python3"},{"line":2,"sha256":"a6284e6d3d43bdfbf0da732945adb2b4f31147c92bea47aee100d7f556c22d00","text":"from __future__ import annotations"},{"line":3,"sha256":"d57b832dfc7acf24f005d35dc8899167b4a24174254f82c3ab1613c6fef08a9c","text":"import hashlib, importlib, os, pathlib, stat, sys"},{"line":4,"sha256":"17400810c4582ee38c329bddfd08f1e890bd051b71d7d96fb9d06a05b0fdd49c","text":"ACCEPTED=pathlib.Path('/opt/homelab-backup-v2/releases/backup-v2-overlay-504r1-ca6876fa9c3b')"},{"line":5,"sha256":"52c13f181fdac27c548266b89ea785484b7332cb2fe88bdc6f3f8a650d808154","text":"EXPECTED={'fresh_lxc_helper.py': 'dbb3e6dbb71b10797df736431d9501a752a0f8c439163c9a0bddb7f76747f011', 'producer_exec_helper.py': 'b3b97099bcd7126670f866e81faae6a42a96d869d9989e6a67f6ea6c871c90b3', 'lxc_adapter.py': '3fa7d194010d76f7c8bc95035ae8876262e9337903e310f45f45df88c266dc8d', 'qemu_adapter.py': '1906db42bd34bbe85eb46fd9797b3572d46e0a41c29d1c29be5f9df5e448f15b', 'scheduler_adapter.py': 'a6f67159a64067773323f028126e3109e15cf17a8142cea5e6129970f1d4da96', 'entry504.py': 'ca6876fa9c3b1465b045344a8ad46962de16972c7dadc4ac6257c7d225047793'}"},{"line":6,"sha256":"53899176cd1c7bf5ff0ed1858bb5559fe73b3f583f503f5e38bde6235585b41b","text":"def sha(p):"},{"line":7,"sha256":"6f05a753872e4a9d008a43f3131f07c93f0cf02ca80dd73628c8706244200664","text":" h=hashlib.sha256()"},{"line":8,"sha256":"30997ff7b356f45d65ef1c5187f82f2e6141f93da71b38c59fe2c4c5e1e7f7d8","text":" with open(p,'rb',buffering=0) as f:"},{"line":9,"sha256":"23658886042f84f880741d8725dcf0154bc118892bc6d91addfdf6e53d5a2cdc","text":"  while True:"},{"line":10,"sha256":"1b0070a369fbe1210497b72433a6fb37cf1571221e660d1ea2f4d6bdaa6d85ad","text":"   b=f.read(1048576)"},{"line":11,"sha256":"59298bba03fc4a48910e101eba38bd90228cf134c395434b745955b079b40142","text":"   if not b: break"},{"line":12,"sha256":"a1ae395f5814ee5b68d9ff0c1c455c562692686f513549d9550a1ca882f04b94","text":"   h.update(b)"},{"line":13,"sha256":"d38d3e66a9218f9b7e3565a1a9686e2514d11c0e7dc6e1a888b31bf726b5eabd","text":" return h.hexdigest()"},{"line":14,"sha256":"2c4c5b0ebed3de9b574a3757903571ebf0dcaec6764f9f8d245ce0740a619321","text":"def main():"},{"line":15,"sha256":"8ed597bfa67a39fd3247aa69d60fbf38d6c6eb2c99ba8233b08ad5707acd37d7","text":" st=os.lstat(ACCEPTED)"},{"line":16,"sha256":"418757f9d5c90ddff43aa74e84da536f2a2341be2a15649bc1cea54d5a2f6614","text":" if not stat.S_ISDIR(st.st_mode) or stat.S_ISLNK(st.st_mode) or st.st_uid!=0 or st.st_gid!=0 or stat.S_IMODE(st.st_mode)!=0o500: raise SystemExit('RELEASE_ROOT_IDENTITY')"},{"line":17,"sha256":"d55be1792bbfcb551d4d51970890586be4a5a1da8914179a8b2062694c0e5b5e","text":" names=sorted(p.name for p in ACCEPTED.iterdir())"},{"line":18,"sha256":"e5a3133c28e977c4e9c8167dde7bb65433318db3e99df775b1f1bb647489aad1","text":" if names!=sorted(EXPECTED): raise SystemExit('RELEASE_FILESET')"},{"line":19,"sha256":"fead4124009a37228b983368c62a7d9bc05cdbb43454bcc5caac80217b2905f9","text":" for name,want in EXPECTED.items():"},{"line":20,"sha256":"9f397676d47b0693c062fa93bb3920967e19c945e0dfc6c97b915bd319ceb1b4","text":"  p=ACCEPTED/name; s=os.lstat(p)"},{"line":21,"sha256":"77ebd02c8e8b9a86beda5fbd6492917d2d9cd5dbe3dcd6af2cf494615fc01d59","text":"  if not stat.S_ISREG(s.st_mode) or stat.S_ISLNK(s.st_mode) or s.st_uid!=0 or s.st_gid!=0 or stat.S_IMODE(s.st_mode)!=0o400 or sha(p)!=want: raise SystemExit('RELEASE_FILE_IDENTITY_'+name)"},{"line":22,"sha256":"620a9fc1637030bd3806385e4d032f1d88f118fab60839cdcd08958ff76347d1","text":" sys.dont_write_bytecode=True"},{"line":23,"sha256":"205047de2556322fcf287fe1a64a3ee1c5f1a6b6d031d7eb1ca3984be8f51cd9","text":" sys.path.insert(0,str(ACCEPTED))"},{"line":24,"sha256":"007cf559e27a685d7242eeae848187802be787058680e8524508ef30d7ca8070","text":" e=importlib.import_module('entry504')"},{"line":25,"sha256":"f89328a065052a0617651ce50185d40cbb3fdf066ce0451fe8ad67e23abe8579","text":" return int(e.main())"},{"line":26,"sha256":"781bcc48cb7af0089f84c37d854593c43723833f0f9bced4c2d02aed0894040b","text":"if __name__=='__main__': raise SystemExit(main())"}]
WRAPPER_ABSOLUTE_PATHS=["/opt/homelab-backup-v2/releases/backup-v2-overlay-504r1-ca6876fa9c3b","/usr/bin/python3"]
WRAPPER_ENV_NAMES=[]
WRAPPER_PY_NAMES=["entry504.py","fresh_lxc_helper.py","lxc_adapter.py","producer_exec_helper.py","qemu_adapter.py","scheduler_adapter.py"]
WRAPPER_SHA256_LITERALS=["1906db42bd34bbe85eb46fd9797b3572d46e0a41c29d1c29be5f9df5e448f15b","3fa7d194010d76f7c8bc95035ae8876262e9337903e310f45f45df88c266dc8d","a6f67159a64067773323f028126e3109e15cf17a8142cea5e6129970f1d4da96","b3b97099bcd7126670f866e81faae6a42a96d869d9989e6a67f6ea6c871c90b3","ca6876fa9c3b1465b045344a8ad46962de16972c7dadc4ac6257c7d225047793","dbb3e6dbb71b10797df736431d9501a752a0f8c439163c9a0bddb7f76747f011"]
ABSOLUTE_PATH_META=[{"bytes":null,"exists":true,"is_dir":true,"is_file":false,"path":"/opt/homelab-backup-v2/releases/backup-v2-overlay-504r1-ca6876fa9c3b","sha256":null},{"bytes":6812336,"exists":true,"is_dir":false,"is_file":true,"path":"/usr/bin/python3","sha256":"17b78e0a93175e86f9ac03141924fd7a7f0c0c52e66b34bfa0de20ffef989df1"}]
SHA_LITERAL_REFERENCE_HITS=[{"hits":[{"bytes":1656,"path":"/usr/local/sbin/homelab-backup-v2","sha256":"5077444065c732451cb84898680f62361b21a24ef9eb4f191253e82ead524ea2"}],"literal":"1906db42bd34bbe85eb46fd9797b3572d46e0a41c29d1c29be5f9df5e448f15b"},{"hits":[{"bytes":1656,"path":"/usr/local/sbin/homelab-backup-v2","sha256":"5077444065c732451cb84898680f62361b21a24ef9eb4f191253e82ead524ea2"}],"literal":"3fa7d194010d76f7c8bc95035ae8876262e9337903e310f45f45df88c266dc8d"},{"hits":[{"bytes":1656,"path":"/usr/local/sbin/homelab-backup-v2","sha256":"5077444065c732451cb84898680f62361b21a24ef9eb4f191253e82ead524ea2"}],"literal":"a6f67159a64067773323f028126e3109e15cf17a8142cea5e6129970f1d4da96"},{"hits":[{"bytes":1656,"path":"/usr/local/sbin/homelab-backup-v2","sha256":"5077444065c732451cb84898680f62361b21a24ef9eb4f191253e82ead524ea2"}],"literal":"b3b97099bcd7126670f866e81faae6a42a96d869d9989e6a67f6ea6c871c90b3"},{"hits":[{"bytes":1656,"path":"/usr/local/sbin/homelab-backup-v2","sha256":"5077444065c732451cb84898680f62361b21a24ef9eb4f191253e82ead524ea2"}],"literal":"ca6876fa9c3b1465b045344a8ad46962de16972c7dadc4ac6257c7d225047793"},{"hits":[{"bytes":1656,"path":"/usr/local/sbin/homelab-backup-v2","sha256":"5077444065c732451cb84898680f62361b21a24ef9eb4f191253e82ead524ea2"}],"literal":"dbb3e6dbb71b10797df736431d9501a752a0f8c439163c9a0bddb7f76747f011"}]
ARCHIVE_CANDIDATES=[]
RUNTIME_NAME_HITS=[{"bytes":1656,"path":"/usr/local/sbin/homelab-backup-v2","sha256":"5077444065c732451cb84898680f62361b21a24ef9eb4f191253e82ead524ea2"}]
NO_MUTATION=true
NO_GIT_FETCH=true
NO_WRITE=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
TOPOLOGY_DURATION_SEC=0.047
TASK_RESULT=PASS_HOMELAB_BACKUP_V2_WRAPPER_TOPOLOGY_READONLY
HOMELAB_RESULT_CONTRACT={"changes_made":false,"command_id":"SUPPORT-260921-HOMELAB-BACKUP-V2-WRAPPER-TOPOLOGY-READONLY-1010R1","rollback_restored":null,"rollback_started":false,"status":"OK","version":1}
WORKERS2_BACKUP_V2_WRAPPER_TOPOLOGY_END=1

OUTPUT_END
CHAT_OUTPUT_END
