39 lines
15 KiB
JSON
39 lines
15 KiB
JSON
{
|
|
"schema_version": 1,
|
|
"channel": "homelab-runtime",
|
|
"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",
|
|
"started_at_utc": "2026-09-15T10:33:38Z",
|
|
"finished_at_utc": "2026-09-15T10:33:53Z",
|
|
"reference_register_checked": true,
|
|
"reference_sha256": "5a3d8e5154c41cb582a4e0aca68090be1f0138918bf82131a948df326f9d8d66",
|
|
"error_register_checked": true,
|
|
"error_register_sha256": "3b09a553ec0f527ed3afeed4753f52a74ee3036045bbfb3c685e9f8af4ba7ba0",
|
|
"command_sha256": "6c6be41d3c9f9a904843f64e8357c233aaa59c2a8254848b673b69689f86bda3",
|
|
"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": "86735de24a5e1db4f6e1ee22bb7d42d9d12246a095f421714d6cfac0bc1e9813",
|
|
"sanitized_output_sha256": "86735de24a5e1db4f6e1ee22bb7d42d9d12246a095f421714d6cfac0bc1e9813",
|
|
"output_truncated_in_json": false,
|
|
"full_sanitized_output_url": "https://git.gram1.ru/.well-known/homelab-runtime/latest.txt",
|
|
"output": "COMMAND_ID=SUPPORT-260915-INFRA-DR-BACKUPV2-PVE-LXC-DEFAULTS-CONTRACT-RCA-416R1\nMODE=READ_ONLY_PVE_LXC_DEFAULTS_CONTRACT_RCA\nNO_BACKUP_EXECUTION=YES\nNO_VZDUMP_EXECUTION=YES\nNO_CLOUD_ACCESS=YES\nNO_SYSTEMD_MUTATION=YES\nNO_PRODUCTION_PROMOTION=YES\nANCHOR_BINDINGS=PASS\nPRODUCTION_AND_CANDIDATE_IDENTITY=PASS\nDEFAULTS_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\"}\nMAKE_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')\"}\nEMPTY_DEFAULTS_PROBE={\"exception_class\":\"pve265.PVEError\",\"message_sha256\":\"465ac0da8be967b9992b69ba3dae7af890204497ffa374a8a80b3fda356da8b0\",\"ok\":false,\"safe_code\":\"DEFAULTS_BOUND\"}\nHISTORICAL_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\"}]\nDEFAULTS_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\"}]\nDEFAULTS_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\"]}]\nVZDUMP_CONF_STRUCTURE={\"bytes\":478,\"data_lines\":0,\"exists\":true,\"gid\":0,\"keys\":[],\"mode\":\"0644\",\"sha256\":\"cf34c8e3812547954bb1d08b50212b6e148ee9cf2b629e895a843ed49d623b38\",\"uid\":0,\"unparsed_line_numbers\":[]}\nPRODUCTION_POST_RCA_UNCHANGED=PASS\nSTATUS=OK\nPHASE=COMPLETE\nREASON=NONE\nNEXT_GATE=PVE_LXC_DEFAULTS_SOURCE_BOUND_FRESH_PLAN_DRY_RUN\nCHANGES_MADE=false\nMUTATION_OUTCOME=NO_MUTATION\nPRODUCTION_PROMOTION=NO\nBACKUP_EXECUTIONS=0\nVZDUMP_EXECUTIONS=0\nCLOUD_WRITES=0\nCLOUD_DELETIONS=0\nSYSTEMD_MUTATIONS=0\nSCHEDULER_CUTOVER=NO\nLEGACY_BACKUP_DISABLES=0\nHOMELAB_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}\n"
|
|
}
|