CHAT_OUTPUT_BEGIN
COMMAND_ID=SUPPORT-261007-CT112-DNS-VM130-FINAL-RCA-99789R1
STATUS=OK
RC=0
HOST=pve01
MODE=read-only
COMPONENT=ct112-dns-vm130-final-rca
REFERENCE_REGISTER_CHECK=OK
REFERENCE_SHA256=5a3d8e5154c41cb582a4e0aca68090be1f0138918bf82131a948df326f9d8d66
ERROR_REGISTER_CHECK=OK
ERROR_REGISTER_SHA256=3b09a553ec0f527ed3afeed4753f52a74ee3036045bbfb3c685e9f8af4ba7ba0
COMMAND_SHA256=885666c9d57f84edfa9d1fd3234f1fc6888d360c338bd60d7fd2e00a0f9bd8eb
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=45a7d0df223ce5a48be093a0e3ef84cd7ce33615fa53ded2c8b7fdc3ce4e468c
SANITIZED_OUTPUT_SHA256=45a7d0df223ce5a48be093a0e3ef84cd7ce33615fa53ded2c8b7fdc3ce4e468c
OUTPUT_BEGIN
CT112_DNS_VM130_FINAL_RCA=V1
MODE=read-only
NO_MUTATION=true
BACKUP_V2_ACTIVE=inactive
BACKUP_V2_RESULT=success
BACKUP_V2_EXEC_STATUS=0
BACKUP_V2_TIMER_ACTIVE=active
BACKUP_V2_TIMER_ENABLED=enabled
BACKUP_V2_LAST_TRIGGER=Wed 2026-10-07 20:05:53 MSK
CT112_STATUS=running
REC|CT112_CONFIG|features: nesting=1
REC|CT112_CONFIG|rootfs: local-lvm:vm-112-disk-0,size=8G
REC|CT112_CONFIG|unprivileged: 1
REC|CT112_API|KEY=rootfs|VOLID_SHA256=21a1228ea539097d621b44cc86b77b3de95b0487a5e074f6644ac3ed80376ef8|OPTS_SHA256=ebbd4ffc7a6d79cb0293f44d7e93509b8e2c9feb6cf8faa8098a6d09ed8dde99
REC|CT112_API|KEY=unprivileged|VALUE_SHA256=6b86b273ff34fce19d6b804eff5a3f5747ada4eaa22f1d49c01e52ddb7875b4b
REC|CT112_API|KEY=features|VALUE_SHA256=9202e3e75af57ec143fd326adec10e608231ac71dd55a48ddf6b77bcb174539b
REC|BACKUP_AUDIT_RECENT|ISSUE|severity=HIGH|code=RPO_BREACH|logical_id=vm112|root_cause=NO_FRESH_V2_OR_SEALED_QUORUM
REC|BACKUP_AUDIT_RECENT|SUMMARY|AUDIT_STATUS=OK|BACKUP_STATUS=RED|ACTIVE_COUNT=15|ISSUE_COUNT=1|CLOUD_A=OK|CLOUD_B=OK|CLOUD_B_DRILL=OK|DR_PROVEN=YES|SOURCE_OFFHOST=OK
REC|BACKUP_AUDIT_RECENT|TARGET|logical_id=vm112|kind=VM|state=FRESH|source=V2|v2_age_seconds=806|legacy_age_seconds=2887672|replica_count=2|state_id=ct112|generation=v2-ct112-20261007T045109Z-ce9503fc59c5
REC|BACKUP_AUDIT_RECENT|SUMMARY|AUDIT_STATUS=OK|BACKUP_STATUS=GREEN|ACTIVE_COUNT=15|ISSUE_COUNT=0|CLOUD_A=OK|CLOUD_B=OK|CLOUD_B_DRILL=OK|DR_PROVEN=YES|SOURCE_OFFHOST=OK
REC|BACKUP_AUDIT_RECENT|TARGET|logical_id=vm112|kind=VM|state=FRESH|source=V2|v2_age_seconds=2672|legacy_age_seconds=2889538|replica_count=2|state_id=ct112|generation=v2-ct112-20261007T045109Z-ce9503fc59c5
REC|BACKUP_AUDIT_RECENT|SUMMARY|AUDIT_STATUS=OK|BACKUP_STATUS=GREEN|ACTIVE_COUNT=15|ISSUE_COUNT=0|CLOUD_A=OK|CLOUD_B=OK|CLOUD_B_DRILL=OK|DR_PROVEN=YES|SOURCE_OFFHOST=OK
REC|BACKUP_AUDIT_RECENT|TARGET|logical_id=vm112|kind=VM|state=FRESH|source=V2|v2_age_seconds=4429|legacy_age_seconds=2891296|replica_count=2|state_id=ct112|generation=v2-ct112-20261007T045109Z-ce9503fc59c5
REC|BACKUP_AUDIT_RECENT|SUMMARY|AUDIT_STATUS=OK|BACKUP_STATUS=GREEN|ACTIVE_COUNT=15|ISSUE_COUNT=0|CLOUD_A=OK|CLOUD_B=OK|CLOUD_B_DRILL=OK|DR_PROVEN=YES|SOURCE_OFFHOST=OK
REC|BACKUP_AUDIT_RECENT|TARGET|logical_id=vm112|kind=VM|state=FRESH|source=V2|v2_age_seconds=6259|legacy_age_seconds=2893125|replica_count=2|state_id=ct112|generation=v2-ct112-20261007T045109Z-ce9503fc59c5
REC|BACKUP_AUDIT_RECENT|SUMMARY|AUDIT_STATUS=OK|BACKUP_STATUS=GREEN|ACTIVE_COUNT=15|ISSUE_COUNT=0|CLOUD_A=OK|CLOUD_B=OK|CLOUD_B_DRILL=OK|DR_PROVEN=YES|SOURCE_OFFHOST=OK
REC|BACKUP_AUDIT_RECENT|TARGET|logical_id=vm112|kind=VM|state=FRESH|source=V2|v2_age_seconds=8029|legacy_age_seconds=2894896|replica_count=2|state_id=ct112|generation=v2-ct112-20261007T045109Z-ce9503fc59c5
REC|BACKUP_AUDIT_RECENT|SUMMARY|AUDIT_STATUS=OK|BACKUP_STATUS=GREEN|ACTIVE_COUNT=15|ISSUE_COUNT=0|CLOUD_A=OK|CLOUD_B=OK|CLOUD_B_DRILL=OK|DR_PROVEN=YES|SOURCE_OFFHOST=OK
REC|BACKUP_AUDIT_RECENT|TARGET|logical_id=vm112|kind=VM|state=FRESH|source=V2|v2_age_seconds=9846|legacy_age_seconds=2896712|replica_count=2|state_id=ct112|generation=v2-ct112-20261007T045109Z-ce9503fc59c5
REC|BACKUP_AUDIT_RECENT|SUMMARY|AUDIT_STATUS=OK|BACKUP_STATUS=GREEN|ACTIVE_COUNT=15|ISSUE_COUNT=0|CLOUD_A=OK|CLOUD_B=OK|CLOUD_B_DRILL=OK|DR_PROVEN=YES|SOURCE_OFFHOST=OK
REC|BACKUP_AUDIT_RECENT|TARGET|logical_id=vm112|kind=VM|state=FRESH|source=V2|v2_age_seconds=11569|legacy_age_seconds=2898436|replica_count=2|state_id=ct112|generation=v2-ct112-20261007T045109Z-ce9503fc59c5
REC|BACKUP_AUDIT_RECENT|ISSUE|severity=HIGH|code=RPO_BREACH|logical_id=vm190|root_cause=NO_FRESH_V2_OR_SEALED_QUORUM
REC|BACKUP_AUDIT_RECENT|SUMMARY|AUDIT_STATUS=OK|BACKUP_STATUS=RED|ACTIVE_COUNT=15|ISSUE_COUNT=1|CLOUD_A=OK|CLOUD_B=OK|CLOUD_B_DRILL=OK|DR_PROVEN=YES|SOURCE_OFFHOST=OK
REC|BACKUP_AUDIT_RECENT|TARGET|logical_id=vm112|kind=VM|state=FRESH|source=V2|v2_age_seconds=13388|legacy_age_seconds=2900254|replica_count=2|state_id=ct112|generation=v2-ct112-20261007T045109Z-ce9503fc59c5
REC|BACKUP_AUDIT_RECENT|ISSUE|severity=HIGH|code=RPO_BREACH|logical_id=app-hbarhub|root_cause=APP_QUORUM_NOT_FRESH
REC|BACKUP_AUDIT_RECENT|SUMMARY|AUDIT_STATUS=OK|BACKUP_STATUS=RED|ACTIVE_COUNT=15|ISSUE_COUNT=1|CLOUD_A=OK|CLOUD_B=OK|CLOUD_B_DRILL=OK|DR_PROVEN=YES|SOURCE_OFFHOST=OK
REC|BACKUP_AUDIT_RECENT|TARGET|logical_id=vm112|kind=VM|state=FRESH|source=V2|v2_age_seconds=15284|legacy_age_seconds=2902150|replica_count=2|state_id=ct112|generation=v2-ct112-20261007T045109Z-ce9503fc59c5
REC|BACKUP_AUDIT_RECENT|ISSUE|severity=HIGH|code=RPO_BREACH|logical_id=app-hbarhub|root_cause=APP_QUORUM_NOT_FRESH
REC|BACKUP_AUDIT_RECENT|SUMMARY|AUDIT_STATUS=OK|BACKUP_STATUS=RED|ACTIVE_COUNT=15|ISSUE_COUNT=1|CLOUD_A=OK|CLOUD_B=OK|CLOUD_B_DRILL=OK|DR_PROVEN=YES|SOURCE_OFFHOST=OK
REC|BACKUP_AUDIT_RECENT|TARGET|logical_id=vm112|kind=VM|state=FRESH|source=V2|v2_age_seconds=17030|legacy_age_seconds=2903896|replica_count=2|state_id=ct112|generation=v2-ct112-20261007T045109Z-ce9503fc59c5
REC|BACKUP_AUDIT_RECENT|ISSUE|severity=HIGH|code=RPO_BREACH|logical_id=app-hbarhub|root_cause=APP_QUORUM_NOT_FRESH
REC|BACKUP_AUDIT_RECENT|SUMMARY|AUDIT_STATUS=OK|BACKUP_STATUS=RED|ACTIVE_COUNT=15|ISSUE_COUNT=1|CLOUD_A=OK|CLOUD_B=OK|CLOUD_B_DRILL=OK|DR_PROVEN=YES|SOURCE_OFFHOST=OK
REC|BACKUP_AUDIT_RECENT|TARGET|logical_id=vm112|kind=VM|state=FRESH|source=V2|v2_age_seconds=18878|legacy_age_seconds=2905744|replica_count=2|state_id=ct112|generation=v2-ct112-20261007T045109Z-ce9503fc59c5
REC|BACKUP_AUDIT_RECENT|ISSUE|severity=HIGH|code=RPO_BREACH|logical_id=app-hbarhub|root_cause=APP_QUORUM_NOT_FRESH
REC|BACKUP_AUDIT_RECENT|SUMMARY|AUDIT_STATUS=OK|BACKUP_STATUS=RED|ACTIVE_COUNT=15|ISSUE_COUNT=1|CLOUD_A=OK|CLOUD_B=OK|CLOUD_B_DRILL=OK|DR_PROVEN=YES|SOURCE_OFFHOST=OK
REC|BACKUP_AUDIT_RECENT|TARGET|logical_id=vm112|kind=VM|state=FRESH|source=V2|v2_age_seconds=20605|legacy_age_seconds=2907471|replica_count=2|state_id=ct112|generation=v2-ct112-20261007T045109Z-ce9503fc59c5
REC|BACKUP_AUDIT_RECENT|SUMMARY|AUDIT_STATUS=OK|BACKUP_STATUS=GREEN|ACTIVE_COUNT=15|ISSUE_COUNT=0|CLOUD_A=OK|CLOUD_B=OK|CLOUD_B_DRILL=OK|DR_PROVEN=YES|SOURCE_OFFHOST=OK
REC|BACKUP_AUDIT_RECENT|TARGET|logical_id=vm112|kind=VM|state=FRESH|source=V2|v2_age_seconds=22404|legacy_age_seconds=2909270|replica_count=2|state_id=ct112|generation=v2-ct112-20261007T045109Z-ce9503fc59c5
REC|BACKUP_AUDIT_RECENT|ISSUE|severity=HIGH|code=RPO_BREACH|logical_id=vm170|root_cause=NO_FRESH_V2_OR_SEALED_QUORUM
REC|BACKUP_AUDIT_RECENT|SUMMARY|AUDIT_STATUS=OK|BACKUP_STATUS=RED|ACTIVE_COUNT=15|ISSUE_COUNT=1|CLOUD_A=OK|CLOUD_B=OK|CLOUD_B_DRILL=OK|DR_PROVEN=YES|SOURCE_OFFHOST=OK
REC|BACKUP_AUDIT_RECENT|TARGET|logical_id=vm112|kind=VM|state=FRESH|source=V2|v2_age_seconds=24230|legacy_age_seconds=2911096|replica_count=2|state_id=ct112|generation=v2-ct112-20261007T045109Z-ce9503fc59c5
REC|BACKUP_AUDIT_RECENT|ISSUE|severity=HIGH|code=RPO_BREACH|logical_id=vm171|root_cause=NO_FRESH_V2_OR_SEALED_QUORUM
REC|BACKUP_AUDIT_RECENT|SUMMARY|AUDIT_STATUS=OK|BACKUP_STATUS=RED|ACTIVE_COUNT=15|ISSUE_COUNT=1|CLOUD_A=OK|CLOUD_B=OK|CLOUD_B_DRILL=OK|DR_PROVEN=YES|SOURCE_OFFHOST=OK
REC|BACKUP_AUDIT_RECENT|TARGET|logical_id=vm112|kind=VM|state=FRESH|source=V2|v2_age_seconds=26024|legacy_age_seconds=2912890|replica_count=2|state_id=ct112|generation=v2-ct112-20261007T045109Z-ce9503fc59c5
REC|BACKUP_AUDIT_RECENT|SUMMARY|AUDIT_STATUS=OK|BACKUP_STATUS=GREEN|ACTIVE_COUNT=15|ISSUE_COUNT=0|CLOUD_A=OK|CLOUD_B=OK|CLOUD_B_DRILL=OK|DR_PROVEN=YES|SOURCE_OFFHOST=OK
REC|BACKUP_AUDIT_RECENT|TARGET|logical_id=vm112|kind=VM|state=FRESH|source=V2|v2_age_seconds=27830|legacy_age_seconds=2914696|replica_count=2|state_id=ct112|generation=v2-ct112-20261007T045109Z-ce9503fc59c5
REC|BACKUP_AUDIT_RECENT|SUMMARY|AUDIT_STATUS=OK|BACKUP_STATUS=GREEN|ACTIVE_COUNT=15|ISSUE_COUNT=0|CLOUD_A=OK|CLOUD_B=OK|CLOUD_B_DRILL=OK|DR_PROVEN=YES|SOURCE_OFFHOST=OK
REC|BACKUP_AUDIT_RECENT|TARGET|logical_id=vm112|kind=VM|state=FRESH|source=V2|v2_age_seconds=29630|legacy_age_seconds=2916496|replica_count=2|state_id=ct112|generation=v2-ct112-20261007T045109Z-ce9503fc59c5
REC|BACKUP_AUDIT_RECENT|SUMMARY|AUDIT_STATUS=OK|BACKUP_STATUS=GREEN|ACTIVE_COUNT=15|ISSUE_COUNT=0|CLOUD_A=OK|CLOUD_B=OK|CLOUD_B_DRILL=OK|DR_PROVEN=YES|SOURCE_OFFHOST=OK
REC|BACKUP_AUDIT_RECENT|TARGET|logical_id=vm112|kind=VM|state=FRESH|source=V2|v2_age_seconds=31388|legacy_age_seconds=2918254|replica_count=2|state_id=ct112|generation=v2-ct112-20261007T045109Z-ce9503fc59c5
REC|BACKUP_AUDIT_RECENT|SUMMARY|AUDIT_STATUS=OK|BACKUP_STATUS=GREEN|ACTIVE_COUNT=15|ISSUE_COUNT=0|CLOUD_A=OK|CLOUD_B=OK|CLOUD_B_DRILL=OK|DR_PROVEN=YES|SOURCE_OFFHOST=OK
REC|BACKUP_AUDIT_RECENT|TARGET|logical_id=vm112|kind=VM|state=FRESH|source=V2|v2_age_seconds=33230|legacy_age_seconds=2920096|replica_count=2|state_id=ct112|generation=v2-ct112-20261007T045109Z-ce9503fc59c5
REC|BACKUP_AUDIT_RECENT|SUMMARY|AUDIT_STATUS=OK|BACKUP_STATUS=GREEN|ACTIVE_COUNT=15|ISSUE_COUNT=0|CLOUD_A=OK|CLOUD_B=OK|CLOUD_B_DRILL=OK|DR_PROVEN=YES|SOURCE_OFFHOST=OK
REC|BACKUP_AUDIT_RECENT|TARGET|logical_id=vm112|kind=VM|state=FRESH|source=V2|v2_age_seconds=34964|legacy_age_seconds=2921830|replica_count=2|state_id=ct112|generation=v2-ct112-20261007T045109Z-ce9503fc59c5
REC|BACKUP_AUDIT_RECENT|SUMMARY|AUDIT_STATUS=OK|BACKUP_STATUS=GREEN|ACTIVE_COUNT=15|ISSUE_COUNT=0|CLOUD_A=OK|CLOUD_B=OK|CLOUD_B_DRILL=OK|DR_PROVEN=YES|SOURCE_OFFHOST=OK
REC|BACKUP_AUDIT_RECENT|TARGET|logical_id=vm112|kind=VM|state=FRESH|source=V2|v2_age_seconds=36884|legacy_age_seconds=2923750|replica_count=2|state_id=ct112|generation=v2-ct112-20261007T045109Z-ce9503fc59c5
REC|BACKUP_AUDIT_RECENT|SUMMARY|AUDIT_STATUS=OK|BACKUP_STATUS=GREEN|ACTIVE_COUNT=15|ISSUE_COUNT=0|CLOUD_A=OK|CLOUD_B=OK|CLOUD_B_DRILL=OK|DR_PROVEN=YES|SOURCE_OFFHOST=OK
REC|BACKUP_AUDIT_RECENT|TARGET|logical_id=vm112|kind=VM|state=FRESH|source=V2|v2_age_seconds=38636|legacy_age_seconds=2925502|replica_count=2|state_id=ct112|generation=v2-ct112-20261007T045109Z-ce9503fc59c5
REC|BACKUP_AUDIT_RECENT|SUMMARY|AUDIT_STATUS=OK|BACKUP_STATUS=GREEN|ACTIVE_COUNT=15|ISSUE_COUNT=0|CLOUD_A=OK|CLOUD_B=OK|CLOUD_B_DRILL=OK|DR_PROVEN=YES|SOURCE_OFFHOST=OK
REC|BACKUP_AUDIT_RECENT|TARGET|logical_id=vm112|kind=VM|state=FRESH|source=V2|v2_age_seconds=40370|legacy_age_seconds=2927236|replica_count=2|state_id=ct112|generation=v2-ct112-20261007T045109Z-ce9503fc59c5
REC|BACKUP_AUDIT_RECENT|SUMMARY|AUDIT_STATUS=OK|BACKUP_STATUS=GREEN|ACTIVE_COUNT=15|ISSUE_COUNT=0|CLOUD_A=OK|CLOUD_B=OK|CLOUD_B_DRILL=OK|DR_PROVEN=YES|SOURCE_OFFHOST=OK
REC|BACKUP_AUDIT_RECENT|TARGET|logical_id=vm112|kind=VM|state=FRESH|source=V2|v2_age_seconds=42230|legacy_age_seconds=2929096|replica_count=2|state_id=ct112|generation=v2-ct112-20261007T045109Z-ce9503fc59c5
REC|BACKUP_AUDIT_RECENT|SUMMARY|AUDIT_STATUS=OK|BACKUP_STATUS=GREEN|ACTIVE_COUNT=15|ISSUE_COUNT=0|CLOUD_A=OK|CLOUD_B=OK|CLOUD_B_DRILL=OK|DR_PROVEN=YES|SOURCE_OFFHOST=OK
REC|BACKUP_AUDIT_RECENT|TARGET|logical_id=vm112|kind=VM|state=FRESH|source=V2|v2_age_seconds=44048|legacy_age_seconds=2930914|replica_count=2|state_id=ct112|generation=v2-ct112-20261007T045109Z-ce9503fc59c5
REC|BACKUP_AUDIT_RECENT|ISSUE|severity=HIGH|code=RPO_BREACH|logical_id=vm9130|root_cause=NO_FRESH_V2_OR_SEALED_QUORUM
REC|BACKUP_AUDIT_RECENT|SUMMARY|AUDIT_STATUS=OK|BACKUP_STATUS=RED|ACTIVE_COUNT=15|ISSUE_COUNT=1|CLOUD_A=OK|CLOUD_B=OK|CLOUD_B_DRILL=OK|DR_PROVEN=YES|SOURCE_OFFHOST=OK
BACKUP_AUDIT_CURRENT_RESULT=exit-code
BACKUP_AUDIT_CURRENT_EXEC=1
REC|BACKUP_LATEST_SUMMARY|SUMMARY|AUDIT_STATUS=OK|BACKUP_STATUS=RED|ACTIVE_COUNT=15|ISSUE_COUNT=1|CLOUD_A=OK|CLOUD_B=OK|CLOUD_B_DRILL=OK|DR_PROVEN=YES|SOURCE_OFFHOST=OK
REC|BACKUP_LATEST_ISSUE|ISSUE|severity=HIGH|code=RPO_BREACH|logical_id=vm9130|root_cause=NO_FRESH_V2_OR_SEALED_QUORUM
BACKUP_EXEC_SHA256=894f8ea346b53a3d7846dbd6eeb5b89333957eb6d7a4f2f64fd4557cae176e1c
REC|CT112_SOURCE_FILE|IDX=1|BASENAME=pve282.py|SHA256=73c6cb7773eb8e82d1e7ed5ab4733b4afb88f74ae69c09125d0378d6e480e012|SIZE=6195
SRC|CT112|1|26:    need(core.valid_hash(expected_config) and job.get('config_sha256')==expected_config,'CT112_PLAN_CONFIG_ANCHOR')
SRC|CT112|1|32:    need(TARGET_VMID in by_id,'CT112_MISSING_FROM_ACCEPTED265')
SRC|CT112|1|38:    need(len(selected)==1,'CT112_NOT_UNIQUE')
SRC|CT112|1|41:    need(job.get('compression_dependent') is False and job.get('configured_full_cycle_fits') is True,'CT112_FULL_CYCLE_SPACE_UNPROVEN')
SRC|CT112|1|42:    disks=job.get('disks');need(type(disks) is list and len(disks)==1,'CT112_SINGLE_ROOTFS_REQUIRED')
SRC|CT112|1|44:    need(disk.get('slot')=='rootfs' and disk.get('class')=='managed-volume' and disk.get('backup_setting') in ('included','included_default_rootfs'),'CT112_MANAGED_ROOTFS_REQUIRED')
SRC|CT112|1|46:    need(type(size) is int and 0<size<=stream.MAX_BYTES and size==disk.get('configured_size_bytes'),'CT112_ROOTFS_SIZE_INVALID')
SRC|CT112|1|59:        need(rc==0,'CT112_GATE_READ_FAILED')
SRC|CT112|1|61:        except (ValueError,UnicodeError):raise old.PVEError('CT112_GATE_JSON') from None
REC|CT112_SOURCE_FILE|IDX=2|BASENAME=wrapper.py|SHA256=84d2da3fa7c8ab1d9e15db88b6f3835be9c8815bd50ea78022c67adff2f16056|SIZE=5055
SRC|CT112|2|6:CT_ID='guest-pve01-lxc-112'
SRC|CT112|2|12:    if spec is None or spec.loader is None: raise RuntimeError('MODULE_SPEC')
SRC|CT112|2|33:    if type(due) is not int or due<=0: raise legacy.BackupError('CT112_CADENCE')
SRC|CT112|2|44:        r=ct112.run_target(t,state_writer=legacy.write_state)
SRC|CT112|2|47:    except BaseException:
SRC|CT112|2|48:        try: legacy.write_state(CT_ID,'FAIL',reason='CT112_PIPELINE_FAILED')
SRC|CT112|2|49:        except BaseException: pass
SRC|CT112|2|50:        raise legacy.BackupError('CT112_PIPELINE_FAILED') from None
SRC|CT112|2|56:    if legacy.PART_SIZE!=536870912: raise RuntimeError('LEGACY_PART_SIZE')
SRC|CT112|2|57:    if len(legacy.REMOTES)!=13 or len({p for _,p in legacy.REMOTES})!=13: raise RuntimeError('LEGACY_REMOTES')
SRC|CT112|2|59:    if not isinstance(d,list) or len(d)<28: raise RuntimeError('LEGACY_DEFAULT_TARGET_COUNT')
SRC|CT112|2|61:    if {t.get('logical_id') for t in d if isinstance(t,dict) and t.get('green1')}!=want: raise RuntimeError('LEGACY_DEFAULT_GREEN_SET')
SRC|CT112|2|62:    if legacy._pve_dumpdir_spec('lxc')!=(0o710,100000) or legacy._pve_dumpdir_spec('qemu')!=(0o700,0): raise RuntimeError('LEGACY_DUMPDIR_SPEC')
SRC|CT112|2|63:    if legacy.GUEST266_SHA!='86433bc424d5fa5017c20f7a237c82874b02357a3283660d8a6b0039ef2bc868': raise RuntimeError('LEGACY_GUEST266_SHA')
SRC|CT112|2|64:    if legacy.P282_SHA!='73c6cb7773eb8e82d1e7ed5ab4733b4afb88f74ae69c09125d0378d6e480e012': raise RuntimeError('LEGACY_P282_SHA')
SRC|CT112|2|71:    if len(eff)!=29 or sum(1 for x in eff if x.get('logical_id')==CT_ID)!=1: raise RuntimeError('EFFECTIVE_TARGETS')
SRC|CT112|2|73:    if [x['logical_id'] for x in legacy_rows]!=list(LEGACY_IDS) or ct.get('vmid')!=112: raise RuntimeError('REPRESENTATIVE_PARTITION')
SRC|CT112|2|74:    if ct112.selftest() is not True: raise RuntimeError('CT112_HANDLER_SELFTEST')
SRC|CT112|2|81:        except OSError as e:
REC|CT112_SOURCE_FILE|IDX=3|BASENAME=representative_driver.py|SHA256=b3050a8f95e6d9826a4f0786cd3ca32012b6ab10486d10e4981b50b8a0affff2|SIZE=4214
SRC|CT112|3|25:CT112_ID='guest-pve01-lxc-112'
SRC|CT112|3|26:REPRESENTATIVE_IDS=(CT112_ID,)+LEGACY_IDS
SRC|CT112|3|53:    return legacy, selected[CT112_ID]
SRC|CT112|3|65:    except BaseException:
SRC|CT112|3|67:        except FileNotFoundError: pass
SRC|CT112|3|72:    def write_state(logical_id,result,**kw):
SRC|CT112|3|77:    return write_state
SRC|CT112|3|86:    previous=getattr(engine,'write_state',None)
SRC|CT112|3|89:    engine.write_state=_state_writer(STATE_ROOT)
SRC|CT112|3|93:        engine.write_state=previous
SRC|CT112|3|97:        raise ContractError('CT112_RESULT_SCHEMA')
SRC|CT112|3|98:    if result.get('logical_id')!=CT112_ID or result.get('status')!='OK':
SRC|CT112|3|99:        raise ContractError('CT112_RESULT_STATUS')
SRC|CT112|3|101:        raise ContractError('CT112_RESTORE_NOT_VERIFIED')
SRC|CT112|3|103:        raise ContractError('CT112_LOCAL_PAYLOAD_REMAINS')
SRC|CT112|3|108:        raise ContractError('CT112_CALLBACK_REQUIRED')
REC|CT112_SOURCE_FILE|IDX=4|BASENAME=ct112_handler.py|SHA256=e7b027de9a53d7219dd80c9d8e05f0eae0f53db90a53363c64dfa016815c0d00|SIZE=7923
SRC|CT112|4|9:CT_ID='guest-pve01-lxc-112'
SRC|CT112|4|27:    if p.returncode!=0 or len(p.stdout)>4*1024*1024:raise RuntimeError('PVESH_READ_FAILED')
SRC|CT112|4|29:    except (ValueError,UnicodeError):raise RuntimeError('PVESH_JSON') from None
SRC|CT112|4|33:    if t.sha(b)!=PLAN_SHA:raise RuntimeError('PLAN_REFERENCE_IDENTITY')
SRC|CT112|4|35:    except (ValueError,UnicodeError):raise RuntimeError('PLAN_REFERENCE_JSON') from None
SRC|CT112|4|39:    if not stat.S_ISREG(st.st_mode) or st.st_uid!=0 or st.st_size>1024*1024:raise RuntimeError('VZDUMP_DEFAULTS_FILE')
SRC|CT112|4|45:    if not isinstance(rows,list) or not isinstance(stores,list):raise RuntimeError('PVE_RESOURCE_SCHEMA')
SRC|CT112|4|50:        if type(vmid) is not int:raise RuntimeError('PVE_VMID_SCHEMA')
SRC|CT112|4|57:    if not stat.S_ISREG(st.st_mode) or st.st_uid!=0 or not (st.st_mode&0o111) or _sha(path)!=want:raise RuntimeError('TOOL_IDENTITY')
SRC|CT112|4|63:    if len(entries)!=13 or len({x['account_id'] for x in entries})!=13:raise RuntimeError('RCLONE_INVENTORY')
SRC|CT112|4|64:    if hashlib.sha256(binding.encode()).hexdigest()!=BINDING_FP:raise RuntimeError('RCLONE_BINDING')
SRC|CT112|4|83:        if e!=self.entries or bind!=self.binding:raise RuntimeError('RCLONE_SEMANTIC_DRIFT')
SRC|CT112|4|100:def run_target(target,state_writer=None):
SRC|CT112|4|101:    if not isinstance(target,dict) or target.get('logical_id')!=CT_ID or target.get('vmid')!=112:return (_ for _ in ()).throw(RuntimeError('CT112_DESCRIPTOR'))
SRC|CT112|4|102:    if _sha(PLAN,1024*1024)!=PLAN_SHA:raise RuntimeError('PLAN_REFERENCE_IDENTITY')
SRC|CT112|4|109:        if _sha(PVESH)!=pvesh_sha:raise RuntimeError('PVESH_CHANGED')
SRC|CT112|4|117:        if e!=entries or b!=binding:raise RuntimeError('RCLONE_SEMANTIC_DRIFT')
SRC|CT112|4|127:        if not isinstance(reps,list) or len(reps)!=2 or len({x.get('account_id') for x in reps})!=2:raise RuntimeError('REPLICA_PHYSICAL_INDEPENDENCE')
SRC|CT112|4|128:        if r.get('archive_cloud_restore_verified') is not True or r.get('local_payload_files_remaining')!=0:raise RuntimeError('CT112_RESTORE_CONTRACT')
SRC|CT112|4|131:        if work.exists():raise RuntimeError('CT112_WORKSPACE_CLEANUP')
SRC|CT112|4|135:    except BaseException:
SRC|CT112|4|137:        except BaseException:pass
REC|CT112_SOURCE_FILE|IDX=5|BASENAME=pve282.py|SHA256=73c6cb7773eb8e82d1e7ed5ab4733b4afb88f74ae69c09125d0378d6e480e012|SIZE=6195
SRC|CT112|5|26:    need(core.valid_hash(expected_config) and job.get('config_sha256')==expected_config,'CT112_PLAN_CONFIG_ANCHOR')
SRC|CT112|5|32:    need(TARGET_VMID in by_id,'CT112_MISSING_FROM_ACCEPTED265')
SRC|CT112|5|38:    need(len(selected)==1,'CT112_NOT_UNIQUE')
SRC|CT112|5|41:    need(job.get('compression_dependent') is False and job.get('configured_full_cycle_fits') is True,'CT112_FULL_CYCLE_SPACE_UNPROVEN')
SRC|CT112|5|42:    disks=job.get('disks');need(type(disks) is list and len(disks)==1,'CT112_SINGLE_ROOTFS_REQUIRED')
SRC|CT112|5|44:    need(disk.get('slot')=='rootfs' and disk.get('class')=='managed-volume' and disk.get('backup_setting') in ('included','included_default_rootfs'),'CT112_MANAGED_ROOTFS_REQUIRED')
SRC|CT112|5|46:    need(type(size) is int and 0<size<=stream.MAX_BYTES and size==disk.get('configured_size_bytes'),'CT112_ROOTFS_SIZE_INVALID')
SRC|CT112|5|59:        need(rc==0,'CT112_GATE_READ_FAILED')
SRC|CT112|5|61:        except (ValueError,UnicodeError):raise old.PVEError('CT112_GATE_JSON') from None
REC|CT112_SOURCE_FILE|IDX=6|BASENAME=wrapper.py|SHA256=e5b0cd618eb7925da84255a8d7e348ae513da5953937d0bce8c3a139b965c3b2|SIZE=5055
SRC|CT112|6|6:CT_ID='guest-pve01-lxc-112'
SRC|CT112|6|12:    if spec is None or spec.loader is None: raise RuntimeError('MODULE_SPEC')
SRC|CT112|6|33:    if type(due) is not int or due<=0: raise legacy.BackupError('CT112_CADENCE')
SRC|CT112|6|44:        r=ct112.run_target(t,state_writer=legacy.write_state)
SRC|CT112|6|47:    except BaseException:
SRC|CT112|6|48:        try: legacy.write_state(CT_ID,'FAIL',reason='CT112_PIPELINE_FAILED')
SRC|CT112|6|49:        except BaseException: pass
SRC|CT112|6|50:        raise legacy.BackupError('CT112_PIPELINE_FAILED') from None
SRC|CT112|6|56:    if legacy.PART_SIZE!=536870912: raise RuntimeError('LEGACY_PART_SIZE')
SRC|CT112|6|57:    if len(legacy.REMOTES)!=13 or len({p for _,p in legacy.REMOTES})!=13: raise RuntimeError('LEGACY_REMOTES')
SRC|CT112|6|59:    if not isinstance(d,list) or len(d)<28: raise RuntimeError('LEGACY_DEFAULT_TARGET_COUNT')
SRC|CT112|6|61:    if {t.get('logical_id') for t in d if isinstance(t,dict) and t.get('green1')}!=want: raise RuntimeError('LEGACY_DEFAULT_GREEN_SET')
SRC|CT112|6|62:    if legacy._pve_dumpdir_spec('lxc')!=(0o710,100000) or legacy._pve_dumpdir_spec('qemu')!=(0o700,0): raise RuntimeError('LEGACY_DUMPDIR_SPEC')
SRC|CT112|6|63:    if legacy.GUEST266_SHA!='86433bc424d5fa5017c20f7a237c82874b02357a3283660d8a6b0039ef2bc868': raise RuntimeError('LEGACY_GUEST266_SHA')
SRC|CT112|6|64:    if legacy.P282_SHA!='73c6cb7773eb8e82d1e7ed5ab4733b4afb88f74ae69c09125d0378d6e480e012': raise RuntimeError('LEGACY_P282_SHA')
SRC|CT112|6|71:    if len(eff)!=29 or sum(1 for x in eff if x.get('logical_id')==CT_ID)!=1: raise RuntimeError('EFFECTIVE_TARGETS')
SRC|CT112|6|73:    if [x['logical_id'] for x in legacy_rows]!=list(LEGACY_IDS) or ct.get('vmid')!=112: raise RuntimeError('REPRESENTATIVE_PARTITION')
SRC|CT112|6|74:    if ct112.selftest() is not True: raise RuntimeError('CT112_HANDLER_SELFTEST')
SRC|CT112|6|81:        except OSError as e:
REC|CT112_SOURCE_FILE|IDX=7|BASENAME=representative_driver.py|SHA256=b3050a8f95e6d9826a4f0786cd3ca32012b6ab10486d10e4981b50b8a0affff2|SIZE=4214
SRC|CT112|7|25:CT112_ID='guest-pve01-lxc-112'
SRC|CT112|7|26:REPRESENTATIVE_IDS=(CT112_ID,)+LEGACY_IDS
SRC|CT112|7|53:    return legacy, selected[CT112_ID]
SRC|CT112|7|65:    except BaseException:
SRC|CT112|7|67:        except FileNotFoundError: pass
SRC|CT112|7|72:    def write_state(logical_id,result,**kw):
SRC|CT112|7|77:    return write_state
SRC|CT112|7|86:    previous=getattr(engine,'write_state',None)
SRC|CT112|7|89:    engine.write_state=_state_writer(STATE_ROOT)
SRC|CT112|7|93:        engine.write_state=previous
SRC|CT112|7|97:        raise ContractError('CT112_RESULT_SCHEMA')
SRC|CT112|7|98:    if result.get('logical_id')!=CT112_ID or result.get('status')!='OK':
SRC|CT112|7|99:        raise ContractError('CT112_RESULT_STATUS')
SRC|CT112|7|101:        raise ContractError('CT112_RESTORE_NOT_VERIFIED')
SRC|CT112|7|103:        raise ContractError('CT112_LOCAL_PAYLOAD_REMAINS')
SRC|CT112|7|108:        raise ContractError('CT112_CALLBACK_REQUIRED')
REC|CT112_SOURCE_FILE|IDX=8|BASENAME=ct112_handler.py|SHA256=e7b027de9a53d7219dd80c9d8e05f0eae0f53db90a53363c64dfa016815c0d00|SIZE=7923
SRC|CT112|8|9:CT_ID='guest-pve01-lxc-112'
SRC|CT112|8|27:    if p.returncode!=0 or len(p.stdout)>4*1024*1024:raise RuntimeError('PVESH_READ_FAILED')
SRC|CT112|8|29:    except (ValueError,UnicodeError):raise RuntimeError('PVESH_JSON') from None
SRC|CT112|8|33:    if t.sha(b)!=PLAN_SHA:raise RuntimeError('PLAN_REFERENCE_IDENTITY')
SRC|CT112|8|35:    except (ValueError,UnicodeError):raise RuntimeError('PLAN_REFERENCE_JSON') from None
SRC|CT112|8|39:    if not stat.S_ISREG(st.st_mode) or st.st_uid!=0 or st.st_size>1024*1024:raise RuntimeError('VZDUMP_DEFAULTS_FILE')
SRC|CT112|8|45:    if not isinstance(rows,list) or not isinstance(stores,list):raise RuntimeError('PVE_RESOURCE_SCHEMA')
SRC|CT112|8|50:        if type(vmid) is not int:raise RuntimeError('PVE_VMID_SCHEMA')
SRC|CT112|8|57:    if not stat.S_ISREG(st.st_mode) or st.st_uid!=0 or not (st.st_mode&0o111) or _sha(path)!=want:raise RuntimeError('TOOL_IDENTITY')
SRC|CT112|8|63:    if len(entries)!=13 or len({x['account_id'] for x in entries})!=13:raise RuntimeError('RCLONE_INVENTORY')
SRC|CT112|8|64:    if hashlib.sha256(binding.encode()).hexdigest()!=BINDING_FP:raise RuntimeError('RCLONE_BINDING')
SRC|CT112|8|83:        if e!=self.entries or bind!=self.binding:raise RuntimeError('RCLONE_SEMANTIC_DRIFT')
SRC|CT112|8|100:def run_target(target,state_writer=None):
SRC|CT112|8|101:    if not isinstance(target,dict) or target.get('logical_id')!=CT_ID or target.get('vmid')!=112:return (_ for _ in ()).throw(RuntimeError('CT112_DESCRIPTOR'))
SRC|CT112|8|102:    if _sha(PLAN,1024*1024)!=PLAN_SHA:raise RuntimeError('PLAN_REFERENCE_IDENTITY')
SRC|CT112|8|109:        if _sha(PVESH)!=pvesh_sha:raise RuntimeError('PVESH_CHANGED')
SRC|CT112|8|117:        if e!=entries or b!=binding:raise RuntimeError('RCLONE_SEMANTIC_DRIFT')
SRC|CT112|8|127:        if not isinstance(reps,list) or len(reps)!=2 or len({x.get('account_id') for x in reps})!=2:raise RuntimeError('REPLICA_PHYSICAL_INDEPENDENCE')
SRC|CT112|8|128:        if r.get('archive_cloud_restore_verified') is not True or r.get('local_payload_files_remaining')!=0:raise RuntimeError('CT112_RESTORE_CONTRACT')
SRC|CT112|8|131:        if work.exists():raise RuntimeError('CT112_WORKSPACE_CLEANUP')
SRC|CT112|8|135:    except BaseException:
SRC|CT112|8|137:        except BaseException:pass
REC|CT112_SOURCE_FILE|IDX=9|BASENAME=pve282.py|SHA256=73c6cb7773eb8e82d1e7ed5ab4733b4afb88f74ae69c09125d0378d6e480e012|SIZE=6195
SRC|CT112|9|26:    need(core.valid_hash(expected_config) and job.get('config_sha256')==expected_config,'CT112_PLAN_CONFIG_ANCHOR')
SRC|CT112|9|32:    need(TARGET_VMID in by_id,'CT112_MISSING_FROM_ACCEPTED265')
SRC|CT112|9|38:    need(len(selected)==1,'CT112_NOT_UNIQUE')
SRC|CT112|9|41:    need(job.get('compression_dependent') is False and job.get('configured_full_cycle_fits') is True,'CT112_FULL_CYCLE_SPACE_UNPROVEN')
SRC|CT112|9|42:    disks=job.get('disks');need(type(disks) is list and len(disks)==1,'CT112_SINGLE_ROOTFS_REQUIRED')
SRC|CT112|9|44:    need(disk.get('slot')=='rootfs' and disk.get('class')=='managed-volume' and disk.get('backup_setting') in ('included','included_default_rootfs'),'CT112_MANAGED_ROOTFS_REQUIRED')
SRC|CT112|9|46:    need(type(size) is int and 0<size<=stream.MAX_BYTES and size==disk.get('configured_size_bytes'),'CT112_ROOTFS_SIZE_INVALID')
SRC|CT112|9|59:        need(rc==0,'CT112_GATE_READ_FAILED')
SRC|CT112|9|61:        except (ValueError,UnicodeError):raise old.PVEError('CT112_GATE_JSON') from None
REC|CT112_SOURCE_FILE|IDX=10|BASENAME=wrapper.py|SHA256=d58b8bc842ac3ba3f1f9cf3dc844dd1445c196e0e93fda8ce5f4a0fd18f2e115|SIZE=5055
SRC|CT112|10|6:CT_ID='guest-pve01-lxc-112'
SRC|CT112|10|12:    if spec is None or spec.loader is None: raise RuntimeError('MODULE_SPEC')
SRC|CT112|10|33:    if type(due) is not int or due<=0: raise legacy.BackupError('CT112_CADENCE')
SRC|CT112|10|44:        r=ct112.run_target(t,state_writer=legacy.write_state)
SRC|CT112|10|47:    except BaseException:
SRC|CT112|10|48:        try: legacy.write_state(CT_ID,'FAIL',reason='CT112_PIPELINE_FAILED')
SRC|CT112|10|49:        except BaseException: pass
SRC|CT112|10|50:        raise legacy.BackupError('CT112_PIPELINE_FAILED') from None
SRC|CT112|10|56:    if legacy.PART_SIZE!=536870912: raise RuntimeError('LEGACY_PART_SIZE')
SRC|CT112|10|57:    if len(legacy.REMOTES)!=13 or len({p for _,p in legacy.REMOTES})!=13: raise RuntimeError('LEGACY_REMOTES')
SRC|CT112|10|59:    if not isinstance(d,list) or len(d)<28: raise RuntimeError('LEGACY_DEFAULT_TARGET_COUNT')
SRC|CT112|10|61:    if {t.get('logical_id') for t in d if isinstance(t,dict) and t.get('green1')}!=want: raise RuntimeError('LEGACY_DEFAULT_GREEN_SET')
SRC|CT112|10|62:    if legacy._pve_dumpdir_spec('lxc')!=(0o710,100000) or legacy._pve_dumpdir_spec('qemu')!=(0o700,0): raise RuntimeError('LEGACY_DUMPDIR_SPEC')
SRC|CT112|10|63:    if legacy.GUEST266_SHA!='86433bc424d5fa5017c20f7a237c82874b02357a3283660d8a6b0039ef2bc868': raise RuntimeError('LEGACY_GUEST266_SHA')
SRC|CT112|10|64:    if legacy.P282_SHA!='73c6cb7773eb8e82d1e7ed5ab4733b4afb88f74ae69c09125d0378d6e480e012': raise RuntimeError('LEGACY_P282_SHA')
SRC|CT112|10|71:    if len(eff)!=29 or sum(1 for x in eff if x.get('logical_id')==CT_ID)!=1: raise RuntimeError('EFFECTIVE_TARGETS')
SRC|CT112|10|73:    if [x['logical_id'] for x in legacy_rows]!=list(LEGACY_IDS) or ct.get('vmid')!=112: raise RuntimeError('REPRESENTATIVE_PARTITION')
SRC|CT112|10|74:    if ct112.selftest() is not True: raise RuntimeError('CT112_HANDLER_SELFTEST')
SRC|CT112|10|81:        except OSError as e:
REC|CT112_SOURCE_FILE|IDX=11|BASENAME=representative_driver.py|SHA256=b3050a8f95e6d9826a4f0786cd3ca32012b6ab10486d10e4981b50b8a0affff2|SIZE=4214
SRC|CT112|11|25:CT112_ID='guest-pve01-lxc-112'
SRC|CT112|11|26:REPRESENTATIVE_IDS=(CT112_ID,)+LEGACY_IDS
SRC|CT112|11|53:    return legacy, selected[CT112_ID]
SRC|CT112|11|65:    except BaseException:
SRC|CT112|11|67:        except FileNotFoundError: pass
SRC|CT112|11|72:    def write_state(logical_id,result,**kw):
SRC|CT112|11|77:    return write_state
SRC|CT112|11|86:    previous=getattr(engine,'write_state',None)
SRC|CT112|11|89:    engine.write_state=_state_writer(STATE_ROOT)
SRC|CT112|11|93:        engine.write_state=previous
SRC|CT112|11|97:        raise ContractError('CT112_RESULT_SCHEMA')
SRC|CT112|11|98:    if result.get('logical_id')!=CT112_ID or result.get('status')!='OK':
SRC|CT112|11|99:        raise ContractError('CT112_RESULT_STATUS')
SRC|CT112|11|101:        raise ContractError('CT112_RESTORE_NOT_VERIFIED')
SRC|CT112|11|103:        raise ContractError('CT112_LOCAL_PAYLOAD_REMAINS')
SRC|CT112|11|108:        raise ContractError('CT112_CALLBACK_REQUIRED')
REC|CT112_SOURCE_FILE|IDX=12|BASENAME=ct112_handler.py|SHA256=1bad56934074d19bd17ec71471d562b3f3d1d4c2d8fdfbad1897048b50c09c06|SIZE=9799
SRC|CT112|12|9:CT_ID='guest-pve01-lxc-112'
SRC|CT112|12|27:    if p.returncode!=0 or len(p.stdout)>4*1024*1024:raise RuntimeError('PVESH_READ_FAILED')
SRC|CT112|12|29:    except (ValueError,UnicodeError):raise RuntimeError('PVESH_JSON') from None
SRC|CT112|12|33:    if t.sha(b)!=PLAN_SHA:raise RuntimeError('PLAN_REFERENCE_IDENTITY')
SRC|CT112|12|35:    except (ValueError,UnicodeError):raise RuntimeError('PLAN_REFERENCE_JSON') from None
SRC|CT112|12|39:    if not stat.S_ISREG(st.st_mode) or st.st_uid!=0 or st.st_size>1024*1024:raise RuntimeError('VZDUMP_DEFAULTS_FILE')
SRC|CT112|12|45:    if not isinstance(rows,list) or not isinstance(stores,list):raise RuntimeError('PVE_RESOURCE_SCHEMA')
SRC|CT112|12|50:        if type(vmid) is not int:raise RuntimeError('PVE_VMID_SCHEMA')
SRC|CT112|12|57:    if type(plan) is not dict or plan.get('schema_version')!=1 or plan.get('node')!='pve01':raise RuntimeError('CT112_PLAN_SCHEMA')
SRC|CT112|12|59:    if type(jobs) is not list or type(plan.get('local_guest_count')) is not int or plan.get('local_guest_count')!=len(jobs):raise RuntimeError('CT112_PLAN_SCHEMA')
SRC|CT112|12|60:    if plan.get('global_blockers')!=[]:raise RuntimeError('CT112_GLOBAL_BLOCKERS')
SRC|CT112|12|62:    if len(vmids)!=len(jobs) or len(vmids)!=len(set(vmids)):raise RuntimeError('CT112_PLAN_MEMBERSHIP')
SRC|CT112|12|64:    if len(matches)!=1:raise RuntimeError('CT112_PLAN_MEMBERSHIP')
SRC|CT112|12|67:    if job.get('node')!='pve01' or job.get('type')!='lxc':raise RuntimeError('CT112_PLAN_IDENTITY')
SRC|CT112|12|68:    if job.get('coverage_eligible') is not True or job.get('blockers')!=[]:raise RuntimeError('CT112_PLAN_BLOCKED')
SRC|CT112|12|69:    if job.get('compression_dependent') is not False or job.get('configured_full_cycle_fits') is not True:raise RuntimeError('CT112_CAPACITY_POLICY')
SRC|CT112|12|70:    if type(job.get('configured_archive_bound_bytes')) is not int or job.get('archive_cap_bytes')!=job.get('configured_archive_bound_bytes'):raise RuntimeError('CT112_CAPACITY_BOUND')
SRC|CT112|12|71:    if expected_config is not None and job.get('config_sha256')!=expected_config:raise RuntimeError('CT112_CONFIG_DRIFT')
SRC|CT112|12|76:    if type(pair) is not tuple or len(pair)!=2 or any(type(n) is not int for n in pair):raise RuntimeError('PVE_IDMAP_HOST_MAPPING_SCHEMA')
SRC|CT112|12|84:    if not stat.S_ISREG(st.st_mode) or st.st_uid!=0 or not (st.st_mode&0o111) or _sha(path)!=want:raise RuntimeError('TOOL_IDENTITY')
SRC|CT112|12|90:    if len(entries)!=13 or len({x['account_id'] for x in entries})!=13:raise RuntimeError('RCLONE_INVENTORY')
SRC|CT112|12|91:    if hashlib.sha256(binding.encode()).hexdigest()!=BINDING_FP:raise RuntimeError('RCLONE_BINDING')
SRC|CT112|12|110:        if e!=self.entries or bind!=self.binding:raise RuntimeError('RCLONE_SEMANTIC_DRIFT')
SRC|CT112|12|127:def run_target(target,state_writer=None):
SRC|CT112|12|128:    if not isinstance(target,dict) or target.get('logical_id')!=CT_ID or target.get('vmid')!=112:return (_ for _ in ()).throw(RuntimeError('CT112_DESCRIPTOR'))
SRC|CT112|12|129:    if _sha(PLAN,1024*1024)!=PLAN_SHA:raise RuntimeError('PLAN_REFERENCE_IDENTITY')
SRC|CT112|12|137:        if _sha(PVESH)!=pvesh_sha:raise RuntimeError('PVESH_CHANGED')
SRC|CT112|12|146:        if e!=entries or b!=binding:raise RuntimeError('RCLONE_SEMANTIC_DRIFT')
SRC|CT112|12|156:        if not isinstance(reps,list) or len(reps)!=2 or len({x.get('account_id') for x in reps})!=2:raise RuntimeError('REPLICA_PHYSICAL_INDEPENDENCE')
SRC|CT112|12|157:        if r.get('archive_cloud_restore_verified') is not True or r.get('local_payload_files_remaining')!=0:raise RuntimeError('CT112_RESTORE_CONTRACT')
SRC|CT112|12|160:        if work.exists():raise RuntimeError('CT112_WORKSPACE_CLEANUP')
SRC|CT112|12|164:    except BaseException:
SRC|CT112|12|166:        except BaseException:pass
REC|CT112_SOURCE_FILE|IDX=13|BASENAME=representative_driver.py|SHA256=b3050a8f95e6d9826a4f0786cd3ca32012b6ab10486d10e4981b50b8a0affff2|SIZE=4214
SRC|CT112|13|25:CT112_ID='guest-pve01-lxc-112'
SRC|CT112|13|26:REPRESENTATIVE_IDS=(CT112_ID,)+LEGACY_IDS
SRC|CT112|13|53:    return legacy, selected[CT112_ID]
SRC|CT112|13|65:    except BaseException:
SRC|CT112|13|67:        except FileNotFoundError: pass
SRC|CT112|13|72:    def write_state(logical_id,result,**kw):
SRC|CT112|13|77:    return write_state
SRC|CT112|13|86:    previous=getattr(engine,'write_state',None)
SRC|CT112|13|89:    engine.write_state=_state_writer(STATE_ROOT)
SRC|CT112|13|93:        engine.write_state=previous
SRC|CT112|13|97:        raise ContractError('CT112_RESULT_SCHEMA')
SRC|CT112|13|98:    if result.get('logical_id')!=CT112_ID or result.get('status')!='OK':
SRC|CT112|13|99:        raise ContractError('CT112_RESULT_STATUS')
SRC|CT112|13|101:        raise ContractError('CT112_RESTORE_NOT_VERIFIED')
SRC|CT112|13|103:        raise ContractError('CT112_LOCAL_PAYLOAD_REMAINS')
SRC|CT112|13|108:        raise ContractError('CT112_CALLBACK_REQUIRED')
REC|CT112_SOURCE_FILE|IDX=14|BASENAME=pve282.py|SHA256=73c6cb7773eb8e82d1e7ed5ab4733b4afb88f74ae69c09125d0378d6e480e012|SIZE=6195
SRC|CT112|14|26:    need(core.valid_hash(expected_config) and job.get('config_sha256')==expected_config,'CT112_PLAN_CONFIG_ANCHOR')
SRC|CT112|14|32:    need(TARGET_VMID in by_id,'CT112_MISSING_FROM_ACCEPTED265')
SRC|CT112|14|38:    need(len(selected)==1,'CT112_NOT_UNIQUE')
SRC|CT112|14|41:    need(job.get('compression_dependent') is False and job.get('configured_full_cycle_fits') is True,'CT112_FULL_CYCLE_SPACE_UNPROVEN')
SRC|CT112|14|42:    disks=job.get('disks');need(type(disks) is list and len(disks)==1,'CT112_SINGLE_ROOTFS_REQUIRED')
SRC|CT112|14|44:    need(disk.get('slot')=='rootfs' and disk.get('class')=='managed-volume' and disk.get('backup_setting') in ('included','included_default_rootfs'),'CT112_MANAGED_ROOTFS_REQUIRED')
SRC|CT112|14|46:    need(type(size) is int and 0<size<=stream.MAX_BYTES and size==disk.get('configured_size_bytes'),'CT112_ROOTFS_SIZE_INVALID')
SRC|CT112|14|59:        need(rc==0,'CT112_GATE_READ_FAILED')
SRC|CT112|14|61:        except (ValueError,UnicodeError):raise old.PVEError('CT112_GATE_JSON') from None
REC|CT112_SOURCE_FILE|IDX=15|BASENAME=pve282.py|SHA256=73c6cb7773eb8e82d1e7ed5ab4733b4afb88f74ae69c09125d0378d6e480e012|SIZE=6195
SRC|CT112|15|26:    need(core.valid_hash(expected_config) and job.get('config_sha256')==expected_config,'CT112_PLAN_CONFIG_ANCHOR')
SRC|CT112|15|32:    need(TARGET_VMID in by_id,'CT112_MISSING_FROM_ACCEPTED265')
SRC|CT112|15|38:    need(len(selected)==1,'CT112_NOT_UNIQUE')
SRC|CT112|15|41:    need(job.get('compression_dependent') is False and job.get('configured_full_cycle_fits') is True,'CT112_FULL_CYCLE_SPACE_UNPROVEN')
SRC|CT112|15|42:    disks=job.get('disks');need(type(disks) is list and len(disks)==1,'CT112_SINGLE_ROOTFS_REQUIRED')
SRC|CT112|15|44:    need(disk.get('slot')=='rootfs' and disk.get('class')=='managed-volume' and disk.get('backup_setting') in ('included','included_default_rootfs'),'CT112_MANAGED_ROOTFS_REQUIRED')
SRC|CT112|15|46:    need(type(size) is int and 0<size<=stream.MAX_BYTES and size==disk.get('configured_size_bytes'),'CT112_ROOTFS_SIZE_INVALID')
SRC|CT112|15|59:        need(rc==0,'CT112_GATE_READ_FAILED')
SRC|CT112|15|61:        except (ValueError,UnicodeError):raise old.PVEError('CT112_GATE_JSON') from None
REC|CT112_SOURCE_FILE|IDX=16|BASENAME=wrapper.py|SHA256=8e6ad619c39105d9c238c0a9f0bd9265dba941f65729cbe03e9f1acbd90ba6cd|SIZE=5055
SRC|CT112|16|6:CT_ID='guest-pve01-lxc-112'
SRC|CT112|16|12:    if spec is None or spec.loader is None: raise RuntimeError('MODULE_SPEC')
SRC|CT112|16|33:    if type(due) is not int or due<=0: raise legacy.BackupError('CT112_CADENCE')
SRC|CT112|16|44:        r=ct112.run_target(t,state_writer=legacy.write_state)
SRC|CT112|16|47:    except BaseException:
SRC|CT112|16|48:        try: legacy.write_state(CT_ID,'FAIL',reason='CT112_PIPELINE_FAILED')
SRC|CT112|16|49:        except BaseException: pass
SRC|CT112|16|50:        raise legacy.BackupError('CT112_PIPELINE_FAILED') from None
SRC|CT112|16|56:    if legacy.PART_SIZE!=536870912: raise RuntimeError('LEGACY_PART_SIZE')
SRC|CT112|16|57:    if len(legacy.REMOTES)!=13 or len({p for _,p in legacy.REMOTES})!=13: raise RuntimeError('LEGACY_REMOTES')
SRC|CT112|16|59:    if not isinstance(d,list) or len(d)<28: raise RuntimeError('LEGACY_DEFAULT_TARGET_COUNT')
SRC|CT112|16|61:    if {t.get('logical_id') for t in d if isinstance(t,dict) and t.get('green1')}!=want: raise RuntimeError('LEGACY_DEFAULT_GREEN_SET')
SRC|CT112|16|62:    if legacy._pve_dumpdir_spec('lxc')!=(0o710,100000) or legacy._pve_dumpdir_spec('qemu')!=(0o700,0): raise RuntimeError('LEGACY_DUMPDIR_SPEC')
SRC|CT112|16|63:    if legacy.GUEST266_SHA!='86433bc424d5fa5017c20f7a237c82874b02357a3283660d8a6b0039ef2bc868': raise RuntimeError('LEGACY_GUEST266_SHA')
SRC|CT112|16|64:    if legacy.P282_SHA!='73c6cb7773eb8e82d1e7ed5ab4733b4afb88f74ae69c09125d0378d6e480e012': raise RuntimeError('LEGACY_P282_SHA')
SRC|CT112|16|71:    if len(eff)!=29 or sum(1 for x in eff if x.get('logical_id')==CT_ID)!=1: raise RuntimeError('EFFECTIVE_TARGETS')
SRC|CT112|16|73:    if [x['logical_id'] for x in legacy_rows]!=list(LEGACY_IDS) or ct.get('vmid')!=112: raise RuntimeError('REPRESENTATIVE_PARTITION')
SRC|CT112|16|74:    if ct112.selftest() is not True: raise RuntimeError('CT112_HANDLER_SELFTEST')
SRC|CT112|16|81:        except OSError as e:
REC|CT112_SOURCE_FILE|IDX=17|BASENAME=representative_driver.py|SHA256=b3050a8f95e6d9826a4f0786cd3ca32012b6ab10486d10e4981b50b8a0affff2|SIZE=4214
SRC|CT112|17|25:CT112_ID='guest-pve01-lxc-112'
SRC|CT112|17|26:REPRESENTATIVE_IDS=(CT112_ID,)+LEGACY_IDS
SRC|CT112|17|53:    return legacy, selected[CT112_ID]
SRC|CT112|17|65:    except BaseException:
SRC|CT112|17|67:        except FileNotFoundError: pass
SRC|CT112|17|72:    def write_state(logical_id,result,**kw):
SRC|CT112|17|77:    return write_state
SRC|CT112|17|86:    previous=getattr(engine,'write_state',None)
SRC|CT112|17|89:    engine.write_state=_state_writer(STATE_ROOT)
SRC|CT112|17|93:        engine.write_state=previous
SRC|CT112|17|97:        raise ContractError('CT112_RESULT_SCHEMA')
SRC|CT112|17|98:    if result.get('logical_id')!=CT112_ID or result.get('status')!='OK':
SRC|CT112|17|99:        raise ContractError('CT112_RESULT_STATUS')
SRC|CT112|17|101:        raise ContractError('CT112_RESTORE_NOT_VERIFIED')
SRC|CT112|17|103:        raise ContractError('CT112_LOCAL_PAYLOAD_REMAINS')
SRC|CT112|17|108:        raise ContractError('CT112_CALLBACK_REQUIRED')
REC|CT112_SOURCE_FILE|IDX=18|BASENAME=ct112_handler.py|SHA256=5d42a45a1a21c38f71d9ae805e831d2ed8dd24b111ad5972b1fd6c01f909e689|SIZE=9461
SRC|CT112|18|9:CT_ID='guest-pve01-lxc-112'
SRC|CT112|18|27:    if p.returncode!=0 or len(p.stdout)>4*1024*1024:raise RuntimeError('PVESH_READ_FAILED')
SRC|CT112|18|29:    except (ValueError,UnicodeError):raise RuntimeError('PVESH_JSON') from None
SRC|CT112|18|33:    if t.sha(b)!=PLAN_SHA:raise RuntimeError('PLAN_REFERENCE_IDENTITY')
SRC|CT112|18|35:    except (ValueError,UnicodeError):raise RuntimeError('PLAN_REFERENCE_JSON') from None
SRC|CT112|18|39:    if not stat.S_ISREG(st.st_mode) or st.st_uid!=0 or st.st_size>1024*1024:raise RuntimeError('VZDUMP_DEFAULTS_FILE')
SRC|CT112|18|45:    if not isinstance(rows,list) or not isinstance(stores,list):raise RuntimeError('PVE_RESOURCE_SCHEMA')
SRC|CT112|18|50:        if type(vmid) is not int:raise RuntimeError('PVE_VMID_SCHEMA')
SRC|CT112|18|57:    if type(plan) is not dict or plan.get('schema_version')!=1 or plan.get('node')!='pve01':raise RuntimeError('CT112_PLAN_SCHEMA')
SRC|CT112|18|59:    if type(jobs) is not list or type(plan.get('local_guest_count')) is not int or plan.get('local_guest_count')!=len(jobs):raise RuntimeError('CT112_PLAN_SCHEMA')
SRC|CT112|18|60:    if plan.get('global_blockers')!=[]:raise RuntimeError('CT112_GLOBAL_BLOCKERS')
SRC|CT112|18|62:    if len(vmids)!=len(jobs) or len(vmids)!=len(set(vmids)):raise RuntimeError('CT112_PLAN_MEMBERSHIP')
SRC|CT112|18|64:    if len(matches)!=1:raise RuntimeError('CT112_PLAN_MEMBERSHIP')
SRC|CT112|18|67:    if job.get('node')!='pve01' or job.get('type')!='lxc':raise RuntimeError('CT112_PLAN_IDENTITY')
SRC|CT112|18|68:    if job.get('coverage_eligible') is not True or job.get('blockers')!=[]:raise RuntimeError('CT112_PLAN_BLOCKED')
SRC|CT112|18|69:    if job.get('compression_dependent') is not False or job.get('configured_full_cycle_fits') is not True:raise RuntimeError('CT112_CAPACITY_POLICY')
SRC|CT112|18|70:    if type(job.get('configured_archive_bound_bytes')) is not int or job.get('archive_cap_bytes')!=job.get('configured_archive_bound_bytes'):raise RuntimeError('CT112_CAPACITY_BOUND')
SRC|CT112|18|71:    if expected_config is not None and job.get('config_sha256')!=expected_config:raise RuntimeError('CT112_CONFIG_DRIFT')
SRC|CT112|18|76:    if not stat.S_ISREG(st.st_mode) or st.st_uid!=0 or not (st.st_mode&0o111) or _sha(path)!=want:raise RuntimeError('TOOL_IDENTITY')
SRC|CT112|18|82:    if len(entries)!=13 or len({x['account_id'] for x in entries})!=13:raise RuntimeError('RCLONE_INVENTORY')
SRC|CT112|18|83:    if hashlib.sha256(binding.encode()).hexdigest()!=BINDING_FP:raise RuntimeError('RCLONE_BINDING')
SRC|CT112|18|102:        if e!=self.entries or bind!=self.binding:raise RuntimeError('RCLONE_SEMANTIC_DRIFT')
SRC|CT112|18|119:def run_target(target,state_writer=None):
SRC|CT112|18|120:    if not isinstance(target,dict) or target.get('logical_id')!=CT_ID or target.get('vmid')!=112:return (_ for _ in ()).throw(RuntimeError('CT112_DESCRIPTOR'))
SRC|CT112|18|121:    if _sha(PLAN,1024*1024)!=PLAN_SHA:raise RuntimeError('PLAN_REFERENCE_IDENTITY')
SRC|CT112|18|129:        if _sha(PVESH)!=pvesh_sha:raise RuntimeError('PVESH_CHANGED')
SRC|CT112|18|138:        if e!=entries or b!=binding:raise RuntimeError('RCLONE_SEMANTIC_DRIFT')
SRC|CT112|18|148:        if not isinstance(reps,list) or len(reps)!=2 or len({x.get('account_id') for x in reps})!=2:raise RuntimeError('REPLICA_PHYSICAL_INDEPENDENCE')
SRC|CT112|18|149:        if r.get('archive_cloud_restore_verified') is not True or r.get('local_payload_files_remaining')!=0:raise RuntimeError('CT112_RESTORE_CONTRACT')
SRC|CT112|18|152:        if work.exists():raise RuntimeError('CT112_WORKSPACE_CLEANUP')
SRC|CT112|18|156:    except BaseException:
SRC|CT112|18|158:        except BaseException:pass
REC|CT112_SOURCE_FILE|IDX=19|BASENAME=pve282.py|SHA256=73c6cb7773eb8e82d1e7ed5ab4733b4afb88f74ae69c09125d0378d6e480e012|SIZE=6195
SRC|CT112|19|26:    need(core.valid_hash(expected_config) and job.get('config_sha256')==expected_config,'CT112_PLAN_CONFIG_ANCHOR')
SRC|CT112|19|32:    need(TARGET_VMID in by_id,'CT112_MISSING_FROM_ACCEPTED265')
SRC|CT112|19|38:    need(len(selected)==1,'CT112_NOT_UNIQUE')
SRC|CT112|19|41:    need(job.get('compression_dependent') is False and job.get('configured_full_cycle_fits') is True,'CT112_FULL_CYCLE_SPACE_UNPROVEN')
SRC|CT112|19|42:    disks=job.get('disks');need(type(disks) is list and len(disks)==1,'CT112_SINGLE_ROOTFS_REQUIRED')
SRC|CT112|19|44:    need(disk.get('slot')=='rootfs' and disk.get('class')=='managed-volume' and disk.get('backup_setting') in ('included','included_default_rootfs'),'CT112_MANAGED_ROOTFS_REQUIRED')
SRC|CT112|19|46:    need(type(size) is int and 0<size<=stream.MAX_BYTES and size==disk.get('configured_size_bytes'),'CT112_ROOTFS_SIZE_INVALID')
SRC|CT112|19|59:        need(rc==0,'CT112_GATE_READ_FAILED')
SRC|CT112|19|61:        except (ValueError,UnicodeError):raise old.PVEError('CT112_GATE_JSON') from None
REC|CT112_SOURCE_FILE|IDX=20|BASENAME=wrapper.py|SHA256=ed04b2634fcba72bdf07811135aed8fd609e849afcde456d433f305be5bb956a|SIZE=4099
SRC|CT112|20|6:CT_ID='guest-pve01-lxc-112'
SRC|CT112|20|12:    if spec is None or spec.loader is None: raise RuntimeError('MODULE_SPEC')
SRC|CT112|20|33:    if type(due) is not int or due<=0: raise legacy.BackupError('CT112_CADENCE')
SRC|CT112|20|44:        r=ct112.run_target(t,state_writer=legacy.write_state)
SRC|CT112|20|47:    except BaseException:
SRC|CT112|20|48:        try: legacy.write_state(CT_ID,'FAIL',reason='CT112_PIPELINE_FAILED')
SRC|CT112|20|49:        except BaseException: pass
SRC|CT112|20|50:        raise legacy.BackupError('CT112_PIPELINE_FAILED') from None
SRC|CT112|20|57:    if rc!=0: raise RuntimeError('LEGACY_SELFTEST')
SRC|CT112|20|59:    if len(eff)!=29 or sum(1 for x in eff if x.get('logical_id')==CT_ID)!=1: raise RuntimeError('EFFECTIVE_TARGETS')
SRC|CT112|20|61:    if [x['logical_id'] for x in legacy_rows]!=list(LEGACY_IDS) or ct.get('vmid')!=112: raise RuntimeError('REPRESENTATIVE_PARTITION')
SRC|CT112|20|62:    if ct112.selftest() is not True: raise RuntimeError('CT112_HANDLER_SELFTEST')
SRC|CT112|20|69:        except OSError as e:
CT112_SOURCE_FILE_COUNT=20
REC|CT112_STATE_FILE|IDX=1|BASENAME=ct112.json|PATH_SHA256=4650ea76820591a6e992aec1b18082b7e81a1ddb2613556f7c8139c0036ec824|SHA256=64f302f9156d0fd91c340023caf8f003810b8a66c84d446dccc063cbbb01a8cd|SIZE=609
REC|CT112_STATE_FIELD|IDX=1|KEY=logical_id|VALUE=ct112
REC|CT112_STATE_FIELD|IDX=1|KEY=result|VALUE=SUCCESS
REC|CT112_STATE_FIELD|IDX=1|KEY=last_success_epoch|VALUE=1791348739
REC|CT112_STATE_FIELD|IDX=1|KEY=last_attempt_epoch|VALUE=1791348739
REC|CT112_STATE_FIELD|IDX=1|KEY=generation|VALUE=v2-ct112-20261007T045109Z-ce9503fc59c5
REC|CT112_STATE_FILE|IDX=2|BASENAME=guest-pve01-lxc-112.json|PATH_SHA256=5211dfc0645d177de3ac4e85db86b9e305060b84bbebcf62f0aa6aa8b88b13ca|SHA256=b737b8c81c6e16f480c8227f0645e5236e412cf22de0da6af83ff6d6dc37e4bb|SIZE=845
REC|CT112_STATE_FIELD|IDX=2|KEY=logical_id|VALUE=guest-pve01-lxc-112
REC|CT112_STATE_FIELD|IDX=2|KEY=result|VALUE=FAIL
REC|CT112_STATE_FIELD|IDX=2|KEY=reason|VALUE=CT112_PIPELINE_FAILED
REC|CT112_STATE_FIELD|IDX=2|KEY=last_success_epoch|VALUE=1790297001
REC|CT112_STATE_FIELD|IDX=2|KEY=last_attempt_epoch|VALUE=1791375479
CT112_STATE_FILE_COUNT=2
REC|ISSUE|BACKUP_NOT_GREEN
REC|ISSUE|BACKUP_ISSUE_PRESENT
DNS_NS_SHA256=876800f2ea41ad454f6f8fa25eac5fc4ef898632dd7f6cc6f0093c1848498853
REC|DNS_LXC_IP|VMID=110|NODE=pve01|IDX=1|IP_SHA256=9ebe3b0dd23e6c9ec496e66c9839ed8f735dcb0a28ba79109f6c906bfd4e0b3e|MATCH_NS=false
REC|DNS_LXC_IP|VMID=111|NODE=pve02|IDX=1|IP_SHA256=69dcd1b083ef51977c3fae0424def26fc5f0d590c28b53735f2db42667916b50|MATCH_NS=false
REC|DNS_LXC_IP|VMID=112|NODE=pve01|IDX=1|IP_SHA256=93c04616b24b22434ca85ae6520617ebcdbfdd82da63c7611397e6d2b8add93c|MATCH_NS=false
REC|DNS_LXC_IP|VMID=113|NODE=pve02|IDX=1|IP_SHA256=1d87ab378dbfd41bf18b819fd8ed963783f05c4523af0b7302ac8ddb3d09e596|MATCH_NS=false

OUTPUT_END
CHAT_OUTPUT_END
