diff --git a/runtime/history/SUPPORT-260915-INFRA-DR-BACKUPV2-PVE-LXC-VALIDATE-JOB-CONTRACT-RCA-418R1.json b/runtime/history/SUPPORT-260915-INFRA-DR-BACKUPV2-PVE-LXC-VALIDATE-JOB-CONTRACT-RCA-418R1.json new file mode 100644 index 00000000..e004c48e --- /dev/null +++ b/runtime/history/SUPPORT-260915-INFRA-DR-BACKUPV2-PVE-LXC-VALIDATE-JOB-CONTRACT-RCA-418R1.json @@ -0,0 +1,38 @@ +{ + "schema_version": 1, + "channel": "homelab-runtime", + "command_id": "SUPPORT-260915-INFRA-DR-BACKUPV2-PVE-LXC-VALIDATE-JOB-CONTRACT-RCA-418R1", + "status": "OK", + "rc": 0, + "host": "pve01", + "mode": "read-only", + "component": "infra-dr-backupv2-pve-lxc-validate-job-contract-rca", + "started_at_utc": "2026-09-15T10:48:30Z", + "finished_at_utc": "2026-09-15T10:48:41Z", + "reference_register_checked": true, + "reference_sha256": "5a3d8e5154c41cb582a4e0aca68090be1f0138918bf82131a948df326f9d8d66", + "error_register_checked": true, + "error_register_sha256": "3b09a553ec0f527ed3afeed4753f52a74ee3036045bbfb3c685e9f8af4ba7ba0", + "command_sha256": "487104a0f1e32fc27a061c9ca66626190f1b705acf24ee60565ac281c6b27193", + "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": "83df9c98a4c471a512513a93f3200dda903362005293932c39b5a0320135e029", + "sanitized_output_sha256": "83df9c98a4c471a512513a93f3200dda903362005293932c39b5a0320135e029", + "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-VALIDATE-JOB-CONTRACT-RCA-418R1\nMODE=READ_ONLY_PVE_LXC_VALIDATE_JOB_CONTRACT_RCA\nNO_PVE_SUBPROCESS=YES\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\nEXACT_OWNER_GRAPH=PASS\nPVE265_VALIDATE_JOB_CONTRACT={\"need_calls\":[{\"code\":\"JOB_SCHEMA\",\"line\":2,\"predicate\":\"type(job) is dict and type(now) is int\"},{\"code\":\"VMID\",\"line\":3,\"predicate\":\"type(job.get('vmid')) is int and 100 <= job['vmid'] <= 999999999\"},{\"code\":\"JOB_KIND\",\"line\":4,\"predicate\":\"job.get('type') in ('qemu', 'lxc') and np.valid_id(job.get('node'))\"},{\"code\":\"JOB_BLOCKED\",\"line\":5,\"predicate\":\"job.get('coverage_eligible') is True and job.get('blockers') == []\"},{\"code\":\"PLAN_STALE_OR_FUTURE\",\"line\":6,\"predicate\":\"type(job.get('observed_at')) is int and 0 <= now - job['observed_at'] <= PLAN_TTL\"},{\"code\":\"JOB_CONFIG_ANCHOR\",\"line\":7,\"predicate\":\"core.valid_hash(job.get('config_sha256'))\"},{\"code\":\"ARCHIVE_CAP\",\"line\":8,\"predicate\":\"type(job.get('archive_cap_bytes')) is int and 0 < job['archive_cap_bytes'] <= stream.MAX_BYTES\"},{\"code\":\"JOB_STATE\",\"line\":9,\"predicate\":\"job.get('status') == 'running' and job.get('template') is False\"}],\"signature\":\"(job, now)\",\"source\":\"def validate_job(job,now):\\n need(type(job) is dict and type(now) is int,'JOB_SCHEMA')\\n need(type(job.get('vmid')) is int and 100<=job['vmid']<=999999999,'VMID')\\n need(job.get('type') in ('qemu','lxc') and np.valid_id(job.get('node')),'JOB_KIND')\\n need(job.get('coverage_eligible') is True and job.get('blockers')==[],'JOB_BLOCKED')\\n need(type(job.get('observed_at')) is int and 0<=now-job['observed_at']<=PLAN_TTL,'PLAN_STALE_OR_FUTURE')\\n need(core.valid_hash(job.get('config_sha256')),'JOB_CONFIG_ANCHOR')\\n need(type(job.get('archive_cap_bytes')) is int and 0 at 0x7b121a4313a0>)\"\nPVE282_PRODUCE_SIGNATURE=\"(job, work, tools, guard, *, mapping, expected_config, seconds=14400, emit= at 0x7b121a433880>)\"\nPVE282_SELECT112_SIGNATURE=\"(current, baseline, now)\"\nVALIDATE_JOB_CALL_SITES=[{\"calls\":[{\"call\":\"validate_job(job, now)\",\"line\":133,\"owner\":\"dump_argv\"},{\"call\":\"validate_job(job, int(time.time()))\",\"line\":205,\"owner\":\"produce\"}],\"file\":\"pve265.py\",\"sha256\":\"cd2f634414a8e38a3789015aeca5a9b47821f77d7d1fa61dcdbdc866172963be\"},{\"calls\":[{\"call\":\"old.validate_job(job, int(time.time()))\",\"line\":293,\"owner\":\"produce\"}],\"file\":\"pve270.py\",\"sha256\":\"97015277a4f3f8129c0fd11eb70c06293026366f1f8232a97feeed513a2dbcef\"},{\"calls\":[{\"call\":\"old.validate_job(job, now)\",\"line\":39,\"owner\":\"select112\"},{\"call\":\"old.validate_job(job, int(time.time()))\",\"line\":66,\"owner\":\"produce\"}],\"file\":\"pve282.py\",\"sha256\":\"73c6cb7773eb8e82d1e7ed5ab4733b4afb88f74ae69c09125d0378d6e480e012\"},{\"calls\":[{\"call\":\"producer.validate_job(job, clock())\",\"line\":85,\"owner\":\"run_flow\"},{\"call\":\"producer.validate_job(job, now)\",\"line\":38,\"owner\":\"choose\"}],\"file\":\"guest266.py\",\"sha256\":\"86433bc424d5fa5017c20f7a237c82874b02357a3283660d8a6b0039ef2bc868\"},{\"calls\":[],\"file\":\"test_pve265.py\",\"sha256\":\"16a9407d01bf73db687ef38684c59205fc2e6a9223cd9cee6ec6e8dde9d38707\"},{\"calls\":[],\"file\":\"test_pve270.py\",\"sha256\":\"9fccd20b490613fdd5b14b4105cf0d9fd744f204e1ed1d6893e54c9f69bf6fb4\"},{\"calls\":[],\"file\":\"test_producer282.py\",\"sha256\":\"a67d927cc428935791f9eecc3acf571d089f80761162f4589b7d684fba6b8af7\"},{\"calls\":[],\"file\":\"test_pve282.py\",\"sha256\":\"1056407aab76e17181b05e043cb42c086058545a8e0027689ab4e03eee6531c4\"}]\nPVE265_PRODUCE_SOURCE_SHA256=d0659237df958ee02e24360721d2664177266e8a53bd5eb68d6655480e923f67\nPVE270_PRODUCE_SOURCE_SHA256=8054e713b79b176819d990bb21c0430b909a11732850662638f60550fe574bdc\nPVE282_PRODUCE_SOURCE_SHA256=a0d4189cc4f06d9ab9dbf34e619f93554f6386789c48d55b41d97294fa32f2e3\nPVE265_PRODUCE_RELEVANT_LINES=[{\"line\":7,\"text\":\"need(callable(guard),'GUARD_REQUIRED');guard();validate_job(job,int(time.time()));validate_tools(tools)\"},{\"line\":16,\"text\":\"result=capture_archive(dump_argv(job,tools['vzdump']['path'],tmp,int(time.time())),dest,job['archive_cap_bytes'],seconds,free_guard)\"},{\"line\":17,\"text\":\"guard();validate_tools(tools)\"},{\"line\":22,\"text\":\"guard();validate_tools(tools)\"}]\nPVE270_PRODUCE_RELEVANT_LINES=[{\"line\":2,\"text\":\"need(callable(guard),'GUARD_REQUIRED');guard();old.validate_job(job,int(time.time()));old.validate_tools(tools)\"},{\"line\":4,\"text\":\"uid,gid=validate_mapping(mapping)\"},{\"line\":12,\"text\":\"scratch=MappedScratch(gid)\"},{\"line\":21,\"text\":\"result=capture_archive(old.dump_argv(job,tools['vzdump']['path'],scratch.path,int(time.time())),dest,job['archive_cap_bytes'],seconds,free_guard)\"},{\"line\":22,\"text\":\"guard();old.validate_tools(tools)\"},{\"line\":27,\"text\":\"guard();old.validate_tools(tools);scratch.close(empty_only=True);complete=True;emit('PVE_TEMP_EMPTY_REMOVED','YES')\"}]\nPVE282_PRODUCE_RELEVANT_LINES=[{\"line\":2,\"text\":\"need(callable(guard),'GUARD_REQUIRED');guard();old.validate_job(job,int(time.time()));old.validate_tools(tools)\"},{\"line\":4,\"text\":\"uid,gid=validate_mapping(mapping)\"},{\"line\":12,\"text\":\"scratch=MappedScratch(gid)\"},{\"line\":21,\"text\":\"result=capture_archive(old.dump_argv(job,tools['vzdump']['path'],scratch.path,int(time.time())),dest,job['archive_cap_bytes'],seconds,free_guard)\"},{\"line\":22,\"text\":\"guard();old.validate_tools(tools)\"},{\"line\":27,\"text\":\"guard();old.validate_tools(tools);scratch.close(empty_only=True);complete=True;emit('PVE_TEMP_EMPTY_REMOVED','YES')\"}]\nPRODUCTION_POST_RCA_UNCHANGED=PASS\nCANDIDATE_POST_RCA_UNCHANGED=PASS\nSTATUS=OK\nPHASE=COMPLETE\nREASON=NONE\nNEXT_GATE=PVE_LXC_CORRECTED_VALIDATE_JOB_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-VALIDATE-JOB-CONTRACT-RCA-418R1\",\"rollback_restored\":null,\"rollback_started\":false,\"status\":\"OK\",\"version\":1}\n" +} diff --git a/runtime/history/SUPPORT-260915-INFRA-DR-BACKUPV2-PVE-LXC-VALIDATE-JOB-CONTRACT-RCA-418R1.txt b/runtime/history/SUPPORT-260915-INFRA-DR-BACKUPV2-PVE-LXC-VALIDATE-JOB-CONTRACT-RCA-418R1.txt new file mode 100644 index 00000000..33725169 --- /dev/null +++ b/runtime/history/SUPPORT-260915-INFRA-DR-BACKUPV2-PVE-LXC-VALIDATE-JOB-CONTRACT-RCA-418R1.txt @@ -0,0 +1,72 @@ +CHAT_OUTPUT_BEGIN +COMMAND_ID=SUPPORT-260915-INFRA-DR-BACKUPV2-PVE-LXC-VALIDATE-JOB-CONTRACT-RCA-418R1 +STATUS=OK +RC=0 +HOST=pve01 +MODE=read-only +COMPONENT=infra-dr-backupv2-pve-lxc-validate-job-contract-rca +REFERENCE_REGISTER_CHECK=OK +REFERENCE_SHA256=5a3d8e5154c41cb582a4e0aca68090be1f0138918bf82131a948df326f9d8d66 +ERROR_REGISTER_CHECK=OK +ERROR_REGISTER_SHA256=3b09a553ec0f527ed3afeed4753f52a74ee3036045bbfb3c685e9f8af4ba7ba0 +COMMAND_SHA256=487104a0f1e32fc27a061c9ca66626190f1b705acf24ee60565ac281c6b27193 +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=83df9c98a4c471a512513a93f3200dda903362005293932c39b5a0320135e029 +SANITIZED_OUTPUT_SHA256=83df9c98a4c471a512513a93f3200dda903362005293932c39b5a0320135e029 +OUTPUT_BEGIN +COMMAND_ID=SUPPORT-260915-INFRA-DR-BACKUPV2-PVE-LXC-VALIDATE-JOB-CONTRACT-RCA-418R1 +MODE=READ_ONLY_PVE_LXC_VALIDATE_JOB_CONTRACT_RCA +NO_PVE_SUBPROCESS=YES +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 +EXACT_OWNER_GRAPH=PASS +PVE265_VALIDATE_JOB_CONTRACT={"need_calls":[{"code":"JOB_SCHEMA","line":2,"predicate":"type(job) is dict and type(now) is int"},{"code":"VMID","line":3,"predicate":"type(job.get('vmid')) is int and 100 <= job['vmid'] <= 999999999"},{"code":"JOB_KIND","line":4,"predicate":"job.get('type') in ('qemu', 'lxc') and np.valid_id(job.get('node'))"},{"code":"JOB_BLOCKED","line":5,"predicate":"job.get('coverage_eligible') is True and job.get('blockers') == []"},{"code":"PLAN_STALE_OR_FUTURE","line":6,"predicate":"type(job.get('observed_at')) is int and 0 <= now - job['observed_at'] <= PLAN_TTL"},{"code":"JOB_CONFIG_ANCHOR","line":7,"predicate":"core.valid_hash(job.get('config_sha256'))"},{"code":"ARCHIVE_CAP","line":8,"predicate":"type(job.get('archive_cap_bytes')) is int and 0 < job['archive_cap_bytes'] <= stream.MAX_BYTES"},{"code":"JOB_STATE","line":9,"predicate":"job.get('status') == 'running' and job.get('template') is False"}],"signature":"(job, now)","source":"def validate_job(job,now):\n need(type(job) is dict and type(now) is int,'JOB_SCHEMA')\n need(type(job.get('vmid')) is int and 100<=job['vmid']<=999999999,'VMID')\n need(job.get('type') in ('qemu','lxc') and np.valid_id(job.get('node')),'JOB_KIND')\n need(job.get('coverage_eligible') is True and job.get('blockers')==[],'JOB_BLOCKED')\n need(type(job.get('observed_at')) is int and 0<=now-job['observed_at']<=PLAN_TTL,'PLAN_STALE_OR_FUTURE')\n need(core.valid_hash(job.get('config_sha256')),'JOB_CONFIG_ANCHOR')\n need(type(job.get('archive_cap_bytes')) is int and 0 at 0x7b121a4313a0>)\"\nPVE282_PRODUCE_SIGNATURE=\"(job, work, tools, guard, *, mapping, expected_config, seconds=14400, emit= at 0x7b121a433880>)\"\nPVE282_SELECT112_SIGNATURE=\"(current, baseline, now)\"\nVALIDATE_JOB_CALL_SITES=[{\"calls\":[{\"call\":\"validate_job(job, now)\",\"line\":133,\"owner\":\"dump_argv\"},{\"call\":\"validate_job(job, int(time.time()))\",\"line\":205,\"owner\":\"produce\"}],\"file\":\"pve265.py\",\"sha256\":\"cd2f634414a8e38a3789015aeca5a9b47821f77d7d1fa61dcdbdc866172963be\"},{\"calls\":[{\"call\":\"old.validate_job(job, int(time.time()))\",\"line\":293,\"owner\":\"produce\"}],\"file\":\"pve270.py\",\"sha256\":\"97015277a4f3f8129c0fd11eb70c06293026366f1f8232a97feeed513a2dbcef\"},{\"calls\":[{\"call\":\"old.validate_job(job, now)\",\"line\":39,\"owner\":\"select112\"},{\"call\":\"old.validate_job(job, int(time.time()))\",\"line\":66,\"owner\":\"produce\"}],\"file\":\"pve282.py\",\"sha256\":\"73c6cb7773eb8e82d1e7ed5ab4733b4afb88f74ae69c09125d0378d6e480e012\"},{\"calls\":[{\"call\":\"producer.validate_job(job, clock())\",\"line\":85,\"owner\":\"run_flow\"},{\"call\":\"producer.validate_job(job, now)\",\"line\":38,\"owner\":\"choose\"}],\"file\":\"guest266.py\",\"sha256\":\"86433bc424d5fa5017c20f7a237c82874b02357a3283660d8a6b0039ef2bc868\"},{\"calls\":[],\"file\":\"test_pve265.py\",\"sha256\":\"16a9407d01bf73db687ef38684c59205fc2e6a9223cd9cee6ec6e8dde9d38707\"},{\"calls\":[],\"file\":\"test_pve270.py\",\"sha256\":\"9fccd20b490613fdd5b14b4105cf0d9fd744f204e1ed1d6893e54c9f69bf6fb4\"},{\"calls\":[],\"file\":\"test_producer282.py\",\"sha256\":\"a67d927cc428935791f9eecc3acf571d089f80761162f4589b7d684fba6b8af7\"},{\"calls\":[],\"file\":\"test_pve282.py\",\"sha256\":\"1056407aab76e17181b05e043cb42c086058545a8e0027689ab4e03eee6531c4\"}]\nPVE265_PRODUCE_SOURCE_SHA256=d0659237df958ee02e24360721d2664177266e8a53bd5eb68d6655480e923f67\nPVE270_PRODUCE_SOURCE_SHA256=8054e713b79b176819d990bb21c0430b909a11732850662638f60550fe574bdc\nPVE282_PRODUCE_SOURCE_SHA256=a0d4189cc4f06d9ab9dbf34e619f93554f6386789c48d55b41d97294fa32f2e3\nPVE265_PRODUCE_RELEVANT_LINES=[{\"line\":7,\"text\":\"need(callable(guard),'GUARD_REQUIRED');guard();validate_job(job,int(time.time()));validate_tools(tools)\"},{\"line\":16,\"text\":\"result=capture_archive(dump_argv(job,tools['vzdump']['path'],tmp,int(time.time())),dest,job['archive_cap_bytes'],seconds,free_guard)\"},{\"line\":17,\"text\":\"guard();validate_tools(tools)\"},{\"line\":22,\"text\":\"guard();validate_tools(tools)\"}]\nPVE270_PRODUCE_RELEVANT_LINES=[{\"line\":2,\"text\":\"need(callable(guard),'GUARD_REQUIRED');guard();old.validate_job(job,int(time.time()));old.validate_tools(tools)\"},{\"line\":4,\"text\":\"uid,gid=validate_mapping(mapping)\"},{\"line\":12,\"text\":\"scratch=MappedScratch(gid)\"},{\"line\":21,\"text\":\"result=capture_archive(old.dump_argv(job,tools['vzdump']['path'],scratch.path,int(time.time())),dest,job['archive_cap_bytes'],seconds,free_guard)\"},{\"line\":22,\"text\":\"guard();old.validate_tools(tools)\"},{\"line\":27,\"text\":\"guard();old.validate_tools(tools);scratch.close(empty_only=True);complete=True;emit('PVE_TEMP_EMPTY_REMOVED','YES')\"}]\nPVE282_PRODUCE_RELEVANT_LINES=[{\"line\":2,\"text\":\"need(callable(guard),'GUARD_REQUIRED');guard();old.validate_job(job,int(time.time()));old.validate_tools(tools)\"},{\"line\":4,\"text\":\"uid,gid=validate_mapping(mapping)\"},{\"line\":12,\"text\":\"scratch=MappedScratch(gid)\"},{\"line\":21,\"text\":\"result=capture_archive(old.dump_argv(job,tools['vzdump']['path'],scratch.path,int(time.time())),dest,job['archive_cap_bytes'],seconds,free_guard)\"},{\"line\":22,\"text\":\"guard();old.validate_tools(tools)\"},{\"line\":27,\"text\":\"guard();old.validate_tools(tools);scratch.close(empty_only=True);complete=True;emit('PVE_TEMP_EMPTY_REMOVED','YES')\"}]\nPRODUCTION_POST_RCA_UNCHANGED=PASS\nCANDIDATE_POST_RCA_UNCHANGED=PASS\nSTATUS=OK\nPHASE=COMPLETE\nREASON=NONE\nNEXT_GATE=PVE_LXC_CORRECTED_VALIDATE_JOB_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-VALIDATE-JOB-CONTRACT-RCA-418R1\",\"rollback_restored\":null,\"rollback_started\":false,\"status\":\"OK\",\"version\":1}\n" } diff --git a/runtime/latest.txt b/runtime/latest.txt index 89484465..33725169 100644 --- a/runtime/latest.txt +++ b/runtime/latest.txt @@ -1,22 +1,22 @@ CHAT_OUTPUT_BEGIN -COMMAND_ID=SUPPORT-260915-INFRA-DR-BACKUPV2-PVE-LXC-DEFAULTS-SOURCE-BOUND-FRESH-PLAN-DRY-RUN-417R1 -STATUS=FAIL -RC=2 +COMMAND_ID=SUPPORT-260915-INFRA-DR-BACKUPV2-PVE-LXC-VALIDATE-JOB-CONTRACT-RCA-418R1 +STATUS=OK +RC=0 HOST=pve01 MODE=read-only -COMPONENT=infra-dr-backupv2-pve-lxc-defaults-source-bound-fresh-plan-dry-run +COMPONENT=infra-dr-backupv2-pve-lxc-validate-job-contract-rca REFERENCE_REGISTER_CHECK=OK REFERENCE_SHA256=5a3d8e5154c41cb582a4e0aca68090be1f0138918bf82131a948df326f9d8d66 ERROR_REGISTER_CHECK=OK ERROR_REGISTER_SHA256=3b09a553ec0f527ed3afeed4753f52a74ee3036045bbfb3c685e9f8af4ba7ba0 -COMMAND_SHA256=ad0de4ac24fc3c2801e744bcc74c266391c5465c71cf5bb323a59d00e6e0f5fe +COMMAND_SHA256=487104a0f1e32fc27a061c9ca66626190f1b705acf24ee60565ac281c6b27193 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=2 +COMMAND_RC=0 CHANGES_MADE=false ROLLBACK_STARTED=false ROLLBACK_RESTORED=null @@ -24,11 +24,12 @@ MUTATION_OUTCOME=NO_MUTATION SANITIZED=yes SECRETS_INCLUDED=no PRIVATE_ADDRESSES_INCLUDED=no -RAW_EVIDENCE_SHA256=f5e9d9a7bd87d3702c9b1a87b4a2e73fcdf7c2420ca78c44134877fa78a6c6d9 -SANITIZED_OUTPUT_SHA256=f5e9d9a7bd87d3702c9b1a87b4a2e73fcdf7c2420ca78c44134877fa78a6c6d9 +RAW_EVIDENCE_SHA256=83df9c98a4c471a512513a93f3200dda903362005293932c39b5a0320135e029 +SANITIZED_OUTPUT_SHA256=83df9c98a4c471a512513a93f3200dda903362005293932c39b5a0320135e029 OUTPUT_BEGIN -COMMAND_ID=SUPPORT-260915-INFRA-DR-BACKUPV2-PVE-LXC-DEFAULTS-SOURCE-BOUND-FRESH-PLAN-DRY-RUN-417R1 -MODE=READ_ONLY_PVE_LXC_FRESH_PLAN_REAL_DRY_RUN +COMMAND_ID=SUPPORT-260915-INFRA-DR-BACKUPV2-PVE-LXC-VALIDATE-JOB-CONTRACT-RCA-418R1 +MODE=READ_ONLY_PVE_LXC_VALIDATE_JOB_CONTRACT_RCA +NO_PVE_SUBPROCESS=YES NO_BACKUP_EXECUTION=YES NO_VZDUMP_EXECUTION=YES NO_CLOUD_ACCESS=YES @@ -36,22 +37,27 @@ NO_SYSTEMD_MUTATION=YES NO_PRODUCTION_PROMOTION=YES ANCHOR_BINDINGS=PASS PRODUCTION_AND_CANDIDATE_IDENTITY=PASS -RUNTIME_QUIESCENCE=PASS EXACT_OWNER_GRAPH=PASS -LIVE_INPUT_SCHEMAS={"config_keys":["arch","cores","digest","features","hostname","memory","nameserver","net0","onboot","ostype","rootfs","searchdomain","startup","swap","unprivileged"],"row_keys":["cpu","disk","diskread","diskwrite","id","maxcpu","maxdisk","maxmem","mem","memhost","name","netin","netout","node","status","template","type","uptime","vmid"],"storage_row_count":2} -NORMALIZED_CONFIG_DICT=PASS -LIVE_DEFAULTS_SOURCE=PASS -LIVE_DEFAULTS_SHA256=cf34c8e3812547954bb1d08b50212b6e148ee9cf2b629e895a843ed49d623b38 -LIVE_DEFAULTS_SUMMARY={"blockers":[],"keys":[],"present":true,"sha256":"cf34c8e3812547954bb1d08b50212b6e148ee9cf2b629e895a843ed49d623b38"} -LIVE_STORAGE_ROW_KEYS=[["active","avail","content","enabled","shared","storage","total","type","used","used_fraction"],["active","avail","content","enabled","shared","storage","total","type","used","used_fraction"]] -FRESH_CT112_JOB={"archive_cap_bytes":9516036916,"blockers":[],"config_sha256":"6973478281aeee0a6c19cd0ab96f5e9ebd88cf5a7e767a49d808e25806758351","configured_archive_bound_bytes":9516036916,"configured_disk_bytes":8589934592,"coverage_eligible":true,"global_defaults_sha256":"cf34c8e3812547954bb1d08b50212b6e148ee9cf2b629e895a843ed49d623b38","local_reserve_bytes":4294967296,"node":"pve01","status":"running","type":"lxc","vmid":112} -FRESH_PLAN_SHA256=3d2acbd2c002345434d8f83c26a620a7f29a4aec9a6ab30d9bc9fd6d05248a3d -STATUS=FAIL -PHASE=FRESH_PLAN_REAL_DRY_RUN -REASON=PVE265_VALIDATE_JOB_TypeError -NEXT_GATE=STOP +PVE265_VALIDATE_JOB_CONTRACT={"need_calls":[{"code":"JOB_SCHEMA","line":2,"predicate":"type(job) is dict and type(now) is int"},{"code":"VMID","line":3,"predicate":"type(job.get('vmid')) is int and 100 <= job['vmid'] <= 999999999"},{"code":"JOB_KIND","line":4,"predicate":"job.get('type') in ('qemu', 'lxc') and np.valid_id(job.get('node'))"},{"code":"JOB_BLOCKED","line":5,"predicate":"job.get('coverage_eligible') is True and job.get('blockers') == []"},{"code":"PLAN_STALE_OR_FUTURE","line":6,"predicate":"type(job.get('observed_at')) is int and 0 <= now - job['observed_at'] <= PLAN_TTL"},{"code":"JOB_CONFIG_ANCHOR","line":7,"predicate":"core.valid_hash(job.get('config_sha256'))"},{"code":"ARCHIVE_CAP","line":8,"predicate":"type(job.get('archive_cap_bytes')) is int and 0 < job['archive_cap_bytes'] <= stream.MAX_BYTES"},{"code":"JOB_STATE","line":9,"predicate":"job.get('status') == 'running' and job.get('template') is False"}],"signature":"(job, now)","source":"def validate_job(job,now):\n need(type(job) is dict and type(now) is int,'JOB_SCHEMA')\n need(type(job.get('vmid')) is int and 100<=job['vmid']<=999999999,'VMID')\n need(job.get('type') in ('qemu','lxc') and np.valid_id(job.get('node')),'JOB_KIND')\n need(job.get('coverage_eligible') is True and job.get('blockers')==[],'JOB_BLOCKED')\n need(type(job.get('observed_at')) is int and 0<=now-job['observed_at']<=PLAN_TTL,'PLAN_STALE_OR_FUTURE')\n need(core.valid_hash(job.get('config_sha256')),'JOB_CONFIG_ANCHOR')\n need(type(job.get('archive_cap_bytes')) is int and 0