CHAT_OUTPUT_BEGIN
COMMAND_ID=SUPPORT-260915-INFRA-DR-BACKUPV2-PVE-LXC-DEFAULTS-CONTRACT-RCA-416R1
STATUS=OK
RC=0
HOST=pve01
MODE=read-only
COMPONENT=infra-dr-backupv2-pve-lxc-defaults-contract-rca
REFERENCE_REGISTER_CHECK=OK
REFERENCE_SHA256=5a3d8e5154c41cb582a4e0aca68090be1f0138918bf82131a948df326f9d8d66
ERROR_REGISTER_CHECK=OK
ERROR_REGISTER_SHA256=3b09a553ec0f527ed3afeed4753f52a74ee3036045bbfb3c685e9f8af4ba7ba0
COMMAND_SHA256=6c6be41d3c9f9a904843f64e8357c233aaa59c2a8254848b673b69689f86bda3
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=86735de24a5e1db4f6e1ee22bb7d42d9d12246a095f421714d6cfac0bc1e9813
SANITIZED_OUTPUT_SHA256=86735de24a5e1db4f6e1ee22bb7d42d9d12246a095f421714d6cfac0bc1e9813
OUTPUT_BEGIN
COMMAND_ID=SUPPORT-260915-INFRA-DR-BACKUPV2-PVE-LXC-DEFAULTS-CONTRACT-RCA-416R1
MODE=READ_ONLY_PVE_LXC_DEFAULTS_CONTRACT_RCA
NO_BACKUP_EXECUTION=YES
NO_VZDUMP_EXECUTION=YES
NO_CLOUD_ACCESS=YES
NO_SYSTEMD_MUTATION=YES
NO_PRODUCTION_PROMOTION=YES
ANCHOR_BINDINGS=PASS
PRODUCTION_AND_CANDIDATE_IDENTITY=PASS
DEFAULTS_SUMMARY_CONTRACT={"calls":[{"call":"need(raw is None or (type(raw) is bytes and len(raw) <= 262144), 'DEFAULTS_BOUND')","line":2},{"call":"set()","line":7},{"call":"set()","line":7},{"call":"text.splitlines()","line":8},{"call":"sorted(seen)","line":19},{"call":"sorted(block)","line":19},{"call":"raw.decode('utf-8-sig')","line":5},{"call":"line.strip()","line":9},{"call":"re.fullmatch('([a-z][a-z0-9_-]*)\\\\s*:\\\\s*(.*)', line)","line":11},{"call":"m.groups()","line":13},{"call":"seen.add(key)","line":15},{"call":"t.sha(raw)","line":3},{"call":"line.startswith('#')","line":10},{"call":"block.add('GLOBAL_DEFAULT_PARSE')","line":12},{"call":"block.add('GLOBAL_DEFAULT_DUPLICATE')","line":14},{"call":"block.add('GLOBAL_DEFAULT_SCRIPT')","line":16},{"call":"block.add('GLOBAL_DEFAULT_EXCLUDE_PATH')","line":17},{"call":"type(raw)","line":2},{"call":"len(raw)","line":2},{"call":"block.add('GLOBAL_DEFAULT_UNREVIEWED')","line":18}],"need_calls":[{"code":"DEFAULTS_BOUND","line":2,"predicate":"raw is None or (type(raw) is bytes and len(raw) <= 262144)"}],"signature":"(raw)","source":"def defaults_summary(raw):\n    need(raw is None or type(raw) is bytes and len(raw)<=262144,'DEFAULTS_BOUND')\n    result={'present':raw is not None,'sha256':t.sha(raw) if raw is not None else None,'keys':[],'blockers':[]}\n    if raw is None:return result\n    try:text=raw.decode('utf-8-sig')\n    except UnicodeError:result['blockers']=['GLOBAL_DEFAULT_PARSE'];return result\n    seen=set();block=set()\n    for line in text.splitlines():\n        line=line.strip()\n        if not line or line.startswith('#'):continue\n        m=re.fullmatch(r'([a-z][a-z0-9_-]*)\\s*:\\s*(.*)',line)\n        if not m:block.add('GLOBAL_DEFAULT_PARSE');continue\n        key,value=m.groups()\n        if key in seen:block.add('GLOBAL_DEFAULT_DUPLICATE')\n        seen.add(key)\n        if key=='script':block.add('GLOBAL_DEFAULT_SCRIPT')\n        elif key=='exclude-path':block.add('GLOBAL_DEFAULT_EXCLUDE_PATH')\n        elif key not in OVERRIDDEN:block.add('GLOBAL_DEFAULT_UNREVIEWED')\n    result['keys']=sorted(seen);result['blockers']=sorted(block);return result\n","source_sha256":"c1a47c0c02d3cb0130446a10564e4387abd0d1506e7f78df699ae2c2aa59caf4"}
MAKE_PLAN_DEFAULTS_BOUNDARY={"defaults_calls":[{"call":"defaults_summary(defaults)","line":8}],"need_calls":[{"code":"NODE_NAME","line":2,"predicate":"np.valid_id(node)"},{"code":"SPACE_VALUE","line":3,"predicate":"type(staging_free) is int and 0 <= staging_free <= 2 ** 63 - 1"},{"code":"PLAN_TIME","line":4,"predicate":"type(now) is int and now >= 0"},{"code":"CONFIGS_SCHEMA","line":5,"predicate":"type(configs) is dict"},{"code":"DUPLICATE_STORAGE","line":7,"predicate":"len({x['storage'] for x in ss}) == len(ss)"},{"code":"GUEST_CONFIG_MISSING","line":11,"predicate":"g['vmid'] in configs"}],"signature":"(rows, configs, storage_rows, defaults, staging_free, now, node='pve01')"}
EMPTY_DEFAULTS_PROBE={"exception_class":"pve265.PVEError","message_sha256":"465ac0da8be967b9992b69ba3dae7af890204497ffa374a8a80b3fda356da8b0","ok":false,"safe_code":"DEFAULTS_BOUND"}
HISTORICAL_DEFAULTS_TEST_CONTRACT=[{"assignments":[{"line":16,"name":"cfg","value":{"keys":["Constant","Constant"],"kind":"Dict","value_types":["Dict","Dict"]}}],"calls":[{"args":[{"id":"rows","kind":"Name"},{"id":"cfg","kind":"Name"},{"expr":"[{'storage': 'local-lvm', 'type': 'lvmthin', 'active': 1, 'enabled': 1, 'avail': 200 * G, 'total': 1000 * G, 'used': 800 * G}]","kind":"List"},{"kind":"Constant","type":"bytes"},{"expr":"280 * G","kind":"BinOp"},{"id":"NOW","kind":"Name"}],"fn":"make_plan","keywords":{},"line":17,"owner":"plan"}],"file":"test_guest266.py","references":[{"line":17,"sha256":"363010a9369965f9b7b07b3a569450125a7d2fbf7d8e21803195bd089f09d875","tokens":["z","p.make_plan","rows","cfg","storage","local-lvm","type","lvmthin","active","enabled","avail","G","total","G","used","G","b","empty","n","G","NOW"]},{"line":105,"sha256":"dd512699c0f6636c3f52ffcfdd2bf1852dc59826476d4fcdd940c2b1d8b71c51","tokens":["def","test_changed_defaults_rejected","self"]},{"line":106,"sha256":"ecb7ad0654eef7da1c3d8ac28bdf5e27251b7caceb0f1f9c1265905e29859492","tokens":["before","plan","after","copy.deepcopy","before","after","global_defaults","sha256"]}],"sha256":"460b950924a475ce0a28dc759512e7dbe2323ae2cc42f7ef4c6181710a2a13da"},{"assignments":[{"line":8,"name":"CFG","value":{"keys":["rootfs","unprivileged"],"kind":"Dict","value_types":["Constant","Constant"]}}],"calls":[],"file":"test_producer282.py","references":[{"line":14,"sha256":"af80ccbc49c4cffbfa9604123e6032f494220a98a5f50e18d249b6c172894408","tokens":["def","test_default_mapping","self","self.assertEqual","f.validate_mapping","MAP"]}],"sha256":"a67d927cc428935791f9eecc3acf571d089f80761162f4589b7d684fba6b8af7"},{"assignments":[],"calls":[{"args":[{"expr":"rows or [row()]","kind":"BoolOp"},{"expr":"configs or {110: cfg()}","kind":"BoolOp"},{"expr":"storage if storage is not None else stores()","kind":"IfExp"},{"id":"defaults","kind":"Name"},{"id":"free","kind":"Name"},{"id":"now","kind":"Name"}],"fn":"make_plan","keywords":{},"line":18,"owner":"plan"}],"file":"test_pve265.py","references":[{"line":17,"sha256":"acebdcbef07bd858ee2b1635ecde6eb74572c77b1c94a1f8698dd23c6010ad32","tokens":["def","plan","rows","None","configs","None","storage","None","defaults","b","free","now"]},{"line":18,"sha256":"5834ac94c1255ab7840f6db0044f77f59c26141a78b8e72fff679d971272bd9d","tokens":["return","p.make_plan","rows","or","row","configs","or","cfg","storage","if","storage","is","not","None","else","stores","defaults","free","now"]},{"line":28,"sha256":"a3804228ebedc563e8f56b1b4c914996f9aa7d7f4404ff555bcb1c0092993841","tokens":["def","test_rootfs_default_is_documented_inclusion","self"]},{"line":29,"sha256":"229598de22393fc746ea3bad49570ce9fe3872e88071450c6df34717ef4378c8","tokens":["j","self.job","self.assertEqual","j","blockers","self.assertTrue","j","coverage_eligible","self.assertEqual","j","disks","backup_setting","included_default_rootfs"]},{"line":30,"sha256":"09caa8fae7646375eab8ce359421d16083f1d405dd07849c9b12e5924dcb3b8e","tokens":["def","test_qemu_default_inclusion","self","self.assertEqual","self.job","qemu","disks","backup_setting","included_default_qemu"]},{"line":32,"sha256":"76184450087397a7ad58fe773be6a675c4b6f596a0c9e469539f605714be5ec4","tokens":["def","test_mp_default_not_backed_up","self","self.assertIn","LXC_EXTRA_MOUNT_BACKUP_UNPROVEN","self.job","mp0","local-lvm","v","mp","data","size","G","blockers"]},{"line":58,"sha256":"8127d73baa2c7c468b9db455c5967e7de6c54b11cd6de8679a26e33e2d3fdba2","tokens":["q","plan","defaults","b","script","secret/hook","n","self.assertIn","GLOBAL_DEFAULT_SCRIPT","q","global_blockers","self.assertNotIn","secret","str","q"]},{"line":59,"sha256":"eb1732b095bce166987de781fe0339d75bb66f0522bcb75892d1556b795ace3a","tokens":["def","test_global_exclusions_block","self","self.assertIn","GLOBAL_DEFAULT_EXCLUDE_PATH","plan","defaults","b","exclude-path","data","n","global_blockers"]},{"line":60,"sha256":"fba5e6f4a6ef9aecb6c45b50c882808ec2666a72e39b736ad219b15ed6d71ad7","tokens":["def","test_global_overridden_defaults_are_explicit","self","self.assertEqual","plan","defaults","b","mode","stop","nremove","nstdexcludes","n","global_blockers"]},{"line":61,"sha256":"6dd4febfdaf90b1cbfeec5257fe5131fe6505c7b878826178767b08526cfb21b","tokens":["def","test_unknown_global_default_blocks","self","self.assertIn","GLOBAL_DEFAULT_UNREVIEWED","plan","defaults","b","future-option","yes","n","global_blockers"]},{"line":62,"sha256":"090de8ead15ab83a0950d9a291ed2f4cffb49b8e58302bd3d1780ef8b3b61e69","tokens":["def","test_malformed_default_blocks","self","self.assertIn","GLOBAL_DEFAULT_PARSE","plan","defaults","b","not","valid","n","global_blockers"]},{"line":63,"sha256":"713f384c15ec3c5cc63cf9b1fd96645bfcad3356fbbadb43bb69bfba42901421","tokens":["def","test_duplicate_default_blocks","self","self.assertIn","GLOBAL_DEFAULT_DUPLICATE","plan","defaults","b","mode","snapshot","nmode","stop","n","global_blockers"]}],"sha256":"16a9407d01bf73db687ef38684c59205fc2e6a9223cd9cee6ec6e8dde9d38707"},{"assignments":[{"line":8,"name":"CFG","value":{"keys":["rootfs","unprivileged"],"kind":"Dict","value_types":["Constant","Constant"]}}],"calls":[],"file":"test_pve270.py","references":[{"line":14,"sha256":"af80ccbc49c4cffbfa9604123e6032f494220a98a5f50e18d249b6c172894408","tokens":["def","test_default_mapping","self","self.assertEqual","f.validate_mapping","MAP"]}],"sha256":"9fccd20b490613fdd5b14b4105cf0d9fd744f204e1ed1d6893e54c9f69bf6fb4"},{"assignments":[{"line":18,"name":"configs","value":{"expr":"{v: {'rootfs': f'local-lvm:vm-{v}-disk-0,size=8G', 'unprivileged': 1} if v in (110, 112) else {'scsi0': f'local-lvm:vm-{v}-disk-0,size=8G'} for v in (110, 112, ","kind":"DictComp"}}],"calls":[{"args":[{"id":"rows","kind":"Name"},{"id":"configs","kind":"Name"},{"expr":"[{'storage': 'local-lvm', 'type': 'lvmthin', 'active': 1, 'enabled': 1, 'avail': 200 * G, 'total': 1000 * G, 'used': 800 * G}]","kind":"List"},{"kind":"Constant","type":"bytes"},{"expr":"280 * G","kind":"BinOp"},{"id":"now","kind":"Name"}],"fn":"make_plan","keywords":{},"line":19,"owner":"plan"}],"file":"test_pve282.py","references":[{"line":19,"sha256":"f5b434cfc373b04d2ea315c74a670b38536f507e371032015f94e6cf654ea890","tokens":["z","p.make_plan","rows","configs","storage","local-lvm","type","lvmthin","active","enabled","avail","G","total","G","used","G","b","empty","n","G","now"]},{"line":54,"sha256":"6fb3fce1a3a47228e6bc307c1a42633e1f46dd89ef693b40c0ace38f402972af","tokens":["def","test_global_defaults_changed","self","self.reject","lambda","a","a","global_defaults","update","sha256"]}],"sha256":"1056407aab76e17181b05e043cb42c086058545a8e0027689ab4e03eee6531c4"}]
DEFAULTS_RELATED_MODULE_INDEX=[{"defs":[{"args":["config","kind"],"line":40,"name":"config_summary"}],"file":"nodeplan263.py","sha256":"db5c16ee24d25aa1694530332d3190ab7cc5d4f8eb69067d025e27ad5c995060"},{"defs":[{"args":["raw"],"line":37,"name":"defaults_summary"},{"args":["config"],"line":57,"name":"normalized_config"}],"file":"pve265.py","sha256":"cd2f634414a8e38a3789015aeca5a9b47821f77d7d1fa61dcdbdc866172963be"},{"defs":[{"args":["path","limit","private"],"line":53,"name":"read_secure"}],"file":"transport261.py","sha256":"b9b92f957bf441cb5d1702f4881897328e6c0338f8c3f6d41d27d9a349b37688"},{"defs":[{"args":["text"],"line":53,"name":"inventory_from_config"}],"file":"v2core.py","sha256":"e285bf9a5678d07dcbb90261f9f93e7826ff524e04cfec780bf5a3c4b0dc29f2"}]
DEFAULTS_SOURCE_REFERENCES=[{"file":"pve265.py","line":37,"sha256":"b2f8b8ce53cbda7b5b42ba08668a7a8728dc7e1dc58f01de6081c2c3b6e3bdb1","tokens":["def","defaults_summary","raw"]},{"file":"pve265.py","line":73,"sha256":"b346c82eddab4c61e2db97d891e300ec1eb531f17574d86ca3c07fe1066187bd","tokens":["stores","x","storage","x","for","x","in","ss","global_summary","defaults_summary","defaults"]},{"file":"test_pve265.py","line":62,"sha256":"090de8ead15ab83a0950d9a291ed2f4cffb49b8e58302bd3d1780ef8b3b61e69","tokens":["def","test_malformed_default_blocks","self","self.assertIn","GLOBAL_DEFAULT_PARSE","plan","defaults","b","not","valid","n","global_blockers"]}]
VZDUMP_CONF_STRUCTURE={"bytes":478,"data_lines":0,"exists":true,"gid":0,"keys":[],"mode":"0644","sha256":"cf34c8e3812547954bb1d08b50212b6e148ee9cf2b629e895a843ed49d623b38","uid":0,"unparsed_line_numbers":[]}
PRODUCTION_POST_RCA_UNCHANGED=PASS
STATUS=OK
PHASE=COMPLETE
REASON=NONE
NEXT_GATE=PVE_LXC_DEFAULTS_SOURCE_BOUND_FRESH_PLAN_DRY_RUN
CHANGES_MADE=false
MUTATION_OUTCOME=NO_MUTATION
PRODUCTION_PROMOTION=NO
BACKUP_EXECUTIONS=0
VZDUMP_EXECUTIONS=0
CLOUD_WRITES=0
CLOUD_DELETIONS=0
SYSTEMD_MUTATIONS=0
SCHEDULER_CUTOVER=NO
LEGACY_BACKUP_DISABLES=0
HOMELAB_RESULT_CONTRACT={"changes_made":false,"command_id":"SUPPORT-260915-INFRA-DR-BACKUPV2-PVE-LXC-DEFAULTS-CONTRACT-RCA-416R1","rollback_restored":null,"rollback_started":false,"status":"OK","version":1}

OUTPUT_END
CHAT_OUTPUT_END
