CHAT_OUTPUT_BEGIN
COMMAND_ID=NEWFI-260922-NEWFDOM-DR221-FRESHBACKUP-RCA414R1
STATUS=OK
RC=0
HOST=pve01
MODE=read-only
COMPONENT=newfi-dr221-fresh-backup-cloud-quorum-rca
REFERENCE_REGISTER_CHECK=OK
REFERENCE_SHA256=5a3d8e5154c41cb582a4e0aca68090be1f0138918bf82131a948df326f9d8d66
ERROR_REGISTER_CHECK=OK
ERROR_REGISTER_SHA256=3b09a553ec0f527ed3afeed4753f52a74ee3036045bbfb3c685e9f8af4ba7ba0
COMMAND_SHA256=64ca2cfb01827e209d943352287d9986654b0031db0255c51b34987746ae0f22
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=00fde9f3c6b08ea109d108690cefbe35a3d4c49b8a2d9d865af8e4f95c0a91dd
SANITIZED_OUTPUT_SHA256=db21da2e8fc700424ba159397dd7676c7b0eb38cb7780dce7b3b01f3f72046c5
OUTPUT_BEGIN
NEWFI414_BEGIN=true
COMMAND_ID=NEWFI-260922-NEWFDOM-DR221-FRESHBACKUP-RCA414R1
TARGET_COMMAND_ID=NEWFI-260921-NEWFDOM-DR221-FINAL413
MODE=read-only
COMPONENT=newfi-dr221-fresh-backup-cloud-quorum-rca
SCOPE=READ_ONLY_EXACT_DR221_FINAL413_FRESH_BACKUP_CLOUD_QUORUM_ROOT_CAUSE
MUTATION_BOUNDARY=NONE;NO_BACKUP_START;NO_QUEUE_START;NO_SYSTEMD_ACTION;NO_CLOUD_WRITE;NO_VM_MUTATION;NO_GIT_WRITE
REFERENCE_SHA256=5a3d8e5154c41cb582a4e0aca68090be1f0138918bf82131a948df326f9d8d66
ERROR_REGISTER_SHA256=3b09a553ec0f527ed3afeed4753f52a74ee3036045bbfb3c685e9f8af4ba7ba0
RUNNER_SHA256=b248a4c32c9cc64e5747e7dce6c7fc0a23f5124a77c71ce72e27a81aceae9d2d
QUEUE_SHA256=fbc27ad67fc3d3f51934e1d73180fe0df8c9d15f129f34ebba39c56aa1d03612
PAYLOAD_SHA256=df9e19485e5d87112bf58bf77bdddf3b9b896418dd85ff945a31cd5b6817f352
FRESHNESS_SHA256=bd6257397c6ea910df2ea0dd57252b33bccd0bbd965175840486dfe5e079bf96
NODE_WORKER_SHA256=91bdd116be865560a38105dffbd1a66d687232035e2359e4a5be4d225e9c61d1
VM210_PRESTATE_BEGIN=true
VM210_CLUSTER_ROW={"vmid":210,"name":"newfi-prod","node":"pve01","status":"running","type":"qemu"}
VM210_QM_STATUS_RC=0
status: running
VM210_QM_CONFIG_RC=0
VM210_QM_CONFIG_SHA256=cdd00bc79df85350a64683010791bd76d1b74b53b7eec97da0b902291ff9de72
VM210_LOCK_PRESENT=false
VM210_QGA_PING_RC=255
VM210_PRESTATE_END=true
STORAGE_BEGIN=true
RESTORE_STORAGE_STATUS_RC=0
Name             Type     Status     Total (KiB)      Used (KiB) Available (KiB)        %
local-lvm     lvmthin     active       848797696       133261238       715536457   15.70%
RESTORE_STORAGE_STDERR_SHA256=e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
STORAGE_END=true
TARGET_REGISTRY_BEGIN=true
TARGETS_SHA256=decea6b876c8ede15c91cad69c8e15e46021e5e96d25d415139bf2c524e23f7b
VM210_TARGET_COUNT=2
VM210_TARGET_SAFE={"due_seconds":86400,"enabled":true,"green1":false,"logical_id":"vm210","scope":"pve","type":"pve_guest","vmid":210}
VM210_TARGET_SAFE={"due_seconds":86400,"enabled":true,"green1":false,"logical_id":"xf-newfi","scope":"xenforo","type":"xenforo","vmid":210}
PRODUCTION_ACCEPTANCE_SHA256=708a481f6719ff1ed8d0afec1902650ed36ac631e980611b015419f504f16df0
{"schema":1,"accepted_release":"/opt/homelab-backup-v2/releases/backup-v2-accepted-486r1","release":null,"vmids":null,"logical_ids":null}
TARGET_REGISTRY_END=true
LOCK_AND_UNIT_STATE_BEGIN=true
HEAVY_LOCK=BUSY
UNIT=homelab-vm-cloud-quorum-queue.service
Result=success
ExecMainStartTimestamp=
ExecMainExitTimestamp=
ExecMainStatus=0
LoadState=loaded
ActiveState=inactive
SubState=dead
UnitFileState=static
UNIT=homelab-backup-v2.service
Result=success
ExecMainStartTimestamp=Tue 2026-09-22 14:51:24 MSK
ExecMainExitTimestamp=
ExecMainStatus=0
LoadState=loaded
ActiveState=activating
SubState=start
UnitFileState=static
UNIT=homelab-backup-v2.timer
Result=success
LoadState=loaded
ActiveState=active
SubState=running
UnitFileState=enabled
LOCK_AND_UNIT_STATE_END=true
VM210_CURRENT_CLOUD_STATE_BEGIN=true
STATE_FILE_COUNT=0
RESTORE_FILE_COUNT=0
VM210_CURRENT_CLOUD_STATE_END=true
FINAL413_RAW_EVIDENCE_DISCOVERY_BEGIN=true
EVIDENCE_CANDIDATE_COUNT=120
EVIDENCE_FILE=/var/lib/homelab-chat-run/state/command-ledger.tsv|SHA256=2e47208b0ce1bb6bfeed65e8e61f56841c933de9ee4761e192e28037140b7c42|BYTES=506406
EVIDENCE_EXCERPT_BEGIN=/var/lib/homelab-chat-run/state/command-ledger.tsv
2278:2026-09-20T02:42:20Z	NEWFI-260920-NEWFDOM-MESSENGERS214-CLOUD214	f6c6b79e158d1c16bc44af32807db585991b62fc9013e510533b9770a1fe4e24	0	OK	newfi-newfdom-messengers214-exact-cloud-generation-ssh-access-readonly-recovery
2279:2026-09-20T02:45:01Z	SUPPORT-260920-PVEPRO-RUSSIAN-UX-STAGING-QGA-RCA-READONLY-740R2	c8e8e25b299c68113291471d957d998824bbe1139b1a3b2ef6ccb2a9c714f157	0	OK	pvepro-russian-ux-staging-qga-rca-readonly
2280:2026-09-20T02:48:36Z	NEWFI-260920-NEWFDOM-MESSENGERS214-CLOUD215	57dc8766ecb8b2c444d1028df096e3fc55cacfaf6a002c7ca5ea8ccfda348d64	0	OK	newfi-newfdom-messengers214-cloud-recovery-egress-readiness-readonly
2281:2026-09-20T02:56:58Z	SUPPORT-260920-PVEPRO-RUSSIAN-UX-STAGING-CLEANUP-741R2	953567114902fcc4d491106f9960393b4dfa3203452db2b4273246ca3d6beeed	3	FAIL	pvepro-russian-ux-staging-cleanup
2282:2026-09-20T03:02:17Z	NEWFI-260920-NEWFDOM-MESSENGERS214-CLOUD216	4333d0fdf31e2b8d878559faf1d5f4bb9e61b9c39dcd96c38e8f8209ad898b46	0	OK	newfi-newfdom-messengers214-cloud-recovery-semantic-seal-egress-readiness-readonly
2283:2026-09-20T03:09:28Z	NEWFI-260920-NEWFDOM-MESSENGERS214-ESCROW217	cbf4c0ab8bdc411e02de55c9a92f47930f1f94d3ded4fd2c8b0c6256d810f701	0	OK	newfi-newfdom-messengers214-control-bootstrap-cloud-quorum-ssh-key-recovery-readonly
2284:2026-09-20T03:13:45Z	NEWFI-260920-NEWFDOM-MESSENGERS214-ESCROW218	3b3d47c70baa636d781e266710b1dc80b372f32d456f4b6d38005c52a0fedf7d	0	OK	newfi-newfdom-messengers214-control-bootstrap-semantic-rclone-ssh-key-recovery-readonly
2285:2026-09-20T03:15:55Z	SUPPORT-260920-PVEPRO-RUSSIAN-UX-RENDER-TRANSPORT-RCA-READONLY-742R5	0ff5f31b68d2888ed7be244df827bd03cdf8695ea8e80a5d2446d021164d9241	3	FAIL	pvepro-russian-ux-render-transport-rca-readonly
2286:2026-09-20T03:20:01Z	NEWFI-260920-NEWFDOM-MESSENGERS214-ROUTE219	636c6c45fe707965a0d1816ae048af583a0cc84a6b117417b8456822b47f0714	0	OK	newfi-newfdom-messengers214-p0b-git-anchor-ssh-route-source-recovery-readonly
2287:2026-09-20T03:20:24Z	SUPPORT-260920-PVEPRO-RUSSIAN-UX-RENDER-TRANSPORT-RCA-READONLY-742R5	0ff5f31b68d2888ed7be244df827bd03cdf8695ea8e80a5d2446d021164d9241	73	BLOCKED	pvepro-russian-ux-render-transport-rca-readonly
2288:2026-09-20T03:28:55Z	SUPPORT-260920-WORKERS2-NEWPC-PVE01-ACCESS-RECOVERY-744R1	ad51d7839863c4ee66378f96107e70be40edc4c799b4f1b55f4ec663448c0927	0	OK	workers2-newpc-pve01-access-recovery
2289:2026-09-20T03:30:04Z	NEWFI-260920-NEWFDOM-MESSENGERS214-PAGEANT220	38d4f63a3a7471a3ee62033202c76ad96631014967fda429e7bd55067a0730f7	0	OK	newfi-newfdom-messengers214-direct-windows-pageant-current-access-readonly
2290:2026-09-20T03:37:57Z	NEWFI-260920-NEWFDOM-MESSENGERS214-CONTOUR221R1	72e9d5eccb47aa24c0993a7716f7e70aa35f6c4e96340b3fa01c9a4989367737	0	OK	newfi-newfdom-messengers214-current-pageant-keyset-putty-contour-r1-readonly
2291:2026-09-20T03:41:51Z	NEWFI-260920-NEWFDOM-MESSENGERS214-CONTOUR221R2	41c4b7208b9810d683661547cc28ca688e62c5142a2b73ae6ff873303011acf3	0	OK	newfi-newfdom-messengers214-current-pageant-keyset-putty-contour-r2-readonly
2292:2026-09-20T03:42:27Z	SUPPORT-260920-PVEPRO-RUSSIAN-UX-GUEST-VERIFIER-RCA-READONLY-746R2	58c9a7944d2355ea4cb6b3eab57a2a4b6248b608f112a510038ae3bfa566f3a5	1	FAIL	pvepro-russian-ux-guest-verifier-rca-readonly
2629:2026-09-21T17:31:43Z	SUPPORT-260921-HOMELAB-BACKUP-WAIT-AND-FINAL-SEAL-1096R1	68f3e32b0b2762454e8708ae8965dc4d43a113c1cec0d90fbec281785992e4fc	1	FAIL	homelab-backup-final-seal-localmail
2630:2026-09-21T17:38:26Z	NEWFI-260921-NEWFDOM-DR221-FINAL409-RECONCILE410R1	40a8a761049af0ad088807d8e2ce52980e3f3a0e7012bb6f89c96655d559005f	0	OK	newfi-dr221-final409-prestate-reconcile-readonly
2631:2026-09-21T17:40:02Z	NEWFI-260921-NEWFDOM-DR221-GUEST411	e75542f83e4f89457288e7032e341aa7db2440226b6cb32f60730d9ecd5c1ee2	0	OK	newfi-dr221-vm210-guest-verifier-reconcile
2632:2026-09-21T17:42:52Z	SUPPORT-260921-HOMELAB-BACKUP-PREAUDIT-RPO-RCA-READONLY-1097R1	146e3ea4eee06783fb993d25637f96c351defd1163f1d06b78ef3c3b012c9f11	0	OK	homelab-backup-preaudit-rpo-rca
2633:2026-09-21T17:45:02Z	NEWFI-260921-NEWFDOM-DR221-PRESTATE-FIX411R1	2d287bfb97be12a17b932f08a33663fc58cd3420a2c6ad83df829f31c758339f	1	FAIL	newfi-dr221-prestate-findings-fix-readonly
2634:2026-09-21T17:48:35Z	NEWFI-260921-NEWFDOM-DR221-FINAL413	417389f4721a56312f7ea533dfdbb687e65433a492760945908156044599982e	3	FAIL	newfi-dr221-final-current-production-backup-restore-acceptance
2635:2026-09-21T19:50:09Z	SUPPORT-260921-HOMELAB-BACKUP-RPO-REFRESH-1098R1	12198c2fba8c04dcd25b0328d5f33533ac89d5a6412d093c166650665d0e5344	2	FAIL	homelab-backup-rpo-refresh
2636:2026-09-21T19:52:48Z	SUPPORT-260921-PVEPRO-EDITORIAL-CASES-BATCH-C-888-886-COMBINED-LOCAL-RECOVERY-889R1	5c2746534ac0b58f98d2bd8b413f8515ee7f53e9e400c76e719ae0c0a88a97a6	0	OK	pvepro-888-886-combined-local-recovery
2637:2026-09-21T19:54:21Z	SUPPORT-260921-HOMELAB-BACKUP-POST1098-RPO-RCA-READONLY-1099R1	72d9a4c8271152e6a33fef99f04b48de465897d6ed2048a32075ebf63c27b3f0	0	OK	homelab-backup-post1098-rpo-rca
2638:2026-09-21T19:58:40Z	SUPPORT-260921-PVEPRO-EDITORIAL-CASES-BATCH-C-PRESCOPE-READONLY-890R1	b88cbd282c77d22a5612f8095b8b1f5f3ceb4fa744061e7b98df3fa0cbc549a7	0	OK	pvepro-editorial-cases-batch-c-prescope
2639:2026-09-21T20:03:14Z	SUPPORT-260921-HOMELAB-BACKUP-WAIT-OWNER-THEN-RPO-READONLY-1100R1	ab8940a24d97943f95ccc37f431e8da5cb91089722af20e258156cd226681a29	0	OK	homelab-backup-wait-owner-then-rpo
2640:2026-09-21T20:04:53Z	SUPPORT-260921-NEWPC-DRIVERBOOSTER-GITEA-RECOVERY-1096R2	aae027b7eee1b54036f9e59d644b676bdc797e3012bdfef14814c3f26ab0397d	0	OK	newpc-driverbooster-gitea-publication-recovery-lockwait
2641:2026-09-21T20:09:10Z	SUPPORT-260921-PVEPRO-EDITORIAL-BATCH-C-ROOT-RECONCILE-READONLY-891R1	c2cea542e7322f6e1d945154c987b345fa6c32963fb702b1a87c22e0f94ea276	0	OK	pvepro-editorial-batch-c-root-reconcile
2642:2026-09-21T20:31:24Z	SUPPORT-260921-HOMELAB-BACKUP-VM-RPO-REFRESH-1101R1	b67692a4f48430147fce56f9140fb1ac7e06b0b298409438f04c42cfe5b6f715	10	FAIL	homelab-backup-vm-rpo-refresh
2643:2026-09-21T20:40:43Z	SUPPORT-260921-PVEPRO-EDITORIAL-892-LOCAL-RESULT-RECOVERY-893R1	915a2ad34ff54649d9387a70309dbc0adead442d20c8705b44bc19665b7376ac	0	OK	pvepro-892-local-result-recovery
EVIDENCE_EXCERPT_END=/var/lib/homelab-chat-run/state/command-ledger.tsv
EVIDENCE_FILE=/var/lib/homelab-chat-run/raw/GRAM1-SITE-AVAX-LINK-V2-COMPACT-DISCOVERY-20260731T104500Z-20260731T105628Z.log|SHA256=533ca4b7aef4c7c7d32e8ce2c7818e87acc6a15d9d2a0c988ddd608792647bbf|BYTES=64838
EVIDENCE_EXCERPT_BEGIN=/var/lib/homelab-chat-run/raw/GRAM1-SITE-AVAX-LINK-V2-COMPACT-DISCOVERY-20260731T104500Z-20260731T105628Z.log
1:HOMELAB_RESULT_CONTRACT={"changes_made":false,"command_id":"GRAM1-SITE-AVAX-LINK-V2-COMPACT-DISCOVERY-20260731T104500Z","mutation_outcome":"NO_MUTATION","rollback_restored":null,"rollback_started":false,"status":"OK","version":1}
2:{"baseline":{"branch":"site-gram1-ru-baseline-20260731","commit":"f9d3ba8caf65005605aa8aee2ede7e4e7e94ee49","host_source_map":[{"baseline_host_dir":"hosts/local","domain_match_count":1000,"hostname":"pve01","roots":["/root/homelab-configs-worktree","/root/homelab-configs-worktree/docs","/root/homelab-configs-worktree/docs/operations","/srv/homelab-desired-state","/srv/homelab-desired-state/health","/srv/homelab-ops-worktrees/cr-2026-0017-inventory-foundation","/srv/homelab-desired-state/sbin","/srv/homelab-ops-worktrees/cr-2026-0015","/root/homelab-ops-cr-2026-0004","/root/homelab-ops-cr-2026-0012"],"ssh_target":null,"target":"local"},{"baseline_host_dir":"hosts/pve02","domain_match_count":16,"hostname":"pve02","roots":["/root/evidence/forum-prod-diag-20260629T032514Z","/root/evidence/forum-prod-os-baseline-20260629T034119Z","/root/evidence/forum-prod-offline-fix2-20260629T033832Z","/root/evidence/forum-prod-recover-20260629T025511Z","/root/evidence/forum-prod-recreate-20260629T030810Z","/srv/homelab-desired-state/routerguard-tuya"],"ssh_target":"pve02","target":"pve02"},{"baseline_host_dir":"hosts/pve03","domain_match_count":6,"hostname":"pve03","roots":[],"ssh_target":"pve03","target":"pve03"}],"snapshot_path":"sites/gram1.ru/baseline/20260731T071400Z"},"baseline_evidence":{"audit_count":3,"avax_present":false,"link_present":true,"providers":{},"ranked_change_files":[{"absolute_path":"/tmp/gram1-avax-link-discovery-71io3scf/repo/sites/gram1.ru/baseline/20260731T071400Z/hosts/local/source/01_homelab-configs-worktree/reports/npmplus-api-certificate-endpoint-preflight-20260621.md","audit_label":"baseline:local/source","bytes":528351,"kinds":["api","coin_registry"],"path":"01_homelab-configs-worktree/reports/npmplus-api-certificate-endpoint-preflight-20260621.md","providers":[],"score":31,"sha256":"977b61a620ea32d2ccfa4b5ebad611713c0b4aa7991f9af0332b2febf4007fd1","snippets":[{"line":9,"text":"Inspected local NPMplus API status and app code references to identify a supported certificate object creation path before remediating public routes with certificate_id=0."},{"line":18,"text":"PURPOSE=FIND_SUPPORTED_CERT_OBJECT_CREATION_PATH"},{"line":227,"text":"/app/frontend/assets/index-tlrv6MVo.js:878:`,no=new Map,ro=(e,t)=>{Ba(()=>{if(!e||typeof document>`u`)return;let n=document,r=no.get(n);if(r){t&&r.setAttribute(`nonce`,t);return}let i=n.createElement(`style`);i.textContent=e,t&&i.setAttribu"},{"line":253,"text":"/app/frontend/assets/index-tlrv6MVo.js:908:`,position:{start:{line:l+u,column:1},end:{line:l+u,column:1}}})}return l+=i,t}if(Object.prototype.hasOwnProperty.call(n,`children`)){var f=l;return n.children=e(n.children),t.push(n),n.position={s"}],"symbols":{"ADA":11,"DOT":4,"LINK":24}},{"absolute_path":"/tmp/gram1-avax-link-discovery-71io3scf/repo/sites/gram1.ru/baseline/20260731T071400Z/hosts/local/source/01_homelab-configs-worktree/reports/mkdocs-refresh-discovery-20260621.md","audit_label":"baseline:local/source","bytes":504281,"kinds":["coin_registry"],"path":"01_homelab-configs-worktree/reports/mkdocs-refresh-discovery-20260621.md","providers":[],"score":24,"sha256":"1ac8fe15ebd06db8ef3a9c6127fe5efe7ecbb76d395abbe551c249b249492d21","snippets":[{"line":239,"text":".<REDACTED_TOKEN>.md:227:/app/frontend/assets/index-tlrv6MVo.js:878:`,no=new Map,ro=(e,t)=>{Ba(()=>{if(!e||typeof document>`u`)return;let n=document,r=no.get(n);if(r){t&&r.setAttribute(`nonce`,t);return}let i=n.createElement(`style`);i.text"},{"line":378,"text":"126: labels: '{__address__=\"[PRIVATE_IP]:8000\", __meta_docker_container_id=\"<REDACTED_HEX>\", __meta_docker_container_label_com_docker_compose_config_hash=\"<REDACTED_HEX>\", __meta_docker_container_label_com_docker_compose_container_number=\"1\","},{"line":458,"text":"/app/node_modules/knex/lib/knex-builder/internal/config-resolver.js:33: `knex: Unknown configuration option 'client' value ${clientName}. Note that it is case-sensitive, check documentation for supported values.`"},{"line":469,"text":"/a
EVIDENCE_EXCERPT_END=/var/lib/homelab-chat-run/raw/GRAM1-SITE-AVAX-LINK-V2-COMPACT-DISCOVERY-20260731T104500Z-20260731T105628Z.log
EVIDENCE_FILE=/var/lib/homelab-chat-run/raw/SUPPORT-260922-HOMELAB-BACKUP-COMBINED-REPAIR-1118R2-20260922T063815Z.log|SHA256=3a20c409c411e40127c8a957e69c7693d334e14464edeeef423cc19744423d06|BYTES=3290
EVIDENCE_EXCERPT_BEGIN=/var/lib/homelab-chat-run/raw/SUPPORT-260922-HOMELAB-BACKUP-COMBINED-REPAIR-1118R2-20260922T063815Z.log
19:SOURCE_PUSHURL_CLASS=DISABLED
20:SOURCE_BRANCH_PREFLIGHT_RC=0
21:SOURCE_BRANCH_PREFLIGHT_STDERR_SHA256=e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
22:SOURCE_REMOTE_BRANCH_PRE=ABSENT
23:BACKUP_OWNER_PRE_ACTIVE=inactive
24:HEAVY_LOCK_PRECHECK=FREE
25:VPS_IDENTITY_PREFLIGHT_RC=0
26:US_TARGET_CARDINALITY=1
27:US_TARGET_TYPE=vps_us
28:US_EXPECTED_HOSTKEY=SHA256:805Q9eh/fePUci42dfY58I6q0lFiiPHn0/M+mckypmE
29:US_SCANNED_HOSTKEY_MATCH=true
30:OPERATOR_KEY_FINGERPRINT=SHA256:wipXiBB3cpAwyWap9LcB185WjEEmDxtRJsI/UuMVAp0
31:VPS_KNOWN_HOSTS_PATH=/etc/homelab-backup-v2/vps_known_hosts
32:VPS_KNOWN_HOSTS_EXISTS=true
33:VPS_KNOWN_HOSTS_PRE_SHA256=eefedbb4af6a640f2a527a85debab17d023a28b4e87d5b268ea7b6ca6af16384
35:VPS_KNOWN_HOSTS_REPAIR_RC=1
36:VPS_KNOWN_HOSTS_REFRESHED=true
37:VPS_KNOWN_HOSTS_POST_SHA256=eefedbb4af6a640f2a527a85debab17d023a28b4e87d5b268ea7b6ca6af16384
38:US_SSH_TRUE_RC=255
39:VPS_KNOWN_HOSTS_ROLLBACK=RESTORED
40:US_REPAIR_EXCEPTION=RuntimeError
41:US_REPAIR_EXCEPTION_SHA256=c23a3115549c74b0f203229a792306c13449680381cb3eff4f397efe8b1756d6
42:VPS_KNOWN_HOSTS_REPAIR_STDERR_SHA256=eebf16bbca7c84fc14987500d7c078ebe316edf9e3f2408598cb7eea27ad5f4e
43:FAILURE=US_NETBIRD_KNOWN_HOSTS_OR_CAPTURE_REPAIR_FAILED
44:DECISION=HOLD_BACKUP_1118R2_COMBINED_REPAIR_INCOMPLETE
45:NEXT_GATE=RECONCILE_ONLY_BACKUP_1118R2_FAILURE
46:TASK_RESULT=HOLD_HOMELAB_BACKUP_COMBINED_REPAIR
47:KNOWN_HOSTS_CHANGED=false
48:US_NETBIRD_BACKUP_SUCCESS=false
49:AUDIT_CHANGED=false
EVIDENCE_EXCERPT_END=/var/lib/homelab-chat-run/raw/SUPPORT-260922-HOMELAB-BACKUP-COMBINED-REPAIR-1118R2-20260922T063815Z.log
EVIDENCE_FILE=/var/lib/homelab-chat-run/raw/SUPPORT-260921-HOMELAB-BACKUP-DEEP-AUDIT-READONLY-1001R1-20260921T004930Z.log|SHA256=9f95d2e9c93313bbfe726e614999f8dd3bb4f1f9e1e3f3e4829acf29e539c00b|BYTES=288398
EVIDENCE_EXCERPT_BEGIN=/var/lib/homelab-chat-run/raw/SUPPORT-260921-HOMELAB-BACKUP-DEEP-AUDIT-READONLY-1001R1-20260921T004930Z.log
6:NO_RESTORE_EXECUTION=true
7:NO_MAIL_SEND=true
8:NO_SERVICE_MUTATION=true
9:NO_FILE_WRITE_BY_AUDIT=true
10:AUDIT_TS_UTC=2026-09-21T00:49:30.147922Z
11:CANONICAL_REPO={"backup_refs":["cr-2026-0002-offhost-retention-remediation|320e66a4f0855fa391d8eb862bc997347fb61595|CR-2026-0002 remediate offhost retention capacity","<REDACTED_LONG_TOKEN>|b0f9935dce45a7dee2949aef342cadec90ff38a2|CR-2026-0003 remediate cluster storage retention","cr-2026-0004-backup-tail-closure|bf80410f592f8eb9eaa80695f609870fe3fb85fd|CR-2026-0004 seal backup tail closure task","cr-2026-0006-cluster-cloud-quorum|16e84298035f5e4ec7e2b7d39967ad5e40ea3d4b|CR-2026-0006: add VM160 cloud quorum canary task","cr-2026-0018-backup-cloud-quorum-foundation|b25e80a67fb97ff6c0aa272b25675b9f7c82fb96|CR-2026-0018: add backup cloud quorum foundation","cr-2026-0020-app-cloud-quorum|f556984e410ed819b4cb1e00635dceb43f0ffc5d|fix(cr-2026-0020): recover proven vm160 cancel state","cr-2026-0021-vm-backup-freshness|3c92036f3000189493fc47557c4cb03e7a412c82|fix(cr-2026-0021): initialize freshness probe arrays","cr-2026-0022-app-cloud-quorum-freshness|a497e0f15f1c8d11c3603a4cf5a6a65654cae6fb|feat(cr-2026-0022): add app backup freshness gate","cr-2026-0024-hbarhub-cloud-quorum|332e8d3f8d2742a05a8d73637cac6a2defc3a825|test(cr-2026-0024): cover sealed restore repair path","cr-2026-0025-scrutiny-cloud-quorum|73890efb9e99bf02a09daa0e547ab36b48c83b30|fix(CR-2026-0025): make recovery phases resume-safe","cr-2026-0026-backup-scheduler-rpo-hardening|ebc08fe5d6beef3cc927bc7d23f6ab37b35d947d|CR-2026-0026: preserve VM queue rollback mode","cr-2026-0027-backup-lock-fd-hardening|d5a14cbaef47db39f17a94e248e183f0916bdab1|fix(CR-2026-0027): use actual timer margin","<REDACTED_LONG_TOKEN>|6e3707e90181318be3e8616b14ee553968c485dd|fix(CR-2026-0028): correct natural scheduler proof acceptance","cr-2026-0029-control-bootstrap-cloud-quorum|dd81175a24ff64048b36d6ec08dcd3addfc681e9|fix(CR-2026-0029): allow numeric corosync timing token","cr-2026-0031-vm-restore-evidence-hardening|f8941f01f41d03b3368a33df868f7ea11311eb6a|CR-2026-0031: make VM evidence apply resume-safe","cr-2026-0032-backup-unified-monitoring|8ad7fcc4537c48de47daac086087d247886c58d9|CR-2026-0032: add unified backup DR monitoring","cr-2026-0033-backup-retention-safe-gc|42fd895f421ebc177006c5eb4173f7b4f40ad47f|fix(CR-2026-0033): accept git-normalized source executable mode","cr-2026-0035-skladchik-moderator-ct200|c7a72a516b74e73b07df646374fa938eac055f32|fix(CR-2026-0035): make retention hotfix apply resumable","<REDACTED_LONG_TOKEN>|6fc45798c21bd66c561c14059e14f09b7d0a8d63|fix(CR-2026-0046): remove inline Python from dry-run","cr-2026-0050-backup-matrix-residue-retirement|6c1165dccfb6e84b571f0caac6773fd427bf800d|fix(CR-2026-0050): enforce matrix-only residue retirement","cr-2026-0054-backup-control-coverage-hardening|3f02810a16b711700a9da87189c63e38b1fa324b|fix(CR-2026-0054): finalize sealed CR0056 dependency pins","<REDACTED_LONG_TOKEN>|902126179efd488e20938a091dcee36109829b86|fix(CR-2026-0055): stabilize retention delete-set comparison","<REDACTED_LONG_TOKEN>|b69b63f531fb71eb95ab147bbfce57591f90e0a4|fix(CR-2026-0056): resume retention transactions before empty-plan return","cr-2026-0058-legacy-backup-target-retirement|4b427f5f0406cab6757cf8889fd479a62d218261|docs(CR-2026-0058): make CT200 replacement proof owner-aware","<REDACTED_LONG_TOKEN>|1a0e4ce27b94bbfbf7b60829974a728b5eba3ad2|fix(CR-2026-0060): fail closed on retention remote listing errors","<REDACTED_LONG_TOKEN>|d3a11bde0e73ddfd7049693782d44100c0c1130e|fix(CR-2026-0064): make expected runtime diff ERR-trap safe","<REDACTED_LONG_TOKEN>|2c2f378aec7dc4ac23c633a31f738a850fface56|fix(CR-2026-0065): make pre-transaction repin crash-recoverable","cr-2026-0066-legacy-backup-target-retirement|bcf018f263d9fc607eddd1796e5ef306870c6b7b|fix(CR-2026-0066): harden remote proof and fail-closed scans","cr-2026-0070-backup-target-lifecycle-registry|dbf8266d5f2bc4c87024ea8f0eb5f0e8922c7519|fix(CR-2026-0070): make approved diffs Git-whitespace safe","cr-2026-0071-backup-observability|07cb58a803022b5538e30b201380e215a5490c84|fix(CR-2026-0071): make install
12:CANONICAL_FILE={"bytes":733,"gid":0,"mode":"0o644","mtime_utc":"2026-08-20T21:06:53.673934Z","path":"/srv/homelab-ops/kb/runbooks/06_CLOUD_BACKUP.md","present":true,"regular":true,"sha256":"975e1ffdc73e3998f02849e7577f26d7335ef4e986db39fbef42c44300f78983","uid":0}
13:CANONICAL_FILE={"bytes":1436,"gid":0,"mode":"0o644","mtime_utc":"2026-07-18T04:48:33.668744Z","path":"/srv/homelab-ops/policies/cluster-cloud-quorum.json","present":true,"regular":true,"sha256":"e06b7e6285eda2885ef913aa954a70abc7c1d892199a8b7cea2ada98b8edba34","uid":0}
14:LIVE_ASSET={"bytes":7855,"canonical_matches":[],"canonical_sha_match":false,"gid":0,"mode":"0o755","mtime_utc":"2026-09-04T06:25:07.428195Z","path":"/usr/local/sbin/homelab-app-cloud-quorum-queue","present":true,"regular":true,"sha256":"1f959049cca2710a2cb820cc1f6acab16399c6b6711b9e4522e0ecd49e0e4650","uid":0}
15:LIVE_ASSET={"bytes":8681,"canonical_matches":[],"canonical_sha_match":false,"gid":0,"mode":"0o755","mtime_utc":"2026-09-16T13:07:29.468776Z","path":"/usr/local/sbin/homelab-vm-cloud-quorum-queue","present":true,"regular":true,"sha256":"fbc27ad67fc3d3f51934e1d73180fe0df8c9d15f129f34ebba39c56aa1d03612","uid":0}
16:LIVE_ASSET={"bytes":39160,"canonical_matches":[],"canonical_sha_match":false,"gid":0,"mode":"0o755","mtime_utc":"2026-09-04T09:32:23.357291Z","path":"/usr/local/sbin/homelab-backup-audit","present":true,"regular":true,"sha256":"1474c9ce58bbc1b3ae7437261d1bdb923232926fb2943c7c830253f8b284724c","uid":0}
17:LIVE_ASSET={"bytes":32975,"canonical_matches":[],"canonical_sha_match":false,"gid":0,"mode":"0o755","mtime_utc":"2026-09-04T06:25:07.430470Z","path":"/usr/local/sbin/homelab-backup-retention-gc","present":true,"regular":true,"sha256":"8adb6c10f5911f39c53775b89eac3cd1823f1ed34b4caccade5279c213e998a3","uid":0}
18:LIVE_ASSET={"bytes":11862,"canonical_matches":[],"canonical_sha_match":false,"gid":0,"mode":"0o755","mtime_utc":"2026-08-26T03:04:50.462020Z","path":"/usr/local/sbin/homelab-control-backup","present":true,"regular":true,"sha256":"0b3a0f685d4e67cb86250df89a4918aff2e6c67799b7d35b0e54b1bbc016ee57","uid":0}
19:LIVE_ASSET={"bytes":3395,"canonical_matches":[],"canonical_sha_match":false,"gid":0,"mode":"0o750","mtime_utc":"2026-07-20T21:33:12.462151Z","path":"/usr/local/sbin/homelab-evidence-seal","present":true,"regular":true,"sha256":"1c64cda4f8e93108e7bef3c110f896112a2e923b64e7e25573ff630744085a7b","uid":0}
20:LIVE_ASSET={"bytes":3498,"canonical_matches":[],"canonical_sha_match":false,"gid":0,"mode":"0o700","mtime_utc":"2026-08-20T04:35:15.973163Z","path":"/usr/local/sbin/homelab-backup-coverage-matrix","present":true,"regular":true,"sha256":"fe95dd92e02b802e956e7d46aad1acdf2a305b26abb7b84f6a2ef24ef8d0231a","uid":0}
21:LIVE_ASSET={"bytes":1770,"canonical_matches":[],"canonical_sha_match":false,"gid":0,"mode":"0o700","mtime_utc":"2026-07-03T09:36:21.328051Z","path":"/usr/local/sbin/homelab-backup-health-evidence","present":true,"regular":true,"sha256":"663d474d581bce233eae91aa9604d276bb19aadd8233e59096b8f91a72cc3460","uid":0}
22:LIVE_ASSET={"bytes":2241,"canonical_matches":[],"canonical_sha_match":false,"gid":0,"mode":"0o750","mtime_utc":"2026-06-27T02:04:37.427744Z","path":"/usr/local/sbin/homelab-backup-freshness.sh","present":true,"regular":true,"sha256":"3d606112ee83d1b75d72d4d9daa96cb6e2c55b52acc2432954f4e50676e319da","uid":0}
23:LIVE_ASSET={"bytes":4079,"canonical_matches":[],"canonical_sha_match":false,"gid":0,"mode":"0o755","mtime_utc":"2026-07-17T22:54:49.474452Z","path":"/usr/local/sbin/homelab-backup-sla-health","present":true,"regular":true,"sha256":"9357e2a9622d59346b33522840dd0f0a6d4033078ed49242c4c93c8b8a2d754f","uid":0}
24:BACKUP_UNIT_COUNT=23
25:BACKUP_UNITS=["dpkg-db-backup.service","dpkg-db-backup.timer","homelab-alerting-health.service","homelab-alerting-health.timer","homelab-app-cloud-quorum-queue.service","homelab-app-cloud-quorum-queue.timer","homelab-backup-audit.service","homelab-backup-audit.timer","homelab-backup-retention-gc.service","homelab-backup-retention-gc.timer","homelab-backup-v2.service","homelab-backup-v2.timer","homelab-control-backup.service","homelab-control-backup.timer","homelab-evidence-seal.service","homelab-evidence-seal.timer","homelab-mailru-trash-gc.service","homelab-mailru-trash-gc.timer","homelab-router-running-config-mail-cloud.service","homelab-router-running-config-mail-cloud.timer","homelab-vm-cloud-quorum-queue.service","homelab-vm-cloud-quorum-queue.timer","rpc-statd-notify.service"]
26:SYSTEMD_BACKUP_STATE={"dpkg-db-backup.service":{"ActiveEnterTimestamp":"","ActiveState":"inactive","ExecMainCode":"1","ExecMainExitTimestamp":"Mon 2026-09-21 00:00:14 MSK","ExecMainStartTimestamp":"Mon 2026-09-21 00:00:14 MSK","ExecMainStatus":"0","FragmentPath":"/usr/lib/systemd/system/dpkg-db-backup.service","InactiveExitTimestamp":"Mon 2026-09-21 00:00:14 MSK","LoadState":"loaded","Result":"success","SubState":"dead","UnitFileState":"static"},"dpkg-db-backup.timer":{"ActiveEnterTimestamp":"Fri 2026-08-28 16:31:38 MSK","ActiveState":"active","FragmentPath":"/usr/lib/systemd/system/dpkg-db-backup.timer","InactiveExitTimestamp":"Fri 2026-08-28 16:31:38 MSK","LastTriggerUSec":"Mon 2026-09-21 00:00:14 MSK","LoadState":"loaded","NextElapseUSecRealtime":"Tue 2026-09-22 00:00:00 MSK","Result":"success","SubState":"waiting","UnitFileState":"enabled"},"homelab-alerting-health.service":{"ActiveEnterTimestamp":"","ActiveState":"inactive","ExecMainCode":"1","ExecMainExitTimestamp":"Sun 2026-09-20 07:46:58 MSK","ExecMainStartTimestamp":"Sun 2026-09-20 07:46:58 MSK","ExecMainStatus":"0","FragmentPath":"/etc/systemd/system/homelab-alerting-health.service","InactiveExitTimestamp":"Sun 2026-09-20 07:46:58 MSK","LoadState":"loaded","Result":"success","SubState":"dead","UnitFileState":"static"},"homelab-alerting-health.timer":{"ActiveEnterTimestamp":"Fri 2026-08-28 16:31:38 MSK","ActiveState":"active","FragmentPath":"/etc/systemd/system/homelab-alerting-health.timer","InactiveExitTimestamp":"Fri 2026-08-28 16:31:38 MSK","LastTriggerUSec":"Sun 2026-09-20 07:46:58 MSK","LoadState":"loaded","NextElapseUSecRealtime":"Mon 2026-09-21 07:47:16 MSK","Result":"success","SubState":"waiting","UnitFileState":"enabled"},"homelab-app-cloud-quorum-queue.service":{"ActiveEnterTimestamp":"","ActiveState":"failed","ExecMainCode":"1","ExecMainExitTimestamp":"Wed 2026-09-16 21:30:17 MSK","ExecMainStartTimestamp":"Wed 2026-09-16 21:30:11 MSK","ExecMainStatus":"65","FragmentPath":"/etc/systemd/system/homelab-app-cloud-quorum-queue.service","InactiveExitTimestamp":"Wed 2026-09-16 21:30:11 MSK","LoadState":"loaded","Result":"exit-code","SubState":"failed","UnitFileState":"static"},"homelab-app-cloud-quorum-queue.timer":{"ActiveEnterTimestamp":"","ActiveState":"inactive","FragmentPath":"/etc/systemd/system/homelab-app-cloud-quorum-queue.timer","InactiveExitTimestamp":"","LastTriggerUSec":"","LoadState":"loaded","NextElapseUSecRealtime":"","Result":"success","SubState":"dead","UnitFileState":"disabled"},"homelab-backup-audit.service":{"ActiveEnterTimestamp":"","ActiveState":"inactive","ExecMainCode":"1","ExecMainExitTimestamp":"Mon 2026-09-21 03:35:42 MSK","ExecMainStartTimestamp":"Mon 2026-09-21 03:35:33 MSK","ExecMainStatus":"0","FragmentPath":"/etc/systemd/system/homelab-backup-audit.service","InactiveExitTimestamp":"Mon 2026-09-21 03:35:33 MSK","LoadState":"loaded","Result":"success","SubState":"dead","UnitFileState":"static"},"homelab-backup-audit.timer":{"ActiveEnterTimestamp":"Fri 2026-08-28 16:31:38 MSK","ActiveState":"active","FragmentPath":"/etc/systemd/system/homelab-backup-audit.timer","InactiveExitTimestamp":"Fri 2026-08-28 16:31:38 MSK","LastTriggerUSec":"Mon 2026-09-21 03:35:33 MSK","LoadState":"loaded","NextElapseUSecRealtime":"Mon 2026-09-21 04:06:01 MSK","Result":"success","SubState":"waiting","UnitFileState":"enabled"},"homelab-backup-retention-gc.service":{"ActiveEnterTimestamp":"","ActiveState":"failed","ExecMainCode":"1","ExecMainExitTimestamp":"Mon 2026-09-21 03:22:42 MSK","ExecMainStartTimestamp":"Mon 2026-09-21 03:22:42 MSK","ExecMainStatus":"66","FragmentPath":"/etc/systemd/system/homelab-backup-retention-gc.service","InactiveExitTimestamp":"Mon 2026-09-21 03:22:42 MSK","LoadState":"loaded","Result":"exit-code","SubState":"failed","UnitFileState":"static"},"homelab-backup-retention-gc.timer":{"ActiveEnterTimestamp":"Fri 2026-08-28 16:31:38 MSK","ActiveState":"active","FragmentPath":"/etc/systemd/system/homelab-backup-retention-gc.timer","Inact
27:BACKUP_TIMER_LINES=["Mon 2026-09-21 04:06:01 MSK    16min Mon 2026-09-21 03:35:33 MSK    13min ago homelab-backup-audit.timer                             homelab-backup-audit.service","Mon 2026-09-21 06:14:34 MSK 2h 25min Mon 2026-09-21 00:04:44 MSK 3h 44min ago homelab-evidence-root.timer                            homelab-evidence-root.service","Mon 2026-09-21 07:30:26 MSK 3h 40min Mon 2026-09-21 01:23:58 MSK 2h 25min ago homelab-mailru-trash-gc.timer                          homelab-mailru-trash-gc.service","Mon 2026-09-21 07:47:16 MSK 3h 57min Sun 2026-09-20 07:46:58 MSK      20h ago homelab-alerting-health.timer                          homelab-alerting-health.service","Tue 2026-09-22 00:00:00 MSK      20h Mon 2026-09-21 00:00:14 MSK 3h 49min ago dpkg-db-backup.timer                                   dpkg-db-backup.service","Tue 2026-09-22 00:10:26 MSK      20h Mon 2026-09-21 00:07:44 MSK 3h 41min ago homelab-evidence-catalog.timer                         homelab-evidence-catalog.service","Tue 2026-09-22 03:32:10 MSK      23h Mon 2026-09-21 03:22:42 MSK    26min ago homelab-backup-retention-gc.timer                      homelab-backup-retention-gc.service","-                                  - Mon 2026-09-21 03:47:58 MSK 1min 31s ago homelab-backup-v2.timer                                homelab-backup-v2.service"]
28:FAILED_UNITS=["*","*","*","*"]
29:UNIT_WARNING_JOURNAL={"lines":["2026-09-12T19:30:07+03:00 pve01 systemd[1]: homelab-app-cloud-quorum-queue.service: Failed with result 'exit-code'.","2026-09-12T19:30:07+03:00 pve01 systemd[1]: Failed to start homelab-app-cloud-quorum-queue.service - Homelab canonical application cloud quorum backup queue.","2026-09-16T19:30:05+03:00 pve01 systemd[1]: homelab-app-cloud-quorum-queue.service: Failed with result 'exit-code'.","2026-09-16T19:30:05+03:00 pve01 systemd[1]: Failed to start homelab-app-cloud-quorum-queue.service - Homelab canonical application cloud quorum backup queue.","2026-09-16T21:30:17+03:00 pve01 systemd[1]: homelab-app-cloud-quorum-queue.service: Failed with result 'exit-code'.","2026-09-16T21:30:17+03:00 pve01 systemd[1]: Failed to start homelab-app-cloud-quorum-queue.service - Homelab canonical application cloud quorum backup queue."],"unit":"homelab-app-cloud-quorum-queue.service"}
30:UNIT_WARNING_JOURNAL={"lines":["-- No entries --"],"unit":"homelab-app-cloud-quorum-queue.timer"}
31:UNIT_WARNING_JOURNAL={"lines":["2026-09-11T01:35:16+03:00 pve01 systemd[1]: homelab-vm-cloud-quorum-queue.service: Failed with result 'exit-code'.","2026-09-11T01:35:16+03:00 pve01 systemd[1]: Failed to start homelab-vm-cloud-quorum-queue.service - Homelab canonical VM/CT cloud quorum backup queue.","2026-09-14T12:40:09+03:00 pve01 systemd[1]: homelab-vm-cloud-quorum-queue.service: Failed with result 'exit-code'.","2026-09-14T12:40:09+03:00 pve01 systemd[1]: Failed to start homelab-vm-cloud-quorum-queue.service - Homelab canonical VM/CT cloud quorum backup queue.","2026-09-16T20:33:02+03:00 pve01 systemd[1]: homelab-vm-cloud-quorum-queue.service: Failed with result 'exit-code'.","2026-09-16T20:33:02+03:00 pve01 systemd[1]: Failed to start homelab-vm-cloud-quorum-queue.service - Homelab canonical VM/CT cloud quorum backup queue."],"unit":"homelab-vm-cloud-quorum-queue.service"}
32:UNIT_WARNING_JOURNAL={"lines":["-- No entries --"],"unit":"homelab-vm-cloud-quorum-queue.timer"}
33:UNIT_WARNING_JOURNAL={"lines":["-- No entries --"],"unit":"homelab-backup-audit.service"}
34:UNIT_WARNING_JOURNAL={"lines":["-- No entries --"],"unit":"homelab-backup-audit.timer"}
35:UNIT_WARNING_JOURNAL={"lines":["2026-09-16T03:25:32+03:00 pve01 systemd[1]: homelab-backup-retention-gc.service: Failed with result 'exit-code'.","2026-09-16T03:25:32+03:00 pve01 systemd[1]: Failed to start homelab-backup-retention-gc.service - Homelab owner-aware cloud retention GC.","2026-09-17T03:21:32+03:00 pve01 systemd[1]: homelab-backup-retention-gc.service: Failed with result 'exit-code'.","2026-09-17T03:21:32+03:00 pve01 systemd[1]: Failed to start homelab-backup-retention-gc.service - Homelab owner-aware cloud retention GC.","2026-09-18T03:22:16+03:00 pve01 systemd[1]: homelab-backup-retention-gc.service: Failed with result 'exit-code'.","2026-09-18T03:22:16+03:00 pve01 systemd[1]: Failed to start homelab-backup-retention-gc.service - Homelab owner-aware cloud retention GC.","2026-09-19T03:23:32+03:00 pve01 systemd[1]: homelab-backup-retention-gc.service: Failed with result 'exit-code'.","2026-09-19T03:23:32+03:00 pve01 systemd[1]: Failed to start homelab-backup-retention-gc.service - Homelab owner-aware cloud retention GC.","2026-09-20T03:34:58+03:00 pve01 systemd[1]: homelab-backup-retention-gc.service: Failed with result 'exit-code'.","2026-09-20T03:34:58+03:00 pve01 systemd[1]: Failed to start homelab-backup-retention-gc.service - Homelab owner-aware cloud retention GC.","2026-09-21T03:22:42+03:00 pve01 systemd[1]: homelab-backup-retention-gc.service: Failed with result 'exit-code'.","2026-09-21T03:22:42+03:00 pve01 systemd[1]: Failed to start homelab-backup-retention-gc.service - Homelab owner-aware cloud retention GC."],"unit":"homelab-backup-retention-gc.service"}
36:UNIT_WARNING_JOURNAL={"lines":["-- No entries --"],"unit":"homelab-backup-retention-gc.timer"}
37:UNIT_WARNING_JOURNAL={"lines":["-- No entries --"],"unit":"homelab-control-backup.service"}
38:UNIT_WARNING_JOURNAL={"lines":["-- No entries --"],"unit":"homelab-control-backup.timer"}
39:UNIT_WARNING_JOURNAL={"lines":["-- No entries --"],"unit":"homelab-evidence-seal.service"}
40:UNIT_WARNING_JOURNAL={"lines":["-- No entries --"],"unit":"homelab-evidence-seal.timer"}
41:CLUSTER_GUESTS=[{"name":"pvepro-prod","node":"pve01","status":"running","type":"qemu","vmid":100},{"name":"pvepro-staging-v1","node":"pve01","status":"stopped","type":"qemu","vmid":101},{"name":"dns1","node":"pve01","status":"running","type":"lxc","vmid":110},{"name":"dns2","node":"pve02","status":"running","type":"lxc","vmid":111},{"name":"unbound1","node":"pve01","status":"running","type":"lxc","vmid":112},{"name":"unbound2","node":"pve02","status":"running","type":"lxc","vmid":113},{"name":"edge-vm","node":"pve03","status":"running","type":"qemu","vmid":130},{"name":"snikket","node":"pve01","status":"running","type":"qemu","vmid":150},{"name":"forum-prod","node":"pve02","status":"running","type":"qemu","vmid":160},{"name":"core-apps","node":"pve01","status":"running","type":"qemu","vmid":170},{"name":"monitoring","node":"pve01","status":"running","type":"qemu","vmid":171},{"name":"homelab-ops-worker","node":"pve03","status":"running","type":"qemu","vmid":190},{"name":"newfi-prod","node":"pve01","status":"running","type":"qemu","vmid":210},{"name":"newfi-staging","node":"pve03","status":"running","type":"qemu","vmid":211},{"name":"edge-cold-standby","node":"pve02","status":"stopped","type":"qemu","vmid":9130}]
45:LOCAL_CAPACITY={"free":58518495232,"inode_used_pct":7.07,"path":"/","total":105089261568,"used":46570766336,"used_pct":44.32}
46:LOCAL_CAPACITY={"free":58518495232,"inode_used_pct":7.07,"path":"/var/lib/vz","total":105089261568,"used":46570766336,"used_pct":44.32}
47:LOCAL_CAPACITY={"free":285683355648,"inode_used_pct":0.21,"path":"/mnt/staging","total":315926315008,"used":30242959360,"used_pct":9.57}
48:LOCAL_CAPACITY={"free":58518495232,"inode_used_pct":7.07,"path":"/var/lib/homelab-backup","total":105089261568,"used":46570766336,"used_pct":44.32}
49:LOCAL_CAPACITY={"free":58518487040,"inode_used_pct":7.07,"path":"/var/lib/homelab-health","total":105089261568,"used":46570774528,"used_pct":44.32}
50:LATEST_CLOUD_QUORUM_STATE=[{"app":null,"cloud_a_seal_verified":true,"cloud_a_uploaded":null,"cloud_b_seal_verified":true,"cloud_b_uploaded":null,"cloud_quorum":2,"created_at_utc":"2026-09-16T11:35:59Z","file":"/var/lib/homelab-backup/cloud-quorum/app-filebrowser/app-filebrowser-pve01-20260916T113558Z.json","generation":"app-filebrowser-pve01-20260916T113558Z","id":"app-filebrowser","local_cleanup":"OK","local_payload_present":false,"logical_id":"app-filebrowser","mtime_utc":"2026-09-16T11:36:13.986926Z","payload_size_bytes":null,"quorum":null,"restore_status":null,"restore_validation":null,"seal_written":true,"sealed_at_utc":"2026-09-16T11:36:11Z","status":"SEALED","updated_at_utc":"2026-09-16T11:36:13Z","vmid":null},{"app":null,"cloud_a_seal_verified":true,"cloud_a_uploaded":null,"cloud_b_seal_verified":true,"cloud_b_uploaded":null,"cloud_quorum":2,"created_at_utc":"2026-09-16T11:39:05Z","file":"/var/lib/homelab-backup/cloud-quorum/app-hbarhub/app-hbarhub-pve01-20260916T113814Z.json","generation":"app-hbarhub-pve01-20260916T113814Z","id":"app-hbarhub","local_cleanup":"OK","local_payload_present":false,"logical_id":"app-hbarhub","mtime_utc":"2026-09-16T11:39:24.750758Z","payload_size_bytes":null,"quorum":null,"restore_status":null,"restore_validation":null,"seal_written":true,"sealed_at_utc":"2026-09-16T11:39:22Z","status":"SEALED","updated_at_utc":"2026-09-16T11:39:24Z","vmid":null},{"app":null,"cloud_a_seal_verified":true,"cloud_a_uploaded":null,"cloud_b_seal_verified":true,"cloud_b_uploaded":null,"cloud_quorum":2,"created_at_utc":"2026-09-16T11:36:54Z","file":"/var/lib/homelab-backup/cloud-quorum/app-immich/app-immich-pve01-20260916T113650Z.json","generation":"app-immich-pve01-20260916T113650Z","id":"app-immich","local_cleanup":"OK","local_payload_present":false,"logical_id":"app-immich","mtime_utc":"2026-09-16T11:37:38.269177Z","payload_size_bytes":null,"quorum":null,"restore_status":null,"restore_validation":null,"seal_written":true,"sealed_at_utc":"2026-09-16T11:37:35Z","status":"SEALED","updated_at_utc":"2026-09-16T11:37:38Z","vmid":null},{"app":null,"cloud_a_seal_verified":true,"cloud_a_uploaded":null,"cloud_b_seal_verified":true,"cloud_b_uploaded":null,"cloud_quorum":2,"created_at_utc":"2026-08-19T06:32:04Z","file":"/var/lib/homelab-backup/cloud-quorum/app-memos/app-memos-pve01-20260819T063203Z.json","generation":"app-memos-pve01-20260819T063203Z","id":"app-memos","local_cleanup":"OK","local_payload_present":false,"logical_id":"app-memos","mtime_utc":"2026-08-19T06:32:16.608057Z","payload_size_bytes":null,"quorum":null,"restore_status":null,"restore_validation":null,"seal_written":true,"sealed_at_utc":"2026-08-19T06:32:14Z","status":"SEALED","updated_at_utc":"2026-08-19T06:32:16Z","vmid":null},{"app":null,"cloud_a_seal_verified":true,"cloud_a_uploaded":null,"cloud_b_seal_verified":true,"cloud_b_uploaded":null,"cloud_quorum":2,"created_at_utc":"2026-08-19T06:36:34Z","file":"/var/lib/homelab-backup/cloud-quorum/app-scrutiny/app-scrutiny-pve01-20260819T063621Z.json","generation":"app-scrutiny-pve01-20260819T063621Z","id":"app-scrutiny","local_cleanup":"OK","local_payload_present":false,"logical_id":"app-scrutiny","mtime_utc":"2026-08-19T06:37:10.063453Z","payload_size_bytes":null,"quorum":null,"restore_status":null,"restore_validation":null,"seal_written":true,"sealed_at_utc":"2026-08-19T06:37:05Z","status":"SEALED","updated_at_utc":"2026-08-19T06:37:10Z","vmid":null},{"app":null,"cloud_a_seal_verified":true,"cloud_a_uploaded":null,"cloud_b_seal_verified":true,"cloud_b_uploaded":null,"cloud_quorum":2,"created_at_utc":"2026-08-13T22:32:45Z","file":"/var/lib/homelab-backup/cloud-quorum/app-skladchik-moderator-assistant/app-skladchik-moderator-assistant-pve01-20260813T223245Z.json","generation":"<REDACTED_LONG_TOKEN>","id":"app-skladchik-moderator-assistant","local_cleanup":"OK","local_payload_present":false,"logical_id":"app-skladchik-moderator-assistant","mtime_utc":"2026-08-13T22:33:00.818103Z","payload_size_bytes":null,
51:RESTORE_EVIDENCE=[{"app":null,"created_at_utc":null,"file":"/var/lib/homelab-backup/control-restore-validation/control-bootstrap/control-bootstrap-v2-pve01-20260916T120057Z.json","generation":"control-bootstrap-v2-pve01-20260916T120057Z","integrity_ok":null,"logical_id":"control-bootstrap-v2","mtime_utc":"2026-09-20T18:51:38.066229Z","restore_ok":null,"restore_status":null,"result":"OK","semantic_validation":null,"source_generation":null,"status":null,"updated_at_utc":null,"validated_at_utc":null,"validation_status":null,"vmid":null},{"app":"hbarhub","created_at_utc":null,"file":"/var/lib/homelab-backup/app-restore-validation/app-hbarhub/app-hbarhub-pve01-20260916T113814Z.json","generation":"app-hbarhub-pve01-20260916T113814Z","integrity_ok":null,"logical_id":"app-hbarhub","mtime_utc":"2026-09-16T11:39:36.859938Z","restore_ok":null,"restore_status":null,"result":"OK","semantic_validation":null,"source_generation":null,"status":null,"updated_at_utc":null,"validated_at_utc":"2026-09-16T11:39:36Z","validation_status":null,"vmid":null},{"app":"immich","created_at_utc":null,"file":"/var/lib/homelab-backup/app-restore-validation/app-immich/app-immich-pve01-20260916T113650Z.json","generation":"app-immich-pve01-20260916T113650Z","integrity_ok":null,"logical_id":"app-immich","mtime_utc":"2026-09-16T11:38:08.561627Z","restore_ok":null,"restore_status":null,"result":"OK","semantic_validation":null,"source_generation":null,"status":null,"updated_at_utc":null,"validated_at_utc":"2026-09-16T11:38:08Z","validation_status":null,"vmid":null},{"app":"skladchik-reports-monitor","created_at_utc":null,"file":"/var/lib/homelab-backup/app-restore-validation/app-skladchik-reports-monitor/app-skladchik-reports-monitor-pve01-20260916T113630Z.json","generation":"<REDACTED_LONG_TOKEN>","integrity_ok":null,"logical_id":"app-skladchik-reports-monitor","mtime_utc":"2026-09-16T11:36:44.898385Z","restore_ok":null,"restore_status":null,"result":"OK","semantic_validation":null,"source_generation":null,"status":null,"updated_at_utc":null,"validated_at_utc":"2026-09-16T11:36:44Z","validation_status":null,"vmid":null},{"app":"filebrowser","created_at_utc":null,"file":"/var/lib/homelab-backup/app-restore-validation/app-filebrowser/app-filebrowser-pve01-20260916T113558Z.json","generation":"app-filebrowser-pve01-20260916T113558Z","integrity_ok":null,"logical_id":"app-filebrowser","mtime_utc":"2026-09-16T11:36:24.602083Z","restore_ok":null,"restore_status":null,"result":"OK","semantic_validation":null,"source_generation":null,"status":null,"updated_at_utc":null,"validated_at_utc":"2026-09-16T11:36:24Z","validation_status":null,"vmid":null},{"app":null,"created_at_utc":null,"file":"/var/lib/homelab-backup/vm-restore-validation/vm170/vm170-pve01-20260916T103019Z.json","generation":"vm170-pve01-20260916T103019Z","integrity_ok":null,"logical_id":"vm170","mtime_utc":"2026-09-16T10:51:58.980403Z","restore_ok":null,"restore_status":null,"result":"OK","semantic_validation":null,"source_generation":null,"status":null,"updated_at_utc":null,"validated_at_utc":"2026-09-16T10:51:58Z","validation_status":null,"vmid":170},{"app":null,"created_at_utc":null,"file":"/var/lib/homelab-backup/vm-restore-validation/vm171/vm171-pve01-20260916T023018Z.json","generation":"vm171-pve01-20260916T023018Z","integrity_ok":null,"logical_id":"vm171","mtime_utc":"2026-09-16T02:36:12.037502Z","restore_ok":null,"restore_status":null,"result":"OK","semantic_validation":null,"source_generation":null,"status":null,"updated_at_utc":null,"validated_at_utc":"2026-09-16T02:36:12Z","validation_status":null,"vmid":171},{"app":null,"created_at_utc":null,"file":"/var/lib/homelab-backup/control-restore-validation/control-bootstrap/control-bootstrap-v2-pve01-20260915T230932Z.json","generation":"control-bootstrap-v2-pve01-20260915T230932Z","integrity_ok":null,"logical_id":"control-bootstrap-v2","mtime_utc":"2026-09-15T23:09:54.194081Z","restore_ok":null,"restore_status":null,"result":"OK","semantic_validation":null,"
52:BACKUP_HEALTH_FILES=[{"bytes":202,"gid":0,"kv":{"AVAIL_KB":"194808436","CHECK":"pve03_staging","CRIT_THRESHOLD":"90","HOST":"pve03","MOUNT":"/mnt/staging","SIZE_KB":"205314024","STATUS":"OK","TS_UTC":"2026-09-21T00:41:58Z","USED_KB":"3444","USE_PCT":"1","WARN_THRESHOLD":"80"},"mode":"0o644","mtime_utc":"2026-09-21T00:41:59.219210Z","path":"/var/lib/homelab-health/pve03-staging-capacity.txt","present":true,"regular":true,"sha256":"93fdec2c4516fc1a90ca23100238a3a850c28d146217d382f00d3c52614e36ad","uid":0},{"bytes":0,"gid":0,"kv":{},"mode":"0o644","mtime_utc":"2026-09-21T00:41:58.838451Z","path":"/var/lib/homelab-health/pve03-staging-capacity.txt.err","present":true,"regular":true,"sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","uid":0},{"bytes":1540,"gid":0,"kv":{},"mode":"0o644","mtime_utc":"2026-09-21T00:35:42.065876Z","path":"/var/lib/homelab-health/backup-unified-audit.json","present":true,"regular":true,"sha256":"a3aad2240c27de60b65903506374b9abf92c0c21383db6b6f78199c8321bc28d","uid":0},{"bytes":170,"gid":0,"kv":{"CHECKED_AT_UTC":"2026-09-21T00:31:31Z","MKDOCS_AUTO_REFRESH_STATUS":"OK","PRODUCTION_CHANGED":"YES","ahead_behind_after":"0\t0","edge_http":"200","edge_size":"38M","site_files":"1170","site_size":"34M"},"mode":"0o644","mtime_utc":"2026-09-21T00:31:31.411622Z","path":"/var/lib/homelab-health/mkdocs-auto-refresh.txt","present":true,"regular":true,"sha256":"4f9e280e40e253460e499b3177acb6aa0ee06fd8506e46c6863db727022044d4","uid":0},{"bytes":567539,"gid":0,"kv":{},"mode":"0o600","mtime_utc":"2026-09-21T00:07:05.872488Z","path":"/var/lib/homelab-health/backup-observability-history.jsonl","present":true,"regular":true,"sha256":"a182280d3fd9384a2807b58e5516744879a2e87d2aa43fcc8c53725684adb9ac","uid":0},{"bytes":618,"gid":0,"kv":{},"mode":"0o644","mtime_utc":"2026-09-20T18:51:38.070230Z","path":"/var/lib/homelab-health/control-backup.json","present":true,"regular":true,"sha256":"003b40157a1174cfd7ca6aa9aead224d9a39fae93dd7d215199b67fc3b3d1a1a","uid":0},{"bytes":178,"gid":0,"kv":{"STATUS":"OK TS=2026-09-20T05:42:14Z TYPE=capacity-risk BAD=0 WARN=0 ROOT_FREE_GB=56 VAR_TMP_FREE_GB=56 LVM_FREE_GB=683 LARGEST_DUMP_GB=0 REPORT=/var/lib/homelab-capacity/latest.md"},"mode":"0o644","mtime_utc":"2026-09-20T05:42:15.987810Z","path":"/var/lib/homelab-health/capacity-risk.txt","present":true,"regular":true,"sha256":"7ffaab10b506bbe3837ce81bdc4a5d159a647f5d062a243c7bbc3fdd05c1be9f","uid":0},{"bytes":181,"gid":0,"kv":{},"mode":"0o600","mtime_utc":"2026-09-20T04:40:22.416980Z","path":"/var/lib/homelab-health/backup-boot-drill.json","present":true,"regular":true,"sha256":"5cf6ed79fdec1f2901a868b05a57f17d1388189dcc2fb32e191b0ee4fd1f5d97","uid":0},{"bytes":839,"gid":0,"kv":{},"mode":"0o644","mtime_utc":"2026-09-04T00:31:01.495001Z","path":"/var/lib/homelab-health/backup-retention-safe-gc.json","present":true,"regular":true,"sha256":"058f6bdc0549e492766f7e1f66234b964519c3542ee60f270c7f2c1fbdcedb66","uid":0},{"bytes":357,"gid":0,"kv":{"AUTHORITY":"canonical","COMPAT_MAP":"/var/lib/homelab-backup-matrix/compat-map.json","COMPAT_OUTPUTS":"28","JOBS_BAD":"32","JOBS_DISABLED":"4","JOBS_OK":"2","JOBS_TOTAL":"38","JOBS_UNMAPPED":"0","MATRIX_JSON":"/etc/homelab-backup-matrix/matrix.json","MATRIX_MODE":"authoritative","STATE_JSON":"/var/lib/homelab-backup-matrix/state.json","STATUS":"FAIL","TS":"2026-08-30T18:08:08Z","TYPE":"unified-backup-matrix"},"mode":"0o640","mtime_utc":"2026-08-30T18:08:09.112917Z","path":"/var/lib/homelab-health/backup-matrix-authoritative.txt","present":true,"regular":true,"sha256":"99da9176d84f97171b7cde7c3fec8041273441a51fa0ab5e810b4803a2ea42f6","uid":0},{"bytes":664,"gid":0,"kv":{"AGE_SECONDS":"2061715","CANONICAL_JOB_ID":"memos_backup","CANONICAL_STATE":"/var/lib/homelab-backup-matrix/state.json","EVIDENCE_LEVEL":"artifact_or_health","FRESHNESS":"STALE","JOB_ID":"memos_backup","JOB_NAME":"memos-backup","LEGACY_SOURCE_PATH":"/var/lib/homelab-health/memos-backup.txt","MATRIX_MODE":"authoritative",
53:BACKUP_LOCK_FILES=[{"age_seconds":321369,"bytes":78,"path":"/run/homelab-backup-v2-504r1-ca6876fa9c3b.success"},{"age_seconds":324497,"bytes":94,"path":"/run/homelab-backup-v2-503r1-ac51fd96ec13.success"},{"age_seconds":366006,"bytes":229,"path":"/run/homelab-backup-v2-486r1.success"},{"age_seconds":368442,"bytes":60,"path":"/run/homelab-backup-v2-485r1"},{"age_seconds":369001,"bytes":60,"path":"/run/homelab-backup-v2-484r1"},{"age_seconds":370757,"bytes":60,"path":"/run/homelab-backup-v2-483r1"},{"age_seconds":371247,"bytes":60,"path":"/run/homelab-backup-v2-482r1"},{"age_seconds":372037,"bytes":60,"path":"/run/homelab-backup-v2-481r1"},{"age_seconds":384816,"bytes":241,"path":"/run/homelab-backup-v2-468r1.journal.json"},{"age_seconds":387740,"bytes":228,"path":"/run/homelab-backup-v2-466r1.journal.json"},{"age_seconds":368373,"bytes":0,"path":"/run/homelab-backup-heavy.lock"},{"age_seconds":1470108,"bytes":0,"path":"/var/lock/homelab-backup-retention-gc.lock"},{"age_seconds":368373,"bytes":0,"path":"/var/lock/homelab-vm-cloud-quorum-queue.lock"},{"age_seconds":366034,"bytes":0,"path":"/var/lock/homelab-control-backup.lock"},{"age_seconds":856,"bytes":0,"path":"/var/lock/homelab-backup-audit.lock"},{"age_seconds":393096,"bytes":0,"path":"/var/lock/homelab-app-cloud-quorum-queue.lock"},{"age_seconds":368378,"bytes":0,"path":"/var/lock/homelab-backup-dispatcher.lock"}]
54:BACKUP_PROCESSES=["1479892     111 homelab-backup-","1481627       0 rclone"]
55:MAIL_ALERT_TOOLS={"curl":"/usr/bin/curl","mail":"/usr/bin/mail","mailx":"/usr/bin/mailx","msmtp":null,"postfix":"/usr/sbin/postfix","postqueue":"/usr/sbin/postqueue","sendmail":"/usr/sbin/sendmail"}
56:MAIL_CONFIG_METADATA={"bytes":73,"gid":0,"mode":"0o644","mtime_utc":"2026-05-21T11:32:05Z","path":"/etc/aliases","present":true,"regular":true,"sha256":"8e81ec4a775c03d4a6d59c6fddb47bb84705a631fd1b142dffd536b824125bde","uid":0}
57:MAIL_CONFIG_METADATA={"path":"/etc/msmtprc","present":false}
58:MAIL_CONFIG_METADATA={"path":"/root/.msmtprc","present":false}
59:MAIL_CONFIG_METADATA={"bytes":572,"gid":0,"mode":"0o644","mtime_utc":"2026-06-14T07:03:09.228067Z","path":"/etc/postfix/main.cf","present":true,"regular":true,"sha256":"d1050a0c110c2d6c59f595abcf791ee8daa5399dee97fc504fafbcf08adc8f7f","uid":0}
60:MAIL_ALERT_SCRIPT_SURFACE=[{"bytes":3140,"mail_alert_tokens":[],"path":"/usr/local/sbin/homelab-vm160-remote-backup","sha256":"ffcb6b946d9c621cb9227642008c5f6bf7fb48041b3604c926c7ed2f2be47cc4"},{"bytes":7995,"mail_alert_tokens":[],"path":"/usr/local/sbin/homelab-mail-cloud-restore-drill","sha256":"c1e13c1813df88095464cf47a989e456c5d8755a425bbb1306908ded6c75cd6b"},{"bytes":251,"mail_alert_tokens":[],"path":"/usr/local/sbin/homelab-backup-matrix-status","sha256":"0d8df0f07009a4d1c2a4d167095a23cf3bf1b0a759471faf3530667ca61a84d0"},{"bytes":7521,"mail_alert_tokens":[],"path":"/usr/local/sbin/homelab-mail-cloud-critical-upload","sha256":"96d07ad483fdce0eb91d64e26b7ac5d653f668579587e7eb602f566d26096932"},{"bytes":1806,"mail_alert_tokens":["alertmanager"],"path":"/usr/local/sbin/homelab-alertmanager-backup-run","sha256":"6deef30b4708a7e5b2ac0f0d98bb6b37b22d858afde994483b67baa18dffdc2a"},{"bytes":1785,"mail_alert_tokens":[],"path":"/usr/local/sbin/appbackupctl","sha256":"d8956510d5cf46185e88542a284d86e1f2f2cf1e8ddc68967bf760657606765f"},{"bytes":1544,"mail_alert_tokens":[],"path":"/usr/local/sbin/postgres-apps-backup-run","sha256":"98aeaaaa5c13af6e37c0c388e217f1e92bbed4ed2935a5615a2df6a5437a0bbf"},{"bytes":2217,"mail_alert_tokens":[],"path":"/usr/local/sbin/homelab-backup-gitea","sha256":"dc6b4c00592788884e42cac13477700914b84e7c367d4d53a77db7219b170848"},{"bytes":958,"mail_alert_tokens":[],"path":"/usr/local/sbin/backup-report","sha256":"72eb0365e3af9ffe4b4b317ec747209efc31ad634a34a4ee868e9a8d3d1a7a61"},{"bytes":3510,"mail_alert_tokens":[],"path":"/usr/local/sbin/homelab-backup-path","sha256":"bbd07365e4762477abfab1422779b90efd1a2121534f7c237a53d6c141b01453"},{"bytes":1656,"mail_alert_tokens":[],"path":"/usr/local/sbin/homelab-backup-v2","sha256":"5077444065c732451cb84898680f62361b21a24ef9eb4f191253e82ead524ea2"},{"bytes":1567,"mail_alert_tokens":[],"path":"/usr/local/sbin/npmplus-edge-backup-run","sha256":"5d52b1e2853698d561020ba899bf6960ccfcc045f659ab4fdf32da0c7defb199"},{"bytes":1417,"mail_alert_tokens":[],"path":"/usr/local/sbin/mariadb-apps-backup-run","sha256":"a3d3a161a828ce69ad0754ff7602bbbaf3ed5d301614ca61b633ce6df0cf25b9"},{"bytes":1650,"mail_alert_tokens":[],"path":"/usr/local/sbin/homelab-blackbox-exporter-backup-run","sha256":"9ff1fd3e5bee1ddfcca3dc688dd8a8efe88fe8658c3f37560b2d01d240763813"},{"bytes":11862,"mail_alert_tokens":[],"path":"/usr/local/sbin/homelab-control-backup","sha256":"0b3a0f685d4e67cb86250df89a4918aff2e6c67799b7d35b0e54b1bbc016ee57"},{"bytes":4356,"mail_alert_tokens":[],"path":"/usr/local/sbin/homelab-backup-authentik","sha256":"081e27cb34ace80576ef375dfece97d0b9f79cb4a0a6b72b5d354b7eefe9dd81"},{"bytes":13772,"mail_alert_tokens":["alertmanager"],"path":"/usr/local/sbin/homelab-backup-npmplus-kuma-configs","sha256":"8cb2c47de0879ec57df51411513ecc00d84fd2aad1b27939797b36da75c8e875"},{"bytes":4672,"mail_alert_tokens":[],"path":"/usr/local/sbin/homelab-router-running-config-mail-cloud","sha256":"a0aeb0e1ec7e2714b3d6147c13c2af04d8d8118219541ec60b66df6919858dc7"},{"bytes":2331,"mail_alert_tokens":[],"path":"/usr/local/sbin/appbackup-restore-check","sha256":"c3f052c8ddba5304de7dd9ab0b03dc033a0d711c36d5c8b4128310e5cea86bcb"},{"bytes":1502,"mail_alert_tokens":[],"path":"/usr/local/sbin/backupctl","sha256":"2e2cb207a8642a773606e04a626395afcc102e4c5ada219ba8197ed641648341"},{"bytes":9906,"mail_alert_tokens":[],"path":"/usr/local/sbin/homelab-mailru-trash-gc","sha256":"a9fc14b00bed57c29b397b998de5fe2589c28d1590dd977ed8c7bc3ef321e77b"},{"bytes":1921,"mail_alert_tokens":[],"path":"/usr/local/sbin/homelab-backupctl","sha256":"ef03927231181c1f0664c5dc9498e067279936f02b9601fbebf144a82db72a4b"},{"bytes":1603,"mail_alert_tokens":[],"path":"/usr/local/sbin/sqlite-apps-backup-run","sha256":"3b19ed58077a5f2b5326d9a21407680b55ee99c634c8b4a1512f3ee344437368"},{"bytes":6851,"mail_alert_tokens":[],"path":"/usr/local/sbin/skladchik-reports-monitor-backup-restore-check","sha256":"abb2d17392b6edde3603f77e88fc82240c311f932b0d197b1b82
61:CANONICAL_BACKUP_RELEVANT_PATHS=[]
62:BACKUP_AUDIT_FINDING_COUNTS={"critical":0,"high":33,"info":10,"medium":26}
63:BACKUP_AUDIT_FINDINGS=[{"code":"BACKUP_TIMER_DISABLED","detail":"homelab-app-cloud-quorum-queue.timer","severity":"high"},{"code":"BACKUP_TIMER_DISABLED","detail":"homelab-control-backup.timer","severity":"high"},{"code":"BACKUP_TIMER_DISABLED","detail":"homelab-evidence-seal.timer","severity":"high"},{"code":"BACKUP_TIMER_DISABLED","detail":"homelab-router-running-config-mail-cloud.timer","severity":"high"},{"code":"BACKUP_TIMER_DISABLED","detail":"homelab-vm-cloud-quorum-queue.timer","severity":"high"},{"code":"BACKUP_UNIT_FAILED","detail":"homelab-app-cloud-quorum-queue.service result=exit-code","severity":"high"},{"code":"BACKUP_UNIT_FAILED","detail":"homelab-backup-retention-gc.service result=exit-code","severity":"high"},{"code":"BACKUP_UNIT_FAILED","detail":"homelab-vm-cloud-quorum-queue.service result=exit-code","severity":"high"},{"code":"HEALTH_FILE_FAIL","detail":"/var/lib/homelab-health/authentik-backup.txt:FAIL","severity":"high"},{"code":"HEALTH_FILE_FAIL","detail":"/var/lib/homelab-health/authentik-restore.txt:FAIL","severity":"high"},{"code":"HEALTH_FILE_FAIL","detail":"/var/lib/homelab-health/backup-coverage-matrix.txt:FAIL","severity":"high"},{"code":"HEALTH_FILE_FAIL","detail":"/var/lib/homelab-health/backup-framework.txt:FAIL","severity":"high"},{"code":"HEALTH_FILE_FAIL","detail":"/var/lib/homelab-health/backup-matrix-authoritative.txt:FAIL","severity":"high"},{"code":"HEALTH_FILE_FAIL","detail":"/var/lib/homelab-health/backup-sla.txt:FAIL","severity":"high"},{"code":"HEALTH_FILE_FAIL","detail":"/var/lib/homelab-health/edge-vm-vzdump-backup.txt:FAIL","severity":"high"},{"code":"HEALTH_FILE_FAIL","detail":"/var/lib/homelab-health/extended-appbackup.txt:FAIL","severity":"high"},{"code":"HEALTH_FILE_FAIL","detail":"/var/lib/homelab-health/filebrowser-backup.txt:FAIL","severity":"high"},{"code":"HEALTH_FILE_FAIL","detail":"/var/lib/homelab-health/filebrowser-restore.txt:FAIL","severity":"high"},{"code":"HEALTH_FILE_FAIL","detail":"/var/lib/homelab-health/gitea-backup.txt:FAIL","severity":"high"},{"code":"HEALTH_FILE_FAIL","detail":"/var/lib/homelab-health/gitea-restore.txt:FAIL","severity":"high"},{"code":"HEALTH_FILE_FAIL","detail":"/var/lib/homelab-health/immich-media-backup.txt:FAIL","severity":"high"},{"code":"HEALTH_FILE_FAIL","detail":"/var/lib/homelab-health/mail-cloud-restore-drill.txt:FAIL","severity":"high"},{"code":"HEALTH_FILE_FAIL","detail":"/var/lib/homelab-health/memos-backup.txt:FAIL","severity":"high"},{"code":"HEALTH_FILE_FAIL","detail":"/var/lib/homelab-health/npmplus-kuma-config-backup.txt:FAIL","severity":"high"},{"code":"HEALTH_FILE_FAIL","detail":"/var/lib/homelab-health/npmplus-kuma-config-restore.txt:FAIL","severity":"high"},{"code":"HEALTH_FILE_FAIL","detail":"/var/lib/homelab-health/paperless-restore.txt:FAIL","severity":"high"},{"code":"HEALTH_FILE_FAIL","detail":"/var/lib/homelab-health/vaultwarden-backup.txt:FAIL","severity":"high"},{"code":"HEALTH_FILE_FAIL","detail":"/var/lib/homelab-health/vaultwarden-restore.txt:FAIL","severity":"high"},{"code":"HEALTH_FILE_FAIL","detail":"/var/lib/homelab-health/vm-backup-policy.txt:FAIL","severity":"high"},{"code":"HEALTH_FILE_FAIL","detail":"/var/lib/homelab-health/vm-local-dumps-retention.txt:FAIL","severity":"high"},{"code":"HEALTH_FILE_FAIL","detail":"/var/lib/homelab-health/vm160-remote-backup.txt:FAIL","severity":"high"},{"code":"HEALTH_FILE_FAIL","detail":"/var/lib/homelab-health/vm170-vm171-full-backup.txt:FAIL","severity":"high"},{"code":"HEALTH_FILE_FAIL","detail":"/var/lib/homelab-health/vm170-vm171-full-restore-drill.txt:FAIL","severity":"high"},{"code":"LIVE_ASSET_NOT_MATCHING_TRACKED_SOURCE","detail":"homelab-app-cloud-quorum-queue","severity":"medium"},{"code":"LIVE_ASSET_NOT_MATCHING_TRACKED_SOURCE","detail":"homelab-backup-audit","severity":"medium"},{"code":"LIVE_ASSET_NOT_MATCHING_TRACKED_SOURCE","detail":"homelab-backup-coverage-matrix","severity":"medium"},{"code":"LIVE_ASSET_NOT_MATCHING_TRACKED_SOURCE","detail":"homela
64:BACKUP_AUDIT_COLLECTION_COMPLETE=true
65:CHANGES_MADE=false
66:ROLLBACK_STARTED=false
67:ROLLBACK_RESTORED=null
68:MUTATION_OUTCOME=NO_MUTATION
69:TASK_RESULT=PASS_HOMELAB_BACKUP_DEEP_AUDIT_COLLECTED
70:HOMELAB_RESULT_CONTRACT={"version":1,"command_id":"SUPPORT-260921-HOMELAB-BACKUP-DEEP-AUDIT-READONLY-1001R1","status":"OK","changes_made":false,"rollback_started":false,"rollback_restored":null}
71:BACKUP_AUDIT_END
EVIDENCE_EXCERPT_END=/var/lib/homelab-chat-run/raw/SUPPORT-260921-HOMELAB-BACKUP-DEEP-AUDIT-READONLY-1001R1-20260921T004930Z.log
EVIDENCE_FILE=/var/lib/homelab-chat-run/raw/SUPPORT-260914-INFRA-DR-BACKUPV2-CONTROL-BOOTSTRAP-EXISTING-GENERATION-VERIFY-CLOSURE-379R1-20260914T191221Z.log|SHA256=7d118732b36ef2b911b24c729e58e7664a330c87ce4ea605a429432827e79251|BYTES=1698
EVIDENCE_EXCERPT_BEGIN=/var/lib/homelab-chat-run/raw/SUPPORT-260914-INFRA-DR-BACKUPV2-CONTROL-BOOTSTRAP-EXISTING-GENERATION-VERIFY-CLOSURE-379R1-20260914T191221Z.log
18:VERIFY_SEMANTIC_RECONSTRUCT_A=PASS
19:VERIFY_SEMANTIC_RECONSTRUCT_B=PASS
20:VERIFY_SEMANTIC_COMPARE_AB=PASS
21:VERIFY_SEMANTIC_NO_MARK=PASS
22:VERIFY_SEMANTIC_NO_BACKUP_DELETE=PASS
23:HOMELAB_APP_CLOUD_QUORUM_QUEUE_TIMER_PRE_ENABLED=enabled
24:HOMELAB_APP_CLOUD_QUORUM_QUEUE_TIMER_PRE_ACTIVE=active
25:HOMELAB_VM_CLOUD_QUORUM_QUEUE_TIMER_PRE_ENABLED=enabled
26:HOMELAB_VM_CLOUD_QUORUM_QUEUE_TIMER_PRE_ACTIVE=active
27:HOMELAB_CONTROL_BACKUP_TIMER_PRE_ENABLED=enabled
28:HOMELAB_CONTROL_BACKUP_TIMER_PRE_ACTIVE=active
29:V2_TIMER_COUNT_PRE=0
30:CONTROL_ENGINE_VERIFY_INVOCATIONS=1
31:CONTROL_VERIFY_RC=0
32:CLOUD_WRITE_MARKER_PRESENT=NO
33:RESTORE_EVIDENCE_STATUS=UNKNOWN
34:RESTORE_EVIDENCE_GENERATION=control-bootstrap-v2-pve01-20260914T080740Z
35:RESTORE_EVIDENCE_ARCHIVE_SHA256=UNKNOWN
EVIDENCE_EXCERPT_END=/var/lib/homelab-chat-run/raw/SUPPORT-260914-INFRA-DR-BACKUPV2-CONTROL-BOOTSTRAP-EXISTING-GENERATION-VERIFY-CLOSURE-379R1-20260914T191221Z.log
EVIDENCE_FILE=/var/lib/homelab-chat-run/raw/HOMELAB-CLUSTER-KB-V1-GITEA-ERROR-READ-ONLY-RETRY-20260805T064700Z-20260805T064800Z.log|SHA256=10eeba794a85e13eb9ddc29f821f0e0cf430c57b93acf878eb539e048389d8f6|BYTES=294964
EVIDENCE_EXCERPT_BEGIN=/var/lib/homelab-chat-run/raw/HOMELAB-CLUSTER-KB-V1-GITEA-ERROR-READ-ONLY-RETRY-20260805T064700Z-20260805T064800Z.log
1:HOMELAB_RESULT_CONTRACT={"changes_made":false,"command_id":"HOMELAB-CLUSTER-KB-V1-GITEA-ERROR-READ-ONLY-RETRY-20260805T064700Z","command_rc":0,"mutation_outcome":"NO_MUTATION","output_truncated_in_json":false,"rc":0,"rollback_restored":null,"rollback_started":false,"status":"OK","version":1}
2:{"blocking_findings":["HANDBOOK_CANDIDATE_AMBIGUOUS","REPOSITORY_TESTS_FAILED","CLUSTER_STATUS_UNREADABLE"],"changes_made":false,"cluster_changed":false,"command_id":"HOMELAB-CLUSTER-KB-V1-GITEA-ERROR-READ-ONLY-RETRY-20260805T064700Z","command_rc":0,"error_system_assessment":{"deterministic_fingerprint_observed":true,"immutable_error_ledger_observed":false,"mandatory_components":{"linter":{"paths":[],"present":false},"regression_registry":{"paths":["errors/regression-cases.json"],"present":true},"repository_validator":{"paths":["tools/validate_repo.py"],"present":true},"superseded_policy":{"paths":[],"present":false},"tests":{"paths":["tests/fixtures/gitea-legacy-auth-permission.json","tests/test_access_contexts.py","tests/test_cr_2026_0005.py","tests/test_cr_2026_0006.py","tests/test_cr_2026_0006_vm160_task.py","tests/test_cr_2026_0007_skladchik_reauth.py","tests/test_cr_2026_0007_skladchik_semantic_repair.py","tests/test_cr_2026_0008_skladchik_snapshot_integrity.py","tests/test_cr_2026_0009_skladchik_concurrency_guard.py","tests/test_cr_2026_0011_skladchik_cookie_jar_reset.py","tests/test_cr_2026_0012_skladchik_cookie_refresh_runbook.py","tests/test_cr_2026_0013_vm160_worker_bootstrap_transition.py","tests/test_cr_2026_0015_pve03_r8152_rx_ring_canary.py","tests/test_cr_2026_0018_execution_boundary_preparation.py","tests/test_inventory_foundation.py","tests/test_live_verification.py","tests/test_no_repeat_policy.py","tests/test_reg_014_015.py","tests/test_repository.py"],"present":true}},"missing_mandatory_components":["linter","superseded_policy"],"observed_error_artifact_count":160,"pre_command_gate_observed":false,"proposed_v2":{"command_evidence_basis":"Каждая задача закрепляется на точном Gitea commit и SHA исходных файлов. Команда без evidence_basis или с устаревшим commit блокируется до нового READ_ONLY probe.","deterministic_fingerprint":"SHA256 нормализованного набора component + operation + phase + rc + error_type + stable evidence; секреты и переменные значения исключаются до хеширования.","error_ledger":"Одна неизменяемая JSON-запись на каждый доказанный отказ: error_id, command_id, capsule_sha256, component, operation, target, exact evidence, root cause, fixed_by, prevention_test, supersedes, first_seen, last_seen.","exact_result_ingestion":"После exact-result автоматически формируется candidate incident; запись принимается только после сверки command_id, capsule_sha256, runner_json_sha256, wrapper/document RC и отсутствия truncation.","pre_command_gate":"Перед выпуском любой капсулы обязательный поиск fingerprint/component/operation в реестре. Повтор известной ошибки блокируется, пока капсула не содержит подтверждённое prevention_test или документированное исключение.","quality_metrics":"Счётчики: first-pass success rate, repeated-error rate, rollback rate, unknown-state commands, commands without exact-result verification. Цель — repeated-error rate = 0.","regression_tests":"Каждая исправленная ошибка обязана иметь воспроизводимый тест в tests/errors; лinter запрещает закрывать ошибку без теста и ссылки fixed_by.","supersession":"Старые задачи и обходные пути не удаляются молча: они получают статус superseded с заменой, причиной и запретом повторного запуска."},"requires_v2":true},"gitea":{"default_head_archive":{"archive_sha256":"8f595e76a5baa7b2d8d2148f1a694e9acd22a90accb6e55f962fc47ff1432a5a","branch":"main","bytes":376932,"commit":"fe1221b06643db3b00a621b0230f92a46a4edc2b","files":125},"discovery_evidence":[{"id":"aa350cac62aa","kind":"podman-probe","paths_sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","rc":126,"stderr":"Error: crun: capset: Operation not permitted: OCI permission denied\n"},{"kind":"network-ls-remote","rc":0,"stderr":"","stdout_sha256":"b6697044d593fdddb9d66bc35bd58267cc6d07a31b756330aac2f147bc98bc6c"},{"kind":"network-mirror","rc":0,"stderr":"Cloning into bare repository '/tmp/homelab-kb-network-fallback-k4x0gd1r/homelab-ops.git'...\n","stdout_sha256":"e3b0c442
EVIDENCE_EXCERPT_END=/var/lib/homelab-chat-run/raw/HOMELAB-CLUSTER-KB-V1-GITEA-ERROR-READ-ONLY-RETRY-20260805T064700Z-20260805T064800Z.log
EVIDENCE_FILE=/var/lib/homelab-chat-run/raw/SIGNALBOT-260908-INTAKE-RCA-035-20260908T052321Z.log|SHA256=9bc13c343cdda506b9e7bbb4a38191d9f1ee1e4d31beb0916fa1cda673e1e097|BYTES=26712
EVIDENCE_EXCERPT_BEGIN=/var/lib/homelab-chat-run/raw/SIGNALBOT-260908-INTAKE-RCA-035-20260908T052321Z.log
1:ERROR_REGISTER_CHECK=OK
2:REFERENCE_CHECK=OK
3:AUTHORITY_CHECK_SCOPE=READABILITY_ONLY_INCIDENTS_NOT_CLOSED
4:SIGNALBOT035_VM170={"name":"core-apps","node":"pve01","status":"running","type":"qemu"}
5:SIGNALBOT035_VM170_SNAPSHOT={"report":{"collector":{"cmd":["python","-m","demonov_forward_map.bitfinex_trade_collector"],"entrypoint":null,"health":null,"id_short":"a546a70c3e8c","image":"8020-demonov-shadow:e32760c69a4311728db9066ee8bf2bf66b1e5a70","name":"demonov-shadow-8020-collector-1","pid":210213,"restart_count":13,"running":true,"started_at":"2026-09-08T05:01:08.70385245Z","status":"running"},"collector_status":{"age_sec":8.9,"exists":true,"mtime_epoch":1788845024.0247085,"path":"/opt/stacks/8020-demonov-shadow/data/epochs/ec477ea41ecbd5cfdef5afc259595aab20674a7d933f41a389329ff05098b338/collector_status.json","values":{"fail_closed_reason":"source reconnect detected","gap_detected":false,"post_finality_revision":false,"prospective_fail_closed_reason":"","prospective_gap_detected":false,"prospective_reconnect_detected":false,"reconnect_detected":true,"updated_at":"2026-09-08T05:23:44.028140+00:00"}},"db_a":{"d1_revisions_count":0,"event_kind_counts":[["SEQUENCE",179729],["RECONNECT",10],["SESSION_START",1]],"exists":true,"finalized_d1_count":0,"latest_sequence_events":[{"event_kind":"SEQUENCE","event_seq":179740,"received_at":"2026-09-08T05:23:20.918750+00:00","session_hash":"253ffe9a26a5","source_sequence":2510},{"event_kind":"SEQUENCE","event_seq":179739,"received_at":"2026-09-08T05:23:20.891856+00:00","session_hash":"253ffe9a26a5","source_sequence":2509},{"event_kind":"SEQUENCE","event_seq":179738,"received_at":"2026-09-08T05:23:20.552139+00:00","session_hash":"253ffe9a26a5","source_sequence":2508},{"event_kind":"SEQUENCE","event_seq":179737,"received_at":"2026-09-08T05:23:20.534792+00:00","session_hash":"253ffe9a26a5","source_sequence":2507},{"event_kind":"SEQUENCE","event_seq":179736,"received_at":"2026-09-08T05:23:20.329909+00:00","session_hash":"253ffe9a26a5","source_sequence":2506},{"event_kind":"SEQUENCE","event_seq":179735,"received_at":"2026-09-08T05:23:20.177708+00:00","session_hash":"253ffe9a26a5","source_sequence":2505},{"event_kind":"SEQUENCE","event_seq":179734,"received_at":"2026-09-08T05:23:20.170743+00:00","session_hash":"253ffe9a26a5","source_sequence":2504},{"event_kind":"SEQUENCE","event_seq":179733,"received_at":"2026-09-08T05:23:20.163522+00:00","session_hash":"253ffe9a26a5","source_sequence":2503},{"event_kind":"SEQUENCE","event_seq":179732,"received_at":"2026-09-08T05:23:20.004001+00:00","session_hash":"253ffe9a26a5","source_sequence":2502},{"event_kind":"SEQUENCE","event_seq":179731,"received_at":"2026-09-08T05:23:19.850034+00:00","session_hash":"253ffe9a26a5","source_sequence":2501},{"event_kind":"SEQUENCE","event_seq":179730,"received_at":"2026-09-08T05:23:19.841410+00:00","session_hash":"253ffe9a26a5","source_sequence":2500},{"event_kind":"SEQUENCE","event_seq":179729,"received_at":"2026-09-08T05:23:19.827700+00:00","session_hash":"253ffe9a26a5","source_sequence":2499},{"event_kind":"SEQUENCE","event_seq":179728,"received_at":"2026-09-08T05:23:19.671403+00:00","session_hash":"253ffe9a26a5","source_sequence":2498},{"event_kind":"SEQUENCE","event_seq":179727,"received_at":"2026-09-08T05:23:19.518174+00:00","session_hash":"253ffe9a26a5","source_sequence":2497},{"event_kind":"SEQUENCE","event_seq":179726,"received_at":"2026-09-08T05:23:19.357283+00:00","session_hash":"253ffe9a26a5","source_sequence":2496},{"event_kind":"SEQUENCE","event_seq":179725,"received_at":"2026-09-08T05:23:19.200903+00:00","session_hash":"253ffe9a26a5","source_sequence":2495},{"event_kind":"SEQUENCE","event_seq":179724,"received_at":"2026-09-08T05:23:19.193716+00:00","session_hash":"253ffe9a26a5","source_sequence":2494},{"event_kind":"SEQUENCE","event_seq":179723,"received_at":"2026-09-08T05:23:19.185835+00:00","session_hash":"253ffe9a26a5","source_sequence":2493},{"event_kind":"SEQUENCE","event_seq":179722,"received_at":"2026-09-08T05:23:19.177983+00:00","session_hash":"253ffe9a26a5","source_sequence":2492},{"event_kind":"SEQUENCE","event_seq":179721,"received_at":"2026-09-08T05:23:19.164437+00:00","session_hash":"253ffe
6:SIGNALBOT035_HOLDS=["COLLECTOR_INTAKE_STILL_STALLED"]
7:SIGNALBOT035_DECISION=HOLD_COLLECTOR_INTAKE_STALLED_WITH_PROCESS_AND_TCP_ALIVE
8:SIGNALBOT035_MUTATION_SCOPE=NO_RUNTIME_NO_GIT_NO_EXCHANGE_MUTATION
EVIDENCE_EXCERPT_END=/var/lib/homelab-chat-run/raw/SIGNALBOT-260908-INTAKE-RCA-035-20260908T052321Z.log
EVIDENCE_FILE=/var/lib/homelab-chat-run/raw/NEWFI-260921-NEWFDOM-PROD220-ACCEPT369-20260921T071508Z.log|SHA256=9ac1615a4b83088a378a354db0809264d3166a4f3bd6ae292fb3bf4cffa0d9a8|BYTES=551
EVIDENCE_EXCERPT_BEGIN=/var/lib/homelab-chat-run/raw/NEWFI-260921-NEWFDOM-PROD220-ACCEPT369-20260921T071508Z.log
1:PROD220_BEGIN=true
2:COMMAND_ID=NEWFI-260921-NEWFDOM-PROD220-ACCEPT369
3:REFERENCE_CHECK=OK
4:ERROR_REGISTER_CHECK=OK
5:PROD220_ERROR_CLASS=RuntimeError
6:PROD220_ERROR_SHA=a766c16d7b050ebf6bd1b3929ef6b4b4ec10fae79be8e526390a503628a2f372
7:DECISION=FAIL_PROD220_ACCEPTANCE
8:NEXT_GATE=RECONCILE_PROD220_EXACT_FAILURE
9:ACTIVE_MAJOR_STAGE=PROD220
10:MAJOR_STAGES_REMAINING=2
11:HOMELAB_RESULT_CONTRACT={"changes_made":false,"command_id":"NEWFI-260921-NEWFDOM-PROD220-ACCEPT369","rollback_restored":null,"rollback_started":false,"status":"FAIL","version":1}
12:PROD220_END=true
EVIDENCE_EXCERPT_END=/var/lib/homelab-chat-run/raw/NEWFI-260921-NEWFDOM-PROD220-ACCEPT369-20260921T071508Z.log
EVIDENCE_FILE=/var/lib/homelab-chat-run/raw/SIGNALBOT-260917-NEW-EPOCH-CANARY-ACTIVATE-051R7-20260917T154950Z.log|SHA256=ee9c223477cb4ed127dd950e6f21c1536fe4a7053678b03a9d64fbb6eb017feb|BYTES=8164
EVIDENCE_EXCERPT_BEGIN=/var/lib/homelab-chat-run/raw/SIGNALBOT-260917-NEW-EPOCH-CANARY-ACTIVATE-051R7-20260917T154950Z.log
19:SIGNALBOT051R7_QGA_OUTER_STDERR_BYTES=0
20:SIGNALBOT051R7_QGA_OUTER_STDERR_SHA256=e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
21:SIGNALBOT051R7_QGA_GUEST_EXITCODE=2
22:SIGNALBOT051R7_QGA_GUEST_STDERR_BYTES=0
23:SIGNALBOT051R7_QGA_GUEST_STDERR_SHA256=e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
24:SIGNALBOT051R7_GUEST_RESULT={"changes_made":true,"exception_class":"RuntimeError","exception_msg_sha256":"376fc90486c0cb3beb8442175db27431c734f4cfb437f8045a97c6b142e64bcb","execution_authority":false,"mutated_active":true,"production_launch_allowed":false,"real_exchange_execution":false,"risk_authority":false,"rollback":{"compose_old_rc":0,"data_restored_pre_service_exact":true,"env_restored":true,"failed_epoch":"/opt/stacks/8020-demonov-shadow/.epochs/failed/4a78c74b381b0424ccd22fa5466526cb324dfbb6855ffb3de8f0c3ac29dac397-SIGNALBOT-260917-NEW-EPOCH-CANARY-ACTIVATE-051R7","old_epoch_scientific_continuity":"INVALIDATED_BY_CUTOVER","old_services_restored":true,"post_restore_db_checks":{"bitfinex_source.db":{"exists":false,"quick_check":null},"live_prospective.db":{"exists":true,"quick_check":["ok"]},"notification_relay.db":{"exists":false,"quick_check":null}},"quiesced_before_data_restore":true,"reason":"RuntimeError:CANDIDATE_SERVICES_NOT_READY","services":[{"config_image":"8020-demonov-shadow:76e1f58baa544a0e208bba317f0150e5b6d74dbd","env_selected":{"CODE_IDENTITY":"76e1f58baa544a0e208bba317f0150e5b6d74dbd","COLLECTION_START_AT":"2026-09-10T00:00:00+00:00","EXPERIMENT_ID":"55588af053b5a7b47bdc86a9231b7fc3a4cdd00b3b53e05e201e69438f480e0f","RUNTIME_MANIFEST_ID":"a6a4f903e7e6aa309d8c7d181fbe613fae95f11077dff0fc2ceb7c331fb75389"},"id":"29186524106c56f49b162814e32e2f48df20d8b17199810f57deeb5edb0ce102","image_id":"sha256:341f71a906c91d3fa9c1d50bd89df2a849dfb0b168bb4551efb444bf61c4ab99","name":"demonov-shadow-8020-collector-1","restart_count":0,"restarting":false,"running":true,"service":"collector","started_at":"2026-09-17T15:52:57.254533388Z","status":"running"},{"config_image":"8020-demonov-shadow:76e1f58baa544a0e208bba317f0150e5b6d74dbd","env_selected":{"CODE_IDENTITY":"76e1f58baa544a0e208bba317f0150e5b6d74dbd","COLLECTION_START_AT":null,"EXPERIMENT_ID":"55588af053b5a7b47bdc86a9231b7fc3a4cdd00b3b53e05e201e69438f480e0f","RUNTIME_MANIFEST_ID":"a6a4f903e7e6aa309d8c7d181fbe613fae95f11077dff0fc2ceb7c331fb75389"},"id":"67151a82d47d32f6d04ad378ef6193821ccc8941948b5e0946b96eceaa9610ac","image_id":"sha256:341f71a906c91d3fa9c1d50bd89df2a849dfb0b168bb4551efb444bf61c4ab99","name":"demonov-shadow-8020-relay-1","restart_count":0,"restarting":false,"running":true,"service":"relay","started_at":"2026-09-17T15:52:57.226947701Z","status":"running"},{"config_image":"8020-demonov-shadow:76e1f58baa544a0e208bba317f0150e5b6d74dbd","env_selected":{"CODE_IDENTITY":"76e1f58baa544a0e208bba317f0150e5b6d74dbd","COLLECTION_START_AT":null,"EXPERIMENT_ID":"55588af053b5a7b47bdc86a9231b7fc3a4cdd00b3b53e05e201e69438f480e0f","RUNTIME_MANIFEST_ID":"a6a4f903e7e6aa309d8c7d181fbe613fae95f11077dff0fc2ceb7c331fb75389"},"id":"32736e8b497d29e80b71dbe0feef33aee4cd98b3f5944bb9535f7def7204454d","image_id":"sha256:341f71a906c91d3fa9c1d50bd89df2a849dfb0b168bb4551efb444bf61c4ab99","name":"demonov-shadow-8020-shadow-1","restart_count":0,"restarting":false,"running":true,"service":"shadow","started_at":"2026-09-17T15:52:57.10658209Z","status":"running"},{"config_image":"8020-demonov-shadow:76e1f58baa544a0e208bba317f0150e5b6d74dbd","env_selected":{"CODE_IDENTITY":"76e1f58baa544a0e208bba317f0150e5b6d74dbd","COLLECTION_START_AT":null,"EXPERIMENT_ID":"55588af053b5a7b47bdc86a9231b7fc3a4cdd00b3b53e05e201e69438f480e0f","RUNTIME_MANIFEST_ID":"a6a4f903e7e6aa309d8c7d181fbe613fae95f11077dff0fc2ceb7c331fb75389"},"id":"b6835488a822007be99202f93b18f8a02838af7d55059acfa6664ff70d7fc783","image_id":"sha256:341f71a906c91d3fa9c1d50bd89df2a849dfb0b168bb4551efb444bf61c4ab99","name":"demonov-shadow-8020-worker-1","restart_count":0,"restarting":false,"running":true,"service":"worker","started_at":"2026-09-17T15:52:57.155772206Z","status":"running"}],"stop_rc":0,"stopped_services":[{"config_image":"8020-demonov-shadow:signalbot-050r6-749073ae0f89","env_selected":{"CODE_IDENTITY":"749073ae0f894debc06fb0ffbf7a84abf9da531f","COLLECTION_START_AT":"2026-09-18T00:00:00+00:00","EXPERIMENT_ID":"4a78c74b381b0424c
25:SIGNALBOT051R7_ROLLBACK_STARTED=true
26:SIGNALBOT051R7_ROLLBACK_RESTORED=true
27:SIGNALBOT051R7_MUTATION_OUTCOME=ROLLED_BACK
28:HOMELAB_RESULT_CONTRACT={"changes_made":true,"command_id":"SIGNALBOT-260917-NEW-EPOCH-CANARY-ACTIVATE-051R7","rollback_restored":true,"rollback_started":true,"status":"FAIL","version":1}
EVIDENCE_EXCERPT_END=/var/lib/homelab-chat-run/raw/SIGNALBOT-260917-NEW-EPOCH-CANARY-ACTIVATE-051R7-20260917T154950Z.log
EVIDENCE_FILE=/var/lib/homelab-chat-run/raw/SUPPORT-260917-INFRA-DR-BACKUPV2-LXC-PROVENANCE-OVERLAY-REPAIR-LIVE-VERIFY-496R1-20260917T040237Z.log|SHA256=65681c07d18a21ead3763601a866878e48ac86da7fba8b69fdce0f72a61612fc|BYTES=1543
EVIDENCE_EXCERPT_BEGIN=/var/lib/homelab-chat-run/raw/SUPPORT-260917-INFRA-DR-BACKUPV2-LXC-PROVENANCE-OVERLAY-REPAIR-LIVE-VERIFY-496R1-20260917T040237Z.log
5:NO_DAEMON_RELOAD=YES
6:CLOUD_DELETIONS=0
7:RETENTION_MUTATION=NO
8:RETENTION_STATUS=HOLD_VM200_LIFECYCLE_RECONCILIATION_REQUIRED
9:PREFLIGHT_486_BASELINE=PASS
10:COMMON_HEAVY_LOCK_ACQUIRED=YES
11:CHILD_ENTRY496_SELFTEST={"rc":0,"stderr_bytes":0,"stderr_sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","stdout_bytes":54,"stdout_sha256":"306b9aa4c77735243fa82bb3a829f7c211f7343e3225a274ba04df3f0d57c220"}
12:CHILD_PLAN_CT110={"rc":1,"stderr_bytes":2251,"stderr_sha256":"4c7c9b7a5d2724cd073c0b1e608b5585335f218f9650b4a948be538b033c63c8","stdout_bytes":29,"stdout_sha256":"6b29e06cdce22f960677f3ae5e789e7c971cbee2b5f344bb800a1de0f36ce836"}
13:ROLLBACK_TO_486=STARTED
14:ROLLBACK_TO_486=PASS
15:STATUS=FAIL
16:RC=2
17:PHASE=CANDIDATE_BUILD
18:REASON=FAILED_CLOSED
19:EXCEPTION_CLASS=builtins.RuntimeError
20:EXCEPTION_MESSAGE_SHA256=5d00c414ec22486ffc1b1cb251e9b8d5f2dbc4600a75aac49dd4f013e5bd55b9
21:PRODUCTION_PROMOTION=NO
22:CLOUD_DELETIONS=0
23:RETENTION_MUTATION=NO
24:RETENTION_STATUS=HOLD_VM200_LIFECYCLE_RECONCILIATION_REQUIRED
25:CHANGES_MADE=true
26:ROLLBACK_STARTED=true
27:ROLLBACK_RESTORED=true
28:MUTATION_OUTCOME=MUTATED_THEN_ROLLED_BACK_TO_486
EVIDENCE_EXCERPT_END=/var/lib/homelab-chat-run/raw/SUPPORT-260917-INFRA-DR-BACKUPV2-LXC-PROVENANCE-OVERLAY-REPAIR-LIVE-VERIFY-496R1-20260917T040237Z.log
EVIDENCE_FILE=/var/lib/homelab-chat-run/raw/SUPPORT-260916-INFRA-DR-BACKUPV2-LEGACY-LXC-OWNER-REPAIR-VERIFY-490R1-20260916T213045Z.log|SHA256=e6ae695d4c45e6a482ab62bbb83116e659a957346ed3e83c4e4bf24c3621e4e8|BYTES=1393
EVIDENCE_EXCERPT_BEGIN=/var/lib/homelab-chat-run/raw/SUPPORT-260916-INFRA-DR-BACKUPV2-LEGACY-LXC-OWNER-REPAIR-VERIFY-490R1-20260916T213045Z.log
7:RETENTION_MUTATION=NO
8:RETENTION_STATUS=HOLD_VM200_LIFECYCLE_RECONCILIATION_REQUIRED
9:PREPROOF_DUE_TARGET=ct110
10:PREFLIGHT_486_BASELINE=PASS
11:V2_TIMER_RUNTIME_STOP=PASS
12:COMMON_HEAVY_LOCK_ACQUIRED=YES
13:PATCHED_LEGACY_ENGINE_SHA256=5715651655da32530df84a5a095b772d21dc0d1f92789465e9e6b5b1ff8a16e3
14:PATCHED_WRAPPER_SHA256=699ce999e52f15f24c63723e35dd5251992c4dfce6266073b892dd684ed3f454
15:PVE265_HELPER_SHA256=97876718e791e7adf9b0297b64abc9fe071180b2c44390740b3bc9dafba220ce
16:ROLLBACK_TO_486=STARTED
17:ROLLBACK_TO_486=PASS
18:COMMON_HEAVY_LOCK_RELEASED=YES
19:STATUS=FAIL
20:PHASE=CANDIDATE_BUILD
21:REASON=FAILED_CLOSED
22:EXCEPTION_CLASS=builtins.RuntimeError
23:EXCEPTION_MESSAGE_SHA256=07e2418b1301438d64fed32bba375a18bb907447a5067e75c0bdb643b2cbded3
24:PRODUCTION_PROMOTION=NO
25:RETENTION_MUTATION=NO
26:RETENTION_STATUS=HOLD_VM200_LIFECYCLE_RECONCILIATION_REQUIRED
27:CLOUD_DELETIONS=0
28:CHANGES_MADE=true
29:ROLLBACK_STARTED=true
30:ROLLBACK_RESTORED=true
31:MUTATION_OUTCOME=MUTATED_THEN_ROLLED_BACK_TO_486
EVIDENCE_EXCERPT_END=/var/lib/homelab-chat-run/raw/SUPPORT-260916-INFRA-DR-BACKUPV2-LEGACY-LXC-OWNER-REPAIR-VERIFY-490R1-20260916T213045Z.log
EVIDENCE_FILE=/var/lib/homelab-chat-run/raw/HOMELAB-CLUSTER-ADMIN-UPDATES-DISCOVERY-V1-READ-ONLY-20260805T094500Z-20260805T100141Z.log|SHA256=1eb35f0774e26589f4ca703a49ca0b56a21e6cd3aad2e6f4cc351f117c506a5c|BYTES=603
EVIDENCE_EXCERPT_BEGIN=/var/lib/homelab-chat-run/raw/HOMELAB-CLUSTER-ADMIN-UPDATES-DISCOVERY-V1-READ-ONLY-20260805T094500Z-20260805T100141Z.log
1:HOMELAB_RESULT_CONTRACT={"changes_made":false,"command_id":"HOMELAB-CLUSTER-ADMIN-UPDATES-DISCOVERY-V1-READ-ONLY-20260805T094500Z","command_rc":1,"control_plane_error":null,"mutation_outcome":"NO_MUTATION","rc":1,"rollback_restored":false,"rollback_started":false,"schema":1,"status":"FAIL"}
2:{"changes_made":false,"command_id":"HOMELAB-CLUSTER-ADMIN-UPDATES-DISCOVERY-V1-READ-ONLY-20260805T094500Z","error":"pvesh /nodes did not return an array","error_type":"RuntimeError","mutation_outcome":"NO_MUTATION","read_only":true,"rollback_restored":false,"rollback_started":false,"schema":1,"status":"FAIL"}
EVIDENCE_EXCERPT_END=/var/lib/homelab-chat-run/raw/HOMELAB-CLUSTER-ADMIN-UPDATES-DISCOVERY-V1-READ-ONLY-20260805T094500Z-20260805T100141Z.log
EVIDENCE_FILE=/var/lib/homelab-chat-run/raw/SUPPORT-260921-PVEPRO-GRAM-SUPPORT-STAGING-INSTALL-838R1-20260921T012544Z.log|SHA256=270e95c70b63b79defe56896c399fe8be2cb60da18d703a1975929f251d051bd|BYTES=3281
EVIDENCE_EXCERPT_BEGIN=/var/lib/homelab-chat-run/raw/SUPPORT-260921-PVEPRO-GRAM-SUPPORT-STAGING-INSTALL-838R1-20260921T012544Z.log
5:SOURCE_AUTHORITY=FROZEN_FIX10_PLUS_7_EXACT_LIVE_REFERENCE_PATCHES
6:PRODUCTION_HOST_PRE={"all_link_down":false,"lock":null,"name":"pvepro-prod","operational_fp":"2aba9f764ff0efacd2da02f09826374f877e1b073775cb725ebcf9d9177e8c65","snapshots":[],"status":"running","vmstate":null}
7:STAGING_HOST_PRE={"all_link_down":true,"lock":null,"name":"pvepro-staging-v1","operational_fp":"45ade56dd44c0a6a9df5e18c37cb9c94117f33ea6ad30ce005f8b051258ce931","snapshots":[],"status":"stopped","vmstate":null}
8:PRODUCTION_APP_PRE={"app":{"boardActive":"1","defaultLanguageId":"2","defaultStyleId":"2","errors":20,"indexRoute":"portal/","posts":44,"sitemapExtraUrls":"https://pvepro.ru/","support_counts":{"addon":0,"options":0,"permissions":0,"routes":0,"tables":0,"template_modification":0,"templates":0},"threads":44,"useFriendlyUrls":true},"collection":"COMPLETE","command_id":"SUPPORT-260921-PVEPRO-GRAM-SUPPORT-STAGING-INSTALL-838R1","install_capability":true,"portal_xml":{"bytes":13999,"exists":true,"safe":true,"sha256":"32301f0de13968030caac1c3137f6883739a09392d272f1efaced50343151c7b"},"robots":{"bytes":246,"exists":true,"safe":true,"sha256":"f58451051f45f07a21c8894d642a186a133049a9fd205561d1aed325c9f1d272"},"support_create_http":{"http":404,"rc":0,"stderr_sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"},"support_http":{"http":404,"rc":0,"stderr_sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"},"support_source_paths":[]}
9:PRODUCTION_PUBLIC_SUPPORT_PRE={"/support/":{"http":404,"rc":0,"stderr_sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"},"/support/create/":{"http":404,"rc":0,"stderr_sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"}}
10:GRAM_SUPPORT_STAGING_ERROR_CLASS=RuntimeError
11:GRAM_SUPPORT_STAGING_ERROR_SHA256=d4a1b6bae721ec604c7b38b8fe1a7bf47a4763f5745a49016a3d8c4b82ed021c
12:PRODUCTION_APP_AFTER_FAILURE={"app":{"boardActive":"1","defaultLanguageId":"2","defaultStyleId":"2","errors":20,"indexRoute":"portal/","posts":44,"sitemapExtraUrls":"https://pvepro.ru/","support_counts":{"addon":0,"options":0,"permissions":0,"routes":0,"tables":0,"template_modification":0,"templates":0},"threads":44,"useFriendlyUrls":true},"collection":"COMPLETE","command_id":"SUPPORT-260921-PVEPRO-GRAM-SUPPORT-STAGING-INSTALL-838R1","install_capability":true,"portal_xml":{"bytes":13999,"exists":true,"safe":true,"sha256":"32301f0de13968030caac1c3137f6883739a09392d272f1efaced50343151c7b"},"robots":{"bytes":246,"exists":true,"safe":true,"sha256":"f58451051f45f07a21c8894d642a186a133049a9fd205561d1aed325c9f1d272"},"support_create_http":{"http":404,"rc":0,"stderr_sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"},"support_http":{"http":404,"rc":0,"stderr_sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"},"support_source_paths":[]}
13:TASK_RESULT=PVEPRO_GRAM_SUPPORT_STAGING_INSTALL_FAILED
14:HOMELAB_RESULT_CONTRACT={"changes_made":false,"command_id":"SUPPORT-260921-PVEPRO-GRAM-SUPPORT-STAGING-INSTALL-838R1","rollback_restored":null,"rollback_started":false,"status":"FAIL","version":1}
EVIDENCE_EXCERPT_END=/var/lib/homelab-chat-run/raw/SUPPORT-260921-PVEPRO-GRAM-SUPPORT-STAGING-INSTALL-838R1-20260921T012544Z.log
EVIDENCE_FILE=/var/lib/homelab-chat-run/raw/NEWFI-260921-NEWFDOM-DR221-FINAL400-20260921T162418Z.log|SHA256=01a60cf203245dd8d4a87e2458ffeb0ca8bcdbea88ae958159fef3b56ae8ecfa|BYTES=935
EVIDENCE_EXCERPT_BEGIN=/var/lib/homelab-chat-run/raw/NEWFI-260921-NEWFDOM-DR221-FINAL400-20260921T162418Z.log
1:DR221_FINAL400_BEGIN=true
2:COMMAND_ID=NEWFI-260921-NEWFDOM-DR221-FINAL400
3:PREDECESSOR_COMMAND_ID=NEWFI-260921-NEWFDOM-DR221-PREFLIGHT399
4:PREDECESSOR_DECISION=PASS_DR221_PREFLIGHT_CURRENT_BACKUP_RESTORE_CONTRACT_CAPTURED
5:IMMUTABLE_PLAN_CHECK=PASS
6:DR221_FAILURE={"checkpoint":"prestate","error_class":"RuntimeError","error_sha256":"417a03c94212b2c564117c5ab67127d6d0cd85502508518f729955e2ac275319"}
7:DR221_BACKUP_GENERATION=null
8:DR221_CLEANUP={"cleanup_started":false,"staging_work_removed":true,"temp_vm_removed":null}
9:DR221_CLOSED=false
10:FULL_PRODUCT_REMAINING=1
11:DECISION=FAIL_DR221_FINAL_CURRENT_PRODUCTION_BACKUP_RESTORE_ACCEPTANCE
12:NEXT_GATE=RECONCILE_ONLY_EXACT_DR221_FINAL400_FAILURE
13:ACTIVE_MAJOR_STAGE=DR221
14:MAJOR_STAGES_REMAINING=1
15:HOMELAB_RESULT_CONTRACT={"changes_made":false,"command_id":"NEWFI-260921-NEWFDOM-DR221-FINAL400","rollback_restored":null,"rollback_started":false,"status":"FAIL","version":1}
EVIDENCE_EXCERPT_END=/var/lib/homelab-chat-run/raw/NEWFI-260921-NEWFDOM-DR221-FINAL400-20260921T162418Z.log
EVIDENCE_FILE=/var/lib/homelab-chat-run/raw/SUPPORT-260921-PVEPRO-GRAM-SUPPORT-STAGING-INSTALL-PERMISSION-LIFECYCLE-RETRY-864R1-20260921T045847Z.log|SHA256=69340ccf65a65378205b6be8d9b787bade7ef243d4349fe3ae7dc03722bd2aa7|BYTES=1899
EVIDENCE_EXCERPT_BEGIN=/var/lib/homelab-chat-run/raw/SUPPORT-260921-PVEPRO-GRAM-SUPPORT-STAGING-INSTALL-PERMISSION-LIFECYCLE-RETRY-864R1-20260921T045847Z.log
6:STAGING_HOST_PRE={"all_link_down":true,"config_sha256":"43761ab3d555625387944883cd0229cde2121aba005a715dffe20465041e8aa9","lock":null,"name":"pvepro-staging-v1","snapshots":[],"status":"stopped","vmstate":null}
7:PRODUCTION_APP_PRE={"addon":0,"boardActive":"1","errors":20,"permissions":0,"posts":44,"routes":0,"support_source":0,"tables":0,"threads":44}
8:REFERENCE_CURRENT_SOURCE={"chunk_count":13,"manifest_sha256_control_chars":"b386b6feeb5dd9b396f4632ffec7f6455492ab663800494ad0c65f5a71fe0d0a","manifest_sha256_legacy_literal_escapes":"911e50bc376db2f967ad79e3b8a794b1dac47c44a9c51d6c8e3bad6356c73c43","path_count":59,"total_bytes":134697,"transfer_mode":"CHUNKED_LIVE_REFERENCE_EXACT_59"}
9:FRESH_STAGING_SNAPSHOT_CREATED=true
10:STAGING_APP_PRE={"addon":null,"boardActive":"","defs":[],"entries":[],"errors":16,"jobs":[],"mods":[],"posts":44,"siteId":"","src_addon":0,"src_js":0,"tables":[],"threads":44}
11:GRAM_SUPPORT_STAGING_ERROR_CLASS=RuntimeError
12:GRAM_SUPPORT_STAGING_ERROR_SHA256=fe83622d9f27d15ec1282f83045ab90580c45ed99c44d82896cdb356ca1f7fd1
13:ROLLBACK_STARTED=true
14:ROLLBACK_RESTORED=true
15:NO_PRODUCTION_MUTATION_EXPECTED=true
16:PRODUCT_CHECKPOINTS_REMAINING=14
17:PLANNING_MINIMUM_MAJOR_COMMANDS_REMAINING=14
18:TASK_RESULT=PVEPRO_GRAM_SUPPORT_STAGING_INSTALL_PERMISSION_LIFECYCLE_FAILED
19:HOMELAB_RESULT_CONTRACT={"changes_made":true,"command_id":"SUPPORT-260921-PVEPRO-GRAM-SUPPORT-STAGING-INSTALL-PERMISSION-LIFECYCLE-RETRY-864R1","rollback_restored":true,"rollback_started":true,"status":"FAIL","version":1}
EVIDENCE_EXCERPT_END=/var/lib/homelab-chat-run/raw/SUPPORT-260921-PVEPRO-GRAM-SUPPORT-STAGING-INSTALL-PERMISSION-LIFECYCLE-RETRY-864R1-20260921T045847Z.log
EVIDENCE_FILE=/var/lib/homelab-chat-run/raw/SUPPORT-260909-GRAM-XF-STAGING-INSTALL-039-20260909T102004Z.log|SHA256=b444bc8e8585d5a0617bec26fe995ad777325b42fddc3b5f1e6723f5a594bb0c|BYTES=838
EVIDENCE_EXCERPT_BEGIN=/var/lib/homelab-chat-run/raw/SUPPORT-260909-GRAM-XF-STAGING-INSTALL-039-20260909T102004Z.log
4:AUTHORITY_CHECK_SCOPE=READABILITY_ONLY_INCIDENTS_NOT_CLOSED
5:RUNNER_SHA256=b248a4c32c9cc64e5747e7dce6c7fc0a23f5124a77c71ce72e27a81aceae9d2d
6:SUPPORT039_TOPOLOGY={"name":"newfi-staging","node":"pve03","status":"running","vmid":211}
7:SUPPORT039_SOURCE_AUTHORITY={"artifact_sha256":"c20ca0744835ab3e6d7e4d944923a51e86cc53ffa7371a1a58b72b13453a8b3b","branch":"main","head":"31db97f7aa7190fa9bb0017cfab9b4d0ca463812","path":"/root/gram-support","remote":"NONE_LOCAL_GIT"}
8:SUPPORT039_GUEST_STATE={"exitcode":3,"state":"GUEST_FAIL"}
9:SUPPORT039_HOLD=RuntimeError
10:SUPPORT039_DECISION=HOLD_NO_FURTHER_MUTATION
11:HOMELAB_RESULT_CONTRACT={"changes_made":true,"command_id":"SUPPORT-260909-GRAM-XF-STAGING-INSTALL-039","rollback_restored":true,"rollback_started":true,"status":"FAIL","version":1}
EVIDENCE_EXCERPT_END=/var/lib/homelab-chat-run/raw/SUPPORT-260909-GRAM-XF-STAGING-INSTALL-039-20260909T102004Z.log
EVIDENCE_FILE=/var/lib/homelab-chat-run/raw/SUPPORT-260921-PVEPRO-TECHNICAL-SEO-STAGING-IMPLEMENTATION-RETRY-825R1-20260920T232026Z.log|SHA256=9c50d6cb733ae7960d58eaeccc49f7b77539df45121bfd33304154b5d1254b17|BYTES=96939
EVIDENCE_EXCERPT_BEGIN=/var/lib/homelab-chat-run/raw/SUPPORT-260921-PVEPRO-TECHNICAL-SEO-STAGING-IMPLEMENTATION-RETRY-825R1-20260920T232026Z.log
16:STAGING_ROBOTS_WRITE=f58451051f45f07a21c8894d642a186a133049a9fd205561d1aed325c9f1d272|246
17:STAGING_SEO_MUTATION={"marker":1,"sitemapAutoRebuild":true,"sitemapAutoSubmit":{"enabled":"0","urls":""},"sitemapExtraUrls":"","template_bytes":10077,"template_sha256":"24fed3a1f355ec22b180c4e0d1cb9ff1b6f7c193aa3d710d3f753196d696625d","useFriendlyUrls":false}
18:STAGING_NATIVE_SITEMAP_REBUILD={"rc":0,"stderr_sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"}
19:STAGING_SEO_STATE_AFTER_MUTATION={"boardActive":"0","dataSitemaps":{"exists":false},"defaultLanguageId":"2","defaultStyleId":"2","errors":16,"faviconBytes":165,"faviconExists":true,"faviconSha256":"cb2080acb1bce40de99ef4963d153d20c9b6666b8442f936f66e3f1c8539af8b","forumCount":12,"indexRoute":"portal/","internalSitemaps":{"exists":true,"files":[{"bytes":1,"name":"index.html","sha256":"36a9e7f1c95b82ffb99743e0c5c4ce95d83c9a430aac59f84ef3cbfab6145068"},{"bytes":1547,"name":"sitemap-1789946566-1.xml.gz","sha256":"b93ea76fe2140f625fb30616a2b4b65e1a102cb943e9edb32192b87f8f4c0fa3"}]},"members":{"addon_id":"XF","enabled":0,"navigation_id":"members","parent_navigation_id":""},"node1":{"display_in_list":0,"node_id":1,"node_type_id":"Category","parent_node_id":0,"title":"\u041e\u0441\u043d\u043e\u0432\u043d\u0430\u044f \u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u044f"},"node2":{"display_in_list":0,"node_id":2,"node_type_id":"Forum","parent_node_id":1,"title":"\u041e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0444\u043e\u0440\u0443\u043c"},"nodeCount":18,"portalAddonRows":1,"portalRouteRows":1,"portalTemplateRows":2,"portalTemplates":[{"bytes":10077,"seo_desc":true,"seo_jsonld":true,"seo_marker":1,"sha256":"24fed3a1f355ec22b180c4e0d1cb9ff1b6f7c193aa3d710d3f753196d696625d","template_id":1218,"title":"pvepro_portal","trust_marker":1,"twitter_card":true},{"bytes":3605,"seo_desc":false,"seo_jsonld":false,"seo_marker":0,"sha256":"82052b9578b80b2350afda7cc567736a1e1d5d34bc7a6ec55d7fc9b91bfd1e50","template_id":1219,"title":"pvepro_portal.less","trust_marker":1,"twitter_card":false}],"postCount":44,"robotsBytes":246,"robotsExists":true,"robotsSha256":"f58451051f45f07a21c8894d642a186a133049a9fd205561d1aed325c9f1d272","seoOptions":{"sitemapAutoRebuild":{"data_type":"boolean","edit_format":"onoff","id":"sitemapAutoRebuild","present":true,"runtime":true,"stored_raw_bytes":1,"stored_raw_sha256":"6b86b273ff34fce19d6b804eff5a3f5747ada4eaa22f1d49c01e52ddb7875b4b"},"sitemapAutoSubmit":{"data_type":"array","edit_format":"onofftextbox","id":"sitemapAutoSubmit","present":true,"runtime":{"enabled":false,"urls":""},"stored_raw_bytes":27,"stored_raw_sha256":"3c9a4e2a29053b692c69b9dcf4747612172108f512451c1f4a9b8ea262984224"},"sitemapExclude":{"data_type":"array","edit_format":"callback","id":"sitemapExclude","present":true,"runtime":[],"stored_raw_bytes":2,"stored_raw_sha256":"4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945"},"sitemapExtraUrls":{"data_type":"string","edit_format":"textbox","id":"sitemapExtraUrls","present":true,"runtime":"https://pvepro.ru/","stored_raw_bytes":18,"stored_raw_sha256":"89736d0e2ed4b498f3c0ade3a692402515ee7b69ae2e3e18c90ecbe606bb363d"},"useFriendlyUrls":{"data_type":"boolean","edit_format":"onoff","id":"useFriendlyUrls","present":true,"runtime":true,"stored_raw_bytes":1,"stored_raw_sha256":"6b86b273ff34fce19d6b804eff5a3f5747ada4eaa22f1d49c01e52ddb7875b4b"}},"templatesXmlBytes":13999,"templatesXmlExists":true,"templatesXmlSeoMarkers":1,"templatesXmlSha256":"32301f0de13968030caac1c3137f6883739a09392d272f1efaced50343151c7b","templatesXmlTrustMarkers":2,"threadCount":44}
20:STAGING_TECHNICAL_SEO_RENDER={"good_samples":0,"required":3,"samples":[{"ok":false,"sample":1,"ua":[{"contact":{"bytes":28540,"canonical":[],"content_type":"text/html; charset=utf-8","description":[],"effective":"http://pvepro.ru/misc/contact","http":200,"icons":["/styles/pvepro/brand/brand753r4/pvepro-pwa-192.48c7da4b73b9.png","http://pvepro.ru/styles/pvepro/brand/brand753r4/pvepro-favicon-32.e9a01ca2fe88.png"],"jsonld_web_site":false,"og":{"og:image":"http://pvepro.ru/styles/pvepro/brand/brand753r4/pvepro-og-1200x630.08513c189ee6.png","og:site_name":"PVEPro","og:title":"\u041e\u0431\u0440\u0430\u0442\u043d\u0430\u044f \u0441\u0432\u044f\u0437\u044c","og:type":"website","og:url":"http://pvepro.ru/misc/contact"},"ok":true,"robots":[],"title":"\u041e\u0431\u0440\u0430\u0442\u043d\u0430\u044f \u0441\u0432\u044f\u0437\u044c | PVEProStyle variation","twitter":{},"utf8":true},"forums":{"bytes":73505,"canonical":["https://pvepro.ru/forums/"],"content_type":"text/html; charset=utf-8","description":["\u0418\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u0431\u0438\u0437\u043d\u0435\u0441\u0430, \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0432\u043b\u0430\u0434\u0435\u0435\u0442\u0435 \u0432\u044b."],"effective":"http://pvepro.ru/forums/","http":200,"icons":["/styles/pvepro/brand/brand753r4/pvepro-pwa-192.48c7da4b73b9.png","http://pvepro.ru/styles/pvepro/brand/brand753r4/pvepro-favicon-32.e9a01ca2fe88.png"],"jsonld_web_site":false,"og":{"og:description":"\u0418\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u0431\u0438\u0437\u043d\u0435\u0441\u0430, \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0432\u043b\u0430\u0434\u0435\u0435\u0442\u0435 \u0432\u044b.","og:image":"http://pvepro.ru/styles/pvepro/brand/brand753r4/pvepro-og-1200x630.08513c189ee6.png","og:site_name":"PVEPro","og:title":"\u0421\u043f\u0438\u0441\u043e\u043a \u0444\u043e\u0440\u0443\u043c\u043e\u0432","og:type":"website","og:url":"http://pvepro.ru/forums/"},"ok":true,"robots":[],"title":"\u0421\u043f\u0438\u0441\u043e\u043a \u0444\u043e\u0440\u0443\u043c\u043e\u0432 | PVEProStyle variation","twitter":{},"utf8":true},"privacy":{"bytes":35941,"canonical":["https://pvepro.ru/help/privacy-policy/"],"content_type":"text/html; charset=utf-8","description":["\u0412\u0430\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u0440\u0438\u043d\u044f\u0442\u044c \u0443\u0441\u043b\u043e\u0432\u0438\u044f \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0438 \u0434\u043b\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0441\u0430\u0439\u0442\u0430."],"effective":"http://pvepro.ru/help/privacy-policy/","http":200,"icons":["/styles/pvepro/brand/brand753r4/pvepro-pwa-192.48c7da4b73b9.png","http://pvepro.ru/styles/pvepro/brand/brand753r4/pvepro-favicon-32.e9a01ca2fe88.png"],"jsonld_web_site":false,"og":{"og:description":"\u0412\u0430\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u0440\u0438\u043d\u044f\u0442\u044c \u0443\u0441\u043b\u043e\u0432\u0438\u044f \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0438 \u0434\u043b\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0441\u0430\u0439\u0442\u0430.","og:image":"http://pvepro.ru/styles/pvepro/brand/brand753r4/pvepro-og-1200x630.08513c189ee6.png","og:site_name":"PVEPro","og:title":"\u041f\u043e\u043b\u0438\u0442\u0438\u043a\u0430 \u043a\u043e\u043d\u0444\u0438\u0434\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u0438","og:type":"website","og:url":"http://pvepro.ru/help/privacy-policy/"},"ok":true,"robots":[],"title":"\u041f\u043e\u043b\u0438\u0442\u0438\u043a\u0430 \u043a\u043e\u043d\u0444\u0438\u0434\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u0438 | PVEProStyle variation","twitter":{},"utf8":true},"robots":{"bytes":246,"content_type":"text/plain","effective":"http://pvepro.ru/robots.txt","http":200,"ok":true,"sha256":
21:TECHNICAL_SEO_STAGING_ERROR_CLASS=RuntimeError
22:TECHNICAL_SEO_STAGING_ERROR_SHA256=4f980810cfb900f8ca18c40eb15ddff079f733c10ff91226ecb4c9576735ada2
23:ROLLBACK_PRE_SHUTDOWN_GUEST_SYNC={"ok":true}
24:ROLLBACK_PRE_SHUTDOWN_QM_SHUTDOWN={"rc":0}
25:ROLLBACK_QM_ROLLBACK_RC=0
26:ROLLBACK_APP_STATE={"boardActive":"0","dataSitemaps":{"exists":false},"defaultLanguageId":"2","defaultStyleId":"2","errors":16,"faviconBytes":165,"faviconExists":true,"faviconSha256":"cb2080acb1bce40de99ef4963d153d20c9b6666b8442f936f66e3f1c8539af8b","forumCount":12,"indexRoute":"portal/","internalSitemaps":{"exists":false},"members":{"addon_id":"XF","enabled":0,"navigation_id":"members","parent_navigation_id":""},"node1":{"display_in_list":0,"node_id":1,"node_type_id":"Category","parent_node_id":0,"title":"\u041e\u0441\u043d\u043e\u0432\u043d\u0430\u044f \u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u044f"},"node2":{"display_in_list":0,"node_id":2,"node_type_id":"Forum","parent_node_id":1,"title":"\u041e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0444\u043e\u0440\u0443\u043c"},"nodeCount":18,"portalAddonRows":1,"portalRouteRows":1,"portalTemplateRows":2,"portalTemplates":[{"bytes":8037,"seo_desc":false,"seo_jsonld":false,"seo_marker":0,"sha256":"86db12351c8b3d4fe9338abe00dd8ceb9a32e9af80e5833d04933401b9f7a566","template_id":1218,"title":"pvepro_portal","trust_marker":1,"twitter_card":false},{"bytes":3605,"seo_desc":false,"seo_jsonld":false,"seo_marker":0,"sha256":"82052b9578b80b2350afda7cc567736a1e1d5d34bc7a6ec55d7fc9b91bfd1e50","template_id":1219,"title":"pvepro_portal.less","trust_marker":1,"twitter_card":false}],"postCount":44,"robotsBytes":0,"robotsExists":false,"robotsSha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","seoOptions":{"sitemapAutoRebuild":{"data_type":"boolean","edit_format":"onoff","id":"sitemapAutoRebuild","present":true,"runtime":true,"stored_raw_bytes":1,"stored_raw_sha256":"6b86b273ff34fce19d6b804eff5a3f5747ada4eaa22f1d49c01e52ddb7875b4b"},"sitemapAutoSubmit":{"data_type":"array","edit_format":"onofftextbox","id":"sitemapAutoSubmit","present":true,"runtime":{"enabled":"0","urls":""},"stored_raw_bytes":25,"stored_raw_sha256":"89e6bef9d34cb52c4b09c59c1981c95975c5c15cf4c72e1df8906f65029b3e47"},"sitemapExclude":{"data_type":"array","edit_format":"callback","id":"sitemapExclude","present":true,"runtime":[],"stored_raw_bytes":2,"stored_raw_sha256":"4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945"},"sitemapExtraUrls":{"data_type":"string","edit_format":"textbox","id":"sitemapExtraUrls","present":true,"runtime":"","stored_raw_bytes":0,"stored_raw_sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"},"useFriendlyUrls":{"data_type":"boolean","edit_format":"onoff","id":"useFriendlyUrls","present":true,"runtime":false,"stored_raw_bytes":1,"stored_raw_sha256":"5feceb66ffc86f38d952786c6d696c79c2dbc239dd4e91b46729d73a27fb57e9"}},"templatesXmlBytes":11959,"templatesXmlExists":true,"templatesXmlSeoMarkers":0,"templatesXmlSha256":"2363cb9d758e65f63a9452fdbdeb925343411919864eb7bf06f51765325ba7b3","templatesXmlTrustMarkers":2,"threadCount":44}
27:ROLLBACK_FINAL_SHUTDOWN_GUEST_SYNC={"ok":true}
28:ROLLBACK_FINAL_SHUTDOWN_QM_SHUTDOWN={"rc":0}
29:PRODUCTION_APP_AFTER_FAILURE={"boardActive":"1","dataSitemaps":{"exists":false},"defaultLanguageId":"2","defaultStyleId":"2","errors":20,"faviconBytes":165,"faviconExists":true,"faviconSha256":"cb2080acb1bce40de99ef4963d153d20c9b6666b8442f936f66e3f1c8539af8b","forumCount":12,"indexRoute":"portal/","internalSitemaps":{"exists":false},"members":{"addon_id":"XF","enabled":0,"navigation_id":"members","parent_navigation_id":""},"node1":{"display_in_list":0,"node_id":1,"node_type_id":"Category","parent_node_id":0,"title":"\u041e\u0441\u043d\u043e\u0432\u043d\u0430\u044f \u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u044f"},"node2":{"display_in_list":0,"node_id":2,"node_type_id":"Forum","parent_node_id":1,"title":"\u041e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0444\u043e\u0440\u0443\u043c"},"nodeCount":18,"portalAddonRows":1,"portalRouteRows":1,"portalTemplateRows":2,"portalTemplates":[{"bytes":8037,"seo_desc":false,"seo_jsonld":false,"seo_marker":0,"sha256":"86db12351c8b3d4fe9338abe00dd8ceb9a32e9af80e5833d04933401b9f7a566","template_id":1218,"title":"pvepro_portal","trust_marker":1,"twitter_card":false},{"bytes":3605,"seo_desc":false,"seo_jsonld":false,"seo_marker":0,"sha256":"82052b9578b80b2350afda7cc567736a1e1d5d34bc7a6ec55d7fc9b91bfd1e50","template_id":1219,"title":"pvepro_portal.less","trust_marker":1,"twitter_card":false}],"postCount":44,"robotsBytes":0,"robotsExists":false,"robotsSha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","seoOptions":{"sitemapAutoRebuild":{"data_type":"boolean","edit_format":"onoff","id":"sitemapAutoRebuild","present":true,"runtime":true,"stored_raw_bytes":1,"stored_raw_sha256":"6b86b273ff34fce19d6b804eff5a3f5747ada4eaa22f1d49c01e52ddb7875b4b"},"sitemapAutoSubmit":{"data_type":"array","edit_format":"onofftextbox","id":"sitemapAutoSubmit","present":true,"runtime":{"enabled":"0","urls":""},"stored_raw_bytes":25,"stored_raw_sha256":"89e6bef9d34cb52c4b09c59c1981c95975c5c15cf4c72e1df8906f65029b3e47"},"sitemapExclude":{"data_type":"array","edit_format":"callback","id":"sitemapExclude","present":true,"runtime":[],"stored_raw_bytes":2,"stored_raw_sha256":"4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945"},"sitemapExtraUrls":{"data_type":"string","edit_format":"textbox","id":"sitemapExtraUrls","present":true,"runtime":"","stored_raw_bytes":0,"stored_raw_sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"},"useFriendlyUrls":{"data_type":"boolean","edit_format":"onoff","id":"useFriendlyUrls","present":true,"runtime":false,"stored_raw_bytes":1,"stored_raw_sha256":"5feceb66ffc86f38d952786c6d696c79c2dbc239dd4e91b46729d73a27fb57e9"}},"templatesXmlBytes":11959,"templatesXmlExists":true,"templatesXmlSeoMarkers":0,"templatesXmlSha256":"2363cb9d758e65f63a9452fdbdeb925343411919864eb7bf06f51765325ba7b3","templatesXmlTrustMarkers":2,"threadCount":44}
30:TASK_RESULT=PVEPRO_TECHNICAL_SEO_STAGING_IMPLEMENTATION_FAILED
EVIDENCE_EXCERPT_END=/var/lib/homelab-chat-run/raw/SUPPORT-260921-PVEPRO-TECHNICAL-SEO-STAGING-IMPLEMENTATION-RETRY-825R1-20260920T232026Z.log
EVIDENCE_FILE=/var/lib/homelab-chat-run/raw/SUPPORT-260919-BACKUP-HEALTH-PRESENTATION-AUDIT-READONLY-624R2-20260919T135217Z.log|SHA256=9bf6728874a654dd6db7bdca54120aa78bcbc968f05062e7aa423b77366dc278|BYTES=6643
EVIDENCE_EXCERPT_BEGIN=/var/lib/homelab-chat-run/raw/SUPPORT-260919-BACKUP-HEALTH-PRESENTATION-AUDIT-READONLY-624R2-20260919T135217Z.log
21:PVE01_BACKUP_TXT_REF_11=/usr/local/sbin/homelab-overall-health
22:PVE01_BACKUP_TXT_REF_12=/usr/local/sbin/homelab-vm-full-backup
23:PVE01_BACKUP_TXT_REF_13=/usr/local/sbin/homelab-backup-edge-vm-vzdump
24:PVE01_BACKUP_TXT_REF_14=/usr/local/sbin/homelab-cluster-passport
25:PVE01_BACKUP_TXT_REF_15=/srv/homelab-ops/observed/source-snapshots/overall.txt
26:PVE01_BACKUP_TXT_REF_16=/srv/homelab-ops/tasks/cluster-cloud-quorum-vm160-canary-v1/task.json
27:PVE01_BACKUP_TXT_REF_17=/srv/homelab-ops/tasks/cluster-cloud-quorum-vm160-canary-v1/assets/homelab-vm160-remote-backup
28:PVE01_BACKUP_TXT_REF_18=/srv/homelab-ops/tasks/cluster-cloud-quorum-vm160-canary-v1/phases/verify.sh
29:PVE01_BACKUP_TXT_REF_19=/srv/homelab-ops/tasks/cluster-cloud-quorum-vm160-canary-v1/phases/apply.sh
30:PVE01_BACKUP_TXT_REF_20=/srv/homelab-ops/tasks/cluster-cloud-quorum-vm160-canary-v1/phases/seal.sh
31:PVE01_BACKUP_TXT_REF_21=/srv/homelab-ops/tasks/cluster-cloud-quorum-vm160-canary-v1/phases/prepare.sh
32:PVE01_BACKUP_TXT_REF_22=/srv/homelab-ops/tasks/cluster-cloud-quorum-vm160-canary-v1/phases/rollback.sh
33:PVE03_EDGE_QGA_TRANSPORT_RC=0
34:EDGE_QGA_EXITED=1
35:EDGE_QGA_EXITCODE=0
36:EDGE_IDENTITY=OK
37:EDGE_HEALTH_SOURCE_PRESENT=true
38:EDGE_HEALTH_SOURCE_SHA256=69bd5816d27d14529aef5cafc3f9caf69bb4e6ac6cd04a444272680c8fadb560
39:EDGE_BACKUP_HEALTH_SOURCE_HIT_COUNT=1
40:EDGE_SOURCE_HIT_00=146: "/backup-health": _hp_backup,
41:EDGE_HEALTH_SERVICE_ACTIVE=active
EVIDENCE_EXCERPT_END=/var/lib/homelab-chat-run/raw/SUPPORT-260919-BACKUP-HEALTH-PRESENTATION-AUDIT-READONLY-624R2-20260919T135217Z.log
EVIDENCE_FILE=/var/lib/homelab-chat-run/raw/HOMELAB-CLUSTER-ADMIN-UPDATES-V22-INDEX-DRIFT-READ-ONLY-20260805T142000Z-20260805T142020Z.log|SHA256=81f3a7b84d9eec86671f34f89bc59d99a95dd08ec9d6911e6ea399964e0e9718|BYTES=34294
EVIDENCE_EXCERPT_BEGIN=/var/lib/homelab-chat-run/raw/HOMELAB-CLUSTER-ADMIN-UPDATES-V22-INDEX-DRIFT-READ-ONLY-20260805T142000Z-20260805T142020Z.log
1:HOMELAB_RESULT_CONTRACT={"changes_made":false,"command_id":"HOMELAB-CLUSTER-ADMIN-UPDATES-V22-INDEX-DRIFT-READ-ONLY-20260805T142000Z","command_rc":0,"control_plane_error":null,"index_changed_diff_lines":110,"index_current_sha256":"686e55e3934e22180a3889a0ee9ba8cdcbb92b5d9d1bc5418080f701a5796172","index_drift":true,"index_expected_sha256":"c4fc9eec9c1e9884c5b054b2193db518f5a5d15c026c5e01fe11c6be8d52fc89","index_path":"/var/www/homelab-cluster-admin/index.html","managed_marker_present":false,"mutation_outcome":"NO_MUTATION","rc":0,"ready_for_corrected_transaction":true,"reference_current_sha256":"fbec0df3b65d3e9e00348441b018382a603db18469d07cde13a492c09cb0790f","reference_drift":false,"reference_expected_sha256":"fbec0df3b65d3e9e00348441b018382a603db18469d07cde13a492c09cb0790f","remote_probe_root":true,"report_bytes":33176,"report_sha256":"04df393f3f5a7703399153a129a8458a3c9980f45c4cb00b1f9bd8b62182c15c","rollback_restored":false,"rollback_started":false,"status":"OK","v19_exact_result_identity_confirmed":true,"v21_exact_result_identity_confirmed":true,"v21_exact_sha_drift_confirmed":true,"version":1}
2:{"changes_made":false,"command_id":"HOMELAB-CLUSTER-ADMIN-UPDATES-V22-INDEX-DRIFT-READ-ONLY-20260805T142000Z","current_files":{"index":{"backend_marker_begin":false,"backend_marker_end":false,"bytes":10353,"ctime_ns":1785939615262660290,"expected_sha256":"c4fc9eec9c1e9884c5b054b2193db518f5a5d15c026c5e01fe11c6be8d52fc89","gid":0,"index_marker_begin":false,"index_marker_end":false,"inode":135903,"matches_v19":false,"mode":420,"mtime_ns":1785939615262660290,"path":"/var/www/homelab-cluster-admin/index.html","sha256":"686e55e3934e22180a3889a0ee9ba8cdcbb92b5d9d1bc5418080f701a5796172","uid":0},"reference":{"backend_marker_begin":false,"backend_marker_end":false,"bytes":3708,"ctime_ns":1783706500680296060,"expected_sha256":"fbec0df3b65d3e9e00348441b018382a603db18469d07cde13a492c09cb0790f","gid":0,"index_marker_begin":false,"index_marker_end":false,"inode":135901,"matches_v19":true,"mode":493,"mtime_ns":1783706500680296060,"path":"/opt/homelab-cluster-admin/render-webpanel.sh","sha256":"fbec0df3b65d3e9e00348441b018382a603db18469d07cde13a492c09cb0790f","uid":0}},"drift_analysis":{"index_changed_diff_lines":110,"index_drift":true,"managed_marker_present":false,"next_required_action":"build corrected atomic transaction using current index SHA","ready_for_corrected_transaction":true,"reference_changed_diff_lines":24,"reference_drift":false},"index_diff":{"lines":["--- V19/index.html","+++ CURRENT/index.html","@@ -16,65 +16,65 @@"," </style>"," </head>"," <body>"," <h1>Homelab Cluster Admin</h1>","-<div class=\"small\">generated UTC: 2026-08-05T13:20:48Z · VM180 · [PRIVATE_IP] · refresh 60s</div>","+<div class=\"small\">generated UTC: 2026-08-05T14:20:15Z · VM180 · <PRIVATE_IPV4> · refresh 60s</div>"," <p><span class=\"badge\">REVIEW</span></p>"," "," <div class=\"grid\">","-<div class=\"card\"><h2>Self</h2><pre>STATUS=WARN TS=2026-08-05T13:19:08Z TYPE=cluster-admin-self-check BAD=1 HOST=cluster-admin IP_OK=1 DNS_OK=1 FAILED_UNITS=1 QGA=active","+<div class=\"card\"><h2>Self</h2><pre>STATUS=WARN TS=2026-08-05T14:15:25Z TYPE=cluster-admin-self-check BAD=1 HOST=cluster-admin IP_OK=1 DNS_OK=1 FAILED_UNITS=1 QGA=active"," FAILED_UNITS=1"," QGA=active</pre></div>","-<div class=\"card\"><h2>Observer</h2><pre>STATUS=WARN TS=2026-08-05T13:19:08Z TYPE=cluster-admin-observer BAD=2 WARN=0 HOST=cluster-admin SELF_FAILED_UNITS=1 QGA=active PVE01=checked PVE02=checked PVE03=checked EDGE=checked DNS_PAIR=checked OVERALL_ENDPOINT=checked REPORT=/var/lib/homelab-cluster-admin/latest.md</pre></div>","-<div class=\"card\"><h2>Full observer</h2><pre>STATUS=WARN TS=2026-08-05T13:19:08Z TYPE=cluster-admin-full-observer BAD=3 WARN=0 INFO_OFF=7 PROBE_OK=2 PROBE_BAD=2 MAP_TOTAL=30 CRITICAL_FAILS=0 OPTIONAL_INFO_OFF=7 SELF_FAILED_UNITS=1 QGA=active REPORT=/var/lib/homelab-cluster-admin/full-observer-latest.md</pre></div>","+<div class=\"card\"><h2>Observer</h2><pre>STATUS=WARN TS=2026-08-05T14:15:25Z TYPE=cluster-admin-observer BAD=2 WARN=0 HOST=cluster-admin SELF_FAILED_UNITS=1 QGA=active PVE01=checked PVE02=checked PVE03=checked EDGE=checked DNS_PAIR=checked OVERALL_ENDPOINT=checked REPORT=/var/lib/homelab-cluster-admin/latest.md</pre></div>","+<div class=\"card\"><h2>Full observer</h2><pre>STATUS=WARN TS=2026-08-05T14:15:25Z TYPE=cluster-admin-full-observer BAD=3 WARN=0 INFO_OFF=7 PROBE_OK=2 PROBE_BAD=2 MAP_TOTAL=30 CRITICAL_FAILS=0 OPTIONAL_INFO_OFF=7 SELF_FAILED_UNITS=1 QGA=active REPORT=/var/lib/homelab-cluster-admin/full-observer-latest.md</pre></div>"," <div class=\"card\"><h2>Mail Cloud backup</h2><pre>STATUS=OK TS=2026-07-09T05:07:47Z TYPE=cluster-admin-vm-mail-cloud-backup BAD=0 VMID=180 NODE=pve02 MODE=MAIL_CLOUD_2COPY_VERIFY_OK LOCAL_STATUS=OK REPORT=/var/lib/homelab-cluster-admin-vm-mail-cloud-backup/latest.md</pre></div>"," </div>"," ","-<div class=<REDACTED>","+<div class=<REDACTED>"," <div class=\"card\"><h2>Final readiness</h2><pre>STATUS=WARN TS=2026-08-05T05:21:50Z TYPE=final-readiness BAD=6 PASS=47 FAIL=6 REPORT=/var/lib/homelab-final-readiness
EVIDENCE_EXCERPT_END=/var/lib/homelab-chat-run/raw/HOMELAB-CLUSTER-ADMIN-UPDATES-V22-INDEX-DRIFT-READ-ONLY-20260805T142000Z-20260805T142020Z.log
EVIDENCE_FILE=/var/lib/homelab-chat-run/raw/HOMELAB-CLUSTER-ADMIN-UPDATES-V45-MISSING-V42-CONSTANT-FIXED-PATCH-20260806T004600Z-20260806T004832Z.log|SHA256=82d4c214d757c8bd440e147d78fd526866cf538ecad144f47917463d2f20401d|BYTES=2787
EVIDENCE_EXCERPT_BEGIN=/var/lib/homelab-chat-run/raw/HOMELAB-CLUSTER-ADMIN-UPDATES-V45-MISSING-V42-CONSTANT-FIXED-PATCH-20260806T004600Z-20260806T004832Z.log
1:HOMELAB_RESULT_CONTRACT={"changes_made":false,"command_id":"HOMELAB-CLUSTER-ADMIN-UPDATES-V45-MISSING-V42-CONSTANT-FIXED-PATCH-20260806T004600Z","command_rc":1,"control_plane_error":null,"mutation_outcome":"ROLLED_BACK","rc":1,"report_bytes":2378,"report_sha256":"0a6c5d44e399a67835ada32d323748a444f10ceaf9e4b4d1ebed2ab9f035a983","rollback_restored":true,"rollback_started":true,"status":"FAIL","version":1}
2:{"changes_made":false,"command_id":"HOMELAB-CLUSTER-ADMIN-UPDATES-V45-MISSING-V42-CONSTANT-FIXED-PATCH-20260806T004600Z","error":"RuntimeError: HTML route auth guard {'path': '/cluster-admin-updates.html', 'rc': 0, 'http_status': 500, 'location': None, 'body_sha256': 'e41656eb2ba6c6293bf6dd928e5a88cdbc50535cab661c1969e0f598e497ed62', 'body_bytes': 21, 'stderr': ''}","error_type":"RuntimeError","mutation_outcome":"ROLLED_BACK","remote":{"backup":"/var/backups/homelab-cluster-admin/HOMELAB-CLUSTER-ADMIN-UPDATES-V45-MISSING-V42-CONSTANT-FIXED-PATCH-20260806T004600Z/incident-engine-app.py","candidate_sha256":"26787f335382f6d6beff9a31a185e4998f50f91eed9b8b94831619c5a87a9647","changed":false,"error":"RuntimeError: HTML route auth guard {'path': '/cluster-admin-updates.html', 'rc': 0, 'http_status': 500, 'location': None, 'body_sha256': 'e41656eb2ba6c6293bf6dd928e5a88cdbc50535cab661c1969e0f598e497ed62', 'body_bytes': 21, 'stderr': ''}","original_sha256":"17d95ebfc28cef34846a8999664019d5d032ee8176b7fedd9ceeebfc5c97e3b6","rollback_errors":[],"service_after_rollback":{"ActiveState":"active","ExecMainStatus":"0","ExecStart":"{ path=/usr/bin/python3 ; argv[]=/usr/bin/python3 -m uvicorn app:app --host [PRIVATE_IP] --port 8081 --proxy-headers --forwarded-allow-ips=[PRIVATE_IP],[PRIVATE_IP] ; ignore_errors=no ; start_time=[Thu 2026-08-06 00:48:34 UTC] ; stop_time=[n/a] ; pid=2130676 ; code=(null) ; status=0/0 }","FragmentPath":"/etc/systemd/system/cluster-admin-incident-engine.service","LoadState":"loaded","MainPID":"2130676","Result":"success","SubState":"running","UnitFileState":"enabled","WorkingDirectory":"/opt/cluster-admin-incident-engine"},"service_before":{"ActiveState":"active","ExecMainStatus":"0","ExecStart":"{ path=/usr/bin/python3 ; argv[]=/usr/bin/python3 -m uvicorn app:app --host [PRIVATE_IP] --port 8081 --proxy-headers --forwarded-allow-ips=[PRIVATE_IP],[PRIVATE_IP] ; ignore_errors=no ; start_time=[Thu 2026-08-06 00:19:50 UTC] ; stop_time=[n/a] ; pid=2125508 ; code=(null) ; status=0/0 }","FragmentPath":"/etc/systemd/system/cluster-admin-incident-engine.service","LoadState":"loaded","MainPID":"2125508","Result":"success","SubState":"running","UnitFileState":"enabled","WorkingDirectory":"/opt/cluster-admin-incident-engine"},"status":"FAILED_ROLLED_BACK"},"rollback_errors":[],"rollback_restored":true,"rollback_started":true,"schema":45,"status":"FAIL"}
EVIDENCE_EXCERPT_END=/var/lib/homelab-chat-run/raw/HOMELAB-CLUSTER-ADMIN-UPDATES-V45-MISSING-V42-CONSTANT-FIXED-PATCH-20260806T004600Z-20260806T004832Z.log
EVIDENCE_FILE=/var/lib/homelab-chat-run/raw/HOMELAB-SKLADCHIK-MODERATOR-CORE-INSTALL-20260805T160500Z-20260805T160843Z.log|SHA256=caca3b75c72ca2b4dc356c6382d177f9253fa339c37ee249015ed80d9cdd8d04|BYTES=524
EVIDENCE_EXCERPT_BEGIN=/var/lib/homelab-chat-run/raw/HOMELAB-SKLADCHIK-MODERATOR-CORE-INSTALL-20260805T160500Z-20260805T160843Z.log
1:{"backup_created": false, "changes_made": false, "command_id": "HOMELAB-SKLADCHIK-MODERATOR-CORE-INSTALL-20260805T160500Z", "command_rc": 1, "complaints_guardrail": {"immutable": true, "mutation_allowed": false, "service_content_read": false, "source_content_read": false, "storage_read": false}, "error": "unsafe file type: .", "error_type": "RuntimeError", "mutation_outcome": "NO_MUTATION", "output_truncated_in_json": false, "rc": 1, "rollback_restored": null, "rollback_started": false, "status": "FAIL", "version": 1}
EVIDENCE_EXCERPT_END=/var/lib/homelab-chat-run/raw/HOMELAB-SKLADCHIK-MODERATOR-CORE-INSTALL-20260805T160500Z-20260805T160843Z.log
EVIDENCE_FILE=/var/lib/homelab-chat-run/raw/SUPPORT-260909-GRAM-XF-FLEET-FOOTER-UI-ALIGN-FINAL-093R3-20260909T190000Z.log|SHA256=ed2f4e1c478f36f0e0cbc08d8e48a7c1f029b070b8977111a0635c161fde0205|BYTES=10078
EVIDENCE_EXCERPT_BEGIN=/var/lib/homelab-chat-run/raw/SUPPORT-260909-GRAM-XF-FLEET-FOOTER-UI-ALIGN-FINAL-093R3-20260909T190000Z.log
6:GRAM_FOOTER_FINAL_TOPOLOGY={"160":{"name":"forum-prod","node":"pve02","status":"running"},"210":{"name":"newfi-prod","node":"pve01","status":"running"},"211":{"name":"newfi-staging","node":"pve03","status":"running"}}
7:GRAM_FOOTER_FINAL_VM211={"host":"newfi-staging","results":[{"manifest":{"bad":[],"checked":59,"extra":[],"missing":[]},"name":"newfi-staging","root":"/var/www/forums/newfi/public","state":{"addon":{"active":1,"is_processing":0,"last_pending_action":null,"version_id":1000080,"version_string":"1.0.0 Alpha 3 Unified Fix 6"},"board_active":"0","board_url":"http://newfi-staging.gram1.ru","css_sha256":"b3c4b389b4242a3c9bccbbf11247ac06ea2bba20bc9a0cbc7da1cf764ad45279","error_max":46,"launcher_sha256":"19dd8429e2ad0dfce31d69b33b310d349a408558c1ce05dda6ee64b4b834ef20","mod_action":"str_replace","mod_enabled":1,"mod_find_sha256":"a2e9bd7016c37eb74e26209f06ce3dfceebb2ebbdb9fd5946b3b32cdd7cf1ff2","mod_replace_sha256":"7e47f43986cd42b389b31d7bb53b7b15aa1b61835433a39af0d0f1dca594e33a","mod_template":"PAGE_CONTAINER","mod_type":"public","services":{"mariadb":true,"nginx":true,"php8.3-fpm":true},"status":"OK"},"status":"OK"}],"status":"OK"}
8:GRAM_FOOTER_FINAL_VM160={"host":"forum-prod","results":[{"manifest":{"bad":[],"checked":59,"extra":[],"missing":[]},"name":"codevipe","root":"/var/www/forums/codevipe/public","state":{"addon":{"active":1,"is_processing":0,"last_pending_action":null,"version_id":1000080,"version_string":"1.0.0 Alpha 3 Unified Fix 6"},"board_active":"1","board_url":"https://codevipe.ru","css_sha256":"b3c4b389b4242a3c9bccbbf11247ac06ea2bba20bc9a0cbc7da1cf764ad45279","error_max":0,"launcher_sha256":"19dd8429e2ad0dfce31d69b33b310d349a408558c1ce05dda6ee64b4b834ef20","mod_action":"str_replace","mod_enabled":1,"mod_find_sha256":"a2e9bd7016c37eb74e26209f06ce3dfceebb2ebbdb9fd5946b3b32cdd7cf1ff2","mod_replace_sha256":"7e47f43986cd42b389b31d7bb53b7b15aa1b61835433a39af0d0f1dca594e33a","mod_template":"PAGE_CONTAINER","mod_type":"public","services":{"mariadb":true,"nginx":true,"php8.3-fpm":true},"status":"OK"},"status":"OK"},{"manifest":{"bad":[],"checked":59,"extra":[],"missing":[]},"name":"dsmods","root":"/var/www/forums/dsmods/public","state":{"addon":{"active":1,"is_processing":0,"last_pending_action":null,"version_id":1000080,"version_string":"1.0.0 Alpha 3 Unified Fix 6"},"board_active":"1","board_url":"https://dsmods.ru","css_sha256":"b3c4b389b4242a3c9bccbbf11247ac06ea2bba20bc9a0cbc7da1cf764ad45279","error_max":0,"launcher_sha256":"19dd8429e2ad0dfce31d69b33b310d349a408558c1ce05dda6ee64b4b834ef20","mod_action":"str_replace","mod_enabled":1,"mod_find_sha256":"a2e9bd7016c37eb74e26209f06ce3dfceebb2ebbdb9fd5946b3b32cdd7cf1ff2","mod_replace_sha256":"7e47f43986cd42b389b31d7bb53b7b15aa1b61835433a39af0d0f1dca594e33a","mod_template":"PAGE_CONTAINER","mod_type":"public","services":{"mariadb":true,"nginx":true,"php8.3-fpm":true},"status":"OK"},"status":"OK"},{"manifest":{"bad":[],"checked":59,"extra":[],"missing":[]},"name":"gamevipe","root":"/var/www/forums/gamevipe/public","state":{"addon":{"active":1,"is_processing":0,"last_pending_action":null,"version_id":1000080,"version_string":"1.0.0 Alpha 3 Unified Fix 6"},"board_active":"1","board_url":"https://gamevipe.ru","css_sha256":"b3c4b389b4242a3c9bccbbf11247ac06ea2bba20bc9a0cbc7da1cf764ad45279","error_max":0,"launcher_sha256":"19dd8429e2ad0dfce31d69b33b310d349a408558c1ce05dda6ee64b4b834ef20","mod_action":"str_replace","mod_enabled":1,"mod_find_sha256":"a2e9bd7016c37eb74e26209f06ce3dfceebb2ebbdb9fd5946b3b32cdd7cf1ff2","mod_replace_sha256":"7e47f43986cd42b389b31d7bb53b7b15aa1b61835433a39af0d0f1dca594e33a","mod_template":"PAGE_CONTAINER","mod_type":"public","services":{"mariadb":true,"nginx":true,"php8.3-fpm":true},"status":"OK"},"status":"OK"},{"manifest":{"bad":[],"checked":59,"extra":[],"missing":[]},"name":"hkmods","root":"/var/www/forums/hkmods/public","state":{"addon":{"active":1,"is_processing":0,"last_pending_action":null,"version_id":1000080,"version_string":"1.0.0 Alpha 3 Unified Fix 6"},"board_active":"1","board_url":"https://hkmods.ru","css_sha256":"b3c4b389b4242a3c9bccbbf11247ac06ea2bba20bc9a0cbc7da1cf764ad45279","error_max":12,"launcher_sha256":"19dd8429e2ad0dfce31d69b33b310d349a408558c1ce05dda6ee64b4b834ef20","mod_action":"str_replace","mod_enabled":1,"mod_find_sha256":"a2e9bd7016c37eb74e26209f06ce3dfceebb2ebbdb9fd5946b3b32cdd7cf1ff2","mod_replace_sha256":"7e47f43986cd42b389b31d7bb53b7b15aa1b61835433a39af0d0f1dca594e33a","mod_template":"PAGE_CONTAINER","mod_type":"public","services":{"mariadb":true,"nginx":true,"php8.3-fpm":true},"status":"OK"},"status":"OK"},{"manifest":{"bad":[],"checked":59,"extra":[],"missing":[]},"name":"kingofwolk","root":"/var/www/forums/kingofwolk/public","state":{"addon":{"active":1,"is_processing":0,"last_pending_action":null,"version_id":1000080,"version_string":"1.0.0 Alpha 3 Unified Fix 6"},"board_active":"1","board_url":"https://kingofwolk.ru","css_sha256":"b3c4b389b4242a3c9bccbbf11247ac06ea2bba20bc9a0cbc7da1cf764ad45279","error_max":0,"launcher_sha256":"19dd8429e2ad0dfce31d69b33b310d349a408558c1ce05dda6ee64b4b834ef20","mod_action":"str_replace","mod_enabled":1,"mod_fin
9:GRAM_FOOTER_FINAL_VM210={"host":"newfi-prod","results":[{"manifest":{"bad":[],"checked":59,"extra":[],"missing":[]},"name":"newfi-prod","root":"/var/www/forums/newfi/public","state":{"addon":{"active":1,"is_processing":0,"last_pending_action":null,"version_id":1000080,"version_string":"1.0.0 Alpha 3 Unified Fix 6"},"board_active":"0","board_url":"https://newfi.ru","css_sha256":"b3c4b389b4242a3c9bccbbf11247ac06ea2bba20bc9a0cbc7da1cf764ad45279","error_max":0,"launcher_sha256":"19dd8429e2ad0dfce31d69b33b310d349a408558c1ce05dda6ee64b4b834ef20","mod_action":"str_replace","mod_enabled":1,"mod_find_sha256":"a2e9bd7016c37eb74e26209f06ce3dfceebb2ebbdb9fd5946b3b32cdd7cf1ff2","mod_replace_sha256":"7e47f43986cd42b389b31d7bb53b7b15aa1b61835433a39af0d0f1dca594e33a","mod_template":"PAGE_CONTAINER","mod_type":"public","services":{"mariadb":true,"nginx":true,"php8.3-fpm":true},"status":"OK"},"status":"OK"}],"status":"OK"}
10:GRAM_FOOTER_FINAL_KOW_CSP_SHA256=f42d4ebe01d1c0a288c968f0c90f9dc0375e64ebd81d2380de50e0260c3c4463
11:GRAM_FOOTER_FINAL_HOLD=RuntimeError:PUBLIC_RENDER:https://newfi.ru/forums/
12:HOMELAB_RESULT_CONTRACT={"version":1,"command_id":"SUPPORT-260909-GRAM-XF-FLEET-FOOTER-UI-ALIGN-FINAL-093R3","status":"FAIL","changes_made":false,"rollback_started":false,"rollback_restored":null}
EVIDENCE_EXCERPT_END=/var/lib/homelab-chat-run/raw/SUPPORT-260909-GRAM-XF-FLEET-FOOTER-UI-ALIGN-FINAL-093R3-20260909T190000Z.log
EVIDENCE_FILE=/var/lib/homelab-chat-run/raw/SUPPORT-260916-INFRA-DR-BACKUPV2-FINAL-REPLACEMENT-PLAN-STABILITY-SCHEMA-RCA-FIX-VALIDATE-PROMOTE-CUTOVER-SEAL-486R1-20260916T183901Z.log|SHA256=9693984a6cf5b31d4e33223e2b0380b9e3e6e68251ec1a90e398372107524127|BYTES=2145
EVIDENCE_EXCERPT_BEGIN=/var/lib/homelab-chat-run/raw/SUPPORT-260916-INFRA-DR-BACKUPV2-FINAL-REPLACEMENT-PLAN-STABILITY-SCHEMA-RCA-FIX-VALIDATE-PROMOTE-CUTOVER-SEAL-486R1-20260916T183901Z.log
5:SYSTEMD_UNIT_FILE_MUTATIONS=0
6:NO_DAEMON_RELOAD=YES
7:CLOUD_DELETIONS=0
8:PREFLIGHT_EXACT_BASELINE=PASS
9:CANDIDATE_BUILD=PASS
10:COMMON_HEAVY_LOCK_ACQUIRED=YES
11:LEGACY_SERVICES_QUIESCENT_AFTER_COMMON_LOCK=PASS
12:LEGACY_SERVICE_FAILED_HISTORY_COUNT=2
13:CT112_RESULT_CONTRACT=PASS
14:LEGACY_LANE_RESULT=node-pve01:PASS
15:LEGACY_LANE_RESULT=md-relay:PASS
16:LEGACY_LANE_RESULT=spb-ingress:PASS
17:LEGACY_LANE_RESULT=us-netbird:PASS
18:LEGACY_LANE_RESULT=router-netcraze:PASS
19:LEGACY_LANE_RESULT=xf-codevipe:PASS
30:PRODUCTION_LAUNCHER_SELFTEST=PASS
31:CUTOVER_V2_ENABLE_START=YES
32:CUTOVER_V2_ENABLED_ACTIVE=YES
33:CUTOVER_LEGACY_DISABLE=YES
34:CUTOVER_LEGACY_DISABLED_INACTIVE=YES
35:COMMON_HEAVY_LOCK_RELEASED=YES
36:POST_CUTOVER_HEALTH_1=PASS
37:PRODUCTION_ACCEPTANCE_SEAL_SHA256=f508adc9b09bad9692c580e642018f5d3dbf223fc572ee62478466fd517234fa
38:POST_CUTOVER_HEALTH_2=PASS
39:FINAL_SCHEDULER_STATE=V2_ENABLED_ACTIVE_LEGACY_DISABLED_INACTIVE
40:FINAL_EFFECTIVE_TARGET_COUNT=29
41:FINAL_BASE_REGISTRY_FILE_COUNT=28
42:LEGACY_BACKUP_DISABLES=3
43:PRODUCTION_ACCEPTANCE=YES
44:SCHEDULER_CUTOVER=YES
EVIDENCE_EXCERPT_END=/var/lib/homelab-chat-run/raw/SUPPORT-260916-INFRA-DR-BACKUPV2-FINAL-REPLACEMENT-PLAN-STABILITY-SCHEMA-RCA-FIX-VALIDATE-PROMOTE-CUTOVER-SEAL-486R1-20260916T183901Z.log
EVIDENCE_FILE=/var/lib/homelab-chat-run/raw/SUPPORT-260917-INFRA-DR-BACKUPV2-LEGACY-LXC-FRESH-PLAN-OWNER-REPAIR-VERIFY-491R1-20260916T220245Z.log|SHA256=015fb35cf81786abd7fa4140f828d5ed25f10d1311571070eecb55a4157c821c|BYTES=1158
EVIDENCE_EXCERPT_BEGIN=/var/lib/homelab-chat-run/raw/SUPPORT-260917-INFRA-DR-BACKUPV2-LEGACY-LXC-FRESH-PLAN-OWNER-REPAIR-VERIFY-491R1-20260916T220245Z.log
7:RETENTION_MUTATION=NO
8:RETENTION_STATUS=HOLD_VM200_LIFECYCLE_RECONCILIATION_REQUIRED
9:PREPROOF_DUE_TARGET=ct110
10:PREFLIGHT_486_BASELINE=PASS
11:V2_TIMER_RUNTIME_STOP=PASS
12:COMMON_HEAVY_LOCK_ACQUIRED=YES
13:ROLLBACK_TO_486=STARTED
14:ROLLBACK_TO_486=PASS
15:COMMON_HEAVY_LOCK_RELEASED=YES
16:STATUS=FAIL
17:PHASE=CANDIDATE_BUILD
18:REASON=FAILED_CLOSED
19:EXCEPTION_CLASS=builtins.RuntimeError
20:EXCEPTION_MESSAGE_SHA256=3619f4768300b605c96a76aeaff04f9c2fcbaf8597417eb74c5234d9e654c4d9
21:PRODUCTION_PROMOTION=NO
22:RETENTION_MUTATION=NO
23:RETENTION_STATUS=HOLD_VM200_LIFECYCLE_RECONCILIATION_REQUIRED
24:CLOUD_DELETIONS=0
25:CHANGES_MADE=true
26:ROLLBACK_STARTED=true
27:ROLLBACK_RESTORED=true
28:MUTATION_OUTCOME=MUTATED_THEN_ROLLED_BACK_TO_486
EVIDENCE_EXCERPT_END=/var/lib/homelab-chat-run/raw/SUPPORT-260917-INFRA-DR-BACKUPV2-LEGACY-LXC-FRESH-PLAN-OWNER-REPAIR-VERIFY-491R1-20260916T220245Z.log
EVIDENCE_FILE=/var/lib/homelab-chat-run/raw/SIGNALBOT-260917-RECONNECT-RECONCILIATION-HEALTH-STAGE-QGA-RCA-050R5-20260917T140951Z.log|SHA256=0fcb55a1ea30487b5116bfe28efe391e1d0e0af71a105cd8456b15ae39d9fc74|BYTES=11518
EVIDENCE_EXCERPT_BEGIN=/var/lib/homelab-chat-run/raw/SIGNALBOT-260917-RECONNECT-RECONCILIATION-HEALTH-STAGE-QGA-RCA-050R5-20260917T140951Z.log
31:SIGNALBOT050R5_AUDIT_QGA_ERR_BYTES=0
32:SIGNALBOT050R5_AUDIT_QGA_ERR_SHA256=e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
33:SIGNALBOT050R5_AUDIT_QGA_OUT_B64=U0lHTkFMQk9UMDUwUjVfQVVESVQ9eyJhY3RpdmVfaW1hZ2UiOiI4MDIwLWRlbW9ub3Ytc2hhZG93Ojc2ZTFmNThiYWE1NDRhMGUyMDhiYmEzMTdmMDE1MGU1YjZkNzRkYmQiLCJjYW5kaWRhdGVfYWJzZW50Ijp0cnVlLCJjb21wb3NlX3NoYTI1NiI6IjY0NjE1MzJiMGEwNGRlY2M2MGZlMWQxODg1OTkwMDIwZTg4NmQ0MGRlNDBjMDUyM2UzNGUyODQ5NjAwYWYwNjEiLCJjb250YWluZXJfZmluZ2VycHJpbnRfc2hhMjU2IjoiNzNkZDg5ZmY0NDFhYjUzMGU0NGQzZWE5NjRlYzVjMWY5NDY4Y2Y1MTJkYzMxYTM0YzE5MTFiMWZiYzhlM2ViOSIsImVudl9zaGEyNTYiOiJmM2NiNmI3ZWFhODI5ZTUwM2NkNTA4NmY4YWZiNmEyZmRiNWRhMjZmOTkyNjdmNjQwN2U5M2Y5MDU2OTk3MjAyIiwic3RhZ2VfYWJzZW50Ijp0cnVlLCJzdGF0dXMiOiJQQVNTIn0K
34:SIGNALBOT050R5_AUDIT_QGA_ERR_B64=
35:SIGNALBOT050R5_GUEST_AUDIT={"active_image":"8020-demonov-shadow:76e1f58baa544a0e208bba317f0150e5b6d74dbd","candidate_absent":true,"compose_sha256":"6461532b0a04decc60fe1d1885990020e886d40de40c0523e34e2849600af061","container_fingerprint_sha256":"73dd89ff441ab530e44d3ea964ec5c1f9468cf512dc31a34c1911b1fbc8e3eb9","env_sha256":"f3cb6b7eaa829e503cd5086f8afb6a2fdb5da26f99267f6407e93f9056997202","stage_absent":true,"status":"PASS"}
36:Traceback (most recent call last):
37:  File "<string>", line 1, in <module>
38:    import base64,zlib;exec(compile(zlib.decompress(base64.b64decode("eNq1GVtzosj63V/B7nlo2UVFFNRs8WAMyXDGqAfJZObMpqgGmoSNAQYwl5rKfz9fdyNClJmc20yVEfq73782fEjiNBdcnBFtKN3h7G4TutJfWRxJcSYlOGfP2dZN0tgjWSZlL1lrZp7paG1eLKbz06XdUTR50h91LGO2XCyMmc2/zcy5ObXN5aLzwZjO7Q+dtT29MDr/uJh2rNm0I6uypaLWta0XTLor+NtGvTSO8153E3t408vucEp6WXgb4Y0b5x2fPFaeCr4p8eIoIl7Ov3nhJsR5GEdIbBmfVyCPceaACCDyQJXdvusPtPEE91VvrLjjoTukH/2RMhoo/gSPsex5aI94ak0Xsw86ej/XPe5sOZ/Dt6WlI00eyWowVkaYDLw+UfHAVeSAYOL6vjbSvEDW+mQyDkYamWBX7WN1NHTdQMHKRCaD4QDVVAFr6sgLBkR1J954IA98RVWVIZYHbjCQ1cEw6CujEdYGsjYmY1fu44GiDka+62oukfFgqMhEQS1r6IBLdDSWFRlM+xBH8WMHTO7HTyd7fcFR6bDj4qGi+i4Z4VGfYTJv6qgXJ3kvy7F3n/WO0Ol1fZJs4pfefxgtNEqGFeWNxSdn/WGqo2DggTIjgvFYmRBVHni+Ko+1YIwDV8NK4LuqjxUtmEwUbRRoQ3lEJoNgIqvaZDJSZKXmpsvVcm1wutpQ66sDxZWxPPSJ52ngpb7fH4/VyUQG/ch4rPlD2SdD2ZNVZQDOIcp4ONFkGVMnVuierzjJiSqTkTfSXNVT1UkwhChUwBmK3/fBmqqG/YGiqKN+4Hq+5oH8fW2kuN54NJQHI9wnFZLTmW1+Mhzzktn+mN8ggPqBOnYxVocQEESRx66LB/1RIPdBDtXV/NHQd33UavkkEADLcV9ykrVd8URISb5NI6GoAl04VFQNTrp35NkPb0mWt8USLQg3pJ3ssfakagmdiN2UYL84Ejk+eQjz9r30KJ60BPgXBkKYhRGEUeSR9qPU9kMvlzZhlktuHG9EUYhT4RFghEUckRMh02mB6vrbhyQD8AwqmHNPXjLdTrdEykiCU5zHaaa3kQT/TxCwpXzIJmPYWZ62H/mrJA2jvB2g7/ev+vfsFUnBZpvdMUJc1HQbtbH022/3TxVVy3LY5cdZ7sfbXK+8X5krg74maXrw2rsj3r1+jkEaTpgxugWT/IbT22zPhxL/inrbLO25YdQDCNCm04niDmQd1Bq86UCdvM/oWw8+vDgl3SCDgAhBfT2gHGpn2yhPIVWJP8MgxB5ghiRqk2tblJgIN1ykb7fYSfFTO4u3qUcKZyV6RayMyvXtAWjcbiE84C95JpRdfyQzWbOXyLtLIUK3VMo+e5eHDwTMRZ/HHCrBWdYBa4VRCQQfpeLJS34XRwP63qQfp/QD3UhhlFCrM+mkgqquDOXC2zTI9m2KNRwH2o+zvLINy7FA6aTLLe3FPnkX0to+MyzLOf1iG2skbUjUTrrcy+K/gw91ATILjL7PmToZyIiqbL/oMgQFDjMiWOBD0NRI0zhto5o6HDVPX04EP/Z4jmxi7BfUwThQjSm5NtrmQWcMVgSvQ6qV+fHskSQXDPYH4kvAmUCaGf99vVw45uLTdG6eIVEI0vhBIDvxozivJjUIJNGsFpvJnS1njv1lZRR6FDkAiGXJcOChnaQkCJ8l+FoEJHU6PHVvCVgeHjo+zjHoBiLVC8txIBr5IisNAkLcDJCzJSw8/JxgDegIQRoUXO7fkWN8NqGWI2mP/RzmxAcn/HEEcrY8M97AUheiaryVCBAKjm1dLWZTxoEWz7rWOeSuhzm3Q3YQmY3YVMUaNre9q9OwIlE9rFJo+tgDIYGFqwNqM0SDFpUMi91DUSnIYRIdg3yTrqQB5JAYhWwSThuCedjI3HW1YaEbcC/zC2deGKIGaY5ikyPY1TwAM0tgSN6TyLdtmBKH1uf4nuUWPX7A6T1J9z31IMB4UkZCuy+xBteci4ulvYtT8YDcm0CizbkpTJo57ANNPCovD3LhF134QemjIoKsi38a1nJPh9thpyyNzyzZhPkmjOgE0kztcmp9hEp6aa7X5uIC6LWOVvNT48JcIG7B4xCrK4tOlBDmFuwdznIx/8J6QFH9Yf1xposzB6ZoC1aE0+nsozO9OjNtYAnixxm1AtmGfltsLPzlSGgtlwUe1ffa7oaZ44dpk57XS+ujbRlGRcs7GM90On1AUj5CK07ZTEA3JiS+6Rv0OQ2TNsS1m0IJvON4/Dvv93fxU8fbpimJ8h+hQwXNtxlH59/5IBBDK9/gMNIf+RhQTiwdOm9mOt5smske90apMlNJouru8rIRlK99kKZMs5+Cz+bGdEFnKKaUjrhDKKdf9NoOSnOF06wccGb0iBM47rlqtJSMV5YBi5JNe6YXbzawjsLcd233ULEWOEGcPuHUdx5wAqNUHkAOPDtgUp84JUI3eUF/UGk3+V0j8iZ8JA6H4fBQI3MGTb9kPfrplBzqO3EFryFhLGO/LddqMdsySknFJk9QAnxxPMTmzBtRCzToELYzPV0bCxtJNJWoQl2oRKAcXVvCytazl6fixVJ+5sg3zOthAPwoUI3Dz51+bs5rDoedwiW6+2vIr3Cyl+zPiK8zb1W8uKLKrazlqaGvput1bcv5MwJMKkbeluHh1xadHXeTP+MBliu6j15OYYcOAOJsTgHohv70U7Gg4uKtH+Z6ihAq1KpdSTXcR4FFZh/f3iP9+GKCjibG4pPOUHsI5pNHiGl+qVEjtLvqcObQDa3pHPDopQm/O9m93C3F1X34zRb9w6X4YMFma+X/Y+Hk5FmRd0BnKnBL8PXvry0Bsl2gPZI2zYTLl5PnvM0GlDC61YvhTay301Y57jPkgkh3U9RkqM04zbOnkDrlb3xaQDradWcKeyJAscjDaEuXh3vpUWcEGJM2gEp9sLn/9X5X5W/0x7Lgl1sCU4uSgd5BUi5X6Gf6mxUaQhFGA+gsCes3+BtrMpCpOXsb4Qei1wOlw4IH3RxpOkxAGu7xU6Z/veEW9EKf6kXvJIjfBhGYhfzqNtYkE+wVCZQVJAGNQ37iVxlYMGZdnCQk8tvfUeijE58PTSaMW0DjAd+S/Tv2JNJxm7kBaj6Ul/LY4m9n7KVIt0FMpXYwgLQLmDW0JMLd9v1VLN9RuOkOiXbvnyFQGJFbuOS/oA/i696NVDloZJD5GdG/JsygCTXn1yJPua06BUj35WGDpIYjXDk7Bl8DvOEbN8xOrGqLAo58FqLsXQZ4YXQPoUfbAF0jCmSo631w7/Gqy0Y6Hf1euav6XloLnU/NOduDMBzD8+4Wcja1zkwgY9pf0Ou7rraqxfwPoSzmitgCr+sVlrz00+db4mA3oyPaCVWSFbiyE0nIA+1D2Gf3UI0hywKsErpA6Uas31xICAqNw8sgOqFVEgov5cJtWDsp3kGoAwD2cjp0FCG9r1kUnQfQdLXil6F88UZlAQA3RrckZY4pGbypyBW/VAvHu2y+22frpfu19e5IANf8N86VxRa0yKJbss9usVGzmaHWsZAER2nZyESxBlrpYntAeLnXcVf26WCglJMBY8onA4WOBkrzbMDUpwsQmw8gLml91yPaW9rPLMefi0VNqbUWmpPPtf5x3K5gJXovzGY03sB2F8XHRiouzcGudzizKBLTjVLkqVQp4Qcd6mv/pmnA5GMOX/DAwhmTE/7yEC6yEyoJz09aN2lOVgH26SoeHB/kavMkyQVhu8rViq34dJhcWmwHr8pUydfq5Fr8+EJF2LOvJ3F9IC5/V3mD8oMkrRLgP6DUcGsloQpb/WWkwe8cwrpa2Oal4ZxZ5jl45ZzdnQ5347RDx6f2/+ryr7LvsnQpqSvvIq+8m36r8dq5uHKgawPbbNilXqkqtW0pGV9yjp+dHA/tM2Nmrs0lrL7ldYwMLK2rmX0FYeXQiH
39:                       ~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
40:  File "<signalbot050r5>", line 90, in <module>
41:RuntimeError: ACTIVE_RUNTIME_DRIFT_AFTER_R4
EVIDENCE_EXCERPT_END=/var/lib/homelab-chat-run/raw/SIGNALBOT-260917-RECONNECT-RECONCILIATION-HEALTH-STAGE-QGA-RCA-050R5-20260917T140951Z.log
EVIDENCE_FILE=/var/lib/homelab-chat-run/raw/NEWFI-260921-NEWFDOM-DR221-PRESTATE-FIX411R1-20260921T174459Z.log|SHA256=1f4e84ffbde2f3aaf5b98baef93a1caa1b40693caf4bb5d669094c5d68cfbcf7|BYTES=1655
EVIDENCE_EXCERPT_BEGIN=/var/lib/homelab-chat-run/raw/NEWFI-260921-NEWFDOM-DR221-PRESTATE-FIX411R1-20260921T174459Z.log
7:GIT_CREDENTIAL_CAPABILITY={"host_present":true,"password_present":true,"protocol_present":true,"rc":0,"stderr_sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","username_present":true}
8:GIT_LIVE_REMOTE_FIXED={"head":"9c4814db67759dc09a5469d254c41a7b73f4d89a","matches_local":true,"rc":0,"stderr_sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"}
9:PVESM_STATUS_FALSE_POSITIVE=true
10:PVESM_STATUS_BASELINE={"identical":true,"preflight399_rc":255,"reconcile410_rc":255,"stderr_sha256":"392a23116a78a702472c91f3d369a097fc3e924b89800aa3a8b26910c9f685ec"}
11:RESTORE_STORAGE_FIXED_PROOF={"avail":774342520184,"pvesh_active":true,"pvesm_path_rc":0,"pvesm_path_stderr_sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","pvesm_path_stdout_sha256":"928a78ed5937a1f1f59efc2985b4a2152483fb99c1a68d9c2d9ad9cd971ba73f","storage":"local-lvm","total":869168840704,"type":"lvmthin"}
12:Traceback (most recent call last):
13:  File "<string>", line 1, in <module>
14:    import base64,hashlib,sys,zlib;d=zlib.decompress(base64.b64decode(sys.argv[1]));assert hashlib.sha256(d).hexdigest()==sys.argv[2];exec(compile(d,"<w2-worker>","exec"))
15:                                                                                                                                      ~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
16:  File "<w2-worker>", line 155, in <module>
17:  File "<w2-worker>", line 24, in require
18:RuntimeError: BACKUP_LOCK_PRESENT
EVIDENCE_EXCERPT_END=/var/lib/homelab-chat-run/raw/NEWFI-260921-NEWFDOM-DR221-PRESTATE-FIX411R1-20260921T174459Z.log
EVIDENCE_FILE=/var/lib/homelab-chat-run/raw/SUPPORT-260920-PVEPRO-NAVIGATION-STRUCTURE-STAGING-CLEANUP-806R1-20260920T201822Z.log|SHA256=d1656c50546c728452fb061c7b2afa811337f9e875e7285052aa16f93b58ee74|BYTES=2984
EVIDENCE_EXCERPT_BEGIN=/var/lib/homelab-chat-run/raw/SUPPORT-260920-PVEPRO-NAVIGATION-STRUCTURE-STAGING-CLEANUP-806R1-20260920T201822Z.log
4:MUTATION_BOUNDARY=STAGING_ONLY
5:PRODUCTION_HOST_PRE={"all_link_down":false,"lock":null,"name":"pvepro-prod","operational_fp":"2aba9f764ff0efacd2da02f09826374f877e1b073775cb725ebcf9d9177e8c65","snapshots":[],"status":"running","vmstate":null}
6:STAGING_HOST_PRE={"all_link_down":true,"lock":null,"name":"pvepro-staging-v1","operational_fp":"3ced80db133c962002b31854817a229aa7bca064fe63990884c12c1618db4bf6","snapshots":[],"status":"stopped","vmstate":null}
7:PRODUCTION_APP_PRE={"boardActive":"1","defaultLanguageId":"2","defaultStyleId":"2","errors":20,"forumCount":12,"indexRoute":"portal/","members":{"addon_id":"XF","display_order":600,"enabled":1,"navigation_id":"members","navigation_type_id":"basic","parent_navigation_id":""},"node1":{"display_in_list":1,"display_order":1,"lft":1,"node_id":1,"node_type_id":"Category","parent_node_id":0,"rgt":4,"title":"\u041e\u0441\u043d\u043e\u0432\u043d\u0430\u044f \u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u044f"},"node1Children":1,"node2":{"display_in_list":1,"display_order":1,"lft":2,"node_id":2,"node_type_id":"Forum","parent_node_id":1,"rgt":3,"title":"\u041e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0444\u043e\u0440\u0443\u043c"},"node2Children":0,"node2Posts":0,"node2Threads":0,"nodeCount":18,"portalAddonRows":1,"portalRouteRows":1,"portalTemplateRows":2,"postCount":44,"threadCount":44}
8:FRESH_STAGING_SNAPSHOT_CREATED=true
9:NAVIGATION_STRUCTURE_STAGING_ERROR_CLASS=RuntimeError
10:NAVIGATION_STRUCTURE_STAGING_ERROR_SHA256=495dfb97f24893e5e61b6a539b1dce525b76001c7485f07fabc5f65bc33193b3
11:ROLLBACK_ERROR_CLASS=RuntimeError
12:ROLLBACK_ERROR_SHA256=da52bf5e16c10dcd9a1eb5e197096d278bf01293bf286b843e243c9b3e93eaf5
13:PRODUCTION_APP_AFTER_FAILURE={"boardActive":"1","defaultLanguageId":"2","defaultStyleId":"2","errors":20,"forumCount":12,"indexRoute":"portal/","members":{"addon_id":"XF","display_order":600,"enabled":1,"navigation_id":"members","navigation_type_id":"basic","parent_navigation_id":""},"node1":{"display_in_list":1,"display_order":1,"lft":1,"node_id":1,"node_type_id":"Category","parent_node_id":0,"rgt":4,"title":"\u041e\u0441\u043d\u043e\u0432\u043d\u0430\u044f \u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u044f"},"node1Children":1,"node2":{"display_in_list":1,"display_order":1,"lft":2,"node_id":2,"node_type_id":"Forum","parent_node_id":1,"rgt":3,"title":"\u041e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0444\u043e\u0440\u0443\u043c"},"node2Children":0,"node2Posts":0,"node2Threads":0,"nodeCount":18,"portalAddonRows":1,"portalRouteRows":1,"portalTemplateRows":2,"postCount":44,"threadCount":44}
14:TASK_RESULT=PVEPRO_NAVIGATION_STRUCTURE_STAGING_CLEANUP_FAILED
15:HOMELAB_RESULT_CONTRACT={"changes_made":true,"command_id":"SUPPORT-260920-PVEPRO-NAVIGATION-STRUCTURE-STAGING-CLEANUP-806R1","rollback_restored":false,"rollback_started":true,"status":"FAIL","version":1}
EVIDENCE_EXCERPT_END=/var/lib/homelab-chat-run/raw/SUPPORT-260920-PVEPRO-NAVIGATION-STRUCTURE-STAGING-CLEANUP-806R1-20260920T201822Z.log
EVIDENCE_FILE=/var/lib/homelab-chat-run/raw/HOMELAB-CLUSTER-ADMIN-UPDATES-V42-INCIDENT-ENGINE-CARD-FIXED-PATCH-20260806T001400Z-20260806T001948Z.log|SHA256=4e48bed08b9745291f28aa16054f3c5da12062ecd7e60175462ac5a26cae8292|BYTES=2367
EVIDENCE_EXCERPT_BEGIN=/var/lib/homelab-chat-run/raw/HOMELAB-CLUSTER-ADMIN-UPDATES-V42-INCIDENT-ENGINE-CARD-FIXED-PATCH-20260806T001400Z-20260806T001948Z.log
1:HOMELAB_RESULT_CONTRACT={"changes_made":false,"command_id":"HOMELAB-CLUSTER-ADMIN-UPDATES-V42-INCIDENT-ENGINE-CARD-FIXED-PATCH-20260806T001400Z","command_rc":1,"control_plane_error":null,"mutation_outcome":"ROLLED_BACK","rc":1,"report_bytes":1958,"report_sha256":"8a807a9aac198ab0d18f80ebe9f5e7684f1d5f908c198477340d9f2459e0b85f","rollback_restored":true,"rollback_started":true,"status":"FAIL","version":1}
2:{"changes_made":false,"command_id":"HOMELAB-CLUSTER-ADMIN-UPDATES-V42-INCIDENT-ENGINE-CARD-FIXED-PATCH-20260806T001400Z","error":"RuntimeError: new routes absent from OpenAPI","error_type":"RuntimeError","mutation_outcome":"ROLLED_BACK","remote":{"backup":"/var/backups/homelab-cluster-admin/HOMELAB-CLUSTER-ADMIN-UPDATES-V42-INCIDENT-ENGINE-CARD-FIXED-PATCH-20260806T001400Z/incident-engine-app.py","candidate_sha256":"26787f335382f6d6beff9a31a185e4998f50f91eed9b8b94831619c5a87a9647","changed":false,"error":"RuntimeError: new routes absent from OpenAPI","original_sha256":"17d95ebfc28cef34846a8999664019d5d032ee8176b7fedd9ceeebfc5c97e3b6","rollback_errors":[],"service_after_rollback":{"ActiveState":"active","ExecMainStatus":"0","ExecStart":"{ path=/usr/bin/python3 ; argv[]=/usr/bin/python3 -m uvicorn app:app --host [PRIVATE_IP] --port 8081 --proxy-headers --forwarded-allow-ips=[PRIVATE_IP],[PRIVATE_IP] ; ignore_errors=no ; start_time=[Thu 2026-08-06 00:19:50 UTC] ; stop_time=[n/a] ; pid=2125508 ; code=(null) ; status=0/0 }","FragmentPath":"/etc/systemd/system/cluster-admin-incident-engine.service","LoadState":"loaded","MainPID":"2125508","Result":"success","SubState":"running","UnitFileState":"enabled","WorkingDirectory":"/opt/cluster-admin-incident-engine"},"service_before":{"ActiveState":"active","ExecMainStatus":"0","ExecStart":"{ path=/usr/bin/python3 ; argv[]=/usr/bin/python3 -m uvicorn app:app --host [PRIVATE_IP] --port 8081 --proxy-headers --forwarded-allow-ips=[PRIVATE_IP],[PRIVATE_IP] ; ignore_errors=no ; start_time=[n/a] ; stop_time=[n/a] ; pid=0 ; code=(null) ; status=0/0 }","FragmentPath":"/etc/systemd/system/cluster-admin-incident-engine.service","LoadState":"loaded","MainPID":"487","Result":"success","SubState":"running","UnitFileState":"enabled","WorkingDirectory":"/opt/cluster-admin-incident-engine"},"status":"FAILED_ROLLED_BACK"},"rollback_errors":[],"rollback_restored":true,"rollback_started":true,"schema":42,"status":"FAIL"}
EVIDENCE_EXCERPT_END=/var/lib/homelab-chat-run/raw/HOMELAB-CLUSTER-ADMIN-UPDATES-V42-INCIDENT-ENGINE-CARD-FIXED-PATCH-20260806T001400Z-20260806T001948Z.log
EVIDENCE_FILE=/var/lib/homelab-chat-run/raw/SUPPORT-260921-HOMELAB-BACKUP-DUE-POLICY-FIX-REFRESH-1108R1-20260921T214841Z.log|SHA256=c47bdfa91624238252fdc751e1a53a4637111bfc4d66794ca15b65d122a3b87d|BYTES=10695
EVIDENCE_EXCERPT_BEGIN=/var/lib/homelab-chat-run/raw/SUPPORT-260921-HOMELAB-BACKUP-DUE-POLICY-FIX-REFRESH-1108R1-20260921T214841Z.log
3:MODE=change
4:COMPONENT=homelab-backup-due-policy-fix-refresh
5:MUTATION_BOUNDARY=CANONICAL_ACTIVE_VM_DUE_POLICY_86400_TO_72000_PLUS_TARGETED_BACKUPV2_REFRESH;NO_APP_BACKUP;NO_VPS_BACKUP;NO_XENFORO_BACKUP;NO_GC;NO_MAIL;NO_GIT_WRITE;NO_LOCK_BREAK
6:IDENTITY_GATES=PASS
7:TIMER_PRESTATE={"active":true,"enabled":true}
8:OWNER_WAIT={"clear_stable":1,"elapsed_seconds":0,"heavy_lock_free":true,"state":{"active":"inactive","exec_main_status":0,"mainpid":0,"result":"success","sub":"dead"}}
9:OWNER_WAIT={"clear_stable":2,"elapsed_seconds":10,"heavy_lock_free":true,"state":{"active":"inactive","exec_main_status":0,"mainpid":0,"result":"success","sub":"dead"}}
10:HEAVY_LOCK_OWNED_BY_1108=true
11:SELFTEST_REPLACEMENT486=PASS
12:TARGETS_SHA256_BEFORE=a723befc7fd42d70af9088406598f18156dc3b4c76d8b34c4bb725dfaa48dd38
13:ACTIVE_VM_CANONICAL={"110":"ct110","111":"ct111","112":"ct112","113":"ct113","130":"vm130","150":"vm150","160":"vm160","170":"vm170","171":"vm171","190":"vm190","9130":"vm9130"}
14:POLICY_PATCH=[{"after":72000,"before":86400,"logical_id":"ct110"},{"after":72000,"before":86400,"logical_id":"ct111"},{"after":72000,"before":86400,"logical_id":"ct112"},{"after":72000,"before":86400,"logical_id":"ct113"},{"after":72000,"before":86400,"logical_id":"vm130"},{"after":72000,"before":86400,"logical_id":"vm150"},{"after":72000,"before":86400,"logical_id":"vm160"},{"after":72000,"before":86400,"logical_id":"vm170"},{"after":72000,"before":86400,"logical_id":"vm171"},{"after":72000,"before":86400,"logical_id":"vm190"},{"after":72000,"before":86400,"logical_id":"vm9130"}]
15:TARGETS_SHA256_AFTER=aa4a75455bbfe92afaf666e8d404b35c5b41e70bc014e770c9301865ee84e221
16:EFFECTIVE_ACTIVE_VM_POLICY=[{"due_seconds":72000,"logical_id":"ct110","vmid":110},{"due_seconds":72000,"logical_id":"ct111","vmid":111},{"due_seconds":72000,"logical_id":"ct112","vmid":112},{"due_seconds":72000,"logical_id":"ct113","vmid":113},{"due_seconds":72000,"logical_id":"vm130","vmid":130},{"due_seconds":72000,"logical_id":"vm150","vmid":150},{"due_seconds":72000,"logical_id":"vm160","vmid":160},{"due_seconds":72000,"logical_id":"vm170","vmid":170},{"due_seconds":72000,"logical_id":"vm171","vmid":171},{"due_seconds":72000,"logical_id":"vm190","vmid":190},{"due_seconds":72000,"logical_id":"vm9130","vmid":9130}]
17:OVERLAY_SELFTEST={"output_sha256":"52a58722c943e42fe5d8c633ff6c1301058a1b494d94162a8062ff32e3e86aa2","status":"PASS"}
18:RPO_BEFORE_REFRESH=[{"age_seconds":86256,"generation":"v2-ct112-20260920T214958Z-30e3291e1543","logical_id":"ct112","replica_count":2,"result":"SUCCESS","state":"STALE","vmid":112},{"age_seconds":84091,"generation":"v2-ct113-20260920T222532Z-4f4a608def82","logical_id":"ct113","replica_count":2,"result":"SUCCESS","state":"STALE","vmid":113},{"age_seconds":78699,"generation":"v2-vm130-20260920T233759Z-c9518c8be2c3","logical_id":"vm130","replica_count":2,"result":"SUCCESS","state":"STALE","vmid":130},{"age_seconds":81985,"generation":"v2-vm150-20260920T230035Z-e0880e47ea55","logical_id":"vm150","replica_count":2,"result":"SUCCESS","state":"STALE","vmid":150},{"age_seconds":77232,"generation":"v2-vm160-20260921T001432Z-31df1acfee7a","logical_id":"vm160","replica_count":2,"result":"SUCCESS","state":"STALE","vmid":160},{"age_seconds":75455,"generation":"v2-vm171-20260921T004759Z-537db1552014","logical_id":"vm171","replica_count":2,"result":"SUCCESS","state":"STALE","vmid":171},{"age_seconds":73193,"generation":"v2-vm190-20260921T012544Z-298b64987988","logical_id":"vm190","replica_count":2,"result":"SUCCESS","state":"STALE","vmid":190}]
19:RPO_STALE_COUNT_BEFORE_REFRESH=7
41:TARGET_REFRESH_END={"elapsed_seconds":235,"iteration":7,"result":{"allocator_healthy":13,"generation":"v2-vm190-20260921T223421Z-1f4f2306e4e0","logical_id":"vm190","payload_bytes":1632550425,"replicas":2,"result":"SUCCESS"}}
42:RPO_AFTER_REFRESH=[]
43:RPO_STALE_COUNT_AFTER=0
44:ACTIVE_VM_STATE_AFTER=[{"age_seconds":7788,"generation":"v2-ct110-20260921T202514Z-1c872adccfab","logical_id":"ct110","replica_count":2,"result":"SUCCESS","state":"FRESH","vmid":110},{"age_seconds":7641,"generation":"v2-ct111-20260921T202833Z-208ada4fafce","logical_id":"ct111","replica_count":2,"result":"SUCCESS","state":"FRESH","vmid":111},{"age_seconds":2883,"generation":"v2-ct112-20260921T214852Z-cd43a8d672fe","logical_id":"ct112","replica_count":2,"result":"SUCCESS","state":"FRESH","vmid":112},{"age_seconds":2800,"generation":"v2-ct113-20260921T215013Z-af1017371806","logical_id":"ct113","replica_count":2,"result":"SUCCESS","state":"FRESH","vmid":113},{"age_seconds":1088,"generation":"v2-vm130-20260921T215355Z-2425c616d2e0","logical_id":"vm130","replica_count":2,"result":"SUCCESS","state":"FRESH","vmid":130},{"age_seconds":2661,"generation":"v2-vm150-20260921T215136Z-b85020c7d3e4","logical_id":"vm150","replica_count":2,"result":"SUCCESS","state":"FRESH","vmid":150},{"age_seconds":519,"generation":"v2-vm160-20260921T222008Z-7c82c237c154","logical_id":"vm160","replica_count":2,"result":"SUCCESS","state":"FRESH","vmid":160},{"age_seconds":71416,"generation":"v2-vm170-20260921T023516Z-53ad6a6b10f9","logical_id":"vm170","replica_count":2,"result":"SUCCESS","state":"FRESH","vmid":170},{"age_seconds":235,"generation":"v2-vm171-20260921T222937Z-3e5e94c908e8","logical_id":"vm171","replica_count":2,"result":"SUCCESS","state":"FRESH","vmid":171},{"age_seconds":0,"generation":"v2-vm190-20260921T223421Z-1f4f2306e4e0","logical_id":"vm190","replica_count":2,"result":"SUCCESS","state":"FRESH","vmid":190},{"age_seconds":64819,"generation":"v2-vm9130-20260921T041152Z-ab9908f2946f","logical_id":"vm9130","replica_count":2,"result":"SUCCESS","state":"FRESH","vmid":9130}]
45:REFRESH_HISTORY=[{"elapsed_seconds":81,"iteration":1,"logical_id":"ct112","vmid":112},{"elapsed_seconds":83,"iteration":2,"logical_id":"ct113","vmid":113},{"elapsed_seconds":139,"iteration":3,"logical_id":"vm150","vmid":150},{"elapsed_seconds":1572,"iteration":4,"logical_id":"vm130","vmid":130},{"elapsed_seconds":568,"iteration":5,"logical_id":"vm160","vmid":160},{"elapsed_seconds":284,"iteration":6,"logical_id":"vm171","vmid":171},{"elapsed_seconds":235,"iteration":7,"logical_id":"vm190","vmid":190}]
46:HEAVY_LOCK_RELEASED=true
47:TIMER_POSTSTATE={"active":true,"enabled":true}
48:POLICY_ALIGNMENT=CANONICAL_ACTIVE_VM_DUE_72000_EQUALS_RPO_72000
49:DECISION=RPO_CLEAR_FINAL_CLOSURE_ALLOWED
50:TASK_RESULT=PASS_HOMELAB_BACKUP_DUE_POLICY_FIX_REFRESH
51:HOMELAB_RESULT_CONTRACT={"changes_made":true,"command_id":"SUPPORT-260921-HOMELAB-BACKUP-DUE-POLICY-FIX-REFRESH-1108R1","rollback_restored":null,"rollback_started":false,"status":"OK","version":1}
52:WORKERS2_DUE_POLICY_FIX_REFRESH_END=1
EVIDENCE_EXCERPT_END=/var/lib/homelab-chat-run/raw/SUPPORT-260921-HOMELAB-BACKUP-DUE-POLICY-FIX-REFRESH-1108R1-20260921T214841Z.log
EVIDENCE_FILE=/var/lib/homelab-chat-run/raw/SUPPORT-260920-PVEPRO-V1-RUSSIAN-CORE-723R2-20260920T001845Z.log|SHA256=c710cc01e97c437dde1f87f2788d724889e53d913c6883dfb59b773717c0b6a6|BYTES=1532
EVIDENCE_EXCERPT_BEGIN=/var/lib/homelab-chat-run/raw/SUPPORT-260920-PVEPRO-V1-RUSSIAN-CORE-723R2-20260920T001845Z.log
34:PHP_OUTPUT_END
35:STAGE_PREFLIGHT_OUTPUT_END
36:STAGE_IMPORT_PREFLIGHT_OK=true
37:STAGE_SNAPSHOT_RC=0
38:STAGE_XML_TRANSFER_RC=255
39:RUSSIAN_CORE_ERROR=RuntimeError:STAGE_XML_TRANSFER
40:ROLLBACK_PRODUCTION_RESTORED=true
41:ROLLBACK_STAGING_RESTORED=true
42:TASK_RESULT=PVEPRO_V1_RUSSIAN_CORE_FAILED_ROLLED_BACK
43:HOMELAB_RESULT_CONTRACT={"version":1,"command_id":"SUPPORT-260920-PVEPRO-V1-RUSSIAN-CORE-723R2","status":"FAIL","changes_made":true,"rollback_started":true,"rollback_restored":true}
EVIDENCE_EXCERPT_END=/var/lib/homelab-chat-run/raw/SUPPORT-260920-PVEPRO-V1-RUSSIAN-CORE-723R2-20260920T001845Z.log
EVIDENCE_FILE=/var/lib/homelab-chat-run/raw/SIGNALBOT-260908-SEALED-ACTIVATION-043ACT6-20260908T161249Z.log|SHA256=4248a85987d577736cb9af552da129250abd2334714d2d3c6c457b3cba3df38b|BYTES=6406
EVIDENCE_EXCERPT_BEGIN=/var/lib/homelab-chat-run/raw/SIGNALBOT-260908-SEALED-ACTIVATION-043ACT6-20260908T161249Z.log
5:SB043A6_RUNNER_ROLLBACK_RULES=OK
6:SB043A6_QGA_BYTES={"activation":23412,"limit":921600,"probe":1507}
7:SB043A6_VM170_CLUSTER={"name":"core-apps","node":"pve01","status":"running","type":"qemu"}
8:SB043A6_PREMUTATION_GOLDEN={"expected_new_experiment_id":"7e0f31f4e35667f8121d3465772af2ec6c75d2243602228584c132cff2f53960","expected_new_runtime_manifest_id":"a6a4f903e7e6aa309d8c7d181fbe613fae95f11077dff0fc2ceb7c331fb75389","experiment_changed_keys":["code_identity","collection_start_at","experiment_id","runtime_manifest_id"],"experiment_class":{"end_lineno":175,"lineno":43,"module":"demonov_forward_map.live_prospective","source_sha256":"f83f48dfeb4dc1382ebf3c77b7ec27deaeac6eec4a5dc097f90600963f0e4e98"},"experiment_old_reproduced":true,"new_collection_start_at":"2026-09-09T00:00:00+00:00","new_experiment_id":"7e0f31f4e35667f8121d3465772af2ec6c75d2243602228584c132cff2f53960","new_package_identity":"177ddb229c5bc4376b5f75948ed9467edac55db60b6880ad0cb662758702d34b","new_runtime_manifest_id":"a6a4f903e7e6aa309d8c7d181fbe613fae95f11077dff0fc2ceb7c331fb75389","runtime_manifest_old_reproduced":true}
9:SB043A6_DEPLOY_INTENT_SHA256=420891e89ee2807d830db7488eea13b5e1cb3de6216248a782acd333cc7b2741
10:SB043A6_ERROR=RuntimeError:RESTART_COUNT_CHANGED_DURING_STABILITY
11:SB043A6_ROLLBACK={"compose_old_rc":0,"env_restored":true,"failed_epoch":"/opt/stacks/8020-demonov-shadow/data/failed/7e0f31f4e35667f8121d3465772af2ec6c75d2243602228584c132cff2f53960-SIGNALBOT-260908-SEALED-ACTIVATION-043ACT6","old_epoch_scientific_continuity":"INVALIDATED_BY_CUTOVER","old_services_restored":true,"reason":"RuntimeError:RESTART_COUNT_CHANGED_DURING_STABILITY","services":[{"id":"fb2ea07fbdc5","image":"8020-demonov-shadow:e32760c69a4311728db9066ee8bf2bf66b1e5a70","image_id":"sha256:403c4266282a56cb210bed95cd58295692296502913e7440e2133d7b5664c736","restart_count":0,"running":true,"service":"worker"},{"id":"11e755ced086","image":"8020-demonov-shadow:e32760c69a4311728db9066ee8bf2bf66b1e5a70","image_id":"sha256:403c4266282a56cb210bed95cd58295692296502913e7440e2133d7b5664c736","restart_count":0,"running":true,"service":"shadow"},{"id":"94cd3b1db919","image":"8020-demonov-shadow:e32760c69a4311728db9066ee8bf2bf66b1e5a70","image_id":"sha256:403c4266282a56cb210bed95cd58295692296502913e7440e2133d7b5664c736","restart_count":0,"running":true,"service":"relay"},{"id":"c05448fb766e","image":"8020-demonov-shadow:e32760c69a4311728db9066ee8bf2bf66b1e5a70","image_id":"sha256:403c4266282a56cb210bed95cd58295692296502913e7440e2133d7b5664c736","restart_count":0,"running":true,"service":"collector"}]}
12:SB043A6_GUEST_DECISION=ROLLED_BACK
13:SB043A6_ACTIVATION_QGA={"rc":3,"stderr_present":false}
14:SB043A6_INDEPENDENT_POSTSTATE={"activation_dir_exists":true,"env":{"APP_IMAGE":"8020-demonov-shadow:e32760c69a4311728db9066ee8bf2bf66b1e5a70","CODE_IDENTITY":"e32760c69a4311728db9066ee8bf2bf66b1e5a70","COLLECTION_START_AT":"2026-09-07T00:00:00+00:00","EXPERIMENT_ID":"ec477ea41ecbd5cfdef5afc259595aab20674a7d933f41a389329ff05098b338","RUNTIME_MANIFEST_ID":"58d3b59200bdc0eb8d448612679d667b194263586cb3198dfc08597935053a1a"},"result":{"changes_made":true,"collection_start_at":"2026-09-09T00:00:00+00:00","command_id":"SIGNALBOT-260908-SEALED-ACTIVATION-043ACT6","new_experiment_id":"7e0f31f4e35667f8121d3465772af2ec6c75d2243602228584c132cff2f53960","new_runtime_manifest_id":"a6a4f903e7e6aa309d8c7d181fbe613fae95f11077dff0fc2ceb7c331fb75389","poststate":null,"reason":"RuntimeError:RESTART_COUNT_CHANGED_DURING_STABILITY","rollback":{"compose_old_rc":0,"env_restored":true,"failed_epoch":"/opt/stacks/8020-demonov-shadow/data/failed/7e0f31f4e35667f8121d3465772af2ec6c75d2243602228584c132cff2f53960-SIGNALBOT-260908-SEALED-ACTIVATION-043ACT6","old_epoch_scientific_continuity":"INVALIDATED_BY_CUTOVER","old_services_restored":true,"reason":"RuntimeError:RESTART_COUNT_CHANGED_DURING_STABILITY","services":[{"id":"fb2ea07fbdc5","image":"8020-demonov-shadow:e32760c69a4311728db9066ee8bf2bf66b1e5a70","image_id":"sha256:403c4266282a56cb210bed95cd58295692296502913e7440e2133d7b5664c736","restart_count":0,"running":true,"service":"worker"},{"id":"11e755ced086","image":"8020-demonov-shadow:e32760c69a4311728db9066ee8bf2bf66b1e5a70","image_id":"sha256:403c4266282a56cb210bed95cd58295692296502913e7440e2133d7b5664c736","restart_count":0,"running":true,"service":"shadow"},{"id":"94cd3b1db919","image":"8020-demonov-shadow:e32760c69a4311728db9066ee8bf2bf66b1e5a70","image_id":"sha256:403c4266282a56cb210bed95cd58295692296502913e7440e2133d7b5664c736","restart_count":0,"running":true,"service":"relay"},{"id":"c05448fb766e","image":"8020-demonov-shadow:e32760c69a4311728db9066ee8bf2bf66b1e5a70","image_id":"sha256:403c4266282a56cb210bed95cd58295692296502913e7440e2133d7b5664c736","restart_count":0,"running":true,"service":"collector"}]},"rollback_restored":true,"rollback_started":true,"status":"ROLLED_BACK","ts_utc":"2026-09-08T16:13:30.709680+00:00"},"services":[{"image":"8020-demonov-shadow:e32760c69a4311728db9066ee8bf2bf66b1e5a70","image_id":"sha256:403c4266282a56cb210bed95cd58295692296502913e7440e2133d7b5664c736","restart_count":0,"running":true,"service":"worker","started_at":"2026-09-08T16:13:24.651452057Z"},{"image":"8020-demonov-shadow:e32760c69a4311728db9066ee8bf2bf66b1e5a70","image_id":"sha256:403c4266282a56cb210bed95cd58295692296502913e7440e2133d7b5664c736","restart_count":0,"running":true,"service":"shadow","started_at":"2026-09-08T16:13:24.622406089Z"},{"image":"8020-demonov-shadow:e32760c69a4311728db9066ee8bf2bf66b1e5a70","image_id":"sha256:403c4266282a56cb210bed95cd58295692296502913e7440e2133d7b5664c736","restart_count":0,"running":true,"service":"relay","started_at":"2026-09-08T16:13:24.580556381Z"},{"image":"8020-demonov-shadow:e32760c69a4311728db9066ee8bf2bf66b1e5a70","image_id":"sha256:403c4266282a56cb210bed95cd58295692296502913e7440e2133d7b5664c736","restart_count":0,"running":true,"service":"collector","started_at":"2026-09-08T16:13:24.5384991Z"}]}
15:SB043A6_HOLDS=["ROLLBACK_RESTORED"]
16:SB043A6_DECISION=ACTIVATION_FAILED_ROLLBACK_RESTORED
17:HOMELAB_RESULT_CONTRACT={"changes_made":true,"command_id":"SIGNALBOT-260908-SEALED-ACTIVATION-043ACT6","rollback_restored":true,"rollback_started":true,"status":"FAIL","version":1}
EVIDENCE_EXCERPT_END=/var/lib/homelab-chat-run/raw/SIGNALBOT-260908-SEALED-ACTIVATION-043ACT6-20260908T161249Z.log
EVIDENCE_FILE=/var/lib/homelab-chat-run/raw/NEWFI-260919-NEWFDOM-EVENTBOT212-CENSUS158-20260919T203531Z.log|SHA256=97810d1b2a4ebdd78245e6973bfc06db36a80854e201590f59f38797863af433|BYTES=350
EVIDENCE_EXCERPT_BEGIN=/var/lib/homelab-chat-run/raw/NEWFI-260919-NEWFDOM-EVENTBOT212-CENSUS158-20260919T203531Z.log
1:NEWFI158_BEGIN=true
2:COMMAND_ID=NEWFI-260919-NEWFDOM-EVENTBOT212-CENSUS158
3:NEWFI158_ERROR=RuntimeError_4d60c67a25232b60cfe91b5800f12bdfb95b707a3e576d2ab566498a60b10b8a
4:HOMELAB_RESULT_CONTRACT={"version":1,"command_id":"NEWFI-260919-NEWFDOM-EVENTBOT212-CENSUS158","status":"FAIL","changes_made":false,"rollback_started":false,"rollback_restored":null}
EVIDENCE_EXCERPT_END=/var/lib/homelab-chat-run/raw/NEWFI-260919-NEWFDOM-EVENTBOT212-CENSUS158-20260919T203531Z.log
EVIDENCE_FILE=/var/lib/homelab-chat-run/raw/HOMELAB-CLUSTER-KB-V1-EXACT-OUTPUT-PROJECTION-READ-ONLY-20260805T130500Z-20260805T130801Z.log|SHA256=2a7ec04b2e7036e6cc5751216e516b7d78ef56dc135326379580ef58dbc66a29|BYTES=12076
EVIDENCE_EXCERPT_BEGIN=/var/lib/homelab-chat-run/raw/HOMELAB-CLUSTER-KB-V1-EXACT-OUTPUT-PROJECTION-READ-ONLY-20260805T130500Z-20260805T130801Z.log
1:HOMELAB_RESULT_CONTRACT={"changes_made":false,"command_id":"HOMELAB-CLUSTER-KB-V1-EXACT-OUTPUT-PROJECTION-READ-ONLY-20260805T130500Z","command_rc":0,"mutation_outcome":"NO_MUTATION","output_truncated_in_json":false,"rc":0,"rollback_restored":null,"rollback_started":false,"status":"OK","version":1}
2:{"bounded_adapter_scan":null,"changes_made":false,"command_id":"HOMELAB-CLUSTER-KB-V1-EXACT-OUTPUT-PROJECTION-READ-ONLY-20260805T130500Z","command_rc":0,"evidence_bundle":{"bundle_bytes_ok":true,"bundle_sha256_ok":true,"exists":true,"member_count":6,"output_member_matches":0,"path_is_exact_from_previous_result":true,"runner_json_member_matches":1,"runner_text_member_matches":1,"unsafe_member_rejected":false},"files_written":false,"mutation_outcome":"NO_MUTATION","network_requests_made":false,"next_action":"RUN_ONE_READ_ONLY_GITEA_DEFINED_CLUSTER_FACT_AND_DOCUMENT_GAP_ANALYSIS","output_truncated_in_json":false,"pre_command_known_error_gate":{"checked":true,"count":28,"ids":["candidate-file-limit-600-20260805","runner-wrapper-mismatch-after-success-20260805","canonical-cluster-handbook-ambiguous-20260805","pvesh-adapter-context-unreadable-20260805","homelab-ops-bare-repository-not-found-local-20260805","gitea-network-fallback-stage-not-emitted-20260805","gitea-owner-hardcoded-homelab-admin-20260805","gitea-git-auth-required-or-credential-unavailable-20260805","gitea-process-self-match-payload-name-20260805","sanitize-bool-attributeerror-20260805","reader-v3-path-misclassified-as-route-20260805","reader-v3-loopback-assumption-20260805","reader-v3-capability-not-treated-as-secret-20260805","reader-v3-systemd-unit-fed-to-python-ast-20260805","reader-v3-helper-control-flow-not-traced-20260805","reader-v3-post-capability-operation-not-derived-20260805","reader-v3-detected-operations-not-tested-20260805","reader-v3-manifest-global-not-bound-in-sandbox-20260805","reader-v3-result-file-second-source-not-read-20260805","reader-v3-negative-control-mixed-with-production-20260805","reader-v3-manifest-schema-guessed-20260805","reader-result-output-bound-after-compaction-20260805","reader-v3-generation-record-shape-guessed-20260805","reader-v3-result-file-assumed-standalone-json-20260805","reader-v3-gitea-detail-marker-false-inventory-20260805","reverse-proxy-runtime-not-visible-on-host-20260805","gitea-public-owner-not-anonymously-discoverable-20260805","exact-output-long-line-not-projectable-by-portal-view-20260805"]},"projection":{"analysis_outcome":{"error_fingerprint":"26d65952ac8f64197a6fd76ec56e3b5ffda8c4838efe2af2947a603d01270b92","next_action":"RUN_ONE_READ_ONLY_GITEA_DEFINED_CLUSTER_FACT_AND_DOCUMENT_GAP_ANALYSIS","ready_for_gitea_defined_cluster_fact_analysis":true,"root_cause_classification":"GITEA_CLUSTER_HANDBOOK_AND_ERROR_SYSTEM_DEEPLY_ANALYZED","status":"OK"},"canonical_handbook":{"candidates":[{"canonical_phrase_hits":3,"canonical_score":227,"content_sha256":"8051e3e761493a1b7088a0f3ed7e0aa9218673f453ca88171178364d26701f64","headings":[],"inbound_reference_count":8,"path":"errors/regression-cases.json"},{"canonical_phrase_hits":0,"canonical_score":74,"content_sha256":"a49bcb32ac7212d7fb9768db8a277cb5525c873c84dd6fb633edae35dc6de532","headings":[],"inbound_reference_count":0,"path":"tasks/cluster-cloud-quorum-vm160-canary-v1/phases/preflight.sh"},{"canonical_phrase_hits":1,"canonical_score":56,"content_sha256":"ac5dc881dcd9fcb72644bc893e866f463c9c2b9b4544e32434e21b5d34168fb5","headings":[],"inbound_reference_count":1,"path":"inventory/access-paths.json"},{"canonical_phrase_hits":0,"canonical_score":55,"content_sha256":"666072447ba11d346772f62f274dadc974c4463e20f67e67f82f228f1fcf2ce8","headings":[],"inbound_reference_count":0,"path":"tasks/cluster-cloud-quorum-vm160-canary-v1/phases/rollback.sh"},{"canonical_phrase_hits":0,"canonical_score":54,"content_sha256":"636254d2526f0f62184d47cdb4c30c2831b11869c2000c557666f60b55d7691b","headings":[],"inbound_reference_count":0,"path":"tasks/cluster-cloud-quorum-vm160-canary-v1/task.json"}],"path":"errors/regression-cases.json","status":"UNIQUE_CONFIRMED"},"documentation_coverage":{"access":{"file_count":22,"paths":["changes/CR-2026-0018/regression-cases-draft.json","docs/planned/skladchik-moderator-assistant.md","errors/regression-cases.json","inventory/access-paths.json","tasks/cluster-
EVIDENCE_EXCERPT_END=/var/lib/homelab-chat-run/raw/HOMELAB-CLUSTER-KB-V1-EXACT-OUTPUT-PROJECTION-READ-ONLY-20260805T130500Z-20260805T130801Z.log
EVIDENCE_FILE=/var/lib/homelab-chat-run/raw/CLUSTER-REFERENCE-PUBLISHER-RESTORE-CLOSEOUT-202-20260722T134716Z.log|SHA256=dde48f85d2055be98a15b781774b58654934a8dbad202028b8dad807e8b47aa7|BYTES=585
EVIDENCE_EXCERPT_BEGIN=/var/lib/homelab-chat-run/raw/CLUSTER-REFERENCE-PUBLISHER-RESTORE-CLOSEOUT-202-20260722T134716Z.log
1:validation=PASS
2:Traceback (most recent call last):
3:  File "<string>", line 1, in <module>
4:    import re,pathlib,sys;p=pathlib.Path(sys.argv[1]).read_text();m=re.search(r"(?m)^.*\bcat\b[^\n]*<<-?[ \t]*([\"\x27]?)([A-Za-z_][A-Za-z0-9_]*)\1[^\n]*\n",p);assert m;d=m.group(2);s=m.end();e=re.search(r"(?m)^\t*"+re.escape(d)+r"[ \t]*$",p[s:]);assert e;pathlib.Path(sys.argv[2]).write_text(p[s:s+e.start()])
5:                                                                                                                                                                       ^
6:AssertionError
EVIDENCE_EXCERPT_END=/var/lib/homelab-chat-run/raw/CLUSTER-REFERENCE-PUBLISHER-RESTORE-CLOSEOUT-202-20260722T134716Z.log
EVIDENCE_FILE=/var/lib/homelab-chat-run/raw/GRAM1-SITE-BASELINE-EDITING-DOSSIER-V3-20260731T080000Z-20260731T080429Z.log|SHA256=4d5a019c5e832c7c70156cb62a47325f19e96fc59da65f6c795f3a4494d1d283|BYTES=658
EVIDENCE_EXCERPT_BEGIN=/var/lib/homelab-chat-run/raw/GRAM1-SITE-BASELINE-EDITING-DOSSIER-V3-20260731T080000Z-20260731T080429Z.log
1:HOMELAB_RESULT_CONTRACT={"changes_made":false,"command_id":"GRAM1-SITE-BASELINE-EDITING-DOSSIER-V3-20260731T080000Z","rollback_restored":null,"rollback_started":false,"status":"FAIL","version":1}
2:{"changes_made":false,"command_id":"GRAM1-SITE-BASELINE-EDITING-DOSSIER-V3-20260731T080000Z","error":"RuntimeError: Gitea clone failed rc=128 Cloning into '/tmp/gram1-site-dossier-v3-mwkj3yow/repo'...\nfatal: could not read Username for 'https://git.gram1.ru': terminal prompts disabled\n","gitea_changed":false,"mutation_outcome":"NO_MUTATION","production_site_changed":false,"rc":1,"rollback_restored":null,"rollback_started":false,"schema":1,"status":"FAIL"}
EVIDENCE_EXCERPT_END=/var/lib/homelab-chat-run/raw/GRAM1-SITE-BASELINE-EDITING-DOSSIER-V3-20260731T080000Z-20260731T080429Z.log
EVIDENCE_FILE=/var/lib/homelab-chat-run/raw/GITEA-V4-AND-SUPERSEDED-LOCK-IMPLEMENT-20260730T160621Z-20260730T160710Z.log|SHA256=0d5dcb323f85974a9010cdd3edf9428f1d4536c6c8aedc55efadc15802160d0a|BYTES=469
EVIDENCE_EXCERPT_BEGIN=/var/lib/homelab-chat-run/raw/GITEA-V4-AND-SUPERSEDED-LOCK-IMPLEMENT-20260730T160621Z-20260730T160710Z.log
1:HOMELAB_RESULT_CONTRACT={"changes_made":false,"command_id":"GITEA-V4-AND-SUPERSEDED-LOCK-IMPLEMENT-20260730T160621Z","rollback_restored":null,"rollback_started":false,"status":"FAIL","version":1}
2:{"changes_made":false,"command_id":"GITEA-V4-AND-SUPERSEDED-LOCK-IMPLEMENT-20260730T160621Z","error":"RuntimeError: V3 package hash mismatch: phases/rollback.sh","mutation_outcome":"NO_MUTATION","rollback_restored":null,"rollback_started":false,"schema":1,"status":"FAIL"}
EVIDENCE_EXCERPT_END=/var/lib/homelab-chat-run/raw/GITEA-V4-AND-SUPERSEDED-LOCK-IMPLEMENT-20260730T160621Z-20260730T160710Z.log
EVIDENCE_FILE=/var/lib/homelab-chat-run/raw/NEWFI-260918-NEWFDOM-ACCESS203-AUDIT93R8-20260918T185739Z.log|SHA256=e8ec9c45af63e271bab943a405e2123124e6bf50515891e1d3fc59625defe344|BYTES=373
EVIDENCE_EXCERPT_BEGIN=/var/lib/homelab-chat-run/raw/NEWFI-260918-NEWFDOM-ACCESS203-AUDIT93R8-20260918T185739Z.log
1:NEWFI93R8_BEGIN
2:COMMAND_ID=NEWFI-260918-NEWFDOM-ACCESS203-AUDIT93R8
3:NEWFI93R8_GIT={"branch":"implementation/newfi-closed-mvp-20260906","clean":true,"head":"b87bf90703e3471c05d6d2b0cb228e9b691ffe4f","remote":"origin"}
4:NEWFI93R8_SAFE_REPORT={"changes_made":false,"decision":"FAIL_ACCESS203_AUDIT_HOLD","error":"RuntimeError:GUEST_FAIL:pve03:RuntimeError:STAGING_ERROR_BASE"}
EVIDENCE_EXCERPT_END=/var/lib/homelab-chat-run/raw/NEWFI-260918-NEWFDOM-ACCESS203-AUDIT93R8-20260918T185739Z.log
EVIDENCE_FILE=/var/lib/homelab-chat-run/raw/SUPPORT-260921-PVEPRO-GRAM-SUPPORT-STAGING-INSTALL-RENDER-GUEST-SYNTAX-RETRY-868R1-20260921T053822Z.log|SHA256=3a41fc0f695ad6b28d64fb5afacb5fb71169c697b9cad335d5a7afbef2584217|BYTES=7626
EVIDENCE_EXCERPT_BEGIN=/var/lib/homelab-chat-run/raw/SUPPORT-260921-PVEPRO-GRAM-SUPPORT-STAGING-INSTALL-RENDER-GUEST-SYNTAX-RETRY-868R1-20260921T053822Z.log
9:FRESH_STAGING_SNAPSHOT_CREATED=true
10:STAGING_APP_PRE={"addon":null,"boardActive":"0","defs":[],"entries":[],"errors":16,"jobs":[],"mods":[],"posts":44,"siteId":"","src_addon":0,"src_js":0,"tables":[],"threads":44}
11:PERMISSION_REBUILD={"iterations":1,"remaining":0}
12:STAGING_STATE_AFTER_INSTALL={"addon":{"active":1,"version_id":1000120},"boardActive":"0","defs":[{"permission_group_id":"gramSupport","permission_id":"assign"},{"permission_group_id":"gramSupport","permission_id":"create"},{"permission_group_id":"gramSupport","permission_id":"internalNotes"},{"permission_group_id":"gramSupport","permission_id":"manage"},{"permission_group_id":"gramSupport","permission_id":"replyOwn"},{"permission_group_id":"gramSupport","permission_id":"view"},{"permission_group_id":"gramSupport","permission_id":"viewAll"},{"permission_group_id":"gramSupport","permission_id":"viewOwn"},{"permission_group_id":"gramSupport","permission_id":"viewTechnicalContext"}],"entries":[{"permission_group_id":"gramSupport","permission_id":"create","permission_value":"allow","permission_value_int":0,"user_group_id":2,"user_id":0},{"permission_group_id":"gramSupport","permission_id":"replyOwn","permission_value":"allow","permission_value_int":0,"user_group_id":2,"user_id":0},{"permission_group_id":"gramSupport","permission_id":"view","permission_value":"allow","permission_value_int":0,"user_group_id":2,"user_id":0},{"permission_group_id":"gramSupport","permission_id":"viewOwn","permission_value":"allow","permission_value_int":0,"user_group_id":2,"user_id":0},{"permission_group_id":"gramSupport","permission_id":"assign","permission_value":"allow","permission_value_int":0,"user_group_id":3,"user_id":0},{"permission_group_id":"gramSupport","permission_id":"create","permission_value":"allow","permission_value_int":0,"user_group_id":3,"user_id":0},{"permission_group_id":"gramSupport","permission_id":"internalNotes","permission_value":"allow","permission_value_int":0,"user_group_id":3,"user_id":0},{"permission_group_id":"gramSupport","permission_id":"manage","permission_value":"allow","permission_value_int":0,"user_group_id":3,"user_id":0},{"permission_group_id":"gramSupport","permission_id":"replyOwn","permission_value":"allow","permission_value_int":0,"user_group_id":3,"user_id":0},{"permission_group_id":"gramSupport","permission_id":"view","permission_value":"allow","permission_value_int":0,"user_group_id":3,"user_id":0},{"permission_group_id":"gramSupport","permission_id":"viewAll","permission_value":"allow","permission_value_int":0,"user_group_id":3,"user_id":0},{"permission_group_id":"gramSupport","permission_id":"viewOwn","permission_value":"allow","permission_value_int":0,"user_group_id":3,"user_id":0},{"permission_group_id":"gramSupport","permission_id":"viewTechnicalContext","permission_value":"allow","permission_value_int":0,"user_group_id":3,"user_id":0},{"permission_group_id":"gramSupport","permission_id":"assign","permission_value":"allow","permission_value_int":0,"user_group_id":4,"user_id":0},{"permission_group_id":"gramSupport","permission_id":"create","permission_value":"allow","permission_value_int":0,"user_group_id":4,"user_id":0},{"permission_group_id":"gramSupport","permission_id":"internalNotes","permission_value":"allow","permission_value_int":0,"user_group_id":4,"user_id":0},{"permission_group_id":"gramSupport","permission_id":"manage","permission_value":"allow","permission_value_int":0,"user_group_id":4,"user_id":0},{"permission_group_id":"gramSupport","permission_id":"replyOwn","permission_value":"allow","permission_value_int":0,"user_group_id":4,"user_id":0},{"permission_group_id":"gramSupport","permission_id":"view","permission_value":"allow","permission_value_int":0,"user_group_id":4,"user_id":0},{"permission_group_id":"gramSupport","permission_id":"viewAll","permission_value":"allow","permission_value_int":0,"user_group_id":4,"user_id":0},{"permission_group_id":"gramSupport","permission_id":"viewOwn","permission_value":"allow","permission_value_int":0,"user_group_id":4,"user_id":0},{"permission_group_id":"gramSupport","permission_id":"viewTechnicalContext","permission_value":"allow","permission_value_int":0,"user_group_id":4,"user_id":0}],"errors":16,"jobs":[],"mods":[{"action":"str_replace","enabled"
13:RENDER_DIAGNOSTIC={"candidates":["[PRIVATE_IP]"],"listeners":[],"samples":[{"/":{"attempts":[{"ip":"[PRIVATE_IP]","marker":true,"rc":7,"stderr_sha256":"27f61005904f3d497996dbf2d4edc77b9705fef674b0a861a07f574f3bc4b155","stdout_bytes":31}],"ok":false},"/support/":{"attempts":[{"ip":"[PRIVATE_IP]","marker":true,"rc":7,"stderr_sha256":"27f61005904f3d497996dbf2d4edc77b9705fef674b0a861a07f574f3bc4b155","stdout_bytes":39}],"ok":false},"/support/create/":{"attempts":[{"ip":"[PRIVATE_IP]","marker":true,"rc":7,"stderr_sha256":"27f61005904f3d497996dbf2d4edc77b9705fef674b0a861a07f574f3bc4b155","stdout_bytes":46}],"ok":false}},{"/":{"attempts":[{"ip":"[PRIVATE_IP]","marker":true,"rc":7,"stderr_sha256":"27f61005904f3d497996dbf2d4edc77b9705fef674b0a861a07f574f3bc4b155","stdout_bytes":31}],"ok":false},"/support/":{"attempts":[{"ip":"[PRIVATE_IP]","marker":true,"rc":7,"stderr_sha256":"27f61005904f3d497996dbf2d4edc77b9705fef674b0a861a07f574f3bc4b155","stdout_bytes":39}],"ok":false},"/support/create/":{"attempts":[{"ip":"[PRIVATE_IP]","marker":true,"rc":7,"stderr_sha256":"27f61005904f3d497996dbf2d4edc77b9705fef674b0a861a07f574f3bc4b155","stdout_bytes":46}],"ok":false}}]}
14:GRAM_SUPPORT_STAGING_ERROR_CLASS=RuntimeError
15:GRAM_SUPPORT_STAGING_ERROR_SHA256=9ccfb75701764360e540920a4bb1a16ddf8d04868795ce4f26b4a760bbe7e1ec
16:ROLLBACK_STARTED=true
17:ROLLBACK_RESTORED=true
18:NO_PRODUCTION_MUTATION_EXPECTED=true
19:PRODUCT_CHECKPOINTS_REMAINING=14
20:PLANNING_MINIMUM_MAJOR_COMMANDS_REMAINING=14
21:TASK_RESULT=PVEPRO_GRAM_SUPPORT_STAGING_INSTALL_PERMISSION_LIFECYCLE_FAILED
22:HOMELAB_RESULT_CONTRACT={"changes_made":true,"command_id":"SUPPORT-260921-PVEPRO-GRAM-SUPPORT-STAGING-INSTALL-RENDER-GUEST-SYNTAX-RETRY-868R1","rollback_restored":true,"rollback_started":true,"status":"FAIL","version":1}
EVIDENCE_EXCERPT_END=/var/lib/homelab-chat-run/raw/SUPPORT-260921-PVEPRO-GRAM-SUPPORT-STAGING-INSTALL-RENDER-GUEST-SYNTAX-RETRY-868R1-20260921T053822Z.log
EVIDENCE_FILE=/var/lib/homelab-chat-run/raw/NEWFI-260919-NEWFDOM-CONTENT207-APPLY119R5-20260918T231533Z.log|SHA256=4546f98b6505459b8e52f7831efcc82e11daa870e1d49176af844006eec58ab1|BYTES=693
EVIDENCE_EXCERPT_BEGIN=/var/lib/homelab-chat-run/raw/NEWFI-260919-NEWFDOM-CONTENT207-APPLY119R5-20260918T231533Z.log
3:NEWFI119R5_FORUM_ROUTE_PRECHECK={"policy":"HTTP_200_OR_403","routes":7}
4:NEWFI119R5_PUBLIC_PRECHECK=PASS
5:NEWFI119R5_PREMUTATION=PASS
6:NEWFI119R5_PRESAVE_2OF2=PASS
7:NEWFI119R5_BACKUPS_2OF2=PASS
8:NEWFI119R5_SAFE_REPORT={"changes_made":true,"decision":"FAIL_CONTENT207_HOLD","error":"RuntimeError:GUEST:staging:RuntimeError:CMD:1:354691e8b9555b4fdb672c0c285308a700ac56ca9c8b459a11aa01375fbf152e","rollback_restored":false,"rollback_started":true}
9:HOMELAB_RESULT_CONTRACT={"changes_made":true,"command_id":"NEWFI-260919-NEWFDOM-CONTENT207-APPLY119R5","rollback_restored":false,"rollback_started":true,"status":"FAIL","version":1}
EVIDENCE_EXCERPT_END=/var/lib/homelab-chat-run/raw/NEWFI-260919-NEWFDOM-CONTENT207-APPLY119R5-20260918T231533Z.log
EVIDENCE_FILE=/var/lib/homelab-chat-run/raw/KOW-260907-CSPPWA2-20260907T135818Z.log|SHA256=2b3d938bf9bd6ae7956bdcfb1c46c94467f0aeb06917ef9ee57e8d0ae423582c|BYTES=1081
EVIDENCE_EXCERPT_BEGIN=/var/lib/homelab-chat-run/raw/KOW-260907-CSPPWA2-20260907T135818Z.log
18:KOWPWA2_SW_CREATE_OBJECT_URL_COUNT=0
19:KOWPWA2_SW_WORKER_CONSTRUCTOR_COUNT=0
20:KOWPWA2_WEBMANIFEST_HTTP=200
21:KOWPWA2_MANIFEST_REF_COUNT=6
22:KOWPWA2_MANIFEST_REF_ORIGINS=SELF
23:KOWPWA2_ERROR_CLASS=RuntimeError
24:KOWPWA2_ERROR=SUBPROCESS_FAILED
25:KOWPWA2_STATUS=FAIL
26:HOMELAB_RESULT_CONTRACT={"changes_made":false,"command_id":"KOW-260907-CSPPWA2","rollback_restored":null,"rollback_started":false,"status":"FAIL","version":1}
EVIDENCE_EXCERPT_END=/var/lib/homelab-chat-run/raw/KOW-260907-CSPPWA2-20260907T135818Z.log
EVIDENCE_FILE=/var/lib/homelab-chat-run/raw/RESULT-API-PLAN-20260727T080229Z-20260727T080324Z.log|SHA256=68ad58daa2047e58029205572c05dce673c3091831bbe301b95a779fad124081|BYTES=714
EVIDENCE_EXCERPT_BEGIN=/var/lib/homelab-chat-run/raw/RESULT-API-PLAN-20260727T080229Z-20260727T080324Z.log
1:Traceback (most recent call last):
2:  File "/var/lib/homelab-command-adapter/capsules/97a6dc8d4353d4f414a2c6eab15ceb2f6f8344c1f15265673cbbc62fe735155b/payload/result_api_plan.py", line 1298, in <module>
3:    raise SystemExit(main())
4:                     ~~~~^^
5:  File "/var/lib/homelab-command-adapter/capsules/97a6dc8d4353d4f414a2c6eab15ceb2f6f8344c1f15265673cbbc62fe735155b/payload/result_api_plan.py", line 999, in main
6:    module.verify_result_signing_material()
7:    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^
8:  File "/tmp/tmppaqxv0uy/adapter.py", line 1343, in verify_result_signing_material
9:result_api_adapter_candidate.AdapterError: result signing material permissions invalid: /tmp/tmppaqxv0uy/keys/private.pem
EVIDENCE_EXCERPT_END=/var/lib/homelab-chat-run/raw/RESULT-API-PLAN-20260727T080229Z-20260727T080324Z.log
EVIDENCE_FILE=/var/lib/homelab-chat-run/raw/NEWFI-260919-NEWFDOM-EVENTBOT212-RECOVERY146R2-20260919T174047Z.log|SHA256=ab4b59d06532fc573ca1a27ebf633b57670106e737a9de650d785bffa63b4d41|BYTES=1155
EVIDENCE_EXCERPT_BEGIN=/var/lib/homelab-chat-run/raw/NEWFI-260919-NEWFDOM-EVENTBOT212-RECOVERY146R2-20260919T174047Z.log
1:NEWFI146R2_BEGIN=true
2:COMMAND_ID=NEWFI-260919-NEWFDOM-EVENTBOT212-RECOVERY146R2
3:NEWFI146R2_GIT={"branch":"implementation/newfi-closed-mvp-20260906","head":"2593a54c0da4c7f5738381f28b2855fdaf1c6804","remote_head":"2593a54c0da4c7f5738381f28b2855fdaf1c6804","clean":true}
4:NEWFI146R2_CLUSTER={"vmid":211,"node":"pve03","status":"running"}
5:NEWFI146R2_STAGING={"command_id":"NEWFI-260919-NEWFDOM-EVENTBOT212-RECOVERY146R2","role":"staging","status":"FAIL","changes_made":false,"rollback_started":false,"rollback_restored":null,"mutation_outcome":"NO_MUTATION","error_type":"RuntimeError","error_sha256":"784322e11e06748ef5395120dd02dfa57d1f4e32ab93a2fb81d413482f689c73","observed_after_failure":{"residue_present":true,"quarantine_present":false,"item_tables":["xf_newfi_autocontent_item","xf_newfi_autocontent_item__conflict"],"errors_count":24,"errors_max":56},"qga_exitcode":3}
6:NEWFI146R2_ERROR=ValueError_8593865992175f58b1195e854a0ddc466ff40bfbe72b3b24892ebb9fc40ee766
7:HOMELAB_RESULT_CONTRACT={"version":1,"command_id":"NEWFI-260919-NEWFDOM-EVENTBOT212-RECOVERY146R2","status":"FAIL","changes_made":false,"rollback_started":false,"rollback_restored":null}
EVIDENCE_EXCERPT_END=/var/lib/homelab-chat-run/raw/NEWFI-260919-NEWFDOM-EVENTBOT212-RECOVERY146R2-20260919T174047Z.log
EVIDENCE_FILE=/var/lib/homelab-chat-run/raw/HOMELAB-IMMUTABLE-PER-FILE-RECONCILE-128-20260721T192652Z.log|SHA256=7a12ebc45debe76d36dc95f174c6f0ce9159a686d93862cfea3877cdd294e1ec|BYTES=26440
EVIDENCE_EXCERPT_BEGIN=/var/lib/homelab-chat-run/raw/HOMELAB-IMMUTABLE-PER-FILE-RECONCILE-128-20260721T192652Z.log
1:Traceback (most recent call last):
2:  File "<string>", line 1, in <module>
3:    import base64; exec(compile(base64.b64decode("CmltcG9ydCBiYXNlNjQKaW1wb3J0IGhhc2hsaWIKaW1wb3J0IGpzb24KaW1wb3J0IG9zCmltcG9ydCByZQppbXBvcnQgc3VicHJvY2VzcwppbXBvcnQgdXJsbGliLnBhcnNlCmltcG9ydCB1cmxsaWIucmVxdWVzdAoKQkFTRSA9ICJodHRwczovL2dpdC5ncmFtMS5ydSIKUkVQTyA9ICJob21lbGFiLWFkbWluL2hvbWVsYWItcHVibGljLWNvbnRleHQiCkJSQU5DSCA9ICJhc3Npc3RhbnQtcnVudGltZSIKVEFSR0VUID0gIkhPTUVMQUItMTI2LUFDVElPTi0xMjciCgpkZWYgZmV0Y2godXJsLCB0aW1lb3V0PTkwKToKICAgIHJlcSA9IHVybGxpYi5yZXF1ZXN0LlJlcXVlc3QodXJsLCBoZWFkZXJzPXsiVXNlci1BZ2VudCI6ICJob21lbGFiLWltbXV0YWJsZS1wZXItZmlsZS8xIn0pCiAgICB3aXRoIHVybGxpYi5yZXF1ZXN0LnVybG9wZW4ocmVxLCB0aW1lb3V0PXRpbWVvdXQpIGFzIHJlc3BvbnNlOgogICAgICAgIHJldHVybiByZXNwb25zZS5yZWFkKCkKCmRlZiBmZXRjaF9qc29uKHVybCk6CiAgICByZXR1cm4ganNvbi5sb2FkcyhmZXRjaCh1cmwpLmRlY29kZSgidXRmLTgiKSkKCmRlZiBpbW11dGFibGVfZmlsZShjb21tYW5kX2lkLCBleHQpOgogICAgcGF0aCA9IGYicnVudGltZS9oaXN0b3J5L3tjb21tYW5kX2lkfS57ZXh0fSIKICAgIGVuY29kZWQgPSB1cmxsaWIucGFyc2UucXVvdGUocGF0aCwgc2FmZT0iLyIpCiAgICBtZXRhID0gZmV0Y2hfanNvbihmIntCQVNFfS9hcGkvdjEvcmVwb3Mve1JFUE99L2NvbnRlbnRzL3tlbmNvZGVkfT9yZWY9e0JSQU5DSH0iKQogICAgYnJhbmNoX2J5dGVzID0gYmFzZTY0LmI2NGRlY29kZShtZXRhWyJjb250ZW50Il0pCiAgICBjb21taXQgPSBtZXRhLmdldCgibGFzdF9jb21taXRfc2hhIikgb3IgIiIKICAgIGlmIG5vdCBjb21taXQ6CiAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKGYibWlzc2luZyBsYXN0X2NvbW1pdF9zaGEgZm9yIHtwYXRofSIpCiAgICBpbW11dGFibGVfYnl0ZXMgPSBmZXRjaChmIntCQVNFfS97UkVQT30vcmF3L2NvbW1pdC97Y29tbWl0fS97cGF0aH0iKQogICAgaWYgYnJhbmNoX2J5dGVzICE9IGltbXV0YWJsZV9ieXRlczoKICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoZiJicmFuY2gvY29tbWl0IG1pc21hdGNoIGZvciB7cGF0aH0iKQogICAgcmV0dXJuIGltbXV0YWJsZV9ieXRlcywgY29tbWl0CgpkZWYgcnVuKGNvbW1hbmQsIHRpbWVvdXQpOgogICAgdHJ5OgogICAgICAgIGNvbXBsZXRlZCA9IHN1YnByb2Nlc3MucnVuKAogICAgICAgICAgICBjb21tYW5kLAogICAgICAgICAgICB0ZXh0PVRydWUsCiAgICAgICAgICAgIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsCiAgICAgICAgICAgIHN0ZGVycj1zdWJwcm9jZXNzLlNURE9VVCwKICAgICAgICAgICAgdGltZW91dD10aW1lb3V0LAogICAgICAgICAgICBjaGVjaz1GYWxzZSwKICAgICAgICApCiAgICAgICAgcmV0dXJuIGNvbXBsZXRlZC5yZXR1cm5jb2RlLCBjb21wbGV0ZWQuc3Rkb3V0CiAgICBleGNlcHQgc3VicHJvY2Vzcy5UaW1lb3V0RXhwaXJlZCBhcyBleGM6CiAgICAgICAgb3V0cHV0ID0gZXhjLnN0ZG91dCBvciAiIgogICAgICAgIGlmIGlzaW5zdGFuY2Uob3V0cHV0LCBieXRlcyk6CiAgICAgICAgICAgIG91dHB1dCA9IG91dHB1dC5kZWNvZGUoInV0Zi04IiwgZXJyb3JzPSJyZXBsYWNlIikKICAgICAgICByZXR1cm4gMTI0LCBvdXRwdXQgKyAiXG5USU1FT1VUXG4iCiAgICBleGNlcHQgRmlsZU5vdEZvdW5kRXJyb3IgYXMgZXhjOgogICAgICAgIHJldHVybiAxMjcsIGYie3R5cGUoZXhjKS5fX25hbWVfX306IHtleGN9XG4iCgpib290c3RyYXAgPSBmZXRjaF9qc29uKGYie0JBU0V9Ly53ZWxsLWtub3duL2hvbWVsYWItYm9vdHN0cmFwLmpzb24iKQpydW50aW1lID0gYm9vdHN0cmFwWyJydW50aW1lIl0KY29udHJhY3QgPSBib290c3RyYXBbIm9wZXJhdGluZ19jb250cmFjdCJdCmFzc2VydCBydW50aW1lWyJyZXN1bHRfY29uZmlybWF0aW9uIl0gPT0gImltbXV0YWJsZV9oaXN0b3J5X2J5X2NvbW1hbmRfaWQiCmFzc2VydCBydW50aW1lWyJsYXRlc3RfanNvbl9pc19hdXRob3JpdGF0aXZlIl0gaXMgRmFsc2UKYXNzZXJ0IGNvbnRyYWN0WyJsb2FkX2Vycm9yX3JlZ2lzdGVyX2JlZm9yZV9jb21tYW5kcyJdIGlzIFRydWUKYXNzZXJ0IGNvbnRyYWN0WyJjaGVja19wcmV2aW91c19jb21tYW5kX3Jlc3VsdCJdIGlzIFRydWUKYXNzZXJ0IGNvbnRyYWN0WyJyZWplY3Rfa25vd25fZmFpbGVkX2V4YWN0X3JlcGVhdHMiXSBpcyBUcnVlCmFzc2VydCBjb250cmFjdFsiZG91YmxlX3ByZV9jb21tYW5kX2NoZWNrIl0gaXMgVHJ1ZQoKZXJyb3JzX2J5dGVzID0gZmV0Y2goYm9vdHN0cmFwWyJlbnRyeXBvaW50cyJdWyJlcnJvcnNfaW5kZXhfdXJsIl0pCmpzb24ubG9hZHMoZXJyb3JzX2J5dGVzLmRlY29kZSgidXRmLTgiKSkKZXJyb3JzX3RleHQgPSBlcnJvcnNfYnl0ZXMuZGVjb2RlKCJ1dGYtOCIsIGVycm9ycz0icmVwbGFjZSIpCgpqc29uX2J5dGVzLCBqc29uX2NvbW1pdCA9IGltbXV0YWJsZV9maWxlKFRBUkdFVCwgImpzb24iKQp0eHRfYnl0ZXMsIHR4dF9jb21taXQgPSBpbW11dGFibGVfZmlsZShUQVJHRVQsICJ0eHQiKQpyZXN1bHQgPSBqc29uLmxvYWRzKGpzb25fYnl0ZXMuZGVjb2RlKCJ1dGYtOCIpKQp0ZXh0ID0gdHh0X2J5dGVzLmRlY29kZSgidXRmLTgiLCBlcnJvcnM9InJlcGxhY2UiKQppZiByZXN1bHQuZ2V0KCJjb21tYW5kX2lkIikgIT0gVEFSR0VUOgogICAgcmFpc2UgUnVudGltZUVycm9yKGYid3JvbmcgY29tbWFuZF9pZDoge3Jlc3VsdC5nZXQoJ2NvbW1hbmRfaWQnKX0iKQoKc3RhdHVzID0gc3RyKHJlc3VsdC5nZXQoInN0YXR1cyIsICJVTktOT1dOIikpCnJjID0gaW50KHJlc3VsdC5nZXQoInJjIiwgLTk5OSkpCnN0YXJ0ZWQgPSBib29sKHJlc3VsdC5nZXQoImV4ZWN1dGlvbl9zdGFydGVkIiwgRmFsc2UpKQpkdXBsaWNhdGUgPSBib29sKHJlc3VsdC5nZXQoImR1cG
4:                   ~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
5:  File "<HOMELAB-IMMUTABLE-PER-FILE-RECONCILE-128>", line 195, in <module>
6:NameError: name 'capcity_lines' is not defined. Did you mean: 'capacity_lines'?
7:=== IMMUTABLE_127_PER_FILE ===
8:COMMAND_ID=HOMELAB-126-ACTION-127
9:JSON_IMMUTABLE_COMMIT=3b4a5565e4d07127e6561009623a862837fd8c20
10:TXT_IMMUTABLE_COMMIT=3b4a5565e4d07127e6561009623a862837fd8c20
EVIDENCE_EXCERPT_END=/var/lib/homelab-chat-run/raw/HOMELAB-IMMUTABLE-PER-FILE-RECONCILE-128-20260721T192652Z.log
EVIDENCE_FILE=/var/lib/homelab-chat-run/raw/SUPPORT-260921-PVEPRO-GRAM-SUPPORT-TEMPLATE-PERMISSION-METADATA-RCA-READONLY-RETRY-848R1-20260921T033452Z.log|SHA256=23abc492c5fee32e24da0b5faea3f26f2e8ac19c2e3f823d32396f90f7daaffa|BYTES=1158
EVIDENCE_EXCERPT_BEGIN=/var/lib/homelab-chat-run/raw/SUPPORT-260921-PVEPRO-GRAM-SUPPORT-TEMPLATE-PERMISSION-METADATA-RCA-READONLY-RETRY-848R1-20260921T033452Z.log
1:COMMAND_ID=SUPPORT-260921-PVEPRO-GRAM-SUPPORT-TEMPLATE-PERMISSION-METADATA-RCA-READONLY-RETRY-848R1
2:MODE=read-only
3:COMPONENT=pvepro-gram-support-template-permission-metadata-rca-readonly
4:PRODUCTION_HOST={"all_link_down":false,"config_sha256":"ebd2b7d44ab58a222b4fd5a7dcd9358d3082e593bd70fb07c2331c70f22e82ab","lock":null,"name":"pvepro-prod","snapshots":[],"status":"running","vmstate":null}
5:STAGING_HOST={"all_link_down":true,"config_sha256":"43761ab3d555625387944883cd0229cde2121aba005a715dffe20465041e8aa9","lock":null,"name":"pvepro-staging-v1","snapshots":[],"status":"stopped","vmstate":null}
6:GRAM_SUPPORT_AUX_METADATA_RCA_ERROR_CLASS=RuntimeError
7:GRAM_SUPPORT_AUX_METADATA_RCA_ERROR_SHA256=686de6948df5572d80834472ec74f90cd677148901e3d077a84672137a44a1d6
8:NO_MUTATION=true
9:PRODUCT_CHECKPOINTS_REMAINING=14
10:PLANNING_MINIMUM_MAJOR_COMMANDS_REMAINING=14
11:TASK_RESULT=PVEPRO_GRAM_SUPPORT_TEMPLATE_PERMISSION_METADATA_RCA_FAILED
12:HOMELAB_RESULT_CONTRACT={"changes_made":false,"command_id":"SUPPORT-260921-PVEPRO-GRAM-SUPPORT-TEMPLATE-PERMISSION-METADATA-RCA-READONLY-RETRY-848R1","rollback_restored":null,"rollback_started":false,"status":"FAIL","version":1}
EVIDENCE_EXCERPT_END=/var/lib/homelab-chat-run/raw/SUPPORT-260921-PVEPRO-GRAM-SUPPORT-TEMPLATE-PERMISSION-METADATA-RCA-READONLY-RETRY-848R1-20260921T033452Z.log
EVIDENCE_FILE=/var/lib/homelab-chat-run/raw/HOMELAB-CLUSTER-KB-V1-READER-V3-EXACT-MANIFEST-SCHEMA-TRACE-READ-ONLY-20260805T105500Z-20260805T105831Z.log|SHA256=8c3f6ed1219cc3da1930e50b0e144855232f89bcd84c4126397488d91036bbde|BYTES=5236
EVIDENCE_EXCERPT_BEGIN=/var/lib/homelab-chat-run/raw/HOMELAB-CLUSTER-KB-V1-READER-V3-EXACT-MANIFEST-SCHEMA-TRACE-READ-ONLY-20260805T105500Z-20260805T105831Z.log
1:HOMELAB_RESULT_CONTRACT={"changes_made":false,"command_id":"HOMELAB-CLUSTER-KB-V1-READER-V3-EXACT-MANIFEST-SCHEMA-TRACE-READ-ONLY-20260805T105500Z","command_rc":1,"mutation_outcome":"NO_MUTATION","output_truncated_in_json":false,"rc":1,"rollback_restored":null,"rollback_started":false,"status":"FAIL","version":1}
2:{"changes_made":false,"command_id":"HOMELAB-CLUSTER-KB-V1-READER-V3-EXACT-MANIFEST-SCHEMA-TRACE-READ-ONLY-20260805T105500Z","command_rc":1,"error":"result exceeds output bound after deterministic compaction","error_fingerprint":"0141f0f7009c41a327fbbeeaae86d192975993f5aa135b01e747778c1a5219ac","error_type":"RuntimeError","latest_exact_result_basis":{"capsule_sha256":"9580200bb633ed9c4b7eebab6e160d723a728d8b9dbcf34803f6d43627d0c838","changes_made":false,"command_id":"HOMELAB-CLUSTER-KB-V1-READER-V3-FAKE-DEPENDENCY-CONTRACT-FIX-READ-ONLY-20260805T104000Z","command_rc":0,"control_plane_error":null,"error_fingerprint":"f625204be2a45aca4b0e31f18a66146eee3d05ca9cb2d6705b9a821bfc0e993e","mutation_outcome":"NO_MUTATION","next_action":"RUN_ONE_READ_ONLY_READER_V3_EXACT_MANIFEST_SCHEMA_TRACE","output_complete":true,"output_sha256":"8b175d403825bf21d0222a3ecb18a502790378b739bf85e140c62740af58fb89","output_truncated_in_json":false,"rc":0,"rollback_restored":null,"rollback_started":false,"root_cause_classification":"READER_V3_FEED_CAUGHT_EXCEPTION_ORIGIN_PROVEN","runner_document_rc":0,"runner_json_sha256":"d68de9445fcdff0647bfac60d5b424d99a59e0ad332834fe78f0fef5ab3e8eba","runner_rc":0,"runner_text_sha256":"4ba1efeb392165326b413d950f48fbb24144f2c844a3453157b438df51a4534d","runner_wrapper_matches_document":true,"status":"OK"},"mutation_outcome":"NO_MUTATION","next_action":"FIX_ONLY_THE_PROVEN_PAYLOAD_ERROR_THEN_RETRY","output_truncated_in_json":false,"pre_command_known_error_gate":{"checked":true,"items":[{"id":"candidate-scan-limit-20260805","prevention":"exact files only; bounded AST, simulation, response and output limits"},{"id":"runner-wrapper-mismatch-20260805","prevention":"single compact JSON below 42000 bytes; no raw source, secret or response body"},{"id":"gitea-owner-hardcoded-20260805","prevention":"no repository owner, guest ID or repository URL is assumed"},{"id":"gitea-git-auth-unavailable-20260805","prevention":"no Git or Gitea authentication attempt"},{"id":"pvesh-adapter-context-unreadable-20260805","prevention":"the payload does not call pvesh or any real executor"},{"id":"gitea-process-self-match-20260805","prevention":"Reader identity is bound to exact systemd ControlGroup"},{"id":"sanitize-non-string-attributeerror-20260805","prevention":"sanitize converts Any to str; embedded bool test"},{"id":"reader-path-env-misclassified-as-route-20260805","prevention":"PATH and filesystem-like values are excluded from request candidates"},{"id":"reader-loopback-only-probe-20260805","prevention":"owned listeners are inspected but no network connection is made"},{"id":"reader-capability-not-secret-20260805","prevention":"capability values are redacted before every output projection"},{"id":"reader-systemd-unit-parsed-as-python-20260805","prevention":"only the exact Python server source is parsed or compiled"},{"id":"reader-helper-contract-coverage-gap-20260805","prevention":"all handler methods reachable from do_GET/do_HEAD are traced"},{"id":"reader-capability-root-empty-suffix-404-20260805","prevention":"never infer inventory from capability-only paths; trace the exact post-prefix suffix and response branch with fake executors first"},{"id":"reader-generic-suffix-missed-exact-operation-20260805","prevention":"derive route operations from exact compiled branch constants and intersect them with AST path literals before sandbox execution"},{"id":"reader-feed-500-without-origin-20260805","prevention":"before any live feed request, trace global helper reachability, exact executor/file argument origins and caught sandbox exceptions; health alone never proves inventory safety"},{"id":"reader-sandbox-global-binding-undefined-20260805","prevention":"materialize reachable module globals only through a strict AST allowlist; Path joins and re.compile are allowed, arbitrary calls are blocked, and MANIFEST/RESULTS/RESULT_RE are regression-tested before any live request"},{"id":"reader-negative-control-exception-polluted-classification-20260805",
EVIDENCE_EXCERPT_END=/var/lib/homelab-chat-run/raw/HOMELAB-CLUSTER-KB-V1-READER-V3-EXACT-MANIFEST-SCHEMA-TRACE-READ-ONLY-20260805T105500Z-20260805T105831Z.log
EVIDENCE_FILE=/var/lib/homelab-chat-run/raw/HOMELAB-CLUSTER-ADMIN-UPDATES-V8-ARCHITECTURE-READ-ONLY-20260805T105500Z-20260805T105652Z.log|SHA256=0ddc5dc757a2edd836eb8be0ebe617aa17226cef08f56344303ed5581af2ddac|BYTES=627
EVIDENCE_EXCERPT_BEGIN=/var/lib/homelab-chat-run/raw/HOMELAB-CLUSTER-ADMIN-UPDATES-V8-ARCHITECTURE-READ-ONLY-20260805T105500Z-20260805T105652Z.log
1:HOMELAB_RESULT_CONTRACT={"changes_made":false,"command_id":"HOMELAB-CLUSTER-ADMIN-UPDATES-V8-ARCHITECTURE-READ-ONLY-20260805T105500Z","command_rc":1,"control_plane_error":null,"mutation_outcome":"NO_MUTATION","rc":1,"rollback_restored":false,"rollback_started":false,"status":"FAIL","version":1}
2:{"changes_made":false,"command_id":"HOMELAB-CLUSTER-ADMIN-UPDATES-V8-ARCHITECTURE-READ-ONLY-20260805T105500Z","error":"V6 report command_id mismatch actual=<REDACTED_TOKEN>","error_type":"RuntimeError","mutation_outcome":"NO_MUTATION","read_only":true,"rollback_restored":false,"rollback_started":false,"schema":8,"status":"FAIL"}
EVIDENCE_EXCERPT_END=/var/lib/homelab-chat-run/raw/HOMELAB-CLUSTER-ADMIN-UPDATES-V8-ARCHITECTURE-READ-ONLY-20260805T105500Z-20260805T105652Z.log
EVIDENCE_FILE=/var/lib/homelab-chat-run/raw/HOMELAB-SKLADCHIK-REAUTH-PREFLIGHT-EXACT-SUMMARY-READ-ONLY-V5-20260805T114900Z-20260805T115508Z.log|SHA256=c2bf43e1c408b618134f62b5e8902eb80328b92ed3cf8eac06e910955761565f|BYTES=2450
EVIDENCE_EXCERPT_BEGIN=/var/lib/homelab-chat-run/raw/HOMELAB-SKLADCHIK-REAUTH-PREFLIGHT-EXACT-SUMMARY-READ-ONLY-V5-20260805T114900Z-20260805T115508Z.log
1:HOMELAB_RESULT_CONTRACT={"changes_made":false,"command_id":"HOMELAB-SKLADCHIK-REAUTH-PREFLIGHT-EXACT-SUMMARY-READ-ONLY-V5-20260805T114900Z","command_rc":1,"mutation_outcome":"NO_MUTATION","output_truncated_in_json":false,"rc":1,"rollback_restored":null,"rollback_started":false,"status":"FAIL","version":1}
2:{"changes_made":false,"command_id":"HOMELAB-SKLADCHIK-REAUTH-PREFLIGHT-EXACT-SUMMARY-READ-ONLY-V5-20260805T114900Z","command_rc":1,"error":"target task JSON cardinality=0; target_id_occurrences=2; decoded_roots=203; examined_values=3295; root_summaries=[{\"command_id_match\":true,\"end\":300,\"has_analysis_ready\":false,\"keys\":[\"changes_made\",\"command_id\",\"command_rc\",\"mutation_outcome\",\"output_truncated_in_json\",\"rc\",\"rollback_restored\",\"rollback_started\",\"status\",\"version\"],\"offset\":24,\"rc\":0,\"status\":\"OK\"},{\"command_id_match\":true,\"end\":12268,\"has_analysis_ready\":true,\"keys\":[\"analysis_ready\",\"based_on\",\"changes_made\",\"command_id\",\"command_rc\",\"current_docs\",\"interface_classes\",\"label\",\"line_count\",\"local_installed\",\"markers\",\"mutation_outcome\",\"next_action\",\"output_truncated_in_json\",\"path_descriptors\",\"prerequisites\",\"projection_bytes\",\"rc\",\"read_only\",\"remote_read\",\"rollback_restored\",\"rollback_started\",\"root_cause_classification\",\"safe_guidance\"],\"offset\":301,\"rc\":0,\"status\":\"\"},{\"command_id_match\":false,\"end\":766,\"has_analysis_ready\":false,\"keys\":[\"capsule_sha256\",\"command_id\",\"output_sha256\",\"runner_json_sha256\",\"runner_text_sha256\"],\"offset\":335,\"rc\":null,\"status\":\"\"},{\"command_id_match\":false,\"end\":2534,\"has_analysis_ready\":false,\"keys\":[\"basename\",\"path_sha256\",\"present\",\"sha256\",\"summary\"],\"offset\":909,\"rc\":null,\"status\":\"\"},{\"command_id_match\":false,\"end\":2533,\"has_analysis_ready\":false,\"keys\":[\"bytes\",\"environment_names\",\"flags\",\"headings\",\"interface_classes\",\"label\",\"line_count\",\"markers\",\"path_descriptors\",\"sha256\",\"shebang\"],\"offset\":1133,\"rc\":null,\"status\":\"\"},{\"command_id_match\":false,\"end\":1921,\"has_analysis_ready\":false,\"keys\":[\"accepts_cookie_header\",\"accepts_file_input\",\"atomic_replace\",\"backu","error_type":"RuntimeError","mutation_outcome":"NO_MUTATION","output_truncated_in_json":false,"rc":1,"read_only":true,"rollback_restored":null,"rollback_started":false,"schema":1,"status":"FAIL"}
EVIDENCE_EXCERPT_END=/var/lib/homelab-chat-run/raw/HOMELAB-SKLADCHIK-REAUTH-PREFLIGHT-EXACT-SUMMARY-READ-ONLY-V5-20260805T114900Z-20260805T115508Z.log
EVIDENCE_FILE=/var/lib/homelab-chat-run/raw/SUPPORT-260920-PVEPRO-VISUAL-STYLE-STAGING-DEPLOY-763R1-20260920T141122Z.log|SHA256=d91a9c6f27718636825e9de0e51cdab64e57a5b106d3cc8e4e5e0dc9693eee92|BYTES=2999
EVIDENCE_EXCERPT_BEGIN=/var/lib/homelab-chat-run/raw/SUPPORT-260920-PVEPRO-VISUAL-STYLE-STAGING-DEPLOY-763R1-20260920T141122Z.log
18:STYLE_REBUILD_TRIGGER_FRESH_PROCESS={"style_id":2}
19:STYLE_REBUILD_JOB_IDENTIFIED={"count":1,"rows":[{"execute_class":"XF\\Job\\Atomic","job_id":79,"last_run_date":null,"manual_execute":1,"trigger_date":1789913617,"unique_key":"styleRebuild"}]}
20:STYLE_REBUILD_JOB_EXECUTED={"job_id":79,"loops":1,"remaining":0,"remaining_history":[0],"styleRebuildLeft":0}
21:STYLE_MAP_AFTER_JOB={"db_map_rows":284,"finder_map_rows":284,"style_count":2,"style_id":2,"target_found":42,"target_missing":[]}
22:STYLE_PROPERTY_MAP_READY=True
23:VISUAL_STYLE_STAGING_ERROR_CLASS=RuntimeError
24:VISUAL_STYLE_STAGING_ERROR_SHA256=725e6f63db73446439703b32911b4bd1b785e757ee4da223b258b678f6efc774
25:ROLLBACK_STARTED=True
26:ROLLBACK_RESTORED=False
27:TASK_RESULT=PVEPRO_VISUAL_STYLE_STAGING_DEPLOY_JOB_EXEC_FAILED
28:HOMELAB_RESULT_CONTRACT={"changes_made":true,"command_id":"SUPPORT-260920-PVEPRO-VISUAL-STYLE-STAGING-DEPLOY-763R1","rollback_restored":false,"rollback_started":true,"status":"FAIL","version":1}
EVIDENCE_EXCERPT_END=/var/lib/homelab-chat-run/raw/SUPPORT-260920-PVEPRO-VISUAL-STYLE-STAGING-DEPLOY-763R1-20260920T141122Z.log
EVIDENCE_FILE=/var/lib/homelab-chat-run/raw/SUPPORT-260922-BEGET-NOBLE-FULL-PREMIGRATION-AUDIT-9106R1-20260922T061734Z.log|SHA256=d7162c271d12867b6d682f7b00115c83eb46c0fddf5c73b88d93b929bd6fc56e|BYTES=6950
EVIDENCE_EXCERPT_BEGIN=/var/lib/homelab-chat-run/raw/SUPPORT-260922-BEGET-NOBLE-FULL-PREMIGRATION-AUDIT-9106R1-20260922T061734Z.log
1:BEGET9106_AUDIT={"command_id":"SUPPORT-260922-BEGET-NOBLE-FULL-PREMIGRATION-AUDIT-9106R1","mode":"read-only","mutation_boundary":"NO_MUTATION_NO_DNS_CHANGE_NO_SERVICE_RESTART_NO_BACKUP_RUN_NO_EXTERNAL_VPS_CHANGE","cluster_resources":[{"vmid":100,"node":"pve01","name":"pvepro-prod","status":"running","type":"qemu","maxcpu":4,"maxmem":6442450944,"maxdisk":85899345920},{"vmid":101,"node":"pve01","name":"pvepro-staging-v1","status":"stopped","type":"qemu","maxcpu":4,"maxmem":6442450944,"maxdisk":85899345920},{"vmid":130,"node":"pve03","name":"edge-vm","status":"running","type":"qemu","maxcpu":4,"maxmem":12884901888,"maxdisk":103079215104},{"vmid":160,"node":"pve02","name":"forum-prod","status":"running","type":"qemu","maxcpu":4,"maxmem":8589934592,"maxdisk":214748364800},{"vmid":170,"node":"pve01","name":"core-apps","status":"running","type":"qemu","maxcpu":4,"maxmem":10737418240,"maxdisk":128849018880},{"vmid":210,"node":"pve01","name":"newfi-prod","status":"running","type":"qemu","maxcpu":2,"maxmem":4294967296,"maxdisk":53687091200},{"vmid":211,"node":"pve03","name":"newfi-staging","status":"running","type":"qemu","maxcpu":2,"maxmem":4294967296,"maxdisk":53687091200}],"site_guests":{"100":{"ok":false,"stage":"start","rc":29},"160":{"ok":false,"stage":"start","rc":29},"210":{"ok":false,"stage":"start","rc":29},"211":{"ok":false,"stage":"start","rc":29}},"edge_vm130":{"ok":false,"stage":"start","rc":29},"core_vm170":{"ok":false,"stage":"start","rc":29},"known_production_site_domains":["pvepro.ru","codevipe.ru","dsmods.ru","gamevipe.ru","hkmods.ru","kingofwolk.ru","zakrutim.ru","newfi.ru"],"domain_candidates":["chatgpt.com","codevipe.ru","domain-chatgpt.com","domain-codevipe.ru","domain-dsmods.ru","domain-gamevipe.ru","domain-gram1.ru","domain-hapusya.ru","domain-hkmods.ru","domain-json-schema.org","domain-openai.com","domain-pvepro.ru","domain-zakrutim.ru","dsmods.ru","endpoint-https-chatgpt.com","endpoint-https-codevipe.ru","endpoint-https-dsmods.ru","endpoint-https-gamevipe.ru","endpoint-https-gram1.ru","endpoint-https-hapusya.ru","endpoint-https-hkmods.ru","endpoint-https-json-schema.org","endpoint-https-openai.com","endpoint-https-pvepro.ru","endpoint-https-zakrutim.ru","gamevipe.ru","gitea.com","gitlab.com","gram1.ru","hapusya.ru","hkmods.ru","ipify.org","json-schema.org","kingofwolk.ru","netcraze.pro","networkupstools.org","newfi.ru","openai.com","pvepro.ru","sitemaps.org","skladchik.org","w3.org","zakrutim.ru"],"domain_reference_counts":{"chatgpt.com":294,"codevipe.ru":112,"domain-chatgpt.com":147,"domain-codevipe.ru":56,"domain-dsmods.ru":56,"domain-gamevipe.ru":56,"domain-gram1.ru":147,"domain-hapusya.ru":147,"domain-hkmods.ru":56,"domain-json-schema.org":147,"domain-openai.com":91,"domain-pvepro.ru":147,"domain-zakrutim.ru":56,"dsmods.ru":112,"endpoint-https-chatgpt.com":147,"endpoint-https-codevipe.ru":56,"endpoint-https-dsmods.ru":56,"endpoint-https-gamevipe.ru":56,"endpoint-https-gram1.ru":147,"endpoint-https-hapusya.ru":147,"endpoint-https-hkmods.ru":56,"endpoint-https-json-schema.org":147,"endpoint-https-openai.com":91,"endpoint-https-pvepro.ru":147,"endpoint-https-zakrutim.ru":56,"gamevipe.ru":112,"gitea.com":364,"gitlab.com":73,"gram1.ru":31512,"hapusya.ru":294,"hkmods.ru":112,"ipify.org":588,"json-schema.org":294,"netcraze.pro":588,"networkupstools.org":73,"openai.com":182,"pvepro.ru":294,"sitemaps.org":364,"skladchik.org":588,"w3.org":364,"zakrutim.ru":112},"backup_states":[{"logical_id":"xf-newfi","result":"SUCCESS","generation":"v2-xf-newfi-20260921T070432Z-363a1c2db5f3","last_success_epoch":1789974719,"consecutive_failures":0},{"logical_id":"md-relay","result":"SUCCESS","generation":"v2-md-relay-20260921T180325Z-a61f85dd2bfd","last_success_epoch":1790013837,"consecutive_failures":0},{"logical_id":"spb-ingress","result":"SUCCESS","generation":"v2-spb-ingress-20260921T183726Z-21b9dc5d4e98","last_success_epoch":1790015869,"consecutive_failures":0},{"logical_id":"us-netbird","result":"FAIL","generation":"v2-us-ne
2:TASK_COMPLETE=true
3:TASK_RESULT=PASS_BEGET_NOBLE_FULL_PREMIGRATION_SOURCE_AUDIT
4:DECISION=ANALYZE_NOBLE_COMPATIBILITY_DOMAIN13_EXTERNAL_SERVICES_AND_VPS_RETIREMENT
5:NEXT_GATE=READ_EXACT_9106_THEN_BUILD_DESTINATION_PREFLIGHT_OR_TARGETED_RCA
EVIDENCE_EXCERPT_END=/var/lib/homelab-chat-run/raw/SUPPORT-260922-BEGET-NOBLE-FULL-PREMIGRATION-AUDIT-9106R1-20260922T061734Z.log
EVIDENCE_FILE=/var/lib/homelab-chat-run/raw/SIGNALBOT-260908-ACT1-PREMUTATION-CONTRACT-RCA-043ACT1RCA2-20260908T150914Z.log|SHA256=df6fa0c417941e38c8ea5c150eaa9efdfe990107eb0e3914ece24252af071a0f|BYTES=2948
EVIDENCE_EXCERPT_BEGIN=/var/lib/homelab-chat-run/raw/SIGNALBOT-260908-ACT1-PREMUTATION-CONTRACT-RCA-043ACT1RCA2-20260908T150914Z.log
2:REFERENCE_CHECK=OK
3:AUTHORITY_CHECK_SCOPE=READABILITY_ONLY_INCIDENTS_NOT_CLOSED
4:SB043AR2_RUNNER_SHA256=b248a4c32c9cc64e5747e7dce6c7fc0a23f5124a77c71ce72e27a81aceae9d2d
5:SB043AR2_VM170_CLUSTER={"name":"core-apps","node":"pve01","status":"running","type":"qemu"}
6:SB043AR2_QGA_INPUT_BYTES=5390
7:SB043AR2_PRESTATE={"act1_epoch_refs":[],"act1_result":{"command_id":"SIGNALBOT-260908-SEALED-ACTIVATION-043ACT1","reason":"RuntimeError:PROJECT_RUNTIME_CONTRACT_UNAVAILABLE","status":"PREMUTATION_HOLD","ts_utc":"2026-09-08T15:03:52.521761+00:00"},"env":{"APP_IMAGE":"8020-demonov-shadow:e32760c69a4311728db9066ee8bf2bf66b1e5a70","CODE_IDENTITY":"e32760c69a4311728db9066ee8bf2bf66b1e5a70","COLLECTION_START_AT":"2026-09-07T00:00:00+00:00","EXPERIMENT_ID":"ec477ea41ecbd5cfdef5afc259595aab20674a7d933f41a389329ff05098b338","RUNTIME_MANIFEST_ID":"58d3b59200bdc0eb8d448612679d667b194263586cb3198dfc08597935053a1a"},"services":[{"image":"8020-demonov-shadow:e32760c69a4311728db9066ee8bf2bf66b1e5a70","image_id":"sha256:403c4266282a56cb210bed95cd58295692296502913e7440e2133d7b5664c736","restart_count":0,"running":true,"service":"worker","started_at":"2026-09-06T18:48:20.586788319Z"},{"image":"8020-demonov-shadow:e32760c69a4311728db9066ee8bf2bf66b1e5a70","image_id":"sha256:403c4266282a56cb210bed95cd58295692296502913e7440e2133d7b5664c736","restart_count":0,"running":true,"service":"relay","started_at":"2026-09-06T18:48:20.603414848Z"},{"image":"8020-demonov-shadow:e32760c69a4311728db9066ee8bf2bf66b1e5a70","image_id":"sha256:403c4266282a56cb210bed95cd58295692296502913e7440e2133d7b5664c736","restart_count":19,"running":true,"service":"collector","started_at":"2026-09-08T13:42:51.284969517Z"},{"image":"8020-demonov-shadow:e32760c69a4311728db9066ee8bf2bf66b1e5a70","image_id":"sha256:403c4266282a56cb210bed95cd58295692296502913e7440e2133d7b5664c736","restart_count":0,"running":true,"service":"shadow","started_at":"2026-09-06T18:48:20.768190553Z"}]}
8:SB043AR2_CONTRACT_OWNERS={"RuntimeArtifactManifest":["runtime_integrity.py"],"RuntimeDeploymentManifestV1":["runtime_manifest.py"],"canonical_hash":["canonical_hash.py"]}
9:SB043AR2_CONTRACT_SOURCE_DETAILS={"canonical_hash.py":{"sha256":"531237f499b7f2b2c568f4f101f1b451ea9fcd08a4afaff79153ba38a06f2482","symbols":[{"end_lineno":44,"kind":"FunctionDef","lineno":43,"name":"canonical_hash"}]},"runtime_integrity.py":{"sha256":"99859b63e23d10fc051672965123f49d6e79d2ff767871c019ff7bdae2e2e39e","symbols":[{"end_lineno":559,"kind":"ClassDef","lineno":536,"name":"RuntimeArtifactManifest"}]},"runtime_manifest.py":{"sha256":"1064cfb74303fdc8e0bf50bae95b1e755556a5b1dfc28b2b062341becaba08f2","symbols":[{"end_lineno":105,"kind":"ClassDef","lineno":37,"name":"RuntimeDeploymentManifestV1"}]}}
10:SB043AR2_HOLDS=["CANONICAL_HASH_OWNER_NOT_EXACT"]
11:SB043AR2_DECISION=HOLD_ACT1_PREMUTATION_CONTRACT_RCA
12:SB043AR2_MUTATION_SCOPE=NONE_READ_ONLY
13:SB043AR2_GUEST_RC=3
14:SB043AR2_GUEST_STDERR_PRESENT=false
EVIDENCE_EXCERPT_END=/var/lib/homelab-chat-run/raw/SIGNALBOT-260908-ACT1-PREMUTATION-CONTRACT-RCA-043ACT1RCA2-20260908T150914Z.log
EVIDENCE_FILE=/var/lib/homelab-chat-run/raw/HOMELAB-CLUSTER-KB-V1-GITEA-ERROR-READ-ONLY-20260805T062500Z-20260805T064341Z.log|SHA256=400514b1d631239430dd9e336a4aa4b78f15a3a89a85187925da144e4ea81626|BYTES=858
EVIDENCE_EXCERPT_BEGIN=/var/lib/homelab-chat-run/raw/HOMELAB-CLUSTER-KB-V1-GITEA-ERROR-READ-ONLY-20260805T062500Z-20260805T064341Z.log
1:HOMELAB_RESULT_CONTRACT={"changes_made":false,"command_id":"HOMELAB-CLUSTER-KB-V1-GITEA-ERROR-READ-ONLY-20260805T062500Z","command_rc":1,"mutation_outcome":"NO_MUTATION","output_truncated_in_json":false,"rc":1,"rollback_restored":null,"rollback_started":false,"status":"FAIL","version":1}
2:{"changes_made":false,"cluster_changed":false,"command_id":"HOMELAB-CLUSTER-KB-V1-GITEA-ERROR-READ-ONLY-20260805T062500Z","command_rc":1,"error":"repository complete scan limits were hit: candidate_file_limit:76da439c1f69f405b434e20b2a3da1c11dc92e38:2270; candidate_file_limit:f9d3ba8caf65005605aa8aee2ede7e4e7e94ee49:2270","error_type":"RuntimeError","gitea_changed":false,"mutation_outcome":"NO_MUTATION","output_truncated_in_json":false,"production_changed":false,"rc":1,"read_only":true,"rollback_restored":null,"rollback_started":false,"schema":1,"status":"FAIL"}
EVIDENCE_EXCERPT_END=/var/lib/homelab-chat-run/raw/HOMELAB-CLUSTER-KB-V1-GITEA-ERROR-READ-ONLY-20260805T062500Z-20260805T064341Z.log
EVIDENCE_FILE=/var/lib/homelab-chat-run/raw/NEWFI-260921-NEWFDOM-DR221-FINAL403-20260921T163616Z.log|SHA256=b54cc5a630188fc8eb9d2a5bc55a124df2eb3fefbc3a28daacb7b77993c79d6d|BYTES=929
EVIDENCE_EXCERPT_BEGIN=/var/lib/homelab-chat-run/raw/NEWFI-260921-NEWFDOM-DR221-FINAL403-20260921T163616Z.log
1:DR221_FINAL403_BEGIN=true
2:COMMAND_ID=NEWFI-260921-NEWFDOM-DR221-FINAL403
3:PREDECESSOR_COMMAND_ID=NEWFI-260921-NEWFDOM-DR221-RECONCILE402
4:PREDECESSOR_DECISION=PASS_DR221_CURRENT_PRODUCT_GIT_REMOTE_ACCESS_RECONCILED
5:IMMUTABLE_PLAN_CHECK=PASS
6:DR221_FAILURE={"checkpoint":"prestate","error_class":"RuntimeError","error_sha256":"417a03c94212b2c564117c5ab67127d6d0cd85502508518f729955e2ac275319"}
7:DR221_BACKUP_GENERATION=null
8:DR221_CLEANUP={"cleanup_started":false,"staging_work_removed":true,"temp_vm_removed":null}
9:DR221_CLOSED=false
10:FULL_PRODUCT_REMAINING=1
11:DECISION=FAIL_DR221_FINAL_CURRENT_PRODUCTION_BACKUP_RESTORE_ACCEPTANCE
12:NEXT_GATE=RECONCILE_ONLY_EXACT_DR221_FINAL403_FAILURE
13:ACTIVE_MAJOR_STAGE=DR221
14:MAJOR_STAGES_REMAINING=1
15:HOMELAB_RESULT_CONTRACT={"changes_made":false,"command_id":"NEWFI-260921-NEWFDOM-DR221-FINAL403","rollback_restored":null,"rollback_started":false,"status":"FAIL","version":1}
EVIDENCE_EXCERPT_END=/var/lib/homelab-chat-run/raw/NEWFI-260921-NEWFDOM-DR221-FINAL403-20260921T163616Z.log
EVIDENCE_FILE=/var/lib/homelab-chat-run/raw/SUPPORT-260915-INFRA-DR-BACKUPV2-PVE-LXC-IMMUTABLE-ADAPTER-CANDIDATE-STAGE-RCA-FIX-403R1-20260915T061628Z.log|SHA256=f547d97a7dbbd0447340539fe9eb8b88722b0c613c5a1318fb609bfae565ae9b|BYTES=1328
EVIDENCE_EXCERPT_BEGIN=/var/lib/homelab-chat-run/raw/SUPPORT-260915-INFRA-DR-BACKUPV2-PVE-LXC-IMMUTABLE-ADAPTER-CANDIDATE-STAGE-RCA-FIX-403R1-20260915T061628Z.log
9:SOURCE_IDENTITY_COUNT=17
10:SOURCE_IDENTITY_SET=PASS
11:SOURCE_REGISTRY_ORIGIN=PASS_400R1_PROVEN_FILES
12:SOURCE_REGISTRY_SHA256=308d98eb7042ec702f6e0f2198e7d92380ce51fc2c51f16695ff3719c4e725e2
13:ADAPTER_SELFTEST_RESULT={"rc":0,"stderr_bytes":0,"stderr_sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","stdout_bytes":1647,"stdout_sha256":"b41854475ad1f170bc24e52da269a1d6250645e14317a780473d9abc86e6f8e8"}
14:STAGE_EXCEPTION_CLASS=RuntimeError
15:STAGE_EXCEPTION_CODE=HISTORICAL_TEST_FAILED_test_perl270.py
16:STATUS=FAIL
17:PHASE=CANDIDATE_STAGE
18:REASON=CANDIDATE_STAGE_FAILED
19:NEXT_GATE=STOP
20:CHANGES_MADE=false
21:MUTATION_OUTCOME=NO_MUTATION
22:PRODUCTION_PROMOTION=NO
23:BACKUP_EXECUTIONS=0
EVIDENCE_EXCERPT_END=/var/lib/homelab-chat-run/raw/SUPPORT-260915-INFRA-DR-BACKUPV2-PVE-LXC-IMMUTABLE-ADAPTER-CANDIDATE-STAGE-RCA-FIX-403R1-20260915T061628Z.log
EVIDENCE_FILE=/var/lib/homelab-chat-run/raw/HOMELAB-CLUSTER-KB-V1-BLOCKER-RESOLUTION-READ-ONLY-20260805T070400Z-20260805T070503Z.log|SHA256=0b8e29a53c59c5c34cb36c8db9939fc5315a7679d9636937c1e515984f835f85|BYTES=1789
EVIDENCE_EXCERPT_BEGIN=/var/lib/homelab-chat-run/raw/HOMELAB-CLUSTER-KB-V1-BLOCKER-RESOLUTION-READ-ONLY-20260805T070400Z-20260805T070503Z.log
1:HOMELAB_RESULT_CONTRACT={"changes_made":false,"command_id":"HOMELAB-CLUSTER-KB-V1-BLOCKER-RESOLUTION-READ-ONLY-20260805T070400Z","command_rc":1,"mutation_outcome":"NO_MUTATION","output_truncated_in_json":false,"rc":1,"rollback_restored":null,"rollback_started":false,"status":"FAIL","version":1}
2:{"changes_made":false,"command_id":"HOMELAB-CLUSTER-KB-V1-BLOCKER-RESOLUTION-READ-ONLY-20260805T070400Z","command_rc":1,"error":"exact homelab-ops bare repository not found in proven local or running-container locations","error_type":"RuntimeError","exact_result_basis":{"blocking_findings":["HANDBOOK_CANDIDATE_AMBIGUOUS","REPOSITORY_TESTS_FAILED","CLUSTER_STATUS_UNREADABLE"],"capsule_sha256":"2d2886a07bf68d97acf144a4d94855d6558cdd0c1277e2c633a5a244f9aebb0f","changes_made":false,"command_id":"HOMELAB-CLUSTER-KB-V1-GITEA-ERROR-READ-ONLY-RETRY-20260805T064700Z","command_rc":0,"control_plane_error":{"message":"existing runner returned a different rc after writing its public artifact; runtime publication or wrapper completion failed","type":"RunnerWrapperMismatch"},"mutation_outcome":"NO_MUTATION","output_complete":true,"output_truncated_in_json":false,"prevention_in_this_probe":"bounded structured output; no complete success logs; no adapter or result-access repair","rollback_restored":null,"rollback_started":false,"runner_document_rc":0,"runner_json_sha256":"f219bbfbfd996e659820b7275a52a14258000d0a27eea3c09793c0eea8cb10c3","runner_rc":75,"runner_status":"OK","runner_text_sha256":"bb714fe8c1973f37e190c01d8582c15f2b92ea0b44adb5a358d5f3d03ba1848a","runner_wrapper_matches_document":false,"state_status":"FAIL"},"mutation_outcome":"NO_MUTATION","output_truncated_in_json":false,"rc":1,"read_only":true,"rollback_restored":null,"rollback_started":false,"schema":1,"status":"FAIL"}
EVIDENCE_EXCERPT_END=/var/lib/homelab-chat-run/raw/HOMELAB-CLUSTER-KB-V1-BLOCKER-RESOLUTION-READ-ONLY-20260805T070400Z-20260805T070503Z.log
EVIDENCE_FILE=/var/lib/homelab-chat-run/raw/SUPPORT-260917-INFRA-DR-BACKUPV2-LEGACY-LXC-FRESH-PLAN-OWNER-REPAIR-VERIFY-492R1-20260916T221657Z.log|SHA256=8c8f1aa4e255d5b98868fae575a599170248cb528701301a68c7444019b8878c|BYTES=1547
EVIDENCE_EXCERPT_BEGIN=/var/lib/homelab-chat-run/raw/SUPPORT-260917-INFRA-DR-BACKUPV2-LEGACY-LXC-FRESH-PLAN-OWNER-REPAIR-VERIFY-492R1-20260916T221657Z.log
11:STALE_491_SUCCESS_PRESENT=NO
12:STALE_491_ARTIFACTS_PRESERVED=YES
13:PREPROOF_DUE_TARGET=ct110
14:PREFLIGHT_486_BASELINE=PASS
15:V2_TIMER_RUNTIME_STOP=PASS
16:COMMON_HEAVY_LOCK_ACQUIRED=YES
17:PATCHED_LEGACY_ENGINE_SHA256=ff4fbf84638ab55a8a1858558b759b3fc9d979ef5feb279132a558bcef583598
18:PATCHED_WRAPPER_SHA256=2c1aea8d29cd697254a2f90a458edf9837f834b4d1f9525f478e8a8eb58cd495
19:PVE265_HELPER_SHA256=de9a225cd67947ca585fbd3440d74d91b606d9fd6d1da1b170cd6fb4c2024220
20:ROLLBACK_TO_486=STARTED
21:ROLLBACK_TO_486=PASS
22:COMMON_HEAVY_LOCK_RELEASED=YES
23:STATUS=FAIL
24:PHASE=CANDIDATE_BUILD
25:REASON=FAILED_CLOSED
26:EXCEPTION_CLASS=builtins.RuntimeError
27:EXCEPTION_MESSAGE_SHA256=07e2418b1301438d64fed32bba375a18bb907447a5067e75c0bdb643b2cbded3
28:PRODUCTION_PROMOTION=NO
29:RETENTION_MUTATION=NO
30:RETENTION_STATUS=HOLD_VM200_LIFECYCLE_RECONCILIATION_REQUIRED
31:CLOUD_DELETIONS=0
32:CHANGES_MADE=true
33:ROLLBACK_STARTED=true
34:ROLLBACK_RESTORED=true
35:MUTATION_OUTCOME=MUTATED_THEN_ROLLED_BACK_TO_486
EVIDENCE_EXCERPT_END=/var/lib/homelab-chat-run/raw/SUPPORT-260917-INFRA-DR-BACKUPV2-LEGACY-LXC-FRESH-PLAN-OWNER-REPAIR-VERIFY-492R1-20260916T221657Z.log
EVIDENCE_FILE=/var/lib/homelab-chat-run/raw/SUPPORT-260921-PVEPRO-GRAM-SUPPORT-SOURCE-TRANSPORT-RCA-READONLY-841R1-20260921T015910Z.log|SHA256=77785506deb1ead492ef78b79376b3a603fe7aa844160caffe51d81361d55184|BYTES=1311
EVIDENCE_EXCERPT_BEGIN=/var/lib/homelab-chat-run/raw/SUPPORT-260921-PVEPRO-GRAM-SUPPORT-SOURCE-TRANSPORT-RCA-READONLY-841R1-20260921T015910Z.log
1:FROZEN_FIX10_PATHSET={"path_count":59,"zip_sha256":"2e31f89d3626a83c1211910aa6fd279cc04689b75ba822899952865085cf551e"}
2:FULL_BUNDLE_DIAG={"err_truncated":false,"exitcode":33,"exited":1,"failure_class":"GUEST_EXIT_NONZERO","guest_err_bytes":0,"guest_err_sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","guest_out_bytes":0,"guest_out_sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","json_parse":true,"marker_present":false,"out_truncated":false,"ssh_rc":0,"ssh_stderr_bytes":0,"ssh_stderr_sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","ssh_stdout_bytes":40,"ssh_stdout_sha256":"7418e4f9e81fccd947927bfdf281ba0fe2377ad4e83c75b1a0f51455b6d81a84"}
3:GRAM_SUPPORT_SOURCE_TRANSPORT_RCA_ERROR_CLASS=RuntimeError
4:GRAM_SUPPORT_SOURCE_TRANSPORT_RCA_ERROR_SHA256=b176c49d737de30d3904cdad3210688d7dc03c01de20e4a1406933efb0748148
5:GRAM_SUPPORT_SOURCE_TRANSPORT_RCA_COMPLETE=False
6:NO_MUTATION=True
7:PRODUCT_CHECKPOINTS_REMAINING=14
8:PLANNING_MINIMUM_MAJOR_COMMANDS_REMAINING=14
9:TASK_RESULT=PVEPRO_GRAM_SUPPORT_SOURCE_TRANSPORT_RCA_FAILED
10:HOMELAB_RESULT_CONTRACT={"changes_made":false,"command_id":"SUPPORT-260921-PVEPRO-GRAM-SUPPORT-SOURCE-TRANSPORT-RCA-READONLY-841R1","rollback_restored":null,"rollback_started":false,"status":"FAIL","version":1}
EVIDENCE_EXCERPT_END=/var/lib/homelab-chat-run/raw/SUPPORT-260921-PVEPRO-GRAM-SUPPORT-SOURCE-TRANSPORT-RCA-READONLY-841R1-20260921T015910Z.log
EVIDENCE_FILE=/var/lib/homelab-chat-run/raw/SUPPORT-260912-INFRA-DR-BACKUPV2-CANARY-PRESTATE-251R1-20260911T231644Z.log|SHA256=d692db1aee85be5db7f37e8d453659c2884ff5f6816410c339298d50248f55bb|BYTES=66524
EVIDENCE_EXCERPT_BEGIN=/var/lib/homelab-chat-run/raw/SUPPORT-260912-INFRA-DR-BACKUPV2-CANARY-PRESTATE-251R1-20260911T231644Z.log
34:FILE_004_UID=0
35:FILE_004_GID=0
36:FILE_004_SIZE=163
37:FILE_004_MTIME_UTC=2026-07-03T11:07:11Z
38:FILE_004_SHA256=28ceb1a533a392af460fc8a42886912fcd256ee6fe8da89460e6c8bdb6096ef1
39:FILE_005_PATH=/etc/systemd/system/homelab-app-cloud-quorum-queue.service
40:FILE_005_MODE=0644
41:FILE_005_UID=0
42:FILE_005_GID=0
43:FILE_005_SIZE=247
44:FILE_005_MTIME_UTC=2026-08-09T00:52:41Z
45:FILE_005_SHA256=70b78ba529c270ec61d26a123d656385a8b2e2e4206ccf623111fa6ed3854602
46:FILE_006_PATH=/etc/systemd/system/homelab-app-cloud-quorum-queue.timer
47:FILE_006_MODE=0644
48:FILE_006_UID=0
49:FILE_006_GID=0
50:FILE_006_SIZE=200
51:FILE_006_MTIME_UTC=2026-08-10T10:51:48Z
52:FILE_006_SHA256=af2eedce3df53029b591d31715a3f3e6688ddb997b4823f487e70c339ce88078
53:FILE_007_PATH=/etc/systemd/system/homelab-backup-audit.service
54:FILE_007_MODE=0644
55:FILE_007_UID=0
664:FILE_094_UID=0
665:FILE_094_GID=0
666:FILE_094_SIZE=211
667:FILE_094_MTIME_UTC=2026-06-27T02:08:30Z
668:FILE_094_SHA256=27dbf6423d02e006dfb8230289fd0dffe1a27ee34380d8b9a78a33e393bbe92a
669:FILE_095_PATH=/etc/systemd/system/homelab-vm-cloud-quorum-queue.service
670:FILE_095_MODE=0644
671:FILE_095_UID=0
672:FILE_095_GID=0
673:FILE_095_SIZE=240
674:FILE_095_MTIME_UTC=2026-08-08T07:11:14Z
675:FILE_095_SHA256=6aa2c72d3eda795f53d25292a11225ae13b418651cef9cce040564ee873fe759
676:FILE_096_PATH=/etc/systemd/system/homelab-vm-cloud-quorum-queue.timer
677:FILE_096_MODE=0644
678:FILE_096_UID=0
679:FILE_096_GID=0
680:FILE_096_SIZE=244
681:FILE_096_MTIME_UTC=2026-08-10T10:51:48Z
682:FILE_096_SHA256=9a78c9ea507116cbb9f5645fe697e34964c905b017cc98b17977cd5006aa5050
683:FILE_097_PATH=/etc/systemd/system/homelab-vm-local-dumps-2cloud.service.d/20-drain-queue.conf
684:FILE_097_MODE=0644
685:FILE_097_UID=0
930:FILE_132_UID=0
931:FILE_132_GID=0
932:FILE_132_SIZE=1806
933:FILE_132_MTIME_UTC=2026-07-11T05:44:41Z
934:FILE_132_SHA256=6deef30b4708a7e5b2ac0f0d98bb6b37b22d858afde994483b67baa18dffdc2a
935:FILE_133_PATH=/usr/local/sbin/homelab-app-cloud-quorum-queue
936:FILE_133_MODE=0755
937:FILE_133_UID=0
938:FILE_133_GID=0
939:FILE_133_SIZE=7855
940:FILE_133_MTIME_UTC=2026-09-04T06:25:07Z
941:FILE_133_SHA256=1f959049cca2710a2cb820cc1f6acab16399c6b6711b9e4522e0ecd49e0e4650
942:FILE_134_PATH=/usr/local/sbin/homelab-backup-audit
943:FILE_134_MODE=0755
944:FILE_134_UID=0
1157:MARKER_009_ID=STATE_ROOT
1158:MARKER_009_LINES=11
1159:MARKER_010_FILE=/usr/local/sbin/backupctl
1160:MARKER_010_ID=STATE_ROOT
1161:MARKER_010_LINES=5
1162:MARKER_011_FILE=/usr/local/sbin/homelab-app-cloud-quorum-queue
1163:MARKER_011_ID=SEALED
1164:MARKER_011_LINES=41,43,45,56,86,125,126,134,140
1165:MARKER_012_FILE=/usr/local/sbin/homelab-backup-audit
1166:MARKER_012_ID=CLOUD_QUORUM_SCHEMA
1167:MARKER_012_LINES=316
1168:MARKER_013_FILE=/usr/local/sbin/homelab-backup-audit
1169:MARKER_013_ID=FIXED_MAIL_01
1170:MARKER_013_LINES=64
1171:MARKER_014_FILE=/usr/local/sbin/homelab-backup-audit
1172:MARKER_014_ID=FIXED_MAIL_02
1173:MARKER_014_LINES=65
1174:MARKER_015_FILE=/usr/local/sbin/homelab-backup-audit
1175:MARKER_015_ID=CLOUD_QUORUM
1176:MARKER_015_LINES=316
1177:MARKER_016_FILE=/usr/local/sbin/homelab-backup-audit
1178:MARKER_016_ID=STATE_ROOT
1179:MARKER_016_LINES=60,61,132
1180:MARKER_017_FILE=/usr/local/sbin/homelab-backup-audit
1181:MARKER_017_ID=SEALED
1182:MARKER_017_LINES=227,228,267,268,315,316,325,485
1183:MARKER_018_FILE=/usr/local/sbin/homelab-backup-audit
1184:MARKER_018_ID=LOCAL_CLEANUP
1197:MARKER_022_LINES=6,61
1198:MARKER_023_FILE=/usr/local/sbin/homelab-backup-matrix-status
1199:MARKER_023_ID=STATE_ROOT
1200:MARKER_023_LINES=3,4
1201:MARKER_024_FILE=/usr/local/sbin/homelab-backup-retention-gc
1202:MARKER_024_ID=CLOUD_QUORUM_SCHEMA
1203:MARKER_024_LINES=74,256
1204:MARKER_025_FILE=/usr/local/sbin/homelab-backup-retention-gc
1205:MARKER_025_ID=FIXED_MAIL_01
1206:MARKER_025_LINES=15
1207:MARKER_026_FILE=/usr/local/sbin/homelab-backup-retention-gc
1208:MARKER_026_ID=FIXED_MAIL_02
1209:MARKER_026_LINES=16
1210:MARKER_027_FILE=/usr/local/sbin/homelab-backup-retention-gc
1211:MARKER_027_ID=CLOUD_QUORUM
1212:MARKER_027_LINES=74
1213:MARKER_028_FILE=/usr/local/sbin/homelab-backup-retention-gc
1214:MARKER_028_ID=STATE_ROOT
1215:MARKER_028_LINES=7,8,26
1216:MARKER_029_FILE=/usr/local/sbin/homelab-backup-retention-gc
1217:MARKER_029_ID=SEALED
1218:MARKER_029_LINES=74,83,88,260,266,268
1219:MARKER_030_FILE=/usr/local/sbin/homelab-backup-retention-gc
1220:MARKER_030_ID=LOCAL_CLEANUP
1239:MARKER_036_LINES=20
1240:MARKER_037_FILE=/usr/local/sbin/homelab-control-backup
1241:MARKER_037_ID=FIXED_MAIL_02
1242:MARKER_037_LINES=21
1243:MARKER_038_FILE=/usr/local/sbin/homelab-control-backup
1244:MARKER_038_ID=CLOUD_QUORUM
1245:MARKER_038_LINES=105
1246:MARKER_039_FILE=/usr/local/sbin/homelab-control-backup
1247:MARKER_039_ID=STATE_ROOT
1248:MARKER_039_LINES=7,9
1249:MARKER_040_FILE=/usr/local/sbin/homelab-control-backup
1250:MARKER_040_ID=SEALED
1251:MARKER_040_LINES=43,114,129,142
1252:MARKER_041_FILE=/usr/local/sbin/homelab-dependency-map-check
1253:MARKER_041_ID=STATE_ROOT
1278:MARKER_049_LINES=12
1279:MARKER_050_FILE=/usr/local/sbin/homelab-rotating-boot-drill
1280:MARKER_050_ID=CHUNK_512M_BYTES
1281:MARKER_050_LINES=403
1282:MARKER_051_FILE=/usr/local/sbin/homelab-rotating-boot-drill
1283:MARKER_051_ID=CLOUD_QUORUM
1284:MARKER_051_LINES=384
1285:MARKER_052_FILE=/usr/local/sbin/homelab-rotating-boot-drill
1286:MARKER_052_ID=SEALED
1287:MARKER_052_LINES=252,380
1288:MARKER_053_FILE=/usr/local/sbin/homelab-rotating-boot-drill
1289:MARKER_053_ID=LOCAL_CLEANUP
1290:MARKER_053_LINES=384
1291:MARKER_054_FILE=/usr/local/sbin/homelab-rotating-boot-drill-state-export
1292:MARKER_054_ID=CLOUD_QUORUM_SCHEMA
1293:MARKER_054_LINES=23
1294:MARKER_055_FILE=/usr/local/sbin/homelab-rotating-boot-drill-state-export
1295:MARKER_055_ID=FIXED_MAIL_01
1296:MARKER_055_LINES=40
1297:MARKER_056_FILE=/usr/local/sbin/homelab-rotating-boot-drill-state-export
1298:MARKER_056_ID=FIXED_MAIL_02
1299:MARKER_056_LINES=41
1300:MARKER_057_FILE=/usr/local/sbin/homelab-rotating-boot-drill-state-export
1301:MARKER_057_ID=CLOUD_QUORUM
1302:MARKER_057_LINES=25
1303:MARKER_058_FILE=/usr/local/sbin/homelab-rotating-boot-drill-state-export
1304:MARKER_058_ID=STATE_ROOT
1305:MARKER_058_LINES=7,8
1306:MARKER_059_FILE=/usr/local/sbin/homelab-rotating-boot-drill-state-export
1307:MARKER_059_ID=SEALED
1308:MARKER_059_LINES=24,52,74
1309:MARKER_060_FILE=/usr/local/sbin/homelab-rotating-boot-drill-state-export
1310:MARKER_060_ID=LOCAL_CLEANUP
1316:MARKER_062_ID=STATE_ROOT
1317:MARKER_062_LINES=8,43
1318:MARKER_063_FILE=/usr/local/sbin/homelab-service-registry-check
1319:MARKER_063_ID=STATE_ROOT
1320:MARKER_063_LINES=14
1321:MARKER_064_FILE=/usr/local/sbin/homelab-vm-cloud-quorum-queue
1322:MARKER_064_ID=SEALED
1323:MARKER_064_LINES=80,82,84,95,130,168,169
1324:MARKER_065_FILE=/usr/local/sbin/skladchik-reports-monitor-backup
1325:MARKER_065_ID=FIXED_MAIL_01
1326:MARKER_065_LINES=11
1327:MARKER_066_FILE=/usr/local/sbin/skladchik-reports-monitor-backup
1328:MARKER_066_ID=FIXED_MAIL_02
1329:MARKER_066_LINES=12
1330:MARKER_067_FILE=/usr/local/sbin/skladchik-reports-monitor-backup-restore-check
1349:UNIT_003_ENABLED=static
1350:UNIT_004_NAME=homelab-alerting-health.timer
1351:UNIT_004_FILE_STATE=enabled
1352:UNIT_004_ACTIVE=active
1353:UNIT_004_ENABLED=enabled
1354:UNIT_005_NAME=homelab-app-cloud-quorum-queue.service
1355:UNIT_005_FILE_STATE=static
1356:UNIT_005_ACTIVE=inactive
1357:UNIT_005_ENABLED=static
1358:UNIT_006_NAME=homelab-app-cloud-quorum-queue.timer
1359:UNIT_006_FILE_STATE=enabled
1360:UNIT_006_ACTIVE=active
1361:UNIT_006_ENABLED=enabled
1362:UNIT_007_NAME=homelab-backup-audit.service
1363:UNIT_007_FILE_STATE=static
1364:UNIT_007_ACTIVE=inactive
1365:UNIT_007_ENABLED=static
1366:UNIT_008_NAME=homelab-backup-audit.timer
1367:UNIT_008_FILE_STATE=enabled
1705:UNIT_092_ENABLED=static
1706:UNIT_093_NAME=homelab-storage-capacity.timer
1707:UNIT_093_FILE_STATE=enabled
1708:UNIT_093_ACTIVE=active
1709:UNIT_093_ENABLED=enabled
1710:UNIT_094_NAME=homelab-vm-cloud-quorum-queue.service
1711:UNIT_094_FILE_STATE=static
1712:UNIT_094_ACTIVE=inactive
1713:UNIT_094_ENABLED=static
1714:UNIT_095_NAME=homelab-vm-cloud-quorum-queue.timer
1715:UNIT_095_FILE_STATE=enabled
1716:UNIT_095_ACTIVE=active
1717:UNIT_095_ENABLED=enabled
1718:UNIT_096_NAME=homelab-vps-identity-audit.service
1719:UNIT_096_FILE_STATE=static
1720:UNIT_096_ACTIVE=inactive
1721:UNIT_096_ENABLED=static
1722:UNIT_097_NAME=homelab-vps-identity-audit.timer
1723:UNIT_097_FILE_STATE=enabled
1735:STATE_TOP_002_FILES=215
1736:STATE_TOP_002_DIRS=7
1737:STATE_TOP_003_NAME=apps
1738:STATE_TOP_003_FILES=41
1739:STATE_TOP_003_DIRS=19
1740:STATE_TOP_004_NAME=cloud-quorum
1741:STATE_TOP_004_FILES=473
1742:STATE_TOP_004_DIRS=14
EVIDENCE_EXCERPT_END=/var/lib/homelab-chat-run/raw/SUPPORT-260912-INFRA-DR-BACKUPV2-CANARY-PRESTATE-251R1-20260911T231644Z.log
EVIDENCE_FILE=/var/lib/homelab-chat-run/raw/NEWFI-260919-NEWFDOM-CONTENT207-APPLY119R2-20260918T230443Z.log|SHA256=016c1a5c3b52a4d83959eb059517d71f62bf5ea94f5dbb8c73ace33e96198b0e|BYTES=591
EVIDENCE_EXCERPT_BEGIN=/var/lib/homelab-chat-run/raw/NEWFI-260919-NEWFDOM-CONTENT207-APPLY119R2-20260918T230443Z.log
1:NEWFI119R2_BEGIN
2:COMMAND_ID=NEWFI-260919-NEWFDOM-CONTENT207-APPLY119R2
3:NEWFI119R2_FORUM_ROUTE_PRECHECK={"policy":"HTTP_200_OR_403","routes":7}
4:NEWFI119R2_PUBLIC_PRECHECK=PASS
5:NEWFI119R2_SAFE_REPORT={"changes_made":false,"decision":"FAIL_CONTENT207_HOLD","error":"RuntimeError:MARKER:staging:f5a27a04869135710514a29a3a7db57b149d47261d5af1a0315f4bf5de2bcf17","rollback_restored":null,"rollback_started":false}
6:HOMELAB_RESULT_CONTRACT={"changes_made":false,"command_id":"NEWFI-260919-NEWFDOM-CONTENT207-APPLY119R2","rollback_restored":null,"rollback_started":false,"status":"FAIL","version":1}
EVIDENCE_EXCERPT_END=/var/lib/homelab-chat-run/raw/NEWFI-260919-NEWFDOM-CONTENT207-APPLY119R2-20260918T230443Z.log
EVIDENCE_FILE=/var/lib/homelab-chat-run/raw/SUPPORT-260921-PVEPRO-GRAM-SUPPORT-TEMPLATE-PERMISSION-METADATA-RCA-READONLY-847R1-20260921T032838Z.log|SHA256=4f24edf07a28a8ad12035dec1b9071bb1119041b2457ef1942b3815508d2c62e|BYTES=1146
EVIDENCE_EXCERPT_BEGIN=/var/lib/homelab-chat-run/raw/SUPPORT-260921-PVEPRO-GRAM-SUPPORT-TEMPLATE-PERMISSION-METADATA-RCA-READONLY-847R1-20260921T032838Z.log
1:COMMAND_ID=SUPPORT-260921-PVEPRO-GRAM-SUPPORT-TEMPLATE-PERMISSION-METADATA-RCA-READONLY-847R1
2:MODE=read-only
3:COMPONENT=pvepro-gram-support-template-permission-metadata-rca-readonly
4:PRODUCTION_HOST={"all_link_down":false,"config_sha256":"ebd2b7d44ab58a222b4fd5a7dcd9358d3082e593bd70fb07c2331c70f22e82ab","lock":null,"name":"pvepro-prod","snapshots":[],"status":"running","vmstate":null}
5:STAGING_HOST={"all_link_down":true,"config_sha256":"43761ab3d555625387944883cd0229cde2121aba005a715dffe20465041e8aa9","lock":null,"name":"pvepro-staging-v1","snapshots":[],"status":"stopped","vmstate":null}
6:GRAM_SUPPORT_AUX_METADATA_RCA_ERROR_CLASS=RuntimeError
7:GRAM_SUPPORT_AUX_METADATA_RCA_ERROR_SHA256=4222b751d8b413d590c8e1b968ddffdbbd193fe70664f2dae559a0452f4d2d66
8:NO_MUTATION=true
9:PRODUCT_CHECKPOINTS_REMAINING=14
10:PLANNING_MINIMUM_MAJOR_COMMANDS_REMAINING=14
11:TASK_RESULT=PVEPRO_GRAM_SUPPORT_TEMPLATE_PERMISSION_METADATA_RCA_FAILED
12:HOMELAB_RESULT_CONTRACT={"changes_made":false,"command_id":"SUPPORT-260921-PVEPRO-GRAM-SUPPORT-TEMPLATE-PERMISSION-METADATA-RCA-READONLY-847R1","rollback_restored":null,"rollback_started":false,"status":"FAIL","version":1}
EVIDENCE_EXCERPT_END=/var/lib/homelab-chat-run/raw/SUPPORT-260921-PVEPRO-GRAM-SUPPORT-TEMPLATE-PERMISSION-METADATA-RCA-READONLY-847R1-20260921T032838Z.log
EVIDENCE_FILE=/var/lib/homelab-chat-run/raw/SUPPORT-260921-HOMELAB-BACKUP-RPO-REFRESH-1098R1-20260921T175001Z.log|SHA256=eadab1eba08cb0aa59cf3e89d0217dff44bbca0cfd40c94c3087ec0737596519|BYTES=14751
EVIDENCE_EXCERPT_BEGIN=/var/lib/homelab-chat-run/raw/SUPPORT-260921-HOMELAB-BACKUP-RPO-REFRESH-1098R1-20260921T175001Z.log
2:COMMAND_ID=SUPPORT-260921-HOMELAB-BACKUP-RPO-REFRESH-1098R1
3:MODE=change
4:COMPONENT=homelab-backup-rpo-refresh
5:MUTATION_BOUNDARY=START_EXISTING_APP_AND_BACKUP_SERVICES_ONLY_WHEN_RPO_STALE;NO_TIMER_DISABLE;NO_KILL;NO_SIGNAL;NO_LOCK_BREAK;NO_CONFIG_CHANGE;NO_GIT_WRITE;NO_DELETE
6:RPO_BEFORE=[{"decision":"BACKUP_DUE","freshness_plan_rc":0,"kind":"APP","logical_id":"app-filebrowser"},{"decision":"BACKUP_DUE","freshness_plan_rc":0,"kind":"APP","logical_id":"app-hbarhub"},{"decision":"BACKUP_DUE","freshness_plan_rc":0,"kind":"APP","logical_id":"app-immich"},{"decision":"BACKUP_DUE","freshness_plan_rc":0,"kind":"APP","logical_id":"app-skladchik-reports-monitor"},{"age_seconds":84882,"freshness_limit_seconds":72000,"kind":"VM","logical_id":"vm110"},{"age_seconds":77981,"freshness_limit_seconds":72000,"kind":"VM","logical_id":"vm111"}]
7:BACKUP_STATE_BEFORE={"heavy_lock_free":true,"mainpid":0}
8:RPO_LOOP_1=[{"decision":"BACKUP_DUE","freshness_plan_rc":0,"kind":"APP","logical_id":"app-filebrowser"},{"decision":"BACKUP_DUE","freshness_plan_rc":0,"kind":"APP","logical_id":"app-hbarhub"},{"decision":"BACKUP_DUE","freshness_plan_rc":0,"kind":"APP","logical_id":"app-immich"},{"decision":"BACKUP_DUE","freshness_plan_rc":0,"kind":"APP","logical_id":"app-skladchik-reports-monitor"},{"age_seconds":84884,"freshness_limit_seconds":72000,"kind":"VM","logical_id":"vm110"},{"age_seconds":77983,"freshness_limit_seconds":72000,"kind":"VM","logical_id":"vm111"}]
9:UNIT_WAIT unit=homelab-app-cloud-quorum-queue.service elapsed=60 active=success sub=activating result=start
10:UNIT_WAIT unit=homelab-app-cloud-quorum-queue.service elapsed=120 active=success sub=activating result=start
11:UNIT_WAIT unit=homelab-app-cloud-quorum-queue.service elapsed=180 active=success sub=activating result=start
12:UNIT_WAIT unit=homelab-app-cloud-quorum-queue.service elapsed=240 active=success sub=inactive result=dead
13:UNIT_WAIT unit=homelab-app-cloud-quorum-queue.service elapsed=300 active=success sub=inactive result=dead
14:UNIT_WAIT unit=homelab-app-cloud-quorum-queue.service elapsed=360 active=success sub=inactive result=dead
15:UNIT_WAIT unit=homelab-app-cloud-quorum-queue.service elapsed=420 active=success sub=inactive result=dead
16:UNIT_WAIT unit=homelab-app-cloud-quorum-queue.service elapsed=480 active=success sub=inactive result=dead
17:UNIT_WAIT unit=homelab-app-cloud-quorum-queue.service elapsed=540 active=success sub=inactive result=dead
18:UNIT_WAIT unit=homelab-app-cloud-quorum-queue.service elapsed=600 active=success sub=inactive result=dead
19:UNIT_WAIT unit=homelab-app-cloud-quorum-queue.service elapsed=660 active=success sub=inactive result=dead
20:UNIT_WAIT unit=homelab-app-cloud-quorum-queue.service elapsed=720 active=success sub=inactive result=dead
21:UNIT_WAIT unit=homelab-app-cloud-quorum-queue.service elapsed=780 active=success sub=inactive result=dead
22:UNIT_WAIT unit=homelab-app-cloud-quorum-queue.service elapsed=840 active=success sub=inactive result=dead
23:UNIT_WAIT unit=homelab-app-cloud-quorum-queue.service elapsed=900 active=success sub=inactive result=dead
24:UNIT_WAIT unit=homelab-app-cloud-quorum-queue.service elapsed=960 active=success sub=inactive result=dead
25:UNIT_WAIT unit=homelab-app-cloud-quorum-queue.service elapsed=1020 active=success sub=inactive result=dead
26:UNIT_WAIT unit=homelab-app-cloud-quorum-queue.service elapsed=1080 active=success sub=inactive result=dead
27:UNIT_WAIT unit=homelab-app-cloud-quorum-queue.service elapsed=1140 active=success sub=inactive result=dead
28:UNIT_WAIT unit=homelab-app-cloud-quorum-queue.service elapsed=1200 active=success sub=inactive result=dead
29:UNIT_WAIT unit=homelab-app-cloud-quorum-queue.service elapsed=1260 active=success sub=inactive result=dead
30:UNIT_WAIT unit=homelab-app-cloud-quorum-queue.service elapsed=1321 active=success sub=inactive result=dead
31:UNIT_WAIT unit=homelab-app-cloud-quorum-queue.service elapsed=1381 active=success sub=inactive result=dead
32:UNIT_WAIT unit=homelab-app-cloud-quorum-queue.service elapsed=1441 active=success sub=inactive result=dead
33:UNIT_WAIT unit=homelab-app-cloud-quorum-queue.service elapsed=1501 active=success sub=inactive result=dead
34:UNIT_WAIT unit=homelab-app-cloud-quorum-queue.service elapsed=1561 active=success sub=inactive result=dead
35:UNIT_WAIT unit=homelab-app-cloud-quorum-queue.service elapsed=1621 active=success sub=inactive result=dead
36:UNIT_WAIT unit=homelab-app-cloud-quorum-queue.service elapsed=1681 active=success sub=inactive result=dead
37:UNIT_WAIT unit=homelab-app-cloud-quorum-queue.service elapsed=1741 active=success sub=inactive result=dead
38:UNIT_WAIT unit=homelab-app-cloud-quorum-queue.service elapsed=1801 active=success sub=inactive result=dead
39:UNIT_WAIT unit=homelab-app-cloud-quorum-queue.service elapsed=1861 active=success sub=inactive result=dead
40:UNIT_WAIT unit=homelab-app-cloud-quorum-queue.service elapsed=1921 active=success sub=inactive result=dead
41:UNIT_WAIT unit=homelab-app-cloud-quorum-queue.service elapsed=1981 active=success sub=inactive result=dead
42:UNIT_WAIT unit=homelab-app-cloud-quorum-queue.service elapsed=2041 active=success sub=inactive result=dead
43:UNIT_WAIT unit=homelab-app-cloud-quorum-queue.service elapsed=2101 active=success sub=inactive result=dead
44:UNIT_WAIT unit=homelab-app-cloud-quorum-queue.service elapsed=2161 active=success sub=inactive result=dead
45:UNIT_WAIT unit=homelab-app-cloud-quorum-queue.service elapsed=2221 active=success sub=inactive result=dead
46:UNIT_WAIT unit=homelab-app-cloud-quorum-queue.service elapsed=2281 active=success sub=inactive result=dead
47:UNIT_WAIT unit=homelab-app-cloud-quorum-queue.service elapsed=2341 active=success sub=inactive result=dead
48:UNIT_WAIT unit=homelab-app-cloud-quorum-queue.service elapsed=2401 active=success sub=activating result=start
49:UNIT_WAIT unit=homelab-app-cloud-quorum-queue.service elapsed=2461 active=success sub=inactive result=dead
50:UNIT_WAIT unit=homelab-app-cloud-quorum-queue.service elapsed=2521 active=success sub=inactive result=dead
51:UNIT_WAIT unit=homelab-app-cloud-quorum-queue.service elapsed=2581 active=success sub=inactive result=dead
52:UNIT_WAIT unit=homelab-app-cloud-quorum-queue.service elapsed=2642 active=success sub=inactive result=dead
53:UNIT_WAIT unit=homelab-app-cloud-quorum-queue.service elapsed=2702 active=success sub=inactive result=dead
54:UNIT_WAIT unit=homelab-app-cloud-quorum-queue.service elapsed=2762 active=success sub=inactive result=dead
55:UNIT_WAIT unit=homelab-app-cloud-quorum-queue.service elapsed=2822 active=success sub=inactive result=dead
56:UNIT_WAIT unit=homelab-app-cloud-quorum-queue.service elapsed=2882 active=success sub=inactive result=dead
57:UNIT_WAIT unit=homelab-app-cloud-quorum-queue.service elapsed=2942 active=success sub=inactive result=dead
58:UNIT_WAIT unit=homelab-app-cloud-quorum-queue.service elapsed=3002 active=success sub=inactive result=dead
59:UNIT_WAIT unit=homelab-app-cloud-quorum-queue.service elapsed=3062 active=success sub=inactive result=dead
60:UNIT_WAIT unit=homelab-app-cloud-quorum-queue.service elapsed=3122 active=success sub=inactive result=dead
61:UNIT_WAIT unit=homelab-app-cloud-quorum-queue.service elapsed=3182 active=success sub=inactive result=dead
62:UNIT_WAIT unit=homelab-app-cloud-quorum-queue.service elapsed=3242 active=success sub=inactive result=dead
63:UNIT_WAIT unit=homelab-app-cloud-quorum-queue.service elapsed=3302 active=success sub=inactive result=dead
64:UNIT_WAIT unit=homelab-app-cloud-quorum-queue.service elapsed=3362 active=success sub=inactive result=dead
65:UNIT_WAIT unit=homelab-app-cloud-quorum-queue.service elapsed=3422 active=success sub=inactive result=dead
66:UNIT_WAIT unit=homelab-app-cloud-quorum-queue.service elapsed=3482 active=success sub=inactive result=dead
67:UNIT_WAIT unit=homelab-app-cloud-quorum-queue.service elapsed=3542 active=success sub=inactive result=dead
68:UNIT_WAIT unit=homelab-app-cloud-quorum-queue.service elapsed=3602 active=success sub=inactive result=dead
69:UNIT_WAIT unit=homelab-app-cloud-quorum-queue.service elapsed=3662 active=success sub=inactive result=dead
70:UNIT_WAIT unit=homelab-app-cloud-quorum-queue.service elapsed=3722 active=success sub=inactive result=dead
71:UNIT_WAIT unit=homelab-app-cloud-quorum-queue.service elapsed=3782 active=success sub=inactive result=dead
72:UNIT_WAIT unit=homelab-app-cloud-quorum-queue.service elapsed=3842 active=success sub=inactive result=dead
73:UNIT_WAIT unit=homelab-app-cloud-quorum-queue.service elapsed=3902 active=success sub=inactive result=dead
74:UNIT_WAIT unit=homelab-app-cloud-quorum-queue.service elapsed=3962 active=success sub=inactive result=dead
75:UNIT_WAIT unit=homelab-app-cloud-quorum-queue.service elapsed=4023 active=success sub=inactive result=dead
76:UNIT_WAIT unit=homelab-app-cloud-quorum-queue.service elapsed=4083 active=success sub=inactive result=dead
77:UNIT_WAIT unit=homelab-app-cloud-quorum-queue.service elapsed=4143 active=success sub=inactive result=dead
78:UNIT_WAIT unit=homelab-app-cloud-quorum-queue.service elapsed=4203 active=success sub=inactive result=dead
79:UNIT_WAIT unit=homelab-app-cloud-quorum-queue.service elapsed=4263 active=success sub=inactive result=dead
80:UNIT_WAIT unit=homelab-app-cloud-quorum-queue.service elapsed=4323 active=success sub=inactive result=dead
81:UNIT_WAIT unit=homelab-app-cloud-quorum-queue.service elapsed=4383 active=success sub=inactive result=dead
82:UNIT_WAIT unit=homelab-app-cloud-quorum-queue.service elapsed=4443 active=success sub=inactive result=dead
83:UNIT_WAIT unit=homelab-app-cloud-quorum-queue.service elapsed=4503 active=success sub=inactive result=dead
84:UNIT_WAIT unit=homelab-app-cloud-quorum-queue.service elapsed=4563 active=success sub=inactive result=dead
85:UNIT_WAIT unit=homelab-app-cloud-quorum-queue.service elapsed=4623 active=success sub=inactive result=dead
86:UNIT_WAIT unit=homelab-app-cloud-quorum-queue.service elapsed=4683 active=success sub=inactive result=dead
87:UNIT_WAIT unit=homelab-app-cloud-quorum-queue.service elapsed=4743 active=success sub=inactive result=dead
88:UNIT_WAIT unit=homelab-app-cloud-quorum-queue.service elapsed=4803 active=success sub=inactive result=dead
89:UNIT_WAIT unit=homelab-app-cloud-quorum-queue.service elapsed=4863 active=success sub=inactive result=dead
90:UNIT_WAIT unit=homelab-app-cloud-quorum-queue.service elapsed=4923 active=success sub=inactive result=dead
91:UNIT_WAIT unit=homelab-app-cloud-quorum-queue.service elapsed=4983 active=success sub=inactive result=dead
92:UNIT_WAIT unit=homelab-app-cloud-quorum-queue.service elapsed=5043 active=success sub=inactive result=dead
93:UNIT_WAIT unit=homelab-app-cloud-quorum-queue.service elapsed=5103 active=success sub=inactive result=dead
94:UNIT_WAIT unit=homelab-app-cloud-quorum-queue.service elapsed=5163 active=success sub=inactive result=dead
95:UNIT_WAIT unit=homelab-app-cloud-quorum-queue.service elapsed=5223 active=success sub=inactive result=dead
96:UNIT_WAIT unit=homelab-app-cloud-quorum-queue.service elapsed=5283 active=success sub=inactive result=dead
97:UNIT_WAIT unit=homelab-app-cloud-quorum-queue.service elapsed=5344 active=success sub=inactive result=dead
98:UNIT_WAIT unit=homelab-app-cloud-quorum-queue.service elapsed=5404 active=success sub=inactive result=dead
99:UNIT_WAIT unit=homelab-app-cloud-quorum-queue.service elapsed=5464 active=success sub=inactive result=dead
100:UNIT_WAIT unit=homelab-app-cloud-quorum-queue.service elapsed=5524 active=success sub=inactive result=dead
101:UNIT_WAIT unit=homelab-app-cloud-quorum-queue.service elapsed=5584 active=success sub=inactive result=dead
102:UNIT_WAIT unit=homelab-app-cloud-quorum-queue.service elapsed=5644 active=success sub=inactive result=dead
103:UNIT_WAIT unit=homelab-app-cloud-quorum-queue.service elapsed=5704 active=success sub=inactive result=dead
104:UNIT_WAIT unit=homelab-app-cloud-quorum-queue.service elapsed=5764 active=success sub=inactive result=dead
105:UNIT_WAIT unit=homelab-app-cloud-quorum-queue.service elapsed=5824 active=success sub=inactive result=dead
106:UNIT_WAIT unit=homelab-app-cloud-quorum-queue.service elapsed=5884 active=success sub=inactive result=dead
107:UNIT_WAIT unit=homelab-app-cloud-quorum-queue.service elapsed=5944 active=success sub=inactive result=dead
108:UNIT_WAIT unit=homelab-app-cloud-quorum-queue.service elapsed=6004 active=success sub=inactive result=dead
109:UNIT_WAIT unit=homelab-app-cloud-quorum-queue.service elapsed=6064 active=success sub=inactive result=dead
110:UNIT_WAIT unit=homelab-app-cloud-quorum-queue.service elapsed=6124 active=success sub=inactive result=dead
111:UNIT_WAIT unit=homelab-app-cloud-quorum-queue.service elapsed=6184 active=success sub=inactive result=dead
112:UNIT_WAIT unit=homelab-app-cloud-quorum-queue.service elapsed=6244 active=success sub=inactive result=dead
113:UNIT_WAIT unit=homelab-app-cloud-quorum-queue.service elapsed=6304 active=success sub=inactive result=dead
114:UNIT_WAIT unit=homelab-app-cloud-quorum-queue.service elapsed=6364 active=success sub=inactive result=dead
115:UNIT_WAIT unit=homelab-app-cloud-quorum-queue.service elapsed=6424 active=success sub=inactive result=dead
116:UNIT_WAIT unit=homelab-app-cloud-quorum-queue.service elapsed=6484 active=success sub=inactive result=dead
117:UNIT_WAIT unit=homelab-app-cloud-quorum-queue.service elapsed=6544 active=success sub=inactive result=dead
118:UNIT_WAIT unit=homelab-app-cloud-quorum-queue.service elapsed=6604 active=success sub=inactive result=dead
119:UNIT_WAIT unit=homelab-app-cloud-quorum-queue.service elapsed=6664 active=success sub=inactive result=dead
120:UNIT_WAIT unit=homelab-app-cloud-quorum-queue.service elapsed=6725 active=success sub=inactive result=dead
121:UNIT_WAIT unit=homelab-app-cloud-quorum-queue.service elapsed=6785 active=success sub=inactive result=dead
122:UNIT_WAIT unit=homelab-app-cloud-quorum-queue.service elapsed=6845 active=success sub=inactive result=dead
123:UNIT_WAIT unit=homelab-app-cloud-quorum-queue.service elapsed=6905 active=success sub=inactive result=dead
124:UNIT_WAIT unit=homelab-app-cloud-quorum-queue.service elapsed=6965 active=success sub=inactive result=dead
125:UNIT_WAIT unit=homelab-app-cloud-quorum-queue.service elapsed=7025 active=success sub=inactive result=dead
126:UNIT_WAIT unit=homelab-app-cloud-quorum-queue.service elapsed=7085 active=success sub=inactive result=dead
127:UNIT_WAIT unit=homelab-app-cloud-quorum-queue.service elapsed=7145 active=success sub=inactive result=dead
128:UNIT_WAIT unit=homelab-app-cloud-quorum-queue.service elapsed=7205 active=success sub=inactive result=dead
129:APP_REFRESH_RUN={"iteration":1,"meta":{"active":"success","elapsed":7205,"result":"TIMEOUT","start_rc":0,"sub":"inactive"},"ok":false,"unit":"homelab-app-cloud-quorum-queue.service"}
130:FAILURE=APP_REFRESH_SERVICE_FAILED
131:TASK_RESULT=FAIL_RPO_REFRESH
132:HOMELAB_RESULT_CONTRACT={"version":1,"command_id":"SUPPORT-260921-HOMELAB-BACKUP-RPO-REFRESH-1098R1","status":"FAIL","changes_made":true,"rollback_started":false,"rollback_restored":null}
EVIDENCE_EXCERPT_END=/var/lib/homelab-chat-run/raw/SUPPORT-260921-HOMELAB-BACKUP-RPO-REFRESH-1098R1-20260921T175001Z.log
EVIDENCE_FILE=/var/lib/homelab-chat-run/raw/SUPPORT-260915-INFRA-DR-BACKUPV2-CLOUD-ADAPTER-MAPPING-CONSTRUCTOR-CONTRACT-PROOF-430R1-20260915T144509Z.log|SHA256=3fbfdc5678033def49db75960de4c40eeb2d4a2e1737df79c5524d72e700a5e9|BYTES=57660
EVIDENCE_EXCERPT_BEGIN=/var/lib/homelab-chat-run/raw/SUPPORT-260915-INFRA-DR-BACKUPV2-CLOUD-ADAPTER-MAPPING-CONSTRUCTOR-CONTRACT-PROOF-430R1-20260915T144509Z.log
41:V2CORE_VALIDATE_INVENTORY_CONTRACT={"signature":"(entries)","source":"def validate_inventory(entries):\n    require(type(entries) is list and len(entries)==EXPECTED_ACCOUNTS,'INVENTORY_COUNT')\n    for e in entries:\n        require(type(e) is dict and set(e)==ENTRY_KEYS,'INVENTORY_SCHEMA')\n        require(valid_hash(e['account_id']) and valid_name(e['crypt_remote']) and valid_name(e['mail_remote']),\n                'INVENTORY_IDENTITY')\n        require(e['crypt_remote']!=e['mail_remote'] and safe_path(e['wrapped_path']),'INVENTORY_MAPPING')\n    for key in ('account_id','crypt_remote','mail_remote'):\n        require(len({e[key] for e in entries})==EXPECTED_ACCOUNTS,'DUPLICATE_ACCOUNT_OR_REMOTE')\n    return True\n","source_sha256":"907c873e0a910ac81fc84cd6ca9ec71fb9d503ee5099e46212e1abecd46fee91"}
42:V2CORE_ALLOCATE_CONTRACT={"signature":"(entries, quotas, payload_bytes, reserve_bytes, now)","source":"def allocate(entries, quotas, payload_bytes, reserve_bytes, now):\n    \"\"\"Size-bound deterministic 2-of-13 plan. No implicit reserve or cloud call.\"\"\"\n    validate_inventory(entries)\n    require(type(quotas) is dict and integer(now),'QUOTA_INPUT_INVALID')\n    need=required_space(payload_bytes,reserve_bytes)\n    eligible=[]; excluded=[]\n    for e in entries:\n        q=quotas.get(e['account_id']); reason=quota_reason(q,now)\n        if reason is None and q['free']<need: reason='INSUFFICIENT_SPACE'\n        if reason:\n            excluded.append({'account_id':e['account_id'],'crypt_remote':e['crypt_remote'],'reason':reason})\n        else:\n            eligible.append({**e,'free_bytes':q['free'],'observed_at':q['observed_at']})\n    eligible.sort(key=lambda e:(-e['free_bytes'],e['account_id'],e['crypt_remote']))\n    require(len(eligible)>=2,'TWO_DISTINCT_ELIGIBLE_ACCOUNTS_REQUIRED')\n    return {'schema_version':1,'payload_bytes':payload_bytes,'reserve_bytes':reserve_bytes,\n            'required_free_bytes':need,'part_bytes':PART_BYTES,'selected':eligible[:2],\n            'eligible_count':len(eligible),'excluded':sorted(excluded,key=lambda e:e['account_id']),\n            'selection_rule':'FREE_DESC_ACCOUNT_ID_ASC_REMOTE_ASC','planned_at':now}\n","source_sha256":"6733fa88712b33cc904dfc6c868eec3ebdca596419a062b037b1549a19ec0507"}
43:V2CORE_MAKE_MANIFEST_CONTRACT={"signature":"(generation, logical_id, payload_bytes, payload_sha256, parts, allocation)","source":"def make_manifest(generation,logical_id,payload_bytes,payload_sha256,parts,allocation):\n    require(type(allocation) is dict and allocation.get('payload_bytes')==payload_bytes,'ALLOCATION_PAYLOAD_MISMATCH')\n    require(type(allocation.get('payload_bytes')) is int,'ALLOCATION_PAYLOAD_TYPE')\n    need=required_space(payload_bytes,allocation.get('reserve_bytes'))\n    require(type(allocation.get('required_free_bytes')) is int and allocation['required_free_bytes']==need\n            and allocation.get('part_bytes')==PART_BYTES,'ALLOCATION_BUDGET_MISMATCH')\n    selected=allocation.get('selected')\n    require(type(selected) is list and len(selected)==2,'ALLOCATION_QUORUM')\n    for entry in selected:\n        require(type(entry) is dict and integer(entry.get('free_bytes')) and entry['free_bytes']>=need,\n                'ALLOCATION_FREE_SPACE_MISMATCH')\n    try:\n        replicas=[{'account_id':e['account_id'],'crypt_remote':e['crypt_remote']} for e in selected]\n        namespace='backup-v2/targets/'+logical_id+'/generations/'+generation\n    except (TypeError,KeyError):\n        raise Rejected('ALLOCATION_SCHEMA') from None\n    m={'schema_version':2,'state':'PREPARED','generation':generation,'logical_id':logical_id,'namespace':namespace,\n       'payload_bytes':payload_bytes,'payload_sha256':payload_sha256,'part_bytes':PART_BYTES,\n       'parts':json.loads(canonical_bytes(parts)),'replicas':replicas}\n    validate_manifest(m)\n    return m\n","source_sha256":"53af74927268c9aa3ba751225cb2994e517a38807835341e7b82e215fb0c0cda"}
44:V2CORE_QUOTA_REASON_CONTRACT={"signature":"(q, now)","source":"def quota_reason(q, now):\n    if type(q) is not dict: return 'NO_QUOTA'\n    if q.get('ok') is not True: return 'ABOUT_FAILED'\n    if not integer(q.get('observed_at')): return 'QUOTA_TIME_INVALID'\n    if q['observed_at']>now: return 'QUOTA_FROM_FUTURE'\n    if now-q['observed_at']>MAX_QUOTA_AGE_SECONDS: return 'QUOTA_STALE'\n    if not integer(q.get('total'),1) or not integer(q.get('used')) or not integer(q.get('free')):\n        return 'QUOTA_FIELDS_INVALID'\n    if q['used']+q['free']>q['total']: return 'QUOTA_INCONSISTENT'\n    return None\n","source_sha256":"9c1df5fc245f3aea3ae88b08a0073f11e33bdfa2a082cbaa394d5952b9c3d298"}
45:CLOUDLARGE_REQUIRED_METHODS_PRESENT=NO
46:PROOF_EXCEPTION_CLASS=builtins.RuntimeError
47:PROOF_EXCEPTION_MESSAGE_SHA256=5bd3a5256c322cd1546a6b63d6b2d21d4c3c0d1b2f1386678f3036dc70061863
48:STATUS=FAIL
49:PHASE=CLOUD_ADAPTER_MAPPING_CONSTRUCTOR_CONTRACT_PROOF
50:REASON=CLOUDLARGE_REQUIRED_METHODS
51:NEXT_GATE=STOP
52:CHANGES_MADE=false
53:MUTATION_OUTCOME=NO_MUTATION
54:PRODUCTION_PROMOTION=NO
55:BACKUP_EXECUTIONS=0
EVIDENCE_EXCERPT_END=/var/lib/homelab-chat-run/raw/SUPPORT-260915-INFRA-DR-BACKUPV2-CLOUD-ADAPTER-MAPPING-CONSTRUCTOR-CONTRACT-PROOF-430R1-20260915T144509Z.log
EVIDENCE_FILE=/var/lib/homelab-chat-run/raw/SUPPORT-260918-INFRA-PVE1-MOLDOVA-OVERLAY504-TRANSPORT-READONLY-557R3-20260918T211033Z.log|SHA256=e28442fce699135a678d87f47199ecead0bb39ff250c5f9b54c7acbfe40c08d7|BYTES=42268
EVIDENCE_EXCERPT_BEGIN=/var/lib/homelab-chat-run/raw/SUPPORT-260918-INFRA-PVE1-MOLDOVA-OVERLAY504-TRANSPORT-READONLY-557R3-20260918T211033Z.log
75:OVERLAY_CONTEXT_entry504_py_02_LINE_0051=else:
76:OVERLAY_CONTEXT_entry504_py_02_LINE_0052=continue
77:OVERLAY_CONTEXT_entry504_py_03_RANGE=58-70
78:OVERLAY_CONTEXT_entry504_py_03_LINE_0058=found[id(g)]=g
79:OVERLAY_CONTEXT_entry504_py_03_LINE_0059=if len(found)!=1:
80:OVERLAY_CONTEXT_entry504_py_03_LINE_0060=raise RuntimeError('LEGACY_PROVENANCE_CARDINALITY')
81:OVERLAY_CONTEXT_entry504_py_03_LINE_0061=g=next(iter(found.values()))
82:OVERLAY_CONTEXT_entry504_py_03_LINE_0062=required=('capture_pve_guest','backup_target','load_targets','cluster_inventory','ssh_remote',
83:OVERLAY_CONTEXT_entry504_py_03_LINE_0063='_default_unprivileged_lxc','mapped_scratch_probe','_stream_argv_to_local','run',
84:OVERLAY_CONTEXT_entry504_py_03_LINE_0064='choose_due_target','write_state','epoch')
85:OVERLAY_CONTEXT_entry504_py_03_LINE_0065=if any(not callable(g.get(n)) for n in required):
86:OVERLAY_CONTEXT_entry504_py_03_LINE_0066=raise RuntimeError('LEGACY_PROVENANCE_API')
87:OVERLAY_CONTEXT_entry504_py_03_LINE_0067=original=g['capture_pve_guest']
88:OVERLAY_CONTEXT_entry504_py_03_LINE_0068=proxy=_GlobalsProxy(g)
89:OVERLAY_CONTEXT_entry504_py_03_LINE_0069=if not isinstance(g.get('SCP'),str) or not g['SCP'].startswith('/'):
90:OVERLAY_CONTEXT_entry504_py_03_LINE_0070=raise RuntimeError('LEGACY_SCP_API')
91:OVERLAY_CONTEXT_entry504_py_04_RANGE=74-131
92:OVERLAY_CONTEXT_entry504_py_04_LINE_0074=patched=lxc_adapter.bind(proxy,qemu_patched)
93:OVERLAY_CONTEXT_entry504_py_04_LINE_0075=if not callable(patched):
94:OVERLAY_CONTEXT_entry504_py_04_LINE_0076=raise RuntimeError('LXC_ADAPTER_BIND_RESULT')
95:OVERLAY_CONTEXT_entry504_py_04_LINE_0077=g['capture_pve_guest']=patched
96:OVERLAY_CONTEXT_entry504_py_04_LINE_0078=scheduler_wired=scheduler_adapter.bind(proxy,g['choose_due_target'],g['write_state'])
97:OVERLAY_CONTEXT_entry504_py_04_LINE_0079=if g.get('choose_due_target') is not scheduler_wired['choose_due_target'] or g.get('write_state') is not scheduler_wired['write_state']:
98:OVERLAY_CONTEXT_entry504_py_04_LINE_0080=raise RuntimeError('SCHEDULER_ADAPTER_BIND_RESULT')
99:OVERLAY_CONTEXT_entry504_py_04_LINE_0081=return {'legacy_globals':g,'legacy':proxy,'original_capture':original,'qemu_patched_capture':qemu_patched,'patched_capture':patched,'scheduler_wired':scheduler_wired}
100:OVERLAY_CONTEXT_entry504_py_04_LINE_0082=
101:OVERLAY_CONTEXT_entry504_py_04_LINE_0083=def _load():
102:OVERLAY_CONTEXT_entry504_py_04_LINE_0084=_verify_base()
103:OVERLAY_CONTEXT_entry504_py_04_LINE_0085=sys.dont_write_bytecode=True
104:OVERLAY_CONTEXT_entry504_py_04_LINE_0086=sys.path.insert(0,str(BASE))
105:OVERLAY_CONTEXT_entry504_py_04_LINE_0087=wrapper=importlib.import_module('wrapper')
106:OVERLAY_CONTEXT_entry504_py_04_LINE_0088=# Baseline accepted wrapper selftest stays the compatibility gate; no full old legacy selftest is reintroduced.
107:OVERLAY_CONTEXT_entry504_py_04_LINE_0089=wrapper.selftest()
108:OVERLAY_CONTEXT_entry504_py_04_LINE_0090=sys.path.insert(0,str(HERE))
109:OVERLAY_CONTEXT_entry504_py_04_LINE_0091=lxc_adapter=importlib.import_module('lxc_adapter')
110:OVERLAY_CONTEXT_entry504_py_04_LINE_0092=qemu_adapter=importlib.import_module('qemu_adapter')
111:OVERLAY_CONTEXT_entry504_py_04_LINE_0093=scheduler_adapter=importlib.import_module('scheduler_adapter')
112:OVERLAY_CONTEXT_entry504_py_04_LINE_0094=if _sha(HERE/'lxc_adapter.py')!='3fa7d194010d76f7c8bc95035ae8876262e9337903e310f45f45df88c266dc8d':
113:OVERLAY_CONTEXT_entry504_py_04_LINE_0095=raise RuntimeError('LXC_502_BYTE_IDENTITY')
114:OVERLAY_CONTEXT_entry504_py_04_LINE_0096=wired=_wire(wrapper,lxc_adapter,qemu_adapter,scheduler_adapter,BASE)
115:OVERLAY_CONTEXT_entry504_py_04_LINE_0097=return wrapper,lxc_adapter,qemu_adapter,scheduler_adapter,wired
116:OVERLAY_CONTEXT_entry504_py_04_LINE_0098=
117:OVERLAY_CONTEXT_entry504_py_04_LINE_0099=def _target(wrapper,lid):
118:OVERLAY_CONTEXT_entry504_py_04_LINE_0100=rows=wrapper.load_targets(); hits=[x for x in rows if x.get('logical_id')==lid]
119:OVERLAY_CONTEXT_entry504_py_04_LINE_0101=if len(hits)!=1: raise RuntimeError('TARGET_CARDINALITY')
120:OVERLAY_CONTEXT_entry504_py_04_LINE_0102=return hits[0]
121:OVERLAY_CONTEXT_entry504_py_04_LINE_0103=
122:OVERLAY_CONTEXT_entry504_py_04_LINE_0104=def selftest():
123:OVERLAY_CONTEXT_entry504_py_04_LINE_0105=wrapper,lxc_adapter,qemu_adapter,scheduler_adapter,wired=_load()
124:OVERLAY_CONTEXT_entry504_py_04_LINE_0106=if wired['legacy_globals'].get('capture_pve_guest') is not wired['patched_capture']:
125:OVERLAY_CONTEXT_entry504_py_04_LINE_0107=raise RuntimeError('PATCH_BINDING')
126:OVERLAY_CONTEXT_entry504_py_04_LINE_0108=if wired['legacy_globals'].get('choose_due_target') is not wired['scheduler_wired']['choose_due_target']:
127:OVERLAY_CONTEXT_entry504_py_04_LINE_0109=raise RuntimeError('SCHEDULER_CHOOSE_BINDING')
128:OVERLAY_CONTEXT_entry504_py_04_LINE_0110=if wired['legacy_globals'].get('write_state') is not wired['scheduler_wired']['write_state']:
129:OVERLAY_CONTEXT_entry504_py_04_LINE_0111=raise RuntimeError('SCHEDULER_WRITE_BINDING')
130:OVERLAY_CONTEXT_entry504_py_04_LINE_0112=if [scheduler_adapter.backoff_seconds(n) for n in range(1,7)]!=[1800,3600,7200,14400,21600,21600]:
131:OVERLAY_CONTEXT_entry504_py_04_LINE_0113=raise RuntimeError('SCHEDULER_BACKOFF_CONTRACT')
132:OVERLAY_CONTEXT_entry504_py_04_LINE_0114=if not callable(wrapper.backup_target) or not callable(wrapper.main) or not callable(wrapper.load_targets):
133:OVERLAY_CONTEXT_entry504_py_04_LINE_0115=raise RuntimeError('WRAPPER_PUBLIC_API')
134:OVERLAY_CONTEXT_entry504_py_04_LINE_0116=print('SELFTEST_OVERLAY504=PASS',flush=True)
135:OVERLAY_CONTEXT_entry504_py_04_LINE_0117=return 0
136:OVERLAY_CONTEXT_entry504_py_04_LINE_0118=
137:OVERLAY_CONTEXT_entry504_py_04_LINE_0119=def main(argv=None):
138:OVERLAY_CONTEXT_entry504_py_04_LINE_0120=argv=list(sys.argv[1:] if argv is None else argv)
139:OVERLAY_CONTEXT_entry504_py_04_LINE_0121=if argv==['selftest']:
140:OVERLAY_CONTEXT_entry504_py_04_LINE_0122=return selftest()
141:OVERLAY_CONTEXT_entry504_py_04_LINE_0123=wrapper,lxc_adapter,qemu_adapter,scheduler_adapter,wired=_load()
142:OVERLAY_CONTEXT_entry504_py_04_LINE_0124=legacy=wired['legacy']
143:OVERLAY_CONTEXT_entry504_py_04_LINE_0125=if argv==['scheduler-proof']:
144:OVERLAY_CONTEXT_entry504_py_04_LINE_0126=import tempfile
145:OVERLAY_CONTEXT_entry504_py_04_LINE_0127=legacy=wired['legacy']; g=wired['legacy_globals']
146:OVERLAY_CONTEXT_entry504_py_04_LINE_0128=old_root=g.get('STATE_ROOT'); old_epoch=g.get('epoch')
147:OVERLAY_CONTEXT_entry504_py_04_LINE_0129=if old_root is None or not callable(old_epoch): raise RuntimeError('SCHEDULER_PROOF_BASE')
148:OVERLAY_CONTEXT_entry504_py_04_LINE_0130=now=[1000]
149:OVERLAY_CONTEXT_entry504_py_04_LINE_0131=try:
150:OVERLAY_MATCH_FILE=fresh_lxc_helper.py
151:OVERLAY_MATCH_SHA256=dbb3e6dbb71b10797df736431d9501a752a0f8c439163c9a0bddb7f76747f011
152:OVERLAY_MATCH_LINE_COUNT=1
153:OVERLAY_MATCH_LINES=4
154:OVERLAY_CONTEXT_fresh_lxc_helper_py_01_RANGE=1-12
155:OVERLAY_CONTEXT_fresh_lxc_helper_py_01_LINE_0001=from __future__ import annotations
156:OVERLAY_CONTEXT_fresh_lxc_helper_py_01_LINE_0002=import base64, hashlib, json, pathlib, sys
161:OVERLAY_CONTEXT_fresh_lxc_helper_py_01_LINE_0007=
162:OVERLAY_CONTEXT_fresh_lxc_helper_py_01_LINE_0008=def sha(p:pathlib.Path)->str:
163:OVERLAY_CONTEXT_fresh_lxc_helper_py_01_LINE_0009=return hashlib.sha256(p.read_bytes()).hexdigest()
164:OVERLAY_CONTEXT_fresh_lxc_helper_py_01_LINE_0010=
165:OVERLAY_CONTEXT_fresh_lxc_helper_py_01_LINE_0011=def fail(code:str):
166:OVERLAY_CONTEXT_fresh_lxc_helper_py_01_LINE_0012=raise RuntimeError(code)
167:OVERLAY_MATCH_FILE=lxc_adapter.py
168:OVERLAY_MATCH_SHA256=3fa7d194010d76f7c8bc95035ae8876262e9337903e310f45f45df88c266dc8d
169:OVERLAY_MATCH_LINE_COUNT=19
170:OVERLAY_MATCH_LINES=2,7,36,44,45,52,55,57,59,68,95,112,130,133,158,162,199,200,213
171:OVERLAY_CONTEXT_lxc_adapter_py_01_RANGE=1-15
172:OVERLAY_CONTEXT_lxc_adapter_py_01_LINE_0001=from __future__ import annotations
173:OVERLAY_CONTEXT_lxc_adapter_py_01_LINE_0002=import base64, hashlib, json, os, pathlib, re, selectors, shlex, signal, stat, subprocess, sys, time
174:OVERLAY_CONTEXT_lxc_adapter_py_01_LINE_0003=
175:OVERLAY_CONTEXT_lxc_adapter_py_01_LINE_0004=PVESH_SHA='9ed13d4c2d82e7864ff0192c428da7669af263f81dfcc84d5a981ca98fee8439'
177:OVERLAY_CONTEXT_lxc_adapter_py_01_LINE_0006=HELPER=pathlib.Path(__file__).resolve().parent/'fresh_lxc_helper.py'
178:OVERLAY_CONTEXT_lxc_adapter_py_01_LINE_0007=EXEC_HELPER=pathlib.Path(__file__).resolve().parent/'producer_exec_helper.py'
179:OVERLAY_CONTEXT_lxc_adapter_py_01_LINE_0008=MAX_STDERR=262144
180:OVERLAY_CONTEXT_lxc_adapter_py_01_LINE_0009=ENV={'PATH':'/usr/sbin:/usr/bin:/sbin:/bin','LC_ALL':'C','LANG':'C','HOME':'/root','PYTHONDONTWRITEBYTECODE':'1'}
181:OVERLAY_CONTEXT_lxc_adapter_py_01_LINE_0010=
182:OVERLAY_CONTEXT_lxc_adapter_py_01_LINE_0011=class AdapterError(RuntimeError): pass
183:OVERLAY_CONTEXT_lxc_adapter_py_01_LINE_0012=class ExecFailure(AdapterError):
184:OVERLAY_CONTEXT_lxc_adapter_py_01_LINE_0013=def __init__(self,code,summary): super().__init__(code); self.code=code; self.summary=summary
185:OVERLAY_CONTEXT_lxc_adapter_py_01_LINE_0014=
186:OVERLAY_CONTEXT_lxc_adapter_py_01_LINE_0015=def _need(ok:bool,code:str):
187:OVERLAY_CONTEXT_lxc_adapter_py_02_RANGE=32-76
188:OVERLAY_CONTEXT_lxc_adapter_py_02_LINE_0032=if n<=0: raise AdapterError('WRITE_FAILED')
189:OVERLAY_CONTEXT_lxc_adapter_py_02_LINE_0033=view=view[n:]
190:OVERLAY_CONTEXT_lxc_adapter_py_02_LINE_0034=
191:OVERLAY_CONTEXT_lxc_adapter_py_02_LINE_0035=def _remote_sha(legacy,node,path):
EVIDENCE_EXCERPT_END=/var/lib/homelab-chat-run/raw/SUPPORT-260918-INFRA-PVE1-MOLDOVA-OVERLAY504-TRANSPORT-READONLY-557R3-20260918T211033Z.log
EVIDENCE_FILE=/var/lib/homelab-chat-run/raw/NEWFI-260919-NEWFDOM-AUTOCONTENT210-AUDIT127R1-20260919T003820Z.log|SHA256=3e4dab24b71ae8f995090b36fbd24d331adf17f6211ea698f8424facf3816277|BYTES=207
EVIDENCE_EXCERPT_BEGIN=/var/lib/homelab-chat-run/raw/NEWFI-260919-NEWFDOM-AUTOCONTENT210-AUDIT127R1-20260919T003820Z.log
1:NEWFI127R1_BEGIN
2:COMMAND_ID=NEWFI-260919-NEWFDOM-AUTOCONTENT210-AUDIT127R1
3:NEWFI127R1_SAFE_REPORT={"changes_made":false,"decision":"FAIL_AUTOCONTENT210_AUDIT_HOLD","error":"RuntimeError:RUNTIME_PARITY:job"}
EVIDENCE_EXCERPT_END=/var/lib/homelab-chat-run/raw/NEWFI-260919-NEWFDOM-AUTOCONTENT210-AUDIT127R1-20260919T003820Z.log
EVIDENCE_FILE=/var/lib/homelab-chat-run/raw/SUPPORT-260920-PVEPRO-VISUAL-STYLE-STAGING-DEPLOY-773R1-20260920T153450Z.log|SHA256=5f258fda45665249cf37bd1297e310c60b5c46f77d05aed62072891b7923d737|BYTES=32409
EVIDENCE_EXCERPT_BEGIN=/var/lib/homelab-chat-run/raw/SUPPORT-260920-PVEPRO-VISUAL-STYLE-STAGING-DEPLOY-773R1-20260920T153450Z.log
33:STAGING_STYLE_RENDER_ATTEMPT_03={"attempt":3,"outer_stderr_sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","outer_stdout_sha256":"a03572c1c6174e8c465db1fb2ec8a8d34a221cee2b60ff94250b4e21167861d3","qga_err_sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","qga_err_truncated":null,"qga_exitcode":0,"qga_exited":1,"qga_out_truncated":0,"qm_guest_exec_rc":0,"verifier":{"ok":true,"rows":[{"bytes":77592,"code":200,"css_bytes":327161,"css_codes":[{"bytes":319158,"code":200,"rc":0,"stderr_sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"},{"bytes":8002,"code":200,"rc":0,"stderr_sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"}],"css_ref_count":2,"css_refs":["/css.php?css=public%3Anormalize.css%2Cpublic%3Afa.css%2Cpublic%3Avariations.less%2Cpublic%3Acore.less%2Cpublic%3Aapp.less&s=2&l=2&d=1789918633&k=0132df9e8895f22d33adf6486e0d8f92e71895c4","/css.php?css=public%3Anode_list.less%2Cpublic%3Ashare_controls.less%2Cpublic%3Aextra.less&s=2&l=2&d=1789918633&k=43d19352348ea7e33297a5400d94a1ac53993513"],"css_sha256":"8d75d6c701c10a1b952fdd138eff3676f18d2a4bb57f8276b3cb724b567dd798","curl_rc":0,"html_sha256":"c5f4592ad13073ca8525575d02cee4c8eed60283decb4804eb6241a154f37bba","html_stderr_sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","marker_context":"--xf-chromeBg--a));border-radius:6px}.p-header{color:#f7fbff;background:#071824;--pvepro-style757:1;box-shadow:0 1px 0 hsla(194,91%,54%,.22)}.p-header a{color:inherit}.p-header-inner{max-width:1280px;padding:0 10px;ma","mobile_ua":false,"ok":true,"predicates":{"body_gt_1000":true,"css_fetch_all_ok":true,"css_marker_name_present":true,"css_marker_semantic":true,"css_ref_count_gt0":true,"has_brand753r4":true,"has_pvepro":true,"has_ru_category":true,"has_ru_forum":true,"index_curl_rc0":true,"index_http_200":true,"strict_utf8":true,"style_ref_child":true}},{"bytes":77592,"code":200,"css_bytes":327161,"css_codes":[{"bytes":319158,"code":200,"rc":0,"stderr_sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"},{"bytes":8002,"code":200,"rc":0,"stderr_sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"}],"css_ref_count":2,"css_refs":["/css.php?css=public%3Anormalize.css%2Cpublic%3Afa.css%2Cpublic%3Avariations.less%2Cpublic%3Acore.less%2Cpublic%3Aapp.less&s=2&l=2&d=1789918633&k=0132df9e8895f22d33adf6486e0d8f92e71895c4","/css.php?css=public%3Anode_list.less%2Cpublic%3Ashare_controls.less%2Cpublic%3Aextra.less&s=2&l=2&d=1789918633&k=43d19352348ea7e33297a5400d94a1ac53993513"],"css_sha256":"8d75d6c701c10a1b952fdd138eff3676f18d2a4bb57f8276b3cb724b567dd798","curl_rc":0,"html_sha256":"7383e1de580b1bdda88f34e85f3f27c95a0ba36cf144539a6dbf81a06724fb85","html_stderr_sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","marker_context":"--xf-chromeBg--a));border-radius:6px}.p-header{color:#f7fbff;background:#071824;--pvepro-style757:1;box-shadow:0 1px 0 hsla(194,91%,54%,.22)}.p-header a{color:inherit}.p-header-inner{max-width:1280px;padding:0 10px;ma","mobile_ua":true,"ok":true,"predicates":{"body_gt_1000":true,"css_fetch_all_ok":true,"css_marker_name_present":true,"css_marker_semantic":true,"css_ref_count_gt0":true,"has_brand753r4":true,"has_pvepro":true,"has_ru_category":true,"has_ru_forum":true,"index_curl_rc0":true,"index_http_200":true,"strict_utf8":true,"style_ref_child":true}}],"style_id":2}}
34:STAGING_STYLE_RENDER_ACCEPTED_3={"ok":true,"rows":[{"bytes":77592,"code":200,"css_bytes":327161,"css_codes":[{"bytes":319158,"code":200,"rc":0,"stderr_sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"},{"bytes":8002,"code":200,"rc":0,"stderr_sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"}],"css_ref_count":2,"css_refs":["/css.php?css=public%3Anormalize.css%2Cpublic%3Afa.css%2Cpublic%3Avariations.less%2Cpublic%3Acore.less%2Cpublic%3Aapp.less&s=2&l=2&d=1789918633&k=0132df9e8895f22d33adf6486e0d8f92e71895c4","/css.php?css=public%3Anode_list.less%2Cpublic%3Ashare_controls.less%2Cpublic%3Aextra.less&s=2&l=2&d=1789918633&k=43d19352348ea7e33297a5400d94a1ac53993513"],"css_sha256":"8d75d6c701c10a1b952fdd138eff3676f18d2a4bb57f8276b3cb724b567dd798","curl_rc":0,"html_sha256":"c5f4592ad13073ca8525575d02cee4c8eed60283decb4804eb6241a154f37bba","html_stderr_sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","marker_context":"--xf-chromeBg--a));border-radius:6px}.p-header{color:#f7fbff;background:#071824;--pvepro-style757:1;box-shadow:0 1px 0 hsla(194,91%,54%,.22)}.p-header a{color:inherit}.p-header-inner{max-width:1280px;padding:0 10px;ma","mobile_ua":false,"ok":true,"predicates":{"body_gt_1000":true,"css_fetch_all_ok":true,"css_marker_name_present":true,"css_marker_semantic":true,"css_ref_count_gt0":true,"has_brand753r4":true,"has_pvepro":true,"has_ru_category":true,"has_ru_forum":true,"index_curl_rc0":true,"index_http_200":true,"strict_utf8":true,"style_ref_child":true}},{"bytes":77592,"code":200,"css_bytes":327161,"css_codes":[{"bytes":319158,"code":200,"rc":0,"stderr_sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"},{"bytes":8002,"code":200,"rc":0,"stderr_sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"}],"css_ref_count":2,"css_refs":["/css.php?css=public%3Anormalize.css%2Cpublic%3Afa.css%2Cpublic%3Avariations.less%2Cpublic%3Acore.less%2Cpublic%3Aapp.less&s=2&l=2&d=1789918633&k=0132df9e8895f22d33adf6486e0d8f92e71895c4","/css.php?css=public%3Anode_list.less%2Cpublic%3Ashare_controls.less%2Cpublic%3Aextra.less&s=2&l=2&d=1789918633&k=43d19352348ea7e33297a5400d94a1ac53993513"],"css_sha256":"8d75d6c701c10a1b952fdd138eff3676f18d2a4bb57f8276b3cb724b567dd798","curl_rc":0,"html_sha256":"7383e1de580b1bdda88f34e85f3f27c95a0ba36cf144539a6dbf81a06724fb85","html_stderr_sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","marker_context":"--xf-chromeBg--a));border-radius:6px}.p-header{color:#f7fbff;background:#071824;--pvepro-style757:1;box-shadow:0 1px 0 hsla(194,91%,54%,.22)}.p-header a{color:inherit}.p-header-inner{max-width:1280px;padding:0 10px;ma","mobile_ua":true,"ok":true,"predicates":{"body_gt_1000":true,"css_fetch_all_ok":true,"css_marker_name_present":true,"css_marker_semantic":true,"css_ref_count_gt0":true,"has_brand753r4":true,"has_pvepro":true,"has_ru_category":true,"has_ru_forum":true,"index_curl_rc0":true,"index_http_200":true,"strict_utf8":true,"style_ref_child":true}}],"style_id":2}
35:STAGING_STYLE_RENDER_GOOD_SAMPLES=3
36:STAGING_STYLE_POSTSTATE={"boardActive":false,"defaultStyleId":2,"defaultStyleIdDb":"2","effectiveMatchCount":42,"effectiveMismatches":[],"effectiveTargetCount":42,"errors":16,"mapRows":284,"physicalChildPropertyRows":40,"propertyGroupRows":0,"style":{"description":"PVEPro visual style","enable_variations":1,"parent_id":1,"style_id":2,"title":"PVEPro","user_selectable":1},"templateRows":0}
37:STAGING_CHILD_STYLE_POSTSTATE={"count":1,"default":2,"default_db":"2","rows":[{"parent_id":1,"style_id":2,"title":"PVEPro"}],"styleRebuild":0,"styles":2}
38:VISUAL_STYLE_STAGING_ERROR_CLASS=RuntimeError
39:VISUAL_STYLE_STAGING_ERROR_SHA256=5ffc7d25d037e5606dc374388369df32158e9404259e1398246ab42ff4c73686
40:ROLLBACK_STARTED=True
41:ROLLBACK_RESTORED=False
42:TASK_RESULT=PVEPRO_VISUAL_STYLE_STAGING_DEPLOY_EFFECTIVE42_RENDERFIX_FAILED
43:HOMELAB_RESULT_CONTRACT={"changes_made":true,"command_id":"SUPPORT-260920-PVEPRO-VISUAL-STYLE-STAGING-DEPLOY-773R1","rollback_restored":false,"rollback_started":true,"status":"FAIL","version":1}
EVIDENCE_EXCERPT_END=/var/lib/homelab-chat-run/raw/SUPPORT-260920-PVEPRO-VISUAL-STYLE-STAGING-DEPLOY-773R1-20260920T153450Z.log
EVIDENCE_FILE=/var/lib/homelab-chat-run/raw/HOMELAB-VM-2CLOUD-NOLOCAL-FIX-433-20260724T100937Z.log|SHA256=41fc6b0e8c0f55e94079117bbc6ea01b65eb0d231b8e30a872d586a88eaa145a|BYTES=380
EVIDENCE_EXCERPT_BEGIN=/var/lib/homelab-chat-run/raw/HOMELAB-VM-2CLOUD-NOLOCAL-FIX-433-20260724T100937Z.log
1:Traceback (most recent call last):
2:  File "<string>", line 199, in <module>
3:    raise RuntimeError("JQ_ARGUMENT_INSERTION_POINT_INVALID")
4:RuntimeError: JQ_ARGUMENT_INSERTION_POINT_INVALID
5:DETAIL=RUNTIME_ORIGINAL_SHA256=1de52eb4ddb17b0ecff2cf3f3021e65b92e91fb44416f97943c51e248c512ed6
6:DETAIL=DESIRED_ORIGINAL_SHA256=1de52eb4ddb17b0ecff2cf3f3021e65b92e91fb44416f97943c51e248c512ed6
EVIDENCE_EXCERPT_END=/var/lib/homelab-chat-run/raw/HOMELAB-VM-2CLOUD-NOLOCAL-FIX-433-20260724T100937Z.log
EVIDENCE_FILE=/var/lib/homelab-chat-run/raw/READONLY-RESULT-INTEGRATION-AUDIT-20260727T062905Z-20260727T062957Z.log|SHA256=ebaf3b2299c523af65061ab730a85e8753b5d47ec3427fa3947662acb7239911|BYTES=1525
EVIDENCE_EXCERPT_BEGIN=/var/lib/homelab-chat-run/raw/READONLY-RESULT-INTEGRATION-AUDIT-20260727T062905Z-20260727T062957Z.log
1:Traceback (most recent call last):
2:  File "/var/lib/homelab-command-adapter/capsules/68856b3837c49738a5c0e67429bb71e95c3f2fae80b62011f2ed7922e1db133d/payload/audit.py", line 676, in <module>
3:    raise SystemExit(main())
4:                     ~~~~^^
5:  File "/var/lib/homelab-command-adapter/capsules/68856b3837c49738a5c0e67429bb71e95c3f2fae80b62011f2ed7922e1db133d/payload/audit.py", line 262, in main
6:    sanitize_match = re.search(
7:        r"def sanitize_state\\("
8:    ...<3 lines>...
9:        flags=re.DOTALL,
10:    )
EVIDENCE_EXCERPT_END=/var/lib/homelab-chat-run/raw/READONLY-RESULT-INTEGRATION-AUDIT-20260727T062905Z-20260727T062957Z.log
EVIDENCE_FILE=/var/lib/homelab-chat-run/raw/GITEA-READER-NGINX-DECISION-DETAIL-256-20260722T201633Z.log|SHA256=7e0a0a24e1fa4036a0bcd8295cda65d584c20b48b95483a0e687f5226ffbf11a|BYTES=2262
EVIDENCE_EXCERPT_BEGIN=/var/lib/homelab-chat-run/raw/GITEA-READER-NGINX-DECISION-DETAIL-256-20260722T201633Z.log
1:PREVIOUS_COMMAND_ID=GITEA-READER-NGINX-DECISION-255
2:=== DECISION_255 ===
3:=== RAW_ERRORS_255 ===
4:1:Traceback (most recent call last):
5:29:FileNotFoundError: [Errno 2] No such file or directory: '/usr/sbin/nginx'
6:=== RAW_TAIL_255 ===
7:Traceback (most recent call last):
8:  File "<string>", line 19, in <module>
9:    test=subprocess.run(["/usr/sbin/nginx","-t"],text=True,capture_output=True)
10:  File "/usr/lib/python3.13/subprocess.py", line 554, in run
11:    with Popen(*popenargs, **kwargs) as process:
12:         ~~~~~^^^^^^^^^^^^^^^^^^^^^^
13:  File "/usr/lib/python3.13/subprocess.py", line 1039, in __init__
14:    self._execute_child(args, executable, preexec_fn, close_fds,
15:    ~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
16:                        pass_fds, cwd, env,
EVIDENCE_EXCERPT_END=/var/lib/homelab-chat-run/raw/GITEA-READER-NGINX-DECISION-DETAIL-256-20260722T201633Z.log
EVIDENCE_FILE=/var/lib/homelab-chat-run/raw/ERROR-REGISTER-AUDIT-091-20260721T135306Z.log|SHA256=e43bbade59b1bfcd5ab4eafebcabef112401cb53da0426adac776ac3e44e9a85|BYTES=1896603
EVIDENCE_EXCERPT_BEGIN=/var/lib/homelab-chat-run/raw/ERROR-REGISTER-AUDIT-091-20260721T135306Z.log
25:  "raw_evidence_retained_locally": true,
26:  "raw_evidence_sha256": "5b605821399533c76b6f75d9c99a78e303282b76de059e6a4fa1e85b94d655b8",
27:  "sanitized_output_sha256": "5b605821399533c76b6f75d9c99a78e303282b76de059e6a4fa1e85b94d655b8",
28:  "output_truncated_in_json": true,
29:  "full_sanitized_output_url": "https://git.gram1.ru/.well-known/homelab-runtime/latest.txt",
30:  "output": "=== CURRENT_RUNTIME ===\n{\n  \"schema_version\": 1,\n  \"channel\": \"homelab-runtime\",\n  \"command_id\": \"ERROR-REGISTER-PRECHECK-091\",\n  \"status\": \"OK\",\n  \"rc\": 0,\n  \"host\": \"pve01\",\n  \"mode\": \"read-only\",\n  \"component\": \"cluster-audit\",\n  \"started_at_utc\": \"2026-07-21T13:48:38Z\",\n  \"finished_at_utc\": \"2026-07-21T13:48:38Z\",\n  \"reference_register_checked\": true,\n  \"reference_sha256\": \"5763f2f8edc75fcf6f3951f8c95896d1cc112ceccb6cf5b64a383f540a4deb8e\",\n  \"error_register_checked\": true,\n  \"error_register_sha256\": \"08b3a769b8e38eaa1acec915352fb328180d70caa7ff6cd9d1ec0da426262752\",\n  \"command_sha256\": \"07475c2ba97e41926fdd14b9635c532ad47eab45b3f6308dcd31f37eefba2fa3\",\n  \"duplicate_failed_command_blocked\": false,\n  \"block_reason\": null,\n  \"execution_started\": true,\n  \"changes_made\": false,\n  \"sanitized\": true,\n  \"secrets_included\": false,\n  \"private_addresses_included\": false,\n  \"raw_evidence_retained_locally\": true,\n  \"raw_evidence_sha256\": \"b0ea79fe2601b6fd549d285cf3b9ae06884f7e7604b63e0bfd7d2b1089ee2893\",\n  \"sanitized_output_sha256\": \"b0ea79fe2601b6fd549d285cf3b9ae06884f7e7604b63e0bfd7d2b1089ee2893\",\n  \"output_truncated_in_json\": true,\n  \"full_sanitized_output_url\": \"https://git.gram1.ru/.well-known/homelab-runtime/latest.txt\",\n  \"output\": \"=== CURRENT_RUNTIME ===\\n{\\n    \\\"schema_version\\\": 1,\\n    \\\"channel\\\": \\\"homelab-runtime\\\",\\n    \\\"command_id\\\": \\\"CRITICAL-TAILS-TRIAGE-091\\\",\\n    \\\"status\\\": \\\"OK\\\",\\n    \\\"rc\\\": 0,\\n    \\\"host\\\": \\\"pve01\\\",\\n    \\\"mode\\\": \\\"read-only\\\",\\n    \\\"component\\\": \\\"cluster-audit\\\",\\n    \\\"started_at_utc\\\": \\\"2026-07-21T13:45:21Z\\\",\\n    \\\"finished_at_utc\\\": \\\"2026-07-21T13:45:21Z\\\",\\n    \\\"reference_register_checked\\\": true,\\n    \\\"reference_sha256\\\": \\\"5763f2f8edc75fcf6f3951f8c95896d1cc112ceccb6cf5b64a383f540a4deb8e\\\",\\n    \\\"error_register_checked\\\": true,\\n    \\\"error_register_sha256\\\": \\\"08b3a769b8e38eaa1acec915352fb328180d70caa7ff6cd9d1ec0da426262752\\\",\\n    \\\"command_sha256\\\": \\\"6a4e6ceedf0e8e332675cd4342fe1a57655e2dc4d86f1eab82537b8e0e138c5e\\\",\\n    \\\"duplicate_failed_command_blocked\\\": false,\\n    \\\"block_reason\\\": null,\\n    \\\"execution_started\\\": true,\\n    \\\"changes_made\\\": false,\\n    \\\"sanitized\\\": true,\\n    \\\"secrets_included\\\": false,\\n    \\\"private_addresses_included\\\": false,\\n    \\\"raw_evidence_retained_locally\\\": true,\\n    \\\"raw_evidence_sha256\\\": \\\"1e1b51d29391e04f6add08dc0e763bd76b2446deac958537de0ddb0006998789\\\",\\n    \\\"sanitized_output_sha256\\\": \\\"a1c4491180e0ef3cc8411ac9618c9bc44e9e59f21520d85eac7f5aa5e62199f9\\\",\\n    \\\"output_truncated_in_json\\\": false,\\n    \\\"full_sanitized_output_url\\\": \\\"https://git.gram1.ru/.well-known/homelab-runtime/latest.txt\\\",\\n    \\\"output\\\": \\\"=== SOURCE ===\\\\nFILE=/var/lib/homelab-chat-run/raw/CRITICAL-TAILS-BASELINE-089-20260721T132108Z.log SIZE=200182 MTIME=2026-07-21 16:21:16.540163848 +0300\\\\n=== P0_DATA_LOSS_OR_CLUSTER_RISK ===\\\\n63-392:- Context: SPF cleanup dry-run command 563 had broken shell quoting and left the terminal at multiline prompt.\\\\n64-397:- Context: SPF cleanup command 565 attempted to replace stale SPF records.\\\\n65:398:- Issue: backup write permission problem caused record detection failure, so new v=spf1 -all records were created while old v=spf1 ip4:[PRIVATE_IP] records remained.\\\\n66-402:## MSMTP_SECRET_SOURCE_PARSE_ERROR_576_20260701\\\\n67-403:- Context: proof 576 installed msmtp but sendmail auth test failed.\\\\n68-404:- Issue: [SENSITIVE_PATH] was sourced as shell, but SMTP password contained shell-special characters; source failed and auth used an invalid/truncated secret path.\\\\n--\\\\n132-774:- The reported validation count is cascading missing-marker evidence, not twenty-five in
31:}
32:
33:=== RUNNER_REGISTER_LOGIC ===
34:13-  change
35:14-  transport-test
36:15-
37:16-Environment:
38:17:  HOMELAB_ALLOW_REPEAT=1   Allow exact repeat of a previously failed command.
39:18-  HOMELAB_TIMEOUT=SECONDS  Optional command timeout.
351:46-  "raw_evidence_retained_locally": true,
352:47-  "raw_evidence_sha256": "b0ea79fe2601b6fd549d285cf3b9ae06884f7e7604b63e0bfd7d2b1089ee2893",
353:48-  "sanitized_output_sha256": "b0ea79fe2601b6fd549d285cf3b9ae06884f7e7604b63e0bfd7d2b1089ee2893",
354:49-  "output_truncated_in_json": true,
355:50-  "full_sanitized_output_url": "https://git.gram1.ru/.well-known/homelab-runtime/latest.txt",
356:51:  "output": "=== CURRENT_RUNTIME ===\n{\n    \"schema_version\": 1,\n    \"channel\": \"homelab-runtime\",\n    \"command_id\": \"CRITICAL-TAILS-TRIAGE-091\",\n    \"status\": \"OK\",\n    \"rc\": 0,\n    \"host\": \"pve01\",\n    \"mode\": \"read-only\",\n    \"component\": \"cluster-audit\",\n    \"started_at_utc\": \"2026-07-21T13:45:21Z\",\n    \"finished_at_utc\": \"2026-07-21T13:45:21Z\",\n    \"reference_register_checked\": true,\n    \"reference_sha256\": \"5763f2f8edc75fcf6f3951f8c95896d1cc112ceccb6cf5b64a383f540a4deb8e\",\n    \"error_register_checked\": true,\n    \"error_register_sha256\": \"08b3a769b8e38eaa1acec915352fb328180d70caa7ff6cd9d1ec0da426262752\",\n    \"command_sha256\": \"6a4e6ceedf0e8e332675cd4342fe1a57655e2dc4d86f1eab82537b8e0e138c5e\",\n    \"duplicate_failed_command_blocked\": false,\n    \"block_reason\": null,\n    \"execution_started\": true,\n    \"changes_made\": false,\n    \"sanitized\": true,\n    \"secrets_included\": false,\n    \"private_addresses_included\": false,\n    \"raw_evidence_retained_locally\": true,\n    \"raw_evidence_sha256\": \"1e1b51d29391e04f6add08dc0e763bd76b2446deac958537de0ddb0006998789\",\n    \"sanitized_output_sha256\": \"a1c4491180e0ef3cc8411ac9618c9bc44e9e59f21520d85eac7f5aa5e62199f9\",\n    \"output_truncated_in_json\": false,\n    \"full_sanitized_output_url\": \"https://git.gram1.ru/.well-known/homelab-runtime/latest.txt\",\n    \"output\": \"=== SOURCE ===\\nFILE=/var/lib/homelab-chat-run/raw/CRITICAL-TAILS-BASELINE-089-20260721T132108Z.log SIZE=200182 MTIME=2026-07-21 16:21:16.540163848 +0300\\n=== P0_DATA_LOSS_OR_CLUSTER_RISK ===\\n63-392:- Context: SPF cleanup dry-run command 563 had broken shell quoting and left the terminal at multiline prompt.\\n64-397:- Context: SPF cleanup command 565 attempted to replace stale SPF records.\\n65:398:- Issue: backup write permission problem caused record detection failure, so new v=spf1 -all records were created while old v=spf1 ip4:[PRIVATE_IP] records remained.\\n66-402:## MSMTP_SECRET_SOURCE_PARSE_ERROR_576_20260701\\n67-403:- Context: proof 576 installed msmtp but sendmail auth test failed.\\n68-404:- Issue: [SENSITIVE_PATH] was sourced as shell, but SMTP password contained shell-special characters; source failed and auth used an invalid/truncated secret path.\\n--\\n132-774:- The reported validation count is cascading missing-marker evidence, not twenty-five independent design defects.\\n133-775:- The generated validator must be inspected at the exact SyntaxError line before another candidate is created.\\n134:787:- The executed backup script does not write that health file; therefore the stale health timestamp was not evidence of backup failure.\\n135-792:- Failure class: \\u043f\\u0435\\u0440\\u0435\\u0445\\u043e\\u0434 \\u043a \\u0441\\u043b\\u0435\\u0434\\u0443\\u044e\\u0449\\u0435\\u0439 \\u0437\\u0430\\u0434\\u0430\\u0447\\u0435 \\u043f\\u0440\\u0438 \\u043d\\u0430\\u043b\\u0438\\u0447\\u0438\\u0438 \\u043d\\u0435\\u0437\\u0430\\u043a\\u0440\\u044b\\u0442\\u043e\\u0433\\u043e \\u0445\\u0432\\u043e\\u0441\\u0442\\u0430.\\n136-794:- Closure gate: UNRESOLVED_TAIL_COUNT=0; BLOCKER_COUNT=0; TEMPORARY_ARTIFACT_COUNT=0; ROLLBACK_VERIFIED=YES; HEALTH=OK; PROOF_UPDATED=YES; REFERENCE_UPDATED=YES.\\n137-795:- \\u0415\\u0441\\u043b\\u0438 \\u0437\\u0430\\u043a\\u0440\\u044b\\u0442\\u0438\\u0435 \\u043d\\u0435\\u0432\\u043e\\u0437\\u043c\\u043e\\u0436\\u043d\\u043e \\u0438\\u0437-\\u0437\\u0430 \\u0432\\u043d\\u0435\\u0448\\u043d\\u0435\\u0439 \\u0437\\u0430\\u0432\\u0438\\u0441\\u0438\\u043c\\u043e\\u0441\\u0442\\u0438, \\u043e\\u043f\\u0430\\u0441\\u043d\\u043e\\u0439 \\u043d\\u0435\\u043e\\u0434\\u043d\\u043e\\u0437\\u043d\\u0430\\u0447\\u043d\\u043e\\u0441\\u0442\\u0438 \\u0438\\u043b\\u0438 \\u043e\\u0431\\u044f\\u0437\\u0430\\u0442\\u0435\\u043b\\u044c\\u043d\\u043e\\u0433\\u043e \\u0440\\u0435\\u0448\\u0435\\u043d\\u0438\\u044f \\u043f\\u043e\\u043b\\u044c\\u0437\\u043e\\u0432\\u0430\\u0442\\u0435\\u043b\\u044
357:52-}
358:53-
359:54-=== RUNNER_ERROR_REGISTER_LOGIC ===
360:55-13-  change
361:56-14-  transport-test
362:57-15-
363:58-16-Environment:
364:59-17:  HOMELAB_ALLOW_REPEAT=1   Allow exact repeat of a previously failed command.
365:60-18-  HOMELAB_TIMEOUT=SECONDS  Optional command timeout.
564:474-24-  "raw_evidence_retained_locally": true,
565:475-25-  "raw_evidence_sha256": "b0ea79fe2601b6fd549d285cf3b9ae06884f7e7604b63e0bfd7d2b1089ee2893",
566:476-26-  "sanitized_output_sha256": "b0ea79fe2601b6fd549d285cf3b9ae06884f7e7604b63e0bfd7d2b1089ee2893",
567:477-27-  "output_truncated_in_json": true,
568:478-28-  "full_sanitized_output_url": "https://git.gram1.ru/.well-known/homelab-runtime/latest.txt",
569:479:29:  "output": "=== CURRENT_RUNTIME ===\n{\n    \"schema_version\": 1,\n    \"channel\": \"homelab-runtime\",\n    \"command_id\": \"CRITICAL-TAILS-TRIAGE-091\",\n    \"status\": \"OK\",\n    \"rc\": 0,\n    \"host\": \"pve01\",\n    \"mode\": \"read-only\",\n    \"component\": \"cluster-audit\",\n    \"started_at_utc\": \"2026-07-21T13:45:21Z\",\n    \"finished_at_utc\": \"2026-07-21T13:45:21Z\",\n    \"reference_register_checked\": true,\n    \"reference_sha256\": \"5763f2f8edc75fcf6f3951f8c95896d1cc112ceccb6cf5b64a383f540a4deb8e\",\n    \"error_register_checked\": true,\n    \"error_register_sha256\": \"08b3a769b8e38eaa1acec915352fb328180d70caa7ff6cd9d1ec0da426262752\",\n    \"command_sha256\": \"6a4e6ceedf0e8e332675cd4342fe1a57655e2dc4d86f1eab82537b8e0e138c5e\",\n    \"duplicate_failed_command_blocked\": false,\n    \"block_reason\": null,\n    \"execution_started\": true,\n    \"changes_made\": false,\n    \"sanitized\": true,\n    \"secrets_included\": false,\n    \"private_addresses_included\": false,\n    \"raw_evidence_retained_locally\": true,\n    \"raw_evidence_sha256\": \"1e1b51d29391e04f6add08dc0e763bd76b2446deac958537de0ddb0006998789\",\n    \"sanitized_output_sha256\": \"a1c4491180e0ef3cc8411ac9618c9bc44e9e59f21520d85eac7f5aa5e62199f9\",\n    \"output_truncated_in_json\": false,\n    \"full_sanitized_output_url\": \"https://git.gram1.ru/.well-known/homelab-runtime/latest.txt\",\n    \"output\": \"=== SOURCE ===\\nFILE=/var/lib/homelab-chat-run/raw/CRITICAL-TAILS-BASELINE-089-20260721T132108Z.log SIZE=200182 MTIME=2026-07-21 16:21:16.540163848 +0300\\n=== P0_DATA_LOSS_OR_CLUSTER_RISK ===\\n63-392:- Context: SPF cleanup dry-run command 563 had broken shell quoting and left the terminal at multiline prompt.\\n64-397:- Context: SPF cleanup command 565 attempted to replace stale SPF records.\\n65:398:- Issue: backup write permission problem caused record detection failure, so new v=spf1 -all records were created while old v=spf1 ip4:[PRIVATE_IP] records remained.\\n66-402:## MSMTP_SECRET_SOURCE_PARSE_ERROR_576_20260701\\n67-403:- Context: proof 576 installed msmtp but sendmail auth test failed.\\n68-404:- Issue: [SENSITIVE_PATH] was sourced as shell, but SMTP password contained shell-special characters; source failed and auth used an invalid/truncated secret path.\\n--\\n132-774:- The reported validation count is cascading missing-marker evidence, not twenty-five independent design defects.\\n133-775:- The generated validator must be inspected at the exact SyntaxError line before another candidate is created.\\n134:787:- The executed backup script does not write that health file; therefore the stale health timestamp was not evidence of backup failure.\\n135-792:- Failure class: \\u043f\\u0435\\u0440\\u0435\\u0445\\u043e\\u0434 \\u043a \\u0441\\u043b\\u0435\\u0434\\u0443\\u044e\\u0449\\u0435\\u0439 \\u0437\\u0430\\u0434\\u0430\\u0447\\u0435 \\u043f\\u0440\\u0438 \\u043d\\u0430\\u043b\\u0438\\u0447\\u0438\\u0438 \\u043d\\u0435\\u0437\\u0430\\u043a\\u0440\\u044b\\u0442\\u043e\\u0433\\u043e \\u0445\\u0432\\u043e\\u0441\\u0442\\u0430.\\n136-794:- Closure gate: UNRESOLVED_TAIL_COUNT=0; BLOCKER_COUNT=0; TEMPORARY_ARTIFACT_COUNT=0; ROLLBACK_VERIFIED=YES; HEALTH=OK; PROOF_UPDATED=YES; REFERENCE_UPDATED=YES.\\n137-795:- \\u0415\\u0441\\u043b\\u0438 \\u0437\\u0430\\u043a\\u0440\\u044b\\u0442\\u0438\\u0435 \\u043d\\u0435\\u0432\\u043e\\u0437\\u043c\\u043e\\u0436\\u043d\\u043e \\u0438\\u0437-\\u0437\\u0430 \\u0432\\u043d\\u0435\\u0448\\u043d\\u0435\\u0439 \\u0437\\u0430\\u0432\\u0438\\u0441\\u0438\\u043c\\u043e\\u0441\\u0442\\u0438, \\u043e\\u043f\\u0430\\u0441\\u043d\\u043e\\u0439 \\u043d\\u0435\\u043e\\u0434\\u043d\\u043e\\u0437\\u043d\\u0430\\u0447\\u043d\\u043e\\u0441\\u0442\\u0438 \\u0438\\u043b\\u0438 \\u043e\\u0431\\u044f\\u0437\\u0430\\u0442\\u0435\\u043b\\u044c\\u043d\\u043e\\u0433\\u043e \\u0440\\u0435\\u0448\\u0435\\u043d\\u0438\\u044f \\u043f\\u043e\\u043b\\u044c\\u0437\\u043e\\u0432\\u0430\\u0442\\u0435\\u043b\\
570:480-30-}
571:481:--- FILE=/var/lib/homelab-chat-run/public/CRITICAL-TAILS-TRIAGE-090-20260721T132428Z.json ---
572:482-SIZE=1307 MTIME=2026-07-21 16:24:28.286105655 +0300
573:483-1-{
574:484-2-  "schema_version": 1,
575:485-3-  "channel": "homelab-runtime",
576:486:4:  "command_id": "CRITICAL-TAILS-TRIAGE-090",
577:487-5-  "status": "FAIL",
578:488-6-  "rc": 2,
687:24-  "raw_evidence_retained_locally": true,
688:25-  "raw_evidence_sha256": "b0ea79fe2601b6fd549d285cf3b9ae06884f7e7604b63e0bfd7d2b1089ee2893",
689:26-  "sanitized_output_sha256": "b0ea79fe2601b6fd549d285cf3b9ae06884f7e7604b63e0bfd7d2b1089ee2893",
690:27-  "output_truncated_in_json": true,
691:28-  "full_sanitized_output_url": "https://git.gram1.ru/.well-known/homelab-runtime/latest.txt",
692:29:  "output": "=== CURRENT_RUNTIME ===\n{\n    \"schema_version\": 1,\n    \"channel\": \"homelab-runtime\",\n    \"command_id\": \"CRITICAL-TAILS-TRIAGE-091\",\n    \"status\": \"OK\",\n    \"rc\": 0,\n    \"host\": \"pve01\",\n    \"mode\": \"read-only\",\n    \"component\": \"cluster-audit\",\n    \"started_at_utc\": \"2026-07-21T13:45:21Z\",\n    \"finished_at_utc\": \"2026-07-21T13:45:21Z\",\n    \"reference_register_checked\": true,\n    \"reference_sha256\": \"5763f2f8edc75fcf6f3951f8c95896d1cc112ceccb6cf5b64a383f540a4deb8e\",\n    \"error_register_checked\": true,\n    \"error_register_sha256\": \"08b3a769b8e38eaa1acec915352fb328180d70caa7ff6cd9d1ec0da426262752\",\n    \"command_sha256\": \"6a4e6ceedf0e8e332675cd4342fe1a57655e2dc4d86f1eab82537b8e0e138c5e\",\n    \"duplicate_failed_command_blocked\": false,\n    \"block_reason\": null,\n    \"execution_started\": true,\n    \"changes_made\": false,\n    \"sanitized\": true,\n    \"secrets_included\": false,\n    \"private_addresses_included\": false,\n    \"raw_evidence_retained_locally\": true,\n    \"raw_evidence_sha256\": \"1e1b51d29391e04f6add08dc0e763bd76b2446deac958537de0ddb0006998789\",\n    \"sanitized_output_sha256\": \"a1c4491180e0ef3cc8411ac9618c9bc44e9e59f21520d85eac7f5aa5e62199f9\",\n    \"output_truncated_in_json\": false,\n    \"full_sanitized_output_url\": \"https://git.gram1.ru/.well-known/homelab-runtime/latest.txt\",\n    \"output\": \"=== SOURCE ===\\nFILE=/var/lib/homelab-chat-run/raw/CRITICAL-TAILS-BASELINE-089-20260721T132108Z.log SIZE=200182 MTIME=2026-07-21 16:21:16.540163848 +0300\\n=== P0_DATA_LOSS_OR_CLUSTER_RISK ===\\n63-392:- Context: SPF cleanup dry-run command 563 had broken shell quoting and left the terminal at multiline prompt.\\n64-397:- Context: SPF cleanup command 565 attempted to replace stale SPF records.\\n65:398:- Issue: backup write permission problem caused record detection failure, so new v=spf1 -all records were created while old v=spf1 ip4:[PRIVATE_IP] records remained.\\n66-402:## MSMTP_SECRET_SOURCE_PARSE_ERROR_576_20260701\\n67-403:- Context: proof 576 installed msmtp but sendmail auth test failed.\\n68-404:- Issue: [SENSITIVE_PATH] was sourced as shell, but SMTP password contained shell-special characters; source failed and auth used an invalid/truncated secret path.\\n--\\n132-774:- The reported validation count is cascading missing-marker evidence, not twenty-five independent design defects.\\n133-775:- The generated validator must be inspected at the exact SyntaxError line before another candidate is created.\\n134:787:- The executed backup script does not write that health file; therefore the stale health timestamp was not evidence of backup failure.\\n135-792:- Failure class: \\u043f\\u0435\\u0440\\u0435\\u0445\\u043e\\u0434 \\u043a \\u0441\\u043b\\u0435\\u0434\\u0443\\u044e\\u0449\\u0435\\u0439 \\u0437\\u0430\\u0434\\u0430\\u0447\\u0435 \\u043f\\u0440\\u0438 \\u043d\\u0430\\u043b\\u0438\\u0447\\u0438\\u0438 \\u043d\\u0435\\u0437\\u0430\\u043a\\u0440\\u044b\\u0442\\u043e\\u0433\\u043e \\u0445\\u0432\\u043e\\u0441\\u0442\\u0430.\\n136-794:- Closure gate: UNRESOLVED_TAIL_COUNT=0; BLOCKER_COUNT=0; TEMPORARY_ARTIFACT_COUNT=0; ROLLBACK_VERIFIED=YES; HEALTH=OK; PROOF_UPDATED=YES; REFERENCE_UPDATED=YES.\\n137-795:- \\u0415\\u0441\\u043b\\u0438 \\u0437\\u0430\\u043a\\u0440\\u044b\\u0442\\u0438\\u0435 \\u043d\\u0435\\u0432\\u043e\\u0437\\u043c\\u043e\\u0436\\u043d\\u043e \\u0438\\u0437-\\u0437\\u0430 \\u0432\\u043d\\u0435\\u0448\\u043d\\u0435\\u0439 \\u0437\\u0430\\u0432\\u0438\\u0441\\u0438\\u043c\\u043e\\u0441\\u0442\\u0438, \\u043e\\u043f\\u0430\\u0441\\u043d\\u043e\\u0439 \\u043d\\u0435\\u043e\\u0434\\u043d\\u043e\\u0437\\u043d\\u0430\\u0447\\u043d\\u043e\\u0441\\u0442\\u0438 \\u0438\\u043b\\u0438 \\u043e\\u0431\\u044f\\u0437\\u0430\\u0442\\u0435\\u043b\\u044c\\u043d\\u043e\\u0433\\u043e \\u0440\\u0435\\u0448\\u0435\\u043d\\u0438\\u044f \\u043f\\u043e\\u043b\\u044c\\u0437\\u043e\\u0432\\u0430\\u0442\\u0435\\u043b\\u044
693:30-}
694:--- FILE=/var/lib/homelab-chat-run/public/CRITICAL-TAILS-TRIAGE-090-20260721T132428Z.json ---
695:SIZE=1307 MTIME=2026-07-21 16:24:28.286105655 +0300
696:1-{
697:2-  "schema_version": 1,
698:3-  "channel": "homelab-runtime",
699:4:  "command_id": "CRITICAL-TAILS-TRIAGE-090",
700:5-  "status": "FAIL",
701:6-  "rc": 2,
721:25-  "raw_evidence_retained_locally": true,
722:26-  "raw_evidence_sha256": "b0ea79fe2601b6fd549d285cf3b9ae06884f7e7604b63e0bfd7d2b1089ee2893",
723:27-  "sanitized_output_sha256": "b0ea79fe2601b6fd549d285cf3b9ae06884f7e7604b63e0bfd7d2b1089ee2893",
724:28-  "output_truncated_in_json": true,
725:29-  "full_sanitized_output_url": "https://git.gram1.ru/.well-known/homelab-runtime/latest.txt",
726:30:  "output": "=== CURRENT_RUNTIME ===\n{\n    \"schema_version\": 1,\n    \"channel\": \"homelab-runtime\",\n    \"command_id\": \"CRITICAL-TAILS-TRIAGE-091\",\n    \"status\": \"OK\",\n    \"rc\": 0,\n    \"host\": \"pve01\",\n    \"mode\": \"read-only\",\n    \"component\": \"cluster-audit\",\n    \"started_at_utc\": \"2026-07-21T13:45:21Z\",\n    \"finished_at_utc\": \"2026-07-21T13:45:21Z\",\n    \"reference_register_checked\": true,\n    \"reference_sha256\": \"5763f2f8edc75fcf6f3951f8c95896d1cc112ceccb6cf5b64a383f540a4deb8e\",\n    \"error_register_checked\": true,\n    \"error_register_sha256\": \"08b3a769b8e38eaa1acec915352fb328180d70caa7ff6cd9d1ec0da426262752\",\n    \"command_sha256\": \"6a4e6ceedf0e8e332675cd4342fe1a57655e2dc4d86f1eab82537b8e0e138c5e\",\n    \"duplicate_failed_command_blocked\": false,\n    \"block_reason\": null,\n    \"execution_started\": true,\n    \"changes_made\": false,\n    \"sanitized\": true,\n    \"secrets_included\": false,\n    \"private_addresses_included\": false,\n    \"raw_evidence_retained_locally\": true,\n    \"raw_evidence_sha256\": \"1e1b51d29391e04f6add08dc0e763bd76b2446deac958537de0ddb0006998789\",\n    \"sanitized_output_sha256\": \"a1c4491180e0ef3cc8411ac9618c9bc44e9e59f21520d85eac7f5aa5e62199f9\",\n    \"output_truncated_in_json\": false,\n    \"full_sanitized_output_url\": \"https://git.gram1.ru/.well-known/homelab-runtime/latest.txt\",\n    \"output\": \"=== SOURCE ===\\nFILE=/var/lib/homelab-chat-run/raw/CRITICAL-TAILS-BASELINE-089-20260721T132108Z.log SIZE=200182 MTIME=2026-07-21 16:21:16.540163848 +0300\\n=== P0_DATA_LOSS_OR_CLUSTER_RISK ===\\n63-392:- Context: SPF cleanup dry-run command 563 had broken shell quoting and left the terminal at multiline prompt.\\n64-397:- Context: SPF cleanup command 565 attempted to replace stale SPF records.\\n65:398:- Issue: backup write permission problem caused record detection failure, so new v=spf1 -all records were created while old v=spf1 ip4:[PRIVATE_IP] records remained.\\n66-402:## MSMTP_SECRET_SOURCE_PARSE_ERROR_576_20260701\\n67-403:- Context: proof 576 installed msmtp but sendmail auth test failed.\\n68-404:- Issue: [SENSITIVE_PATH] was sourced as shell, but SMTP password contained shell-special characters; source failed and auth used an invalid/truncated secret path.\\n--\\n132-774:- The reported validation count is cascading missing-marker evidence, not twenty-five independent design defects.\\n133-775:- The generated validator must be inspected at the exact SyntaxError line before another candidate is created.\\n134:787:- The executed backup script does not write that health file; therefore the stale health timestamp was not evidence of backup failure.\\n135-792:- Failure class: \\u043f\\u0435\\u0440\\u0435\\u0445\\u043e\\u0434 \\u043a \\u0441\\u043b\\u0435\\u0434\\u0443\\u044e\\u0449\\u0435\\u0439 \\u0437\\u0430\\u0434\\u0430\\u0447\\u0435 \\u043f\\u0440\\u0438 \\u043d\\u0430\\u043b\\u0438\\u0447\\u0438\\u0438 \\u043d\\u0435\\u0437\\u0430\\u043a\\u0440\\u044b\\u0442\\u043e\\u0433\\u043e \\u0445\\u0432\\u043e\\u0441\\u0442\\u0430.\\n136-794:- Closure gate: UNRESOLVED_TAIL_COUNT=0; BLOCKER_COUNT=0; TEMPORARY_ARTIFACT_COUNT=0; ROLLBACK_VERIFIED=YES; HEALTH=OK; PROOF_UPDATED=YES; REFERENCE_UPDATED=YES.\\n137-795:- \\u0415\\u0441\\u043b\\u0438 \\u0437\\u0430\\u043a\\u0440\\u044b\\u0442\\u0438\\u0435 \\u043d\\u0435\\u0432\\u043e\\u0437\\u043c\\u043e\\u0436\\u043d\\u043e \\u0438\\u0437-\\u0437\\u0430 \\u0432\\u043d\\u0435\\u0448\\u043d\\u0435\\u0439 \\u0437\\u0430\\u0432\\u0438\\u0441\\u0438\\u043c\\u043e\\u0441\\u0442\\u0438, \\u043e\\u043f\\u0430\\u0441\\u043d\\u043e\\u0439 \\u043d\\u0435\\u043e\\u0434\\u043d\\u043e\\u0437\\u043d\\u0430\\u0447\\u043d\\u043e\\u0441\\u0442\\u0438 \\u0438\\u043b\\u0438 \\u043e\\u0431\\u044f\\u0437\\u0430\\u0442\\u0435\\u043b\\u044c\\u043d\\u043e\\u0433\\u043e \\u0440\\u0435\\u0448\\u0435\\u043d\\u0438\\u044f \\u043f\\u043e\\u043b\\u044c\\u0437\\u043e\\u0432\\u0430\\u0442\\u0435\\u043b\\u044
727:31-}
728:32-
729:33-=== RUNNER_ERROR_REGISTER_LOGIC ===
730:34-13-  change
731:35-14-  transport-test
732:36-15-
733:37-16-Environment:
734:38-17:  HOMELAB_ALLOW_REPEAT=1   Allow exact repeat of a previously failed command.
735:39-18-  HOMELAB_TIMEOUT=SECONDS  Optional command timeout.
934:453-24-  "raw_evidence_retained_locally": true,
935:454-25-  "raw_evidence_sha256": "b0ea79fe2601b6fd549d285cf3b9ae06884f7e7604b63e0bfd7d2b1089ee2893",
936:455-26-  "sanitized_output_sha256": "b0ea79fe2601b6fd549d285cf3b9ae06884f7e7604b63e0bfd7d2b1089ee2893",
937:456-27-  "output_truncated_in_json": true,
938:457-28-  "full_sanitized_output_url": "https://git.gram1.ru/.well-known/homelab-runtime/latest.txt",
939:458:29:  "output": "=== CURRENT_RUNTIME ===\n{\n    \"schema_version\": 1,\n    \"channel\": \"homelab-runtime\",\n    \"command_id\": \"CRITICAL-TAILS-TRIAGE-091\",\n    \"status\": \"OK\",\n    \"rc\": 0,\n    \"host\": \"pve01\",\n    \"mode\": \"read-only\",\n    \"component\": \"cluster-audit\",\n    \"started_at_utc\": \"2026-07-21T13:45:21Z\",\n    \"finished_at_utc\": \"2026-07-21T13:45:21Z\",\n    \"reference_register_checked\": true,\n    \"reference_sha256\": \"5763f2f8edc75fcf6f3951f8c95896d1cc112ceccb6cf5b64a383f540a4deb8e\",\n    \"error_register_checked\": true,\n    \"error_register_sha256\": \"08b3a769b8e38eaa1acec915352fb328180d70caa7ff6cd9d1ec0da426262752\",\n    \"command_sha256\": \"6a4e6ceedf0e8e332675cd4342fe1a57655e2dc4d86f1eab82537b8e0e138c5e\",\n    \"duplicate_failed_command_blocked\": false,\n    \"block_reason\": null,\n    \"execution_started\": true,\n    \"changes_made\": false,\n    \"sanitized\": true,\n    \"secrets_included\": false,\n    \"private_addresses_included\": false,\n    \"raw_evidence_retained_locally\": true,\n    \"raw_evidence_sha256\": \"1e1b51d29391e04f6add08dc0e763bd76b2446deac958537de0ddb0006998789\",\n    \"sanitized_output_sha256\": \"a1c4491180e0ef3cc8411ac9618c9bc44e9e59f21520d85eac7f5aa5e62199f9\",\n    \"output_truncated_in_json\": false,\n    \"full_sanitized_output_url\": \"https://git.gram1.ru/.well-known/homelab-runtime/latest.txt\",\n    \"output\": \"=== SOURCE ===\\nFILE=/var/lib/homelab-chat-run/raw/CRITICAL-TAILS-BASELINE-089-20260721T132108Z.log SIZE=200182 MTIME=2026-07-21 16:21:16.540163848 +0300\\n=== P0_DATA_LOSS_OR_CLUSTER_RISK ===\\n63-392:- Context: SPF cleanup dry-run command 563 had broken shell quoting and left the terminal at multiline prompt.\\n64-397:- Context: SPF cleanup command 565 attempted to replace stale SPF records.\\n65:398:- Issue: backup write permission problem caused record detection failure, so new v=spf1 -all records were created while old v=spf1 ip4:[PRIVATE_IP] records remained.\\n66-402:## MSMTP_SECRET_SOURCE_PARSE_ERROR_576_20260701\\n67-403:- Context: proof 576 installed msmtp but sendmail auth test failed.\\n68-404:- Issue: [SENSITIVE_PATH] was sourced as shell, but SMTP password contained shell-special characters; source failed and auth used an invalid/truncated secret path.\\n--\\n132-774:- The reported validation count is cascading missing-marker evidence, not twenty-five independent design defects.\\n133-775:- The generated validator must be inspected at the exact SyntaxError line before another candidate is created.\\n134:787:- The executed backup script does not write that health file; therefore the stale health timestamp was not evidence of backup failure.\\n135-792:- Failure class: \\u043f\\u0435\\u0440\\u0435\\u0445\\u043e\\u0434 \\u043a \\u0441\\u043b\\u0435\\u0434\\u0443\\u044e\\u0449\\u0435\\u0439 \\u0437\\u0430\\u0434\\u0430\\u0447\\u0435 \\u043f\\u0440\\u0438 \\u043d\\u0430\\u043b\\u0438\\u0447\\u0438\\u0438 \\u043d\\u0435\\u0437\\u0430\\u043a\\u0440\\u044b\\u0442\\u043e\\u0433\\u043e \\u0445\\u0432\\u043e\\u0441\\u0442\\u0430.\\n136-794:- Closure gate: UNRESOLVED_TAIL_COUNT=0; BLOCKER_COUNT=0; TEMPORARY_ARTIFACT_COUNT=0; ROLLBACK_VERIFIED=YES; HEALTH=OK; PROOF_UPDATED=YES; REFERENCE_UPDATED=YES.\\n137-795:- \\u0415\\u0441\\u043b\\u0438 \\u0437\\u0430\\u043a\\u0440\\u044b\\u0442\\u0438\\u0435 \\u043d\\u0435\\u0432\\u043e\\u0437\\u043c\\u043e\\u0436\\u043d\\u043e \\u0438\\u0437-\\u0437\\u0430 \\u0432\\u043d\\u0435\\u0448\\u043d\\u0435\\u0439 \\u0437\\u0430\\u0432\\u0438\\u0441\\u0438\\u043c\\u043e\\u0441\\u0442\\u0438, \\u043e\\u043f\\u0430\\u0441\\u043d\\u043e\\u0439 \\u043d\\u0435\\u043e\\u0434\\u043d\\u043e\\u0437\\u043d\\u0430\\u0447\\u043d\\u043e\\u0441\\u0442\\u0438 \\u0438\\u043b\\u0438 \\u043e\\u0431\\u044f\\u0437\\u0430\\u0442\\u0435\\u043b\\u044c\\u043d\\u043e\\u0433\\u043e \\u0440\\u0435\\u0448\\u0435\\u043d\\u0438\\u044f \\u043f\\u043e\\u043b\\u044c\\u0437\\u043e\\u0432\\u0430\\u0442\\u0435\\u043b\\
940:459-30-}
941:460:--- FILE=/var/lib/homelab-chat-run/public/CRITICAL-TAILS-TRIAGE-090-20260721T132428Z.json ---
942:461-SIZE=1307 MTIME=2026-07-21 16:24:28.286105655 +0300
943:462-1-{
944:463-2-  "schema_version": 1,
945:464-3-  "channel": "homelab-runtime",
946:465:4:  "command_id": "CRITICAL-TAILS-TRIAGE-090",
947:466-5-  "status": "FAIL",
948:467-6-  "rc": 2,
EVIDENCE_EXCERPT_END=/var/lib/homelab-chat-run/raw/ERROR-REGISTER-AUDIT-091-20260721T135306Z.log
EVIDENCE_FILE=/var/lib/homelab-chat-run/raw/SUPPORT-260916-INFRA-DR-BACKUPV2-468-CANDIDATE-BUILD-FORENSIC-RCA-CHUNKED-472R1-20260916T145824Z.log|SHA256=6ffa04318c791c904b1dddc3fa1874647e0756e02eadfc732a9e472ba742ee37|BYTES=7000
EVIDENCE_EXCERPT_BEGIN=/var/lib/homelab-chat-run/raw/SUPPORT-260916-INFRA-DR-BACKUPV2-468-CANDIDATE-BUILD-FORENSIC-RCA-CHUNKED-472R1-20260916T145824Z.log
1:RCA472_BEGIN
2:{"baseline_identity_all_match":true,"candidate_trees":[{"expected_ct_paths":[],"expected_wrapper_paths":[],"files":[{"bytes":2077,"mode":"0400","path":"CONTRACT.json","sha256":"a414715f1b91b3701c52073709a80c38218f76e3961618e8af61489211e50c01","state":"FILE"},{"bytes":7210,"mode":"0400","path":"PLAN265_REFERENCE.json","sha256":"8d36e82080be93a8c929a9211191fa868166b9e7b6152c4c7689fa52b6720757","state":"FILE"},{"bytes":4310,"mode":"0400","path":"PROVENANCE.json","sha256":"303f44dc8e91c8e6a675f9ea406ce4b7532ed98440a9b6807fa593ede9d33254","state":"FILE"},{"bytes":2989,"mode":"0500","path":"adapter.py","sha256":"18eb29cef165371b48bcb78e1a456e1939e6eff253787218133162cc89ab9fa3","state":"FILE"},{"bytes":7385,"mode":"0400","path":"guest266.py","sha256":"86433bc424d5fa5017c20f7a237c82874b02357a3283660d8a6b0039ef2bc868","state":"FILE"},{"bytes":16514,"mode":"0400","path":"large264.py","sha256":"5cc4641fc35e4dd554495a36146da7dbbb7f142d1450e04cc5d3c89678b8497a","state":"FILE"},{"bytes":4603,"mode":"0400","path":"nodeplan263.py","sha256":"db5c16ee24d25aa1694530332d3190ab7cc5d4f8eb69067d025e27ad5c995060","state":"FILE"},{"bytes":12888,"mode":"0400","path":"pve265.py","sha256":"cd2f634414a8e38a3789015aeca5a9b47821f77d7d1fa61dcdbdc866172963be","state":"FILE"},{"bytes":19595,"mode":"0400","path":"pve270.py","sha256":"97015277a4f3f8129c0fd11eb70c06293026366f1f8232a97feeed513a2dbcef","state":"FILE"},{"bytes":6195,"mode":"0400","path":"pve282.py","sha256":"73c6cb7773eb8e82d1e7ed5ab4733b4afb88f74ae69c09125d0378d6e480e012","state":"FILE"},{"bytes":14701,"mode":"0400","path":"restore262.py","sha256":"56d1b961c8d5654d5e2ee2755268db46bd2202bca11e69788febf991cfaa79f1","state":"FILE"},{"bytes":8831,"mode":"0400","path":"stream263.py","sha256":"a83d03a86b93a855716658652dd073fcb281cd387fc6200fe4bc2a922f39ea16","state":"FILE"},{"bytes":10752,"mode":"0400","path":"test_guest266.py","sha256":"460b950924a475ce0a28dc759512e7dbe2323ae2cc42f7ef4c6181710a2a13da","state":"FILE"},{"bytes":5441,"mode":"0400","path":"test_perl270.py","sha256":"50fc10865078a7b9b255dc627059824184441a47c4ede52e23f24c1186e3512f","state":"FILE"},{"bytes":12215,"mode":"0400","path":"test_producer282.py","sha256":"a67d927cc428935791f9eecc3acf571d089f80761162f4589b7d684fba6b8af7","state":"FILE"},{"bytes":11781,"mode":"0400","path":"test_pve265.py","sha256":"16a9407d01bf73db687ef38684c59205fc2e6a9223cd9cee6ec6e8dde9d38707","state":"FILE"},{"bytes":12077,"mode":"0400","path":"test_pve270.py","sha256":"9fccd20b490613fdd5b14b4105cf0d9fd744f204e1ed1d6893e54c9f69bf6fb4","state":"FILE"},{"bytes":5785,"mode":"0400","path":"test_pve282.py","sha256":"1056407aab76e17181b05e043cb42c086058545a8e0027689ab4e03eee6531c4","state":"FILE"},{"bytes":15364,"mode":"0400","path":"transport261.py","sha256":"b9b92f957bf441cb5d1702f4881897328e6c0338f8c3f6d41d27d9a349b37688","state":"FILE"},{"bytes":11755,"mode":"0400","path":"v2core.py","sha256":"e285bf9a5678d07dcbb90261f9f93e7826ff524e04cfec780bf5a3c4b0dc29f2","state":"FILE"}],"hash_preimages":[],"root":"/opt/homelab-backup-v2/candidates/pve-lxc-adapter-411r1","state":"READ","truncated":false}],"command_id":"SUPPORT-260916-INFRA-DR-BACKUPV2-468-CANDIDATE-BUILD-FORENSIC-RCA-CHUNKED-472R1","decision":"HASH_PREIMAGE_NOT_FOUND_PARTIAL_CANDIDATE_SNAPSHOT_COLLECTED","hash_preimage_found":false,"hash_preimage_matches":[],"production_identities":{"/etc/homelab-backup-v2/targets.json":{"bytes":5105,"expected_match":true,"gid":0,"mode":"0600","sha256":"a723befc7fd42d70af9088406598f18156dc3b4c76d8b34c4bb725dfaa48dd38","state":"FILE","uid":0},"/etc/systemd/system/homelab-backup-v2.service":{"bytes":309,"expected_match":true,"gid":0,"mode":"0644","sha256":"1ef3e6bc660767a1f29a6a0bfa8d1b7a2419370b2250764ca181c34c93188565","state":"FILE","uid":0},"/etc/systemd/system/homelab-backup-v2.timer":{"bytes":192,"expected_match":true,"gid":0,"mode":"0644","sha256":"5469057602452b303a01ccb8057085c1b0e447973e5ed198cebf7dd5daf58e9d","state":"FILE","uid":0},"/usr/local/sbin/homelab-backup-v2":
3:RCA472_END
EVIDENCE_EXCERPT_END=/var/lib/homelab-chat-run/raw/SUPPORT-260916-INFRA-DR-BACKUPV2-468-CANDIDATE-BUILD-FORENSIC-RCA-CHUNKED-472R1-20260916T145824Z.log
EVIDENCE_FILE=/var/lib/homelab-chat-run/raw/RUN7A-DELIVERY-PREPLAN-DISCOVERY-20260726T153105Z-20260726T153254Z.log|SHA256=80c0aa4ae374f18ac41e5c6df736a45e2f144cf5a23db6ccf7554c5a03844a98|BYTES=36576
EVIDENCE_EXCERPT_BEGIN=/var/lib/homelab-chat-run/raw/RUN7A-DELIVERY-PREPLAN-DISCOVERY-20260726T153105Z-20260726T153254Z.log
1:RUN7A_DELIVERY_PREPLAN_DISCOVERY=PASS
2:PREPLAN_BASIS_SHA256=6ae59d4b7877710758ecb8e315a8322e71c475b6dcda680864eff8c1f7e7e0d9
3:REPORT_SHA256=319d433bb77302d92977e66bec320130c69eca85e70e05f6f8350bba4f1a7d6b
4:{"anti_regression":{"RUN7A-AR-001-SANITIZER-LINE-BOUNDARY":{"checks":{"gateway_discovery_by_listener_not_name_guess":true,"multiline_false_positive_closed":true,"no_long_inline_remote_shell":true,"password_removed":true,"private_ip_removed":true,"remote_stat_single_argument_format":true,"userinfo_removed":true},"status":"PASS"},"RUN7A-AR-002-REMOTE-STAT-NO-SPACES":{"status":"PASS"},"RUN7A-AR-003-GATEWAY-BY-LISTENER-CGROUP":{"status":"PASS"},"RUN7A-AR-004-NO-INLINE-REMOTE-BODY":{"status":"PASS"},"RUN7A-AR-005-NO-MUTATION":{"backup_changed":false,"cluster_changed":false,"gitea_changed":false,"production_changed":false,"status":"PASS"}},"architecture":{"phase_1":{"name":"IMMUTABLE_PUBLIC_RESULT","requirements":["publish runtime/by-command/<COMMAND_ID>.json","publish runtime/by-command/<COMMAND_ID>.txt","fail closed on same COMMAND_ID with different SHA","idempotent success on same COMMAND_ID and same SHA","retain latest.json/latest.txt as non-authoritative convenience","runner polls exact immutable by-command JSON","runner verifies command_id and command_sha256","full_sanitized_output_url points to immutable TXT","atomic write, flock, git commit and git push"],"scope":["/usr/local/sbin/homelab-chat-run","/usr/local/sbin/homelab-runtime-receive"]},"phase_2":{"name":"DETERMINISTIC_FULL_EVIDENCE_RECEIPT","requirements":["deterministic receipt URL known before execution","receipt capability derived from 256-bit capsule SHA","receipt metadata uploaded only after evidence SHA verification","uniform 404 for missing, invalid and expired receipt","Cache-Control: no-store","Content-Disposition contains COMMAND_ID and short SHA","no ListBucket","no permanent MinIO credentials in Gateway","evidence SHA verified before HTTP 200"],"scope":["/usr/local/sbin/homelab-command-adapter","/opt/stacks/evidence-gw/gateway.py","evidence-gw.service"]},"phase_3":{"name":"QUALITY_GATE_PLAN_APPLY_ENFORCEMENT","requirements":["schema-v1 read-only compatibility","schema-v2 mandatory for change","exact PLAN capsule/evidence/plan SHA binding","no unresolved mutating failure","Portal displays all gate fields","Execute disabled on gate failure","diagnostics before rollback"],"scope":["/usr/local/sbin/homelab-command-adapter","/usr/local/sbin/homelab-command-portal"],"source_plan_sha256":"99fac83369ee8d5098c07cf243398d8b6b144e4fbc9ef9b39ef75436b109d607"}},"blockers":[],"changes":{"backup":false,"cluster":false,"gitea":false,"production":false},"checked_at_utc":"2026-07-26T15:33:10.356156+00:00","command_id":"RUN7A-DELIVERY-PREPLAN-DISCOVERY-20260726T153105Z","edge_gateway":{"cgroup_rc":0,"cmdline":["/usr/bin/python3","/opt/stacks/evidence-gw/gateway.py","--config","/etc/evidence-gw/config.json"],"cmdline_rc":0,"exe":"/usr/bin/python3.13","exe_rc":0,"install_help_rc":0,"listener_excerpt":"LISTEN 0      5           [PRIVATE_IP]:18093 [PRIVATE_IP]:* users:((\"python3\",pid=2384852,fd=3))                                                                                                            ","listener_found":true,"listener_rc":0,"nginx_rc":125,"nginx_relevant":[],"pid":2384852,"script_features":{"has_content_disposition":true,"has_expiry":true,"has_list_bucket":false,"has_no_store":true,"has_object_key":false,"has_receipt_route":false,"has_sha256":true},"script_path":"/opt/stacks/evidence-gw/gateway.py","script_sha256":"27de57be0924fe8d86d38879b3bcdba8d4ade817b3a42219dd65d8aacc9601cb","script_sha_rc":0,"script_source_bytes":14158,"script_source_rc":0,"script_source_redacted":"#!/usr/bin/env python3\nfrom __future__ import annotations\n\nimport argparse\nimport hashlib\nimport hmac\nimport http.server\nimport json\nimport os\nimport re\nimport secrets\nimport tempfile\nimport threading\nimport time\nimport urllib.error\nimport urllib.parse\nimport urllib.request\nfrom pathlib import Path\nfrom typing import Any\n\nKEY_SEGMENT = re.compile(r\"^[A-Za-z0-9._-]+$\")\nSHA256_RE = re.compile(r\"^[0-9a-f]{64}$\")\n\n\ndef load_json(path: Path) -> dict[str, Any]:\n    valu
EVIDENCE_EXCERPT_END=/var/lib/homelab-chat-run/raw/RUN7A-DELIVERY-PREPLAN-DISCOVERY-20260726T153105Z-20260726T153254Z.log
EVIDENCE_FILE=/var/lib/homelab-chat-run/raw/GRAM1-SITE-CHARTS-V38R1-SUDO-PROBE-LINECOUNT-FIX-20260801T124200Z-20260801T124326Z.log|SHA256=7909460d0d093dc7b3fd4fc26760c31b746c2726817e367c4f54af19d08b1973|BYTES=134691
EVIDENCE_EXCERPT_BEGIN=/var/lib/homelab-chat-run/raw/GRAM1-SITE-CHARTS-V38R1-SUDO-PROBE-LINECOUNT-FIX-20260801T124200Z-20260801T124326Z.log
1:HOMELAB_RESULT_CONTRACT={"changes_made":false,"command_id":"GRAM1-SITE-CHARTS-V38R1-SUDO-PROBE-LINECOUNT-FIX-20260801T124200Z","mutation_outcome":"NO_MUTATION","rollback_restored":null,"rollback_started":false,"status":"OK","version":1}
2:{"changes_made":false,"command_id":"GRAM1-SITE-CHARTS-V38R1-SUDO-PROBE-LINECOUNT-FIX-20260801T124200Z","control_plane_error":null,"gitea_changed":false,"mutation_outcome":"NO_MUTATION","pinned_host_key_aliases":["[PRIVATE_IP]"],"production_site_changed":false,"rc":0,"remote_result":{"app_analysis":{"app_bytes":32843,"app_sha256":"3b55b78c015173eea66b67afb8fb9371f0d7d2e38a7679d4c433749f4c07301d","chart_matches":[{"line":466,"snippet":"00461:         x=left+step*(i+.5);color=\"#63e6be\" if c>=o else \"#ff6b81\";yo=y(o);yc=y(c);yh=y(h);yl=y(l);rh=max(1.2,abs(yc-yo));ry=min(yo,yc)\n00462:         parts.append(f'<line x1=\"{x:.2f}\" y1=\"{yh:.2f}\" x2=\"{x:.2f}\" y2=\"{yl:.2f}\" stroke=\"{color}\" stroke-width=\"1.2\"/>');parts.append(f'<rect x=\"{x-body/2:.2f}\" y=\"{ry:.2f}\" width=\"{body:.2f}\" height=\"{rh:.2f}\" fill=\"{color}\"/>')\n00463:     parts.append(f'<text x=\"{left}\" y=\"{height-12}\" fill=\"#8fa5b6\" font-size=\"13\">{_gram1_html.escape(symbol)} / USDT · 1M · {len(rows)} свечей</text></svg>')\n00464:     return ''.join(parts)\n00465: \n00466: @app.get(\"/api/chart-svg/{symbol}\", include_in_schema=False)\n00467: async def _gram1_chart_svg_endpoint_v4(symbol: str, request: _Gram1Request):\n00468:     if not request.session.get(\"auth\"):\n00469:         return _Gram1Response(content=\"Требуется вход\", status_code=401, media_type=\"text/plain; charset=utf-8\")\n00470:     symbol=symbol.upper()\n00471:     if symbol not in _GRAM1_CHART_SYMBOLS:","token":"/api/chart-svg"},{"line":397,"snippet":"00392:     require_login(request)\n00393:     with db() as c:\n00394:         c.execute(\"DELETE FROM alerts WHERE id=?\",(alert_id,)); c.commit()\n00395:     return {\"ok\":True}\n00396: \n00397: # GRAM1_SERVER_CHART_FALLBACK_V4\n00398: import asyncio as _gram1_asyncio\n00399: import base64 as _gram1_base64\n00400: import html as _gram1_html\n00401: import inspect as _gram1_inspect\n00402: import json as _gram1_json","token":"GRAM1_SERVER_CHART_FALLBACK_V4"},{"line":452,"snippet":"00447:         except Exception:\n00448:             continue\n00449:     if not rows: raise RuntimeError(\"no valid OHLC rows\")\n00450:     return rows[-180:]\n00451: \n00452: def _gram1_chart_svg_v4(symbol: str, rows):\n00453:     width,height,left,right,top,bottom=1200,430,72,28,24,42\n00454:     lo=min(r[3] for r in rows);hi=max(r[2] for r in rows);span=max(hi-lo,abs(hi)*1e-9,1e-12)\n00455:     plot_w=width-left-right;plot_h=height-top-bottom;step=plot_w/max(len(rows),1);body=max(2.0,min(10.0,step*0.58))\n00456:     def y(v): return top+(hi-v)/span*plot_h\n00457:     parts=[f'<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 {width} {height}\" role=\"img\" aria-label=\"{_gram1_html.escape(symbol)} candle chart\" data-symbol=\"{_gram1_html.escape(symbol)}\" data-candles=\"{len(rows)}\">', '<rect width=\"100%\" height=\"100%\" fill=\"#081823\"/>']","token":"_gram1_chart_svg_v4"},{"line":475,"snippet":"00470:     symbol=symbol.upper()\n00471:     if symbol not in _GRAM1_CHART_SYMBOLS:\n00472:         return _Gram1Response(content=\"Неизвестная монета\", status_code=404, media_type=\"text/plain; charset=utf-8\")\n00473:     try:\n00474:         rows=await _gram1_chart_data_v4(symbol,request)\n00475:         svg=_gram1_chart_svg_v4(symbol,rows)\n00476:         return _Gram1Response(content=svg,media_type=\"image/svg+xml\",headers={\"Cache-Control\":\"no-store\"})\n00477:     except Exception as exc:\n00478:         msg=_gram1_html.escape(str(exc))\n00479:         svg=f'<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 1200 430\" data-symbol=\"{symbol}\" data-candles=\"0\"><rect width=\"100%\" height=\"100%\" fill=\"#081823\"/><text x=\"30\" y=\"60\" fill=\"#ff6b81\" font-size=\"18\">Ошибка серверного графика {symbol}: {msg}</text></svg>'\n00480:         return _Gram1Response(content=svg,status_code=503,media_type=\"image/svg+xml\",headers={\"Cache-Control\":\"no-store\"})","token":"_gram1_chart_svg_v4"},{"line":409,"snippet":"00404: from
EVIDENCE_EXCERPT_END=/var/lib/homelab-chat-run/raw/GRAM1-SITE-CHARTS-V38R1-SUDO-PROBE-LINECOUNT-FIX-20260801T124200Z-20260801T124326Z.log
EVIDENCE_FILE=/var/lib/homelab-chat-run/raw/NEWFI-260919-NEWFDOM-CONTENTINDEXNOW-FIX111-20260918T220515Z.log|SHA256=bb62ead4e097fb8918dd7a39c24018605f1423552da9384d4b47c58e98def0a6|BYTES=1004
EVIDENCE_EXCERPT_BEGIN=/var/lib/homelab-chat-run/raw/NEWFI-260919-NEWFDOM-CONTENTINDEXNOW-FIX111-20260918T220515Z.log
1:NEWFI111_BEGIN
2:COMMAND_ID=NEWFI-260919-NEWFDOM-CONTENTINDEXNOW-FIX111
3:NEWFI111_PREFLIGHT={"production":{"action":"preflight","error_ids":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40],"jobs":[2324,2325,2326,2327,2328,2329,2330,2331],"ok":true,"role":"production","source_sha":"71fa0f048e9a1e40827d5ba3e5bf7be11b1bb40c0bcb9610830131418a976b96"},"staging":{"action":"preflight","error_ids":[33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54],"jobs":[],"ok":true,"role":"staging","source_sha":"71fa0f048e9a1e40827d5ba3e5bf7be11b1bb40c0bcb9610830131418a976b96"}}
4:NEWFI111_BACKUPS_2OF2=PASS
5:NEWFI111_SAFE_REPORT={"changes_made":true,"decision":"FAIL_CONTENTINDEXNOW_HOTFIX_HOLD","error":"RuntimeError:GUEST:staging:RuntimeError:PATCH_CONTEXT"}
6:HOMELAB_RESULT_CONTRACT={"changes_made":true,"command_id":"NEWFI-260919-NEWFDOM-CONTENTINDEXNOW-FIX111","rollback_restored":null,"rollback_started":false,"status":"FAIL","version":1}
EVIDENCE_EXCERPT_END=/var/lib/homelab-chat-run/raw/NEWFI-260919-NEWFDOM-CONTENTINDEXNOW-FIX111-20260918T220515Z.log
EVIDENCE_FILE=/var/lib/homelab-chat-run/raw/SUPPORT-260917-INFRA-DR-BACKUPV2-492-CANDIDATE-BUILD-SUBPROCESS-DECOMPOSITION-493R1-20260916T223024Z.log|SHA256=6cf6810953494d7924c13d64cb7aefe8522cf444eb78d67adfe3810ef878349d|BYTES=25961
EVIDENCE_EXCERPT_BEGIN=/var/lib/homelab-chat-run/raw/SUPPORT-260917-INFRA-DR-BACKUPV2-492-CANDIDATE-BUILD-SUBPROCESS-DECOMPOSITION-493R1-20260916T223024Z.log
9:RETENTION_STATUS=HOLD_VM200_LIFECYCLE_RECONCILIATION_REQUIRED
10:STAGE492_INVENTORY={"expected_exact":{"legacy_engine.py":true,"pve265_fresh_plan_helper492.py":false,"wrapper.py":true},"file_count":25,"files":[{"bytes":2077,"mode":"0400","path":"candidate411/CONTRACT.json","sha256":"a414715f1b91b3701c52073709a80c38218f76e3961618e8af61489211e50c01"},{"bytes":7210,"mode":"0400","path":"candidate411/PLAN265_REFERENCE.json","sha256":"8d36e82080be93a8c929a9211191fa868166b9e7b6152c4c7689fa52b6720757"},{"bytes":4310,"mode":"0400","path":"candidate411/PROVENANCE.json","sha256":"303f44dc8e91c8e6a675f9ea406ce4b7532ed98440a9b6807fa593ede9d33254"},{"bytes":2989,"mode":"0500","path":"candidate411/adapter.py","sha256":"18eb29cef165371b48bcb78e1a456e1939e6eff253787218133162cc89ab9fa3"},{"bytes":7385,"mode":"0400","path":"candidate411/guest266.py","sha256":"86433bc424d5fa5017c20f7a237c82874b02357a3283660d8a6b0039ef2bc868"},{"bytes":16514,"mode":"0400","path":"candidate411/large264.py","sha256":"5cc4641fc35e4dd554495a36146da7dbbb7f142d1450e04cc5d3c89678b8497a"},{"bytes":4603,"mode":"0400","path":"candidate411/nodeplan263.py","sha256":"db5c16ee24d25aa1694530332d3190ab7cc5d4f8eb69067d025e27ad5c995060"},{"bytes":12888,"mode":"0400","path":"candidate411/pve265.py","sha256":"cd2f634414a8e38a3789015aeca5a9b47821f77d7d1fa61dcdbdc866172963be"},{"bytes":19595,"mode":"0400","path":"candidate411/pve270.py","sha256":"97015277a4f3f8129c0fd11eb70c06293026366f1f8232a97feeed513a2dbcef"},{"bytes":6195,"mode":"0400","path":"candidate411/pve282.py","sha256":"73c6cb7773eb8e82d1e7ed5ab4733b4afb88f74ae69c09125d0378d6e480e012"},{"bytes":14701,"mode":"0400","path":"candidate411/restore262.py","sha256":"56d1b961c8d5654d5e2ee2755268db46bd2202bca11e69788febf991cfaa79f1"},{"bytes":8831,"mode":"0400","path":"candidate411/stream263.py","sha256":"a83d03a86b93a855716658652dd073fcb281cd387fc6200fe4bc2a922f39ea16"},{"bytes":10752,"mode":"0400","path":"candidate411/test_guest266.py","sha256":"460b950924a475ce0a28dc759512e7dbe2323ae2cc42f7ef4c6181710a2a13da"},{"bytes":5441,"mode":"0400","path":"candidate411/test_perl270.py","sha256":"50fc10865078a7b9b255dc627059824184441a47c4ede52e23f24c1186e3512f"},{"bytes":12215,"mode":"0400","path":"candidate411/test_producer282.py","sha256":"a67d927cc428935791f9eecc3acf571d089f80761162f4589b7d684fba6b8af7"},{"bytes":11781,"mode":"0400","path":"candidate411/test_pve265.py","sha256":"16a9407d01bf73db687ef38684c59205fc2e6a9223cd9cee6ec6e8dde9d38707"},{"bytes":12077,"mode":"0400","path":"candidate411/test_pve270.py","sha256":"9fccd20b490613fdd5b14b4105cf0d9fd744f204e1ed1d6893e54c9f69bf6fb4"},{"bytes":5785,"mode":"0400","path":"candidate411/test_pve282.py","sha256":"1056407aab76e17181b05e043cb42c086058545a8e0027689ab4e03eee6531c4"},{"bytes":15364,"mode":"0400","path":"candidate411/transport261.py","sha256":"b9b92f957bf441cb5d1702f4881897328e6c0338f8c3f6d41d27d9a349b37688"},{"bytes":11755,"mode":"0400","path":"candidate411/v2core.py","sha256":"e285bf9a5678d07dcbb90261f9f93e7826ff524e04cfec780bf5a3c4b0dc29f2"},{"bytes":10955,"mode":"0400","path":"ct112_handler.py","sha256":"8cac6e627d5e7abe5d3163cdd24911995a1e3f45c776f9373c2aa68784f5ec6c"},{"bytes":59790,"mode":"0400","path":"legacy_engine.py","sha256":"ff4fbf84638ab55a8a1858558b759b3fc9d979ef5feb279132a558bcef583598"},{"bytes":7261,"mode":"0400","path":"pve265_fresh_plan_helper.py","sha256":"de9a225cd67947ca585fbd3440d74d91b606d9fd6d1da1b170cd6fb4c2024220"},{"bytes":4214,"mode":"0400","path":"representative_driver.py","sha256":"b3050a8f95e6d9826a4f0786cd3ca32012b6ab10486d10e4981b50b8a0affff2"},{"bytes":5076,"mode":"0400","path":"wrapper.py","sha256":"2c1aea8d29cd697254a2f90a458edf9837f834b4d1f9525f478e8a8eb58cd495"}],"present":true}
11:STAGE492_LEGACY_FUNCTIONS={"_isolated_guest266_dump_argv":{"args":["job","vzdump","scratch","now"],"end_lineno":444,"lineno":439,"sha256":"8b839594ef97b840ca7025ef4ff416774e2be860f7ca17a6e8023bfc7348eb14"},"_lxc_job":{"args":["t","row","node"],"end_lineno":455,"lineno":446,"sha256":"9e04ff12c73736ed4f6728c56098aaae5705afe95101c38e31d005cca985e1ef"},"capture_pve_guest":{"args":["t","gen","work"],"end_lineno":542,"lineno":506,"sha256":"c4c22625a9c6a954d0ed93dfc63f0501af0644ca9f5e6781d3b2e50a7e2563ea"},"proven_lxc_dump_argv":{"args":["t","row","node","scratch"],"end_lineno":474,"lineno":457,"sha256":"6240284527bdff58e0693ca88215ef71f638afed21a2dc0fa9163946827ef0b0"},"selftest":{"args":[],"end_lineno":1002,"lineno":988,"sha256":"0ed8f5298ec16a19de775b6206f592fac396dc2b0800d10ebc241b25787a40f3"}}
12:ACCEPTED492_PRESENT=false
13:SUCCESS492_PRESENT=false
14:492_CHILD_WRAPPER_SELFTEST={"rc":1,"stderr_bytes":1437,"stderr_projection":{"exceptions":["NameError","RuntimeError"],"markers":[],"tokens":["LEGACY_FULL_SELFTEST"]},"stderr_sha256":"31a4a026671970851b6a4b8bd65fe7af77c2b32a298c40119a588a2670c17788","stdout_bytes":0,"stdout_projection":{"exceptions":[],"markers":[],"tokens":[]},"stdout_sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"}
15:492_CHILD_LEGACY_SELFTEST={"rc":1,"stderr_bytes":1187,"stderr_projection":{"exceptions":["NameError"],"markers":[],"tokens":["LEGACY_SELFTEST_RETURN"]},"stderr_sha256":"94e052b6e2f121f4c159c8d482b560ee3a81c6ce60e9538be17f0818d6d7171d","stdout_bytes":0,"stdout_projection":{"exceptions":[],"markers":[],"tokens":[]},"stdout_sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"}
16:492_PROVEN_LXC_ARGV_PROBE={"rc":1,"stderr_bytes":907,"stderr_projection":{"exceptions":["TypeError"],"markers":[],"tokens":["PROVEN_LXC_ARGC","PROVEN_LXC_ARITY","PROVEN_LXC_RESULT_TYPE"]},"stderr_sha256":"d05f9c8b029a44a74600d12595e00d2ac05f68686a9e178a2f2c0cc7f9eeca75","stdout_bytes":19,"stdout_projection":{"exceptions":[],"markers":["PROVEN_LXC_ARITY=4"],"tokens":["PROVEN_LXC_ARITY"]},"stdout_sha256":"6b91f2bebd0006c4621d94454ff44e628d0617285dcfc6dcef91e3ea509abb16"}
17:RUNNER492_EVIDENCE={"matches":[{"bytes":2617,"path":"public/SUPPORT-260917-INFRA-DR-BACKUPV2-LEGACY-LXC-FRESH-PLAN-OWNER-REPAIR-VERIFY-492R1-20260916T221657Z-latest.txt","projection":{"exceptions":["builtins.RuntimeError"],"markers":["COMMAND_ID=SUPPORT-260917-INFRA-DR-BACKUPV2-LEGACY-LXC-FRESH-PLAN-OWNER-REPAIR-VERIFY-492R1","STATUS=FAIL","HOST=pve01","MODE=change","COMPONENT=infra-dr-backupv2-legacy-lxc-fresh-plan-owner-repair-verify","REFERENCE_REGISTER_CHECK=OK","REFERENCE_SHA256=5a3d8e5154c41cb582a4e0aca68090be1f0138918bf82131a948df326f9d8d66","ERROR_REGISTER_CHECK=OK","ERROR_REGISTER_SHA256=3b09a553ec0f527ed3afeed4753f52a74ee3036045bbfb3c685e9f8af4ba7ba0","COMMAND_SHA256=b7790647d730f4d74e6794ad6e9616761f4cdf7d60c667344ecd2c36e872dcb7","DUPLICATE_FAILED_COMMAND_BLOCKED=false","EXECUTION_STARTED=true","CHANGE_DECLARED=true","RESULT_CONTRACT_VALID=true","RESULT_CONTRACT_STATUS=FAIL","RESULT_CONTRACT_ERROR=NONE","COMMAND_RC=2","CHANGES_MADE=true","ROLLBACK_STARTED=true","ROLLBACK_RESTORED=true","MUTATION_OUTCOME=ROLLED_BACK","SANITIZED=yes","PRIVATE_ADDRESSES_INCLUDED=no","RAW_EVIDENCE_SHA256=8c8f1aa4e255d5b98868fae575a599170248cb528701301a68c7444019b8878c","SANITIZED_OUTPUT_SHA256=8c8f1aa4e255d5b98868fae575a599170248cb528701301a68c7444019b8878c","COMMAND_ID=SUPPORT-260917-INFRA-DR-BACKUPV2-LEGACY-LXC-FRESH-PLAN-OWNER-REPAIR-VERIFY-492R1","MODE=CHANGE_LEGACY_LXC_FRESH_PLAN_OWNER_REPAIR_VERIFY","NO_TARGET_REGISTRY_REWRITE=YES","SYSTEMD_UNIT_FILE_MUTATIONS=0","NO_DAEMON_RELOAD=YES","CLOUD_DELETIONS=0","RETENTION_MUTATION=NO","RETENTION_STATUS=HOLD_VM200_LIFECYCLE_RECONCILIATION_REQUIRED","STALE_491_STAGE_PRESENT=YES","STALE_491_ACCEPTED_PRESENT=NO","STALE_491_SUCCESS_PRESENT=NO","STALE_491_ARTIFACTS_PRESERVED=YES","PREPROOF_DUE_TARGET=ct110","PREFLIGHT_486_BASELINE=PASS","V2_TIMER_RUNTIME_STOP=PASS","COMMON_HEAVY_LOCK_ACQUIRED=YES","PATCHED_LEGACY_ENGINE_SHA256=ff4fbf84638ab55a8a1858558b759b3fc9d979ef5feb279132a558bcef583598","PATCHED_WRAPPER_SHA256=2c1aea8d29cd697254a2f90a458edf9837f834b4d1f9525f478e8a8eb58cd495","PVE265_HELPER_SHA256=de9a225cd67947ca585fbd3440d74d91b606d9fd6d1da1b170cd6fb4c2024220","ROLLBACK_TO_486=STARTED","ROLLBACK_TO_486=PASS","COMMON_HEAVY_LOCK_RELEASED=YES","STATUS=FAIL","PHASE=CANDIDATE_BUILD","REASON=FAILED_CLOSED","EXCEPTION_CLASS=builtins.RuntimeError","EXCEPTION_MESSAGE_SHA256=07e2418b1301438d64fed32bba375a18bb907447a5067e75c0bdb643b2cbded3","PRODUCTION_PROMOTION=NO","RETENTION_MUTATION=NO","RETENTION_STATUS=HOLD_VM200_LIFECYCLE_RECONCILIATION_REQUIRED","CLOUD_DELETIONS=0","CHANGES_MADE=true","ROLLBACK_STARTED=true","ROLLBACK_RESTORED=true","MUTATION_OUTCOME=MUTATED_THEN_ROLLED_BACK_TO_486"],"tokens":["BACKUPV2","CANDIDATE_BUILD","CHANGES_MADE","CHANGE_DECLARED","CHANGE_LEGACY_LXC_FRESH_PLAN_OWNER_REPAIR_VERIFY","CHAT_OUTPUT_BEGIN","CHAT_OUTPUT_END","CLOUD_DELETIONS","COMMAND_ID","COMMAND_RC","COMMAND_SHA256","COMMON_HEAVY_LOCK_ACQUIRED","COMMON_HEAVY_LOCK_RELEASED","COMPONENT","DUPLICATE_FAILED_COMMAND_BLOCKED","ERROR_REGISTER_CHECK","ERROR_REGISTER_SHA256","EXCEPTION_CLASS","EXCEPTION_MESSAGE_SHA256","EXECUTION_STARTED","FAIL","FAILED_CLOSED","FRESH","HOLD_VM200_LIFECYCLE_RECONCILIATION_REQUIRED","HOMELAB_RESULT_CONTRACT","HOST","INFRA","LEGACY","LXC","MODE","MUTATED_THEN_ROLLED_BACK_TO_486","MUTATION_OUTCOME","NONE","NO_DAEMON_RELOAD","NO_TARGET_REGISTRY_REWRITE","OUTPUT_BEGIN","OUTPUT_END","OWNER","PASS","PATCHED_LEGACY_ENGINE_SHA256","PATCHED_WRAPPER_SHA256","PHASE","PLAN","PREFLIGHT_486_BASELINE","PREPROOF_DUE_TARGET","PRIVATE_ADDRESSES_INCLUDED","PRODUCTION_PROMOTION","PVE265_HELPER_SHA256","RAW_EVIDENCE_SHA256","REASON","REFERENCE_REGISTER_CHECK","REFERENCE_SHA256","REPAIR","RESULT_CONTRACT_ERROR","RESULT_CONTRACT_STATUS","RESULT_CONTRACT_VALID","RETENTION_MUTATION","RETENTION_STATUS","ROLLBACK_RESTORED","ROLLBACK_STARTED","ROLLBACK_TO_486","ROLLED_BACK","SANITIZED","SANITIZED_OUTPUT_SHA256","SECRETS_INCLUDED","STALE_491_ACCEPTED_PRESENT","STALE_491_ARTIFACTS_PRESERVED","STALE_491_STAGE_PR
18:LIVE_PVE_VM200={"json":true,"live_vm200_present":false,"rc":0,"resource_count":13,"stderr_sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","stdout_sha256":"5df69cb99c7cf0c62090a15be500d094286e35cd5268fc3f59588cdde80b92d2","vm200_rows":[]}
19:HOMELAB_OPS_VM200_AUTHORITY={"guest_inventory":{"present":true,"sha256":"2e877798e48842e03462ebd0e5fb2ebf03ef20e56b0f6f3b842e54807dbf8d00","vm200_paths":["$[11].id","$[11].name","$[11].role"]},"head":"d5e2ef5639398a762283e47143c17b494f8ed579","matches":[{"line":24,"path":"kb/AI_CONTEXT.md","restore_word":true,"retire_word":true,"sha256":"4ad0264774cc816aeab85a8b0e6285b24c7412d282a7c059ddca36d77a048a32","text":"110 dns1, 111 dns2, 112 unbound1, 113 unbound2, VM130 edge-vm, VM150 Snikket, VM160 forum-prod, VM170 core-apps/Gitea, VM171 monitoring, VM190 Gitea Actions runner. VM180 and CT200 are retirement candidates only; no blind delete. VM9130 edge-cold-standby stays until timed VM130 DR restore proof."},{"line":136,"path":"kb/inventory/guests.json","restore_word":false,"retire_word":false,"sha256":"e0876962912ed44815a85e5c564cc8a7262044d96a3c5dd6dce7a28e695c9ab6","text":"\"name\": \"skladchik-mod\","},{"line":143,"path":"kb/inventory/guests.json","restore_word":false,"retire_word":false,"sha256":"b3b0f300780b983846ffc8d1398356a3e40e82099a1e6f4da198c9fc2d1453ed","text":"\"role\": \"skladchik-mod: moderator v2 + PostgreSQL\","},{"line":122,"path":"kb/private/archive/2026-08-19/docs/01_CURRENT_AUTHORITATIVE_STATE.md","restore_word":false,"retire_word":true,"sha256":"a6e53577bc02cca2c62f4d63e89340690a78a41929c7ca37013c735e0e9dbcdc","text":"<REDACTED sha256=a6e53577bc02cca2c62f4d63e89340690a78a41929c7ca37013c735e0e9dbcdc>"},{"line":42,"path":"kb/private/archive/2026-08-19/docs/02_CLUSTER_TOPOLOGY_AND_INVENTORY.md","restore_word":false,"retire_word":false,"sha256":"78cc3a463194b91aeb01c8ccb52ff04b0fc78b55351a4f1a96db7ccd4ae0dc93","text":"| 200 | skladchik-mod | lxc | pve03 | running | <IP> | 6144 MiB | 39.1 GiB | skladchik-mod: moderator v2 + PostgreSQL |"},{"line":230,"path":"kb/private/archive/2026-08-19/docs/03_SERVICE_CATALOG.md","restore_word":false,"retire_word":false,"sha256":"1ba645e76c0c9fb5702e772b040ab2f4119c2e551a927e862aa2e1f209e21d54","text":"## VM/LXC 200 \u2014 skladchik-mod"},{"line":232,"path":"kb/private/archive/2026-08-19/docs/03_SERVICE_CATALOG.md","restore_word":false,"retire_word":false,"sha256":"cfcce474bc44c2d60e5dd57687292857120ce05edfd5ee254c5671483032b640","text":"Role: skladchik-mod: moderator v2 + PostgreSQL."},{"line":235,"path":"kb/private/archive/2026-08-19/docs/03_SERVICE_CATALOG.md","restore_word":false,"retire_word":false,"sha256":"43aa79267790ff6a5b952682c7ad443a9526c70e049f1912d1edc9382ccd2e94","text":"- `skladchik-moderator-v2-collector.service`"},{"line":236,"path":"kb/private/archive/2026-08-19/docs/03_SERVICE_CATALOG.md","restore_word":false,"retire_word":false,"sha256":"5e70090b97e4635f3944ae1452b150e2b9152b225a72fd9a231b293d228db6a0","text":"- `skladchik-moderator-v2-collector.timer`"},{"line":237,"path":"kb/private/archive/2026-08-19/docs/03_SERVICE_CATALOG.md","restore_word":false,"retire_word":false,"sha256":"d7304d71661641620bedea86389f0942b15b1fdef4e698bdbf5f0bb80b3d716a","text":"- `skladchik-moderator-v2-rules.service`"},{"line":238,"path":"kb/private/archive/2026-08-19/docs/03_SERVICE_CATALOG.md","restore_word":false,"retire_word":false,"sha256":"0300ab7115a1c399cd0ee29cf1cd2e94ab67001ba1ebe796fa828679d0e97d7c","text":"- `skladchik-moderator-v2-rules.timer`"},{"line":239,"path":"kb/private/archive/2026-08-19/docs/03_SERVICE_CATALOG.md","restore_word":false,"retire_word":false,"sha256":"1ff9539dd73582c2a1756d658b186382585e1ab9a6c13e47e2ea3931427a6a96","text":"- `skladchik-moderator-v2-web.service`"},{"line":103,"path":"kb/private/archive/2026-08-19/docs/11_OPEN_ISSUES_AND_FUTURE_WORK.md","restore_word":false,"retire_word":false,"sha256":"5c9e497c385d44ffb96741eecac5d21dc2210197ebfefb170cfec9f1a18d5bb6","text":"- CT200 whole subsystem"},{"line":18,"path":"kb/private/archive/2026-08-19/docs/15_CRITICAL_KEEP_RETIRE_DECISIONS.md","restore_word":false,"retire_word":true,"sha256":"495ae1c3b2699b2840e75445ea1c66cb67c3b0c4890da7baa4ac99c9bd0dc0f8","text":"| CT200 skladchik-mod | historical f
20:SYSTEMD_V2_SERVICE={"ActiveState":"failed","ExecMainStatus":"2","Result":"exit-code","SubState":"failed","UnitFileState":"static","rc":0}
21:SYSTEMD_V2_TIMER={"ActiveState":"active","Result":"success","SubState":"waiting","UnitFileState":"enabled","rc":0}
22:SYSTEMD_RETENTION_SERVICE={"ActiveState":"failed","ExecMainStatus":"66","Result":"exit-code","SubState":"failed","UnitFileState":"static","rc":0}
23:SYSTEMD_RETENTION_TIMER={"ActiveState":"active","Result":"success","SubState":"waiting","UnitFileState":"enabled","rc":0}
24:CHILD_DIAGNOSTIC_VECTOR={"492_CHILD_LEGACY_SELFTEST":1,"492_CHILD_WRAPPER_SELFTEST":1,"492_PROVEN_LXC_ARGV_PROBE":1}
25:NEXT_GATE=ASSISTANT_BUILD_494_FROM_EXACT_493_EVIDENCE
26:CHANGES_MADE=false
EVIDENCE_EXCERPT_END=/var/lib/homelab-chat-run/raw/SUPPORT-260917-INFRA-DR-BACKUPV2-492-CANDIDATE-BUILD-SUBPROCESS-DECOMPOSITION-493R1-20260916T223024Z.log
EVIDENCE_FILE=/var/lib/homelab-chat-run/raw/NEWFI-260919-NEWFDOM-CONTENT207-APPLY119-20260918T225904Z.log|SHA256=841f3e5a74c06ca5111e8425dc6c875dab31a6364624432c4ffbcc8a2a0c9f40|BYTES=413
EVIDENCE_EXCERPT_BEGIN=/var/lib/homelab-chat-run/raw/NEWFI-260919-NEWFDOM-CONTENT207-APPLY119-20260918T225904Z.log
1:NEWFI119_BEGIN
2:COMMAND_ID=NEWFI-260919-NEWFDOM-CONTENT207-APPLY119
3:NEWFI119_SAFE_REPORT={"changes_made":false,"decision":"FAIL_CONTENT207_HOLD","error":"RuntimeError:PORTAL_ANCHOR","rollback_restored":true,"rollback_started":false}
4:HOMELAB_RESULT_CONTRACT={"changes_made":false,"command_id":"NEWFI-260919-NEWFDOM-CONTENT207-APPLY119","rollback_restored":true,"rollback_started":false,"status":"FAIL","version":1}
EVIDENCE_EXCERPT_END=/var/lib/homelab-chat-run/raw/NEWFI-260919-NEWFDOM-CONTENT207-APPLY119-20260918T225904Z.log
EVIDENCE_FILE=/var/lib/homelab-chat-run/raw/GRAM1-USDC-V42-READ-ONLY-PLAN-20260801T145300Z-20260801T165311Z.log|SHA256=c16acd7ab954591945c4217fb1164a9d843e977e059f5813af0a186f0e2eef0e|BYTES=76807
EVIDENCE_EXCERPT_BEGIN=/var/lib/homelab-chat-run/raw/GRAM1-USDC-V42-READ-ONLY-PLAN-20260801T145300Z-20260801T165311Z.log
1:HOMELAB_RESULT_CONTRACT={"changes_made":false,"command_id":"GRAM1-USDC-V42-READ-ONLY-PLAN-20260801T145300Z","mutation_outcome":"NO_MUTATION","rollback_restored":null,"rollback_started":false,"status":"OK","version":1}
2:{"changes_made":false,"command_id":"GRAM1-USDC-V42-READ-ONLY-PLAN-20260801T145300Z","control_plane_error":null,"gitea_changed":false,"mutation_outcome":"NO_MUTATION","pinned_host_key_aliases":["[PRIVATE_IP]"],"production_site_changed":false,"rc":0,"remote_result":{"active_container_hashes":{"web":{"rc":0,"stderr":"","stdout":"3b55b78c015173eea66b67afb8fb9371f0d7d2e38a7679d4c433749f4c07301d  /app/app.py\n4a7b16ece826fe2d938f392db6b0b5ca028dcb6ff02fdff4ab431f114edf0e5c  /app/worker.py\n3752846b9a2d47a2c82377d222e5f8603f78101eda11422bc8634567e26209d2  /app/templates/index.html"},"worker":{"rc":0,"stderr":"","stdout":"ec226952cdb7fb58edbfc0173af47f4d901f3206e15169df12294983731fbc20  /app/app.py\n4a7b16ece826fe2d938f392db6b0b5ca028dcb6ff02fdff4ab431f114edf0e5c  /app/worker.py\ne9e723c9b916383ce10dffe8f8bbdb4049b78d89c5b139e2de5ed82194a27be4  /app/templates/index.html"}},"app":{"assignments":[{"end_line":10,"line":10,"literal":null,"names":["MARKET"],"source":"MARKET = DATA / \"market.json\""},{"end_line":13,"line":13,"literal":{"avalanche-2":"AVAX","chainlink":"LINK","hedera-hashgraph":"HBAR","polygon-ecosystem-token":"POL"},"names":["COINS"],"source":"COINS = {\"hedera-hashgraph\": \"HBAR\", \"polygon-ecosystem-token\": \"POL\", \"avalanche-2\": \"AVAX\", \"chainlink\": \"LINK\"}"},{"end_line":128,"line":128,"literal":{"avalanche-2":"AVAX","binancecoin":"BNB","bitcoin":"₿","cardano":"ADA","chainlink":"LINK","dogecoin":"Ð","ethereum":"Ξ","hedera":"HBAR","hedera-hashgraph":"HBAR","ripple":"XRP","solana":"S","toncoin":"TON"},"names":["symbols"],"source":"symbols = {\"bitcoin\":\"₿\",\"ethereum\":\"Ξ\",\"solana\":\"S\",\"binancecoin\":\"BNB\",\"ripple\":\"XRP\",\"cardano\":\"ADA\",\"hedera-hashgraph\":\"HBAR\",\"hedera\":\"HBAR\",\"avalanche-2\":\"AVAX\",\"chainlink\":\"LINK\",\"toncoin\":\"TON\",\"dogecoin\":\"Ð\"}"},{"end_line":139,"line":139,"literal":{"AVAX":"AVAXUSDT","HBAR":"HBARUSDT","LINK":"LINKUSDT","POL":"POLUSDT"},"names":["KLINE_SYMBOLS"],"source":"KLINE_SYMBOLS = {\"HBAR\": \"HBARUSDT\", \"POL\": \"POLUSDT\", \"AVAX\": \"AVAXUSDT\", \"LINK\": \"LINKUSDT\"}"},{"end_line":147,"line":147,"literal":{},"names":["KLINE_CACHE"],"source":"KLINE_CACHE = {}"},{"end_line":148,"line":148,"literal":300,"names":["KLINE_CACHE_TTL"],"source":"KLINE_CACHE_TTL = 300"},{"end_line":149,"line":149,"literal":604800,"names":["KLINE_CACHE_MAX_STALE"],"source":"KLINE_CACHE_MAX_STALE = 604800"},{"end_line":150,"line":150,"literal":null,"names":["KLINE_CACHE_FILE"],"source":"KLINE_CACHE_FILE = DATA / \"klines-cache.json\""},{"end_line":151,"line":151,"literal":null,"names":["KLINE_CACHE_WRITE_LOCK"],"source":"KLINE_CACHE_WRITE_LOCK = threading.Lock()"},{"end_line":350,"line":350,"literal":null,"names":["holdings"],"source":"holdings = {r[\"coin_id\"]: {\"quantity\":r[\"quantity\"],\"avg_buy\":r[\"avg_buy\"]} for r in c.execute(\"SELECT * FROM holdings\")}"},{"end_line":351,"line":351,"literal":null,"names":["alerts"],"source":"alerts = [dict(r) for r in c.execute(\"SELECT * FROM alerts ORDER BY id DESC\")]"},{"end_line":367,"line":367,"literal":null,"names":["coin"],"source":"coin = str(x.get(\"coin_id\",\"\"))"},{"end_line":370,"line":370,"literal":null,"names":["quantity"],"source":"quantity = max(0.0, float(x.get(\"quantity\",0)))"},{"end_line":371,"line":371,"literal":null,"names":["avg_buy"],"source":"avg_buy = max(0.0, float(x.get(\"avg_buy\",0)))"},{"end_line":380,"line":380,"literal":null,"names":["coin"],"source":"coin = str(x.get(\"coin_id\",\"\"))"},{"end_line":406,"line":406,"literal":"<REDACTED_LONG_VALUE>","names":["_GRAM1_CHART_JS_B64"],"source":"_GRAM1_CHART_JS_B64 = \"<REDACTED_LONG_VALUE>\""},{"end_line":407,"line":407,"literal":["AVAX","POL","HBAR","LINK"],"names":["_GRAM1_CHART_SYMBOLS"],"source":"_GRAM1_CHART_SYMBOLS = {\"HBAR\", \"POL\", \"AVAX\", \"LINK\"}"},{"end_line":459,"line":459,"literal":null,"names":["price"],"source":"price=hi-span*n/4"},{"end_line":470,"line":470,"literal":null,"names":["symbol"],"source":"symbol=sy
EVIDENCE_EXCERPT_END=/var/lib/homelab-chat-run/raw/GRAM1-USDC-V42-READ-ONLY-PLAN-20260801T145300Z-20260801T165311Z.log
EVIDENCE_FILE=/var/lib/homelab-chat-run/raw/SUPPORT-260915-INFRA-DR-BACKUPV2-PVE-LXC-IDMAP-CONTRACT-CANDIDATE-NATIVE-RCA-421R1-20260915T110641Z.log|SHA256=9e3f02e6dc4d8c5a99db5d3459a48737764e3247e18c2f621d160f13e38aa5a8|BYTES=11827
EVIDENCE_EXCERPT_BEGIN=/var/lib/homelab-chat-run/raw/SUPPORT-260915-INFRA-DR-BACKUPV2-PVE-LXC-IDMAP-CONTRACT-CANDIDATE-NATIVE-RCA-421R1-20260915T110641Z.log
13:EXACT_OWNER_GRAPH=PASS
14:PVE270_HOST_MAPPING_CONTRACT={"calls":[{"call":"validate_mapping(d)","line":16},{"call":"t.sha(t.read_secure(Path(p), 2 * 1024 ** 2)[0])","line":4},{"call":"PerlPin('/usr/bin/perl', '/usr/bin/perl5.40.1')","line":9},{"call":"pin.run(['-MPVE::LXC', '-MJSON::PP', '-e', code])","line":10},{"call":"need(rc == 0, 'PVE_IDMAP_READ_FAILED')","line":11},{"call":"pins.items()","line":12},{"call":"pin.check()","line":13},{"call":"json.loads(b)","line":14},{"call":"need(t.sha(t.read_secure(Path(p), 2 * 1024 ** 2)[0]) == h, 'PVE_MAPPING_SOURCE_CHANGED')","line":12},{"call":"old.PVEError('PVE_IDMAP_JSON')","line":15},{"call":"t.read_secure(Path(p), 2 * 1024 ** 2)","line":4},{"call":"Path(p)","line":4},{"call":"t.sha(t.read_secure(Path(p), 2 * 1024 ** 2)[0])","line":12},{"call":"t.read_secure(Path(p), 2 * 1024 ** 2)","line":12},{"call":"Path(p)","line":12}],"need_calls":[{"code":"PVE_IDMAP_READ_FAILED","line":11,"predicate":"rc == 0"},{"code":"PVE_MAPPING_SOURCE_CHANGED","line":12,"predicate":"t.sha(t.read_secure(Path(p), 2 * 1024 ** 2)[0]) == h"}],"returns":[{"expr":"validate_mapping(d)","line":16}],"signature":"()","source":"def host_mapping():\n    # Scope of the exception is this observed, protected system ELF pair only.\n    # PVE modules and private data retain the original single-link reader.\n    pins={p:t.sha(t.read_secure(Path(p),2*1024**2)[0]) for p in\n          ('/usr/share/perl5/PVE/LXC.pm','/usr/share/perl5/PVE/VZDump/LXC.pm')}\n    code=('my($m,$u,$g)=PVE::LXC::parse_id_maps({unprivileged=>1,lxc=>[]});'\n          'print JSON::PP->new->canonical->encode({root_uid=>0+$u,root_gid=>0+$g,'\n          'id_map=>[map {[$_->[0],0+$_->[1],0+$_->[2],0+$_->[3]]} @$m]});')\n    with PerlPin('/usr/bin/perl','/usr/bin/perl5.40.1') as pin:\n        rc,b=pin.run(['-MPVE::LXC','-MJSON::PP','-e',code])\n        need(rc==0,'PVE_IDMAP_READ_FAILED')\n        for p,h in pins.items():need(t.sha(t.read_secure(Path(p),2*1024**2)[0])==h,'PVE_MAPPING_SOURCE_CHANGED')\n        pin.check()\n    try:d=json.loads(b)\n    except (ValueError,UnicodeError):raise old.PVEError('PVE_IDMAP_JSON') from None\n    return validate_mapping(d)\n","source_sha256":"20e436dc2a7e0eba4baf39ab556ef75b404e58736cd744c632063aa19ad824c4"}
15:PVE270_VALIDATE_MAPPING_CONTRACT={"calls":[{"call":"need(type(d) is dict and set(d) == {'root_uid', 'root_gid', 'id_map'}, 'IDMAP_SCHEMA')","line":2},{"call":"need(type(d['root_uid']) is int and type(d['root_gid']) is int, 'IDMAP_VALUE')","line":3},{"call":"need(d['root_uid'] == d['root_gid'] == 100000, 'ONLY_DEFAULT_UNPRIVILEGED_IDMAP')","line":4},{"call":"need(type(d['id_map']) is list and len(d['id_map']) == 2, 'IDMAP_ROWS')","line":6},{"call":"zip(d['id_map'], expect)","line":7},{"call":"need(type(row) is list and len(row) == 4 and (type(row[0]) is str) and all((type(n) is int for n in row[1:])) and (row == exp), 'IDMAP_NONDEFAULT')","line":8},{"call":"type(d)","line":2},{"call":"set(d)","line":2},{"call":"type(d['root_uid'])","line":3},{"call":"type(d['root_gid'])","line":3},{"call":"type(d['id_map'])","line":6},{"call":"len(d['id_map'])","line":6},{"call":"all((type(n) is int for n in row[1:]))","line":8},{"call":"type(row)","line":8},{"call":"len(row)","line":8},{"call":"type(row[0])","line":8},{"call":"type(n)","line":8}],"need_calls":[{"code":"IDMAP_SCHEMA","line":2,"predicate":"type(d) is dict and set(d) == {'root_uid', 'root_gid', 'id_map'}"},{"code":"IDMAP_VALUE","line":3,"predicate":"type(d['root_uid']) is int and type(d['root_gid']) is int"},{"code":"ONLY_DEFAULT_UNPRIVILEGED_IDMAP","line":4,"predicate":"d['root_uid'] == d['root_gid'] == 100000"},{"code":"IDMAP_ROWS","line":6,"predicate":"type(d['id_map']) is list and len(d['id_map']) == 2"},{"code":"IDMAP_NONDEFAULT","line":8,"predicate":"type(row) is list and len(row) == 4 and (type(row[0]) is str) and all((type(n) is int for n in row[1:])) and (row == exp)"}],"returns":[{"expr":"(d['root_uid'], d['root_gid'])","line":9}],"signature":"(d)","source":"def validate_mapping(d):\n    need(type(d) is dict and set(d)=={'root_uid','root_gid','id_map'},'IDMAP_SCHEMA')\n    need(type(d['root_uid']) is int and type(d['root_gid']) is int,'IDMAP_VALUE')\n    need(d['root_uid']==d['root_gid']==100000,'ONLY_DEFAULT_UNPRIVILEGED_IDMAP')\n    expect=[['u',0,100000,65536],['g',0,100000,65536]]\n    need(type(d['id_map']) is list and len(d['id_map'])==2,'IDMAP_ROWS')\n    for row,exp in zip(d['id_map'],expect):\n        need(type(row) is list and len(row)==4 and type(row[0]) is str and all(type(n) is int for n in row[1:]) and row==exp,'IDMAP_NONDEFAULT')\n    return d['root_uid'],d['root_gid']\n","source_sha256":"a1cc0bc448cab9212429924789e81ba7ebbc333380aa03477ca7807da28407aa"}
16:IDMAP_AND_PRODUCER_CALL_SITES=[{"calls":[{"call":"validate_mapping(d)","line":154,"owner":"host_mapping"},{"call":"validate_mapping(mapping)","line":295,"owner":"produce"}],"file":"pve270.py","sha256":"97015277a4f3f8129c0fd11eb70c06293026366f1f8232a97feeed513a2dbcef"},{"calls":[{"call":"validate_mapping(mapping)","line":68,"owner":"produce"}],"file":"pve282.py","sha256":"73c6cb7773eb8e82d1e7ed5ab4733b4afb88f74ae69c09125d0378d6e480e012"},{"calls":[{"call":"produce(job, work / 'producer')","line":92,"owner":"run_flow"}],"file":"guest266.py","sha256":"86433bc424d5fa5017c20f7a237c82874b02357a3283660d8a6b0039ef2bc868"},{"calls":[],"file":"adapter.py","sha256":"18eb29cef165371b48bcb78e1a456e1939e6eff253787218133162cc89ab9fa3"},{"calls":[{"call":"f.produce(job, self.work, tools, lambda: None, mapping=MAP, emit=lambda k, v: self.events.append((k, v)))","line":172,"owner":"produce"},{"call":"self.produce()","line":174,"owner":"test_real_tar_sees_metadata_as_mapped_uid"},{"call":"f.validate_mapping(MAP)","line":14,"owner":"test_default_mapping"},{"call":"f.validate_mapping(d)","line":17,"owner":"test_root_mapping_refused"},{"call":"f.validate_mapping(d)","line":20,"owner":"test_custom_mapping_refused"},{"call":"f.validate_mapping(d)","line":23,"owner":"test_bool_mapping_refused"},{"call":"f.validate_mapping(d)","line":26,"owner":"test_extra_mapping_fields_refused"},{"call":"self.produce(fail=True)","line":178,"owner":"test_producer_failed_archive_retained"},{"call":"self.produce(leftover=True)","line":182,"owner":"test_nonempty_pve_temp_blocks_success"},{"call":"f.produce(j, p, tools, lambda: None, mapping=MAP, emit=lambda k, v: self.events.append((k, v)))","line":191,"owner":"test_fresh_archive_flows_through_existing_two_replica_engine"}],"file":"test_pve270.py","sha256":"9fccd20b490613fdd5b14b4105cf0d9fd744f204e1ed1d6893e54c9f69bf6fb4"},{"calls":[{"call":"f.produce(job, self.work, tools, lambda: None, mapping=MAP, expected_config=job['config_sha256'], emit=lambda k, v: self.events.append((k, v)))","line":173,"owner":"produce"},{"call":"self.produce()","line":175,"owner":"test_real_tar_sees_metadata_as_mapped_uid"},{"call":"f.validate_mapping(MAP)","line":14,"owner":"test_default_mapping"},{"call":"f.validate_mapping(d)","line":17,"owner":"test_root_mapping_refused"},{"call":"f.validate_mapping(d)","line":20,"owner":"test_custom_mapping_refused"},{"call":"f.validate_mapping(d)","line":23,"owner":"test_bool_mapping_refused"},{"call":"f.validate_mapping(d)","line":26,"owner":"test_extra_mapping_fields_refused"},{"call":"self.produce(fail=True)","line":179,"owner":"test_producer_failed_archive_retained"},{"call":"self.produce(leftover=True)","line":183,"owner":"test_nonempty_pve_temp_blocks_success"},{"call":"f.produce(j, p, tools, lambda: None, mapping=MAP, expected_config=job['config_sha256'], emit=lambda k, v: self.events.append((k, v)))","line":192,"owner":"test_fresh_archive_flows_through_existing_two_replica_engine"}],"file":"test_producer282.py","sha256":"a67d927cc428935791f9eecc3acf571d089f80761162f4589b7d684fba6b8af7"},{"calls":[{"call":"f.select112(a, b, NOW)","line":35,"owner":"test_input_unchanged"},{"call":"f.select112(a, b, NOW)","line":38,"owner":"reject"},{"call":"f.select112(plan(), plan(), NOW + 301)","line":43,"owner":"test_stale"},{"call":"f.select112(plan(), plan(), NOW - 1)","line":45,"owner":"test_future"},{"call":"f.select112(plan(), plan(), NOW)","line":28,"owner":"test_selects_only112"},{"call":"f.select112(a, b, NOW)","line":33,"owner":"test_configured_16g_ct_fits_without_compression"}],"file":"test_pve282.py","sha256":"1056407aab76e17181b05e043cb42c086058545a8e0027689ab4e03eee6531c4"}]
17:HISTORICAL_MAPPING_FIXTURES=[{"file":"test_pve270.py","fixtures":[{"keys":["root_uid","root_gid","id_map"],"kind":"Dict","line":7,"name":"MAP","value_types":["Constant","Constant","List"]}]},{"file":"test_producer282.py","fixtures":[{"keys":["root_uid","root_gid","id_map"],"kind":"Dict","line":7,"name":"MAP","value_types":["Constant","Constant","List"]}]},{"file":"test_pve282.py","fixtures":[]}]
18:ADAPTER_IDMAP_RELEVANT_FUNCTIONS=[{"line":24,"name":"load_graph","source":"def load_graph():\n import guest266,pve265,pve270,pve282\n if hasattr(guest266,'dump_argv'):raise RuntimeError('GUEST266_UNEXPECTED_DUMP_ARGV')\n if not hasattr(pve265,'dump_argv'):raise RuntimeError('PVE265_DUMP_ARGV_MISSING')\n if getattr(pve270,'old',None) is not pve265:raise RuntimeError('PVE270_OLD_NOT_PVE265')\n if getattr(pve282,'old',None) is not pve265:raise RuntimeError('PVE282_OLD_NOT_PVE265')\n if getattr(pve282,'proven',None) is not pve270:raise RuntimeError('PVE282_PROVEN_NOT_PVE270')\n for n in ('MappedScratch','capture_archive','validate_mapping'):\n  if not hasattr(pve270,n):raise RuntimeError('PVE270_'+n.upper()+'_MISSING')\n  if getattr(pve282,n,None) is not getattr(pve270,n):raise RuntimeError('PVE282_ALIAS_'+n.upper()+'_MISMATCH')\n return guest266,pve265,pve270,pve282","source_sha256":"2bacff83d3a642869c23d0cf65303f0a7176317c36f0050d1b51758658b1b207"},{"line":35,"name":"describe","source":"def describe():\n _,p265,p270,p282=load_graph()\n funcs={'pve265.dump_argv':p265.dump_argv,'pve265.validate_job':p265.validate_job,'pve265.make_plan':p265.make_plan,'pve270.validate_mapping':p270.validate_mapping,'pve270.capture_archive':p270.capture_archive,'pve270.produce':p270.produce,'pve282.select112':p282.select112,'pve282.produce':p282.produce}\n return {'schema':1,'bundle':'pve-lxc-adapter-411r1','source_sha256':EXPECTED,'signatures':{k:str(inspect.signature(v)) for k,v in funcs.items()},'owner':{'dump_argv':'pve265','MappedScratch':'pve270','capture_archive':'pve270','validate_mapping':'pve270','pve282.old':'pve265','pve282.proven':'pve270'}}","source_sha256":"dbb1a6c5def6887543b0130807d4027afeff33283cf0cb74286b45e9800b252d"}]
19:PRODUCTION_POST_RCA_UNCHANGED=PASS
20:CANDIDATE_POST_RCA_UNCHANGED=PASS
21:STATUS=OK
22:PHASE=COMPLETE
23:REASON=NONE
24:NEXT_GATE=PVE_LXC_IDMAP_WIRING_PROVEN_DRY_RUN
25:CHANGES_MADE=false
26:MUTATION_OUTCOME=NO_MUTATION
27:PRODUCTION_PROMOTION=NO
EVIDENCE_EXCERPT_END=/var/lib/homelab-chat-run/raw/SUPPORT-260915-INFRA-DR-BACKUPV2-PVE-LXC-IDMAP-CONTRACT-CANDIDATE-NATIVE-RCA-421R1-20260915T110641Z.log
EVIDENCE_FILE=/var/lib/homelab-chat-run/raw/KOW-260907-A-INLINE3-20260907T163805Z.log|SHA256=122af3daf3a3aa68bbd1201013daf727f255bdeeed0c9347b8a15664cb47cbfb|BYTES=1302
EVIDENCE_EXCERPT_BEGIN=/var/lib/homelab-chat-run/raw/KOW-260907-A-INLINE3-20260907T163805Z.log
1:KOWAINLINE3_CHANGES_MADE=false
2:KOWAINLINE3_COMMAND_ID=KOW-260907-A-INLINE3
3:KOWAINLINE3_EDGE_SHA=fc9fb1dbdb6141bfb43a8122dcf3db435a94da48d0a0c02fe9dfae019b1439c5
4:KOWAINLINE3_ERROR=origin_compression:RC_2
5:KOWAINLINE3_ERROR_CLASS=RuntimeError
6:KOWAINLINE3_FAILED_STEP=origin_compression
7:KOWAINLINE3_GIT_CLEAN=true
8:KOWAINLINE3_GIT_LOCAL_HEAD=3e5d8584ae6887c292cc910c5796e73d8d20aecd
9:KOWAINLINE3_GIT_REMOTE_HEAD=3e5d8584ae6887c292cc910c5796e73d8d20aecd
10:KOWAINLINE3_LIVE_ACCEPT_ENCODING_CLEAR_COUNT=0
11:KOWAINLINE3_LIVE_PROXY_PASS_COUNT=1
12:KOWAINLINE3_LIVE_REQUEST_ID_TOKEN_COUNT=0
13:KOWAINLINE3_LIVE_SUB_FILTER_DIRECTIVE_COUNT=0
14:KOWAINLINE3_LIVE_SUB_FILTER_ONCE_DIRECTIVE_COUNT=0
EVIDENCE_EXCERPT_END=/var/lib/homelab-chat-run/raw/KOW-260907-A-INLINE3-20260907T163805Z.log
EVIDENCE_FILE=/var/lib/homelab-chat-run/raw/SUPPORT-260920-PVEPRO-HOMEPAGE-PORTAL-789-FIRST-ATTEMPT-RCA-READONLY-791R1-20260920T172746Z.log|SHA256=f20c4a2c8933bbe4bee112a18273e3db27b17c80e90305e96dd16de95b12fe42|BYTES=13434
EVIDENCE_EXCERPT_BEGIN=/var/lib/homelab-chat-run/raw/SUPPORT-260920-PVEPRO-HOMEPAGE-PORTAL-789-FIRST-ATTEMPT-RCA-READONLY-791R1-20260920T172746Z.log
3:COMPONENT=pvepro-homepage-portal-789-first-attempt-rca-readonly
4:WINDOW_MODE=VISIBLE_SYNCHRONOUS_WAIT
5:PRODUCTION_HOST={"all_link_down":false,"config_sha256":"ebd2b7d44ab58a222b4fd5a7dcd9358d3082e593bd70fb07c2331c70f22e82ab","name":"pvepro-prod","snapshots":[],"status":"running"}
6:STAGING_HOST={"all_link_down":true,"config_sha256":"27a4e57f09dfd93c374ff9597651cade264a9b10f13302dbf2b8345a9d40dd76","name":"pvepro-staging-v1","snapshots":["w2-pre-portal-cutover-787r1"],"status":"stopped"}
7:FIRST_ATTEMPT_FILE_LIST=[{"bytes":6716,"kind":"public","name":"SUPPORT-260920-PVEPRO-HOMEPAGE-PORTAL-SOURCE-PERSISTENCE-RECOVERY-789R1-20260920T171441Z-latest.txt","path":"/var/lib/homelab-chat-run/public/SUPPORT-260920-PVEPRO-HOMEPAGE-PORTAL-SOURCE-PERSISTENCE-RECOVERY-789R1-20260920T171441Z-latest.txt","sha256":"32e329ae05d55fa6c161d425aebd54196d72784269736476bff9a25c5bfe5229"},{"bytes":7791,"kind":"public","name":"SUPPORT-260920-PVEPRO-HOMEPAGE-PORTAL-SOURCE-PERSISTENCE-RECOVERY-789R1-20260920T171441Z.json","path":"/var/lib/homelab-chat-run/public/SUPPORT-260920-PVEPRO-HOMEPAGE-PORTAL-SOURCE-PERSISTENCE-RECOVERY-789R1-20260920T171441Z.json","sha256":"670db6bdb2de76199e737dff2903e38f12d857e826be9df0bfc0f62b503310ef"},{"bytes":5667,"kind":"public","name":"SUPPORT-260920-PVEPRO-HOMEPAGE-PORTAL-SOURCE-PERSISTENCE-RECOVERY-789R1-20260920T171441Z.txt","path":"/var/lib/homelab-chat-run/public/SUPPORT-260920-PVEPRO-HOMEPAGE-PORTAL-SOURCE-PERSISTENCE-RECOVERY-789R1-20260920T171441Z.txt","sha256":"b21d9b46f99d26bc9797e2cc4030840fd01184a7241f5da57be2599e76c1789b"},{"bytes":5667,"kind":"raw","name":"SUPPORT-260920-PVEPRO-HOMEPAGE-PORTAL-SOURCE-PERSISTENCE-RECOVERY-789R1-20260920T171441Z.log","path":"/var/lib/homelab-chat-run/raw/SUPPORT-260920-PVEPRO-HOMEPAGE-PORTAL-SOURCE-PERSISTENCE-RECOVERY-789R1-20260920T171441Z.log","sha256":"b21d9b46f99d26bc9797e2cc4030840fd01184a7241f5da57be2599e76c1789b"}]
8:FIRST_ATTEMPT_JSON={"block_reason":null,"changes_made":true,"clipped":false,"command_id":"SUPPORT-260920-PVEPRO-HOMEPAGE-PORTAL-SOURCE-PERSISTENCE-RECOVERY-789R1","command_rc":3,"command_sha256":"837b28c936ebdf9a4f402435fe3d3c3986e5510f601d322eafc68b2e55b71ae0","component":"pvepro-homepage-portal-source-persistence-recovery","duplicate_failed_command_blocked":false,"execution_started":true,"finished_at_utc":"2026-09-20T17:16:58Z","mode":"change","mutation_outcome":"MUTATED","path":"/var/lib/homelab-chat-run/public/SUPPORT-260920-PVEPRO-HOMEPAGE-PORTAL-SOURCE-PERSISTENCE-RECOVERY-789R1-20260920T171441Z.json","raw_evidence_sha256":"b21d9b46f99d26bc9797e2cc4030840fd01184a7241f5da57be2599e76c1789b","rc":3,"result_contract_error":null,"result_contract_status":"FAIL","result_contract_valid":true,"rollback_restored":null,"rollback_started":false,"sanitized_output_sha256":"b21d9b46f99d26bc9797e2cc4030840fd01184a7241f5da57be2599e76c1789b","schema_version":1,"selected_output":["COMMAND_ID=SUPPORT-260920-PVEPRO-HOMEPAGE-PORTAL-SOURCE-PERSISTENCE-RECOVERY-789R1","MODE=change","COMPONENT=pvepro-homepage-portal-source-persistence-recovery","WINDOW_MODE=VISIBLE_SYNCHRONOUS_WAIT","SOURCE_DURABLE_REDEPLOY={\"ok\":true,\"written\":{\"Pub/Controller/Portal.php\":{\"bytes\":250,\"sha256\":\"ba1d32539697631079f82eb91b397adffce95a52f261f16f767b89bedc363f01\"},\"Pub/View/Portal.php\":{\"bytes\":80,\"sha256\":\"347e980e0f9356d22a53e7af2797389e334a7206ceaec3a5488026a8e418dee6\"},\"_data/routes.xml\":{\"bytes\":145,\"sha256\":\"cda2bca556f34a4b50166d7547feb1e0baa4c4d7c550db522995850e4a57e49d\"},\"_data/templates.xml\":{\"bytes\":8768,\"sha256\":\"a48047f6aea81cf2ff3d9badc8e6232b4ef1b07295a46aad02ab1c161539bcf2\"},\"addon.json\":{\"bytes\":466,\"sha256\":\"9af0b1dd9d8c1103144bad346ca5d47e518be7daec90cf9744ded8225643ca5b\"}}}","SOURCE_MANIFEST_AFTER_REDEPLOY={\"Pub/Controller/Portal.php\":{\"bytes\":250,\"exists\":true,\"sha256\":\"ba1d32539697631079f82eb91b397adffce95a52f261f16f767b89bedc363f01\"},\"Pub/View/Portal.php\":{\"bytes\":80,\"exists\":true,\"sha256\":\"347e980e0f9356d22a53e7af2797389e334a7206ceaec3a5488026a8e418dee6\"},\"_data/routes.xml\":{\"bytes\":145,\"exists\":true,\"sha256\":\"cda2bca556f34a4b50166d7547feb1e0baa4c4d7c550db522995850e4a57e49d\"},\"_data/templates.xml\":{\"bytes\":8768,\"exists\":true,\"sha256\":\"a48047f6aea81cf2ff3d9badc8e6232b4ef1b07295a46aad02ab1c161539bcf2\"},\"addon.json\":{\"bytes\":466,\"exists\":true,\"sha256\":\"9af0b1dd9d8c1103144bad346ca5d47e518be7daec90cf9744ded8225643ca5b\"}}","PERSISTENCE_RECOVERY_ERROR_CLASS=RuntimeError","PERSISTENCE_RECOVERY_ERROR_SHA256=376930d68b92bbe9cb7cede47133604d1338b58b12d6c8f7e90cc4c16b293e6d","FAILURE_GRACEFUL_SHUTDOWN_RC=0","SAFETY_SNAPSHOT_RETAINED=True","TASK_RESULT=PVEPRO_HOMEPAGE_PORTAL_SOURCE_PERSISTENCE_RECOVERY_FAILED","HOMELAB_RESULT_CONTRACT={\"changes_made\":true,\"command_id\":\"SUPPORT-260920-PVEPRO-HOMEPAGE-PORTAL-SOURCE-PERSISTENCE-RECOVERY-789R1\",\"rollback_restored\":null,\"rollback_started\":false,\"status\":\"FAIL\",\"version\":1}"],"started_at_utc":"2026-09-20T17:14:41Z","status":"FAIL"}
9:FIRST_ATTEMPT_TEXT_01={"clipped":false,"path":"/var/lib/homelab-chat-run/public/SUPPORT-260920-PVEPRO-HOMEPAGE-PORTAL-SOURCE-PERSISTENCE-RECOVERY-789R1-20260920T171441Z-latest.txt","selected":["COMMAND_ID=SUPPORT-260920-PVEPRO-HOMEPAGE-PORTAL-SOURCE-PERSISTENCE-RECOVERY-789R1","STATUS=FAIL","RC=3","MODE=change","COMPONENT=pvepro-homepage-portal-source-persistence-recovery","COMMAND_SHA256=837b28c936ebdf9a4f402435fe3d3c3986e5510f601d322eafc68b2e55b71ae0","EXECUTION_STARTED=true","RESULT_CONTRACT_STATUS=FAIL","COMMAND_RC=3","CHANGES_MADE=true","ROLLBACK_STARTED=false","ROLLBACK_RESTORED=null","MUTATION_OUTCOME=MUTATED","COMMAND_ID=SUPPORT-260920-PVEPRO-HOMEPAGE-PORTAL-SOURCE-PERSISTENCE-RECOVERY-789R1","MODE=change","COMPONENT=pvepro-homepage-portal-source-persistence-recovery","WINDOW_MODE=VISIBLE_SYNCHRONOUS_WAIT","SOURCE_DURABLE_REDEPLOY={\"ok\":true,\"written\":{\"Pub/Controller/Portal.php\":{\"bytes\":250,\"sha256\":\"ba1d32539697631079f82eb91b397adffce95a52f261f16f767b89bedc363f01\"},\"Pub/View/Portal.php\":{\"bytes\":80,\"sha256\":\"347e980e0f9356d22a53e7af2797389e334a7206ceaec3a5488026a8e418dee6\"},\"_data/routes.xml\":{\"bytes\":145,\"sha256\":\"cda2bca556f34a4b50166d7547feb1e0baa4c4d7c550db522995850e4a57e49d\"},\"_data/templates.xml\":{\"bytes\":8768,\"sha256\":\"a48047f6aea81cf2ff3d9badc8e6232b4ef1b07295a46aad02ab1c161539bcf2\"},\"addon.json\":{\"bytes\":466,\"sha256\":\"9af0b1dd9d8c1103144bad346ca5d47e518be7daec90cf9744ded8225643ca5b\"}}}","SOURCE_MANIFEST_AFTER_REDEPLOY={\"Pub/Controller/Portal.php\":{\"bytes\":250,\"exists\":true,\"sha256\":\"ba1d32539697631079f82eb91b397adffce95a52f261f16f767b89bedc363f01\"},\"Pub/View/Portal.php\":{\"bytes\":80,\"exists\":true,\"sha256\":\"347e980e0f9356d22a53e7af2797389e334a7206ceaec3a5488026a8e418dee6\"},\"_data/routes.xml\":{\"bytes\":145,\"exists\":true,\"sha256\":\"cda2bca556f34a4b50166d7547feb1e0baa4c4d7c550db522995850e4a57e49d\"},\"_data/templates.xml\":{\"bytes\":8768,\"exists\":true,\"sha256\":\"a48047f6aea81cf2ff3d9badc8e6232b4ef1b07295a46aad02ab1c161539bcf2\"},\"addon.json\":{\"bytes\":466,\"exists\":true,\"sha256\":\"9af0b1dd9d8c1103144bad346ca5d47e518be7daec90cf9744ded8225643ca5b\"}}","PERSISTENCE_RECOVERY_ERROR_CLASS=RuntimeError","PERSISTENCE_RECOVERY_ERROR_SHA256=376930d68b92bbe9cb7cede47133604d1338b58b12d6c8f7e90cc4c16b293e6d","FAILURE_GRACEFUL_SHUTDOWN_RC=0","SAFETY_SNAPSHOT_RETAINED=True","TASK_RESULT=PVEPRO_HOMEPAGE_PORTAL_SOURCE_PERSISTENCE_RECOVERY_FAILED","HOMELAB_RESULT_CONTRACT={\"changes_made\":true,\"command_id\":\"SUPPORT-260920-PVEPRO-HOMEPAGE-PORTAL-SOURCE-PERSISTENCE-RECOVERY-789R1\",\"rollback_restored\":null,\"rollback_started\":false,\"status\":\"FAIL\",\"version\":1}"]}
10:FIRST_ATTEMPT_TEXT_03={"clipped":false,"path":"/var/lib/homelab-chat-run/public/SUPPORT-260920-PVEPRO-HOMEPAGE-PORTAL-SOURCE-PERSISTENCE-RECOVERY-789R1-20260920T171441Z.txt","selected":["COMMAND_ID=SUPPORT-260920-PVEPRO-HOMEPAGE-PORTAL-SOURCE-PERSISTENCE-RECOVERY-789R1","MODE=change","COMPONENT=pvepro-homepage-portal-source-persistence-recovery","WINDOW_MODE=VISIBLE_SYNCHRONOUS_WAIT","SOURCE_DURABLE_REDEPLOY={\"ok\":true,\"written\":{\"Pub/Controller/Portal.php\":{\"bytes\":250,\"sha256\":\"ba1d32539697631079f82eb91b397adffce95a52f261f16f767b89bedc363f01\"},\"Pub/View/Portal.php\":{\"bytes\":80,\"sha256\":\"347e980e0f9356d22a53e7af2797389e334a7206ceaec3a5488026a8e418dee6\"},\"_data/routes.xml\":{\"bytes\":145,\"sha256\":\"cda2bca556f34a4b50166d7547feb1e0baa4c4d7c550db522995850e4a57e49d\"},\"_data/templates.xml\":{\"bytes\":8768,\"sha256\":\"a48047f6aea81cf2ff3d9badc8e6232b4ef1b07295a46aad02ab1c161539bcf2\"},\"addon.json\":{\"bytes\":466,\"sha256\":\"9af0b1dd9d8c1103144bad346ca5d47e518be7daec90cf9744ded8225643ca5b\"}}}","SOURCE_MANIFEST_AFTER_REDEPLOY={\"Pub/Controller/Portal.php\":{\"bytes\":250,\"exists\":true,\"sha256\":\"ba1d32539697631079f82eb91b397adffce95a52f261f16f767b89bedc363f01\"},\"Pub/View/Portal.php\":{\"bytes\":80,\"exists\":true,\"sha256\":\"347e980e0f9356d22a53e7af2797389e334a7206ceaec3a5488026a8e418dee6\"},\"_data/routes.xml\":{\"bytes\":145,\"exists\":true,\"sha256\":\"cda2bca556f34a4b50166d7547feb1e0baa4c4d7c550db522995850e4a57e49d\"},\"_data/templates.xml\":{\"bytes\":8768,\"exists\":true,\"sha256\":\"a48047f6aea81cf2ff3d9badc8e6232b4ef1b07295a46aad02ab1c161539bcf2\"},\"addon.json\":{\"bytes\":466,\"exists\":true,\"sha256\":\"9af0b1dd9d8c1103144bad346ca5d47e518be7daec90cf9744ded8225643ca5b\"}}","PERSISTENCE_RECOVERY_ERROR_CLASS=RuntimeError","PERSISTENCE_RECOVERY_ERROR_SHA256=376930d68b92bbe9cb7cede47133604d1338b58b12d6c8f7e90cc4c16b293e6d","FAILURE_GRACEFUL_SHUTDOWN_RC=0","SAFETY_SNAPSHOT_RETAINED=True","TASK_RESULT=PVEPRO_HOMEPAGE_PORTAL_SOURCE_PERSISTENCE_RECOVERY_FAILED","HOMELAB_RESULT_CONTRACT={\"changes_made\":true,\"command_id\":\"SUPPORT-260920-PVEPRO-HOMEPAGE-PORTAL-SOURCE-PERSISTENCE-RECOVERY-789R1\",\"rollback_restored\":null,\"rollback_started\":false,\"status\":\"FAIL\",\"version\":1}"]}
11:FIRST_ATTEMPT_TEXT_04={"clipped":false,"path":"/var/lib/homelab-chat-run/raw/SUPPORT-260920-PVEPRO-HOMEPAGE-PORTAL-SOURCE-PERSISTENCE-RECOVERY-789R1-20260920T171441Z.log","selected":["COMMAND_ID=SUPPORT-260920-PVEPRO-HOMEPAGE-PORTAL-SOURCE-PERSISTENCE-RECOVERY-789R1","MODE=change","COMPONENT=pvepro-homepage-portal-source-persistence-recovery","WINDOW_MODE=VISIBLE_SYNCHRONOUS_WAIT","SOURCE_DURABLE_REDEPLOY={\"ok\":true,\"written\":{\"Pub/Controller/Portal.php\":{\"bytes\":250,\"sha256\":\"ba1d32539697631079f82eb91b397adffce95a52f261f16f767b89bedc363f01\"},\"Pub/View/Portal.php\":{\"bytes\":80,\"sha256\":\"347e980e0f9356d22a53e7af2797389e334a7206ceaec3a5488026a8e418dee6\"},\"_data/routes.xml\":{\"bytes\":145,\"sha256\":\"cda2bca556f34a4b50166d7547feb1e0baa4c4d7c550db522995850e4a57e49d\"},\"_data/templates.xml\":{\"bytes\":8768,\"sha256\":\"a48047f6aea81cf2ff3d9badc8e6232b4ef1b07295a46aad02ab1c161539bcf2\"},\"addon.json\":{\"bytes\":466,\"sha256\":\"9af0b1dd9d8c1103144bad346ca5d47e518be7daec90cf9744ded8225643ca5b\"}}}","SOURCE_MANIFEST_AFTER_REDEPLOY={\"Pub/Controller/Portal.php\":{\"bytes\":250,\"exists\":true,\"sha256\":\"ba1d32539697631079f82eb91b397adffce95a52f261f16f767b89bedc363f01\"},\"Pub/View/Portal.php\":{\"bytes\":80,\"exists\":true,\"sha256\":\"347e980e0f9356d22a53e7af2797389e334a7206ceaec3a5488026a8e418dee6\"},\"_data/routes.xml\":{\"bytes\":145,\"exists\":true,\"sha256\":\"cda2bca556f34a4b50166d7547feb1e0baa4c4d7c550db522995850e4a57e49d\"},\"_data/templates.xml\":{\"bytes\":8768,\"exists\":true,\"sha256\":\"a48047f6aea81cf2ff3d9badc8e6232b4ef1b07295a46aad02ab1c161539bcf2\"},\"addon.json\":{\"bytes\":466,\"exists\":true,\"sha256\":\"9af0b1dd9d8c1103144bad346ca5d47e518be7daec90cf9744ded8225643ca5b\"}}","PERSISTENCE_RECOVERY_ERROR_CLASS=RuntimeError","PERSISTENCE_RECOVERY_ERROR_SHA256=376930d68b92bbe9cb7cede47133604d1338b58b12d6c8f7e90cc4c16b293e6d","FAILURE_GRACEFUL_SHUTDOWN_RC=0","SAFETY_SNAPSHOT_RETAINED=True","TASK_RESULT=PVEPRO_HOMEPAGE_PORTAL_SOURCE_PERSISTENCE_RECOVERY_FAILED","HOMELAB_RESULT_CONTRACT={\"changes_made\":true,\"command_id\":\"SUPPORT-260920-PVEPRO-HOMEPAGE-PORTAL-SOURCE-PERSISTENCE-RECOVERY-789R1\",\"rollback_restored\":null,\"rollback_started\":false,\"status\":\"FAIL\",\"version\":1}"]}
12:LEDGER_MATCHES=[{"line":2364,"text":"2026-09-20T17:16:58Z\tSUPPORT-260920-PVEPRO-HOMEPAGE-PORTAL-SOURCE-PERSISTENCE-RECOVERY-789R1\t837b28c936ebdf9a4f402435fe3d3c3986e5510f601d322eafc68b2e55b71ae0\t3\tFAIL\tpvepro-homepage-portal-source-persistence-recovery"},{"line":2365,"text":"2026-09-20T17:17:13Z\tSUPPORT-260920-PVEPRO-HOMEPAGE-PORTAL-SOURCE-PERSISTENCE-RECOVERY-789R1\t837b28c936ebdf9a4f402435fe3d3c3986e5510f601d322eafc68b2e55b71ae0\t73\tBLOCKED\tpvepro-homepage-portal-source-persistence-recovery"}]
13:FIRST_ATTEMPT_ERROR_DECODE={"candidate_matches":["SOURCE_MANIFEST_AFTER_REDEPLOY"],"sha256":"376930d68b92bbe9cb7cede47133604d1338b58b12d6c8f7e90cc4c16b293e6d"}
14:FIRST_ATTEMPT_PROVEN=True
15:NO_VM_START=True
16:NO_VM_STOP=True
17:NO_SNAPSHOT_MUTATION=True
18:NO_XENFORO_WRITE=True
19:NO_MUTATION=True
20:PRODUCT_CHECKPOINTS_REMAINING=18
EVIDENCE_EXCERPT_END=/var/lib/homelab-chat-run/raw/SUPPORT-260920-PVEPRO-HOMEPAGE-PORTAL-789-FIRST-ATTEMPT-RCA-READONLY-791R1-20260920T172746Z.log
EVIDENCE_FILE=/var/lib/homelab-chat-run/raw/CLUSTER-REFERENCE-WRITE-MODE-141-20260722T064108Z.log|SHA256=d745fd14a16bd7924373b5774d64342db1ab7e0d12e751efef1cac218b0d9892|BYTES=1774
EVIDENCE_EXCERPT_BEGIN=/var/lib/homelab-chat-run/raw/CLUSTER-REFERENCE-WRITE-MODE-141-20260722T064108Z.log
1:JSON_IMMUTABLE_COMMIT=6153e0b3fa0e3b33b10c87913873c9ad46fec07a
2:TXT_IMMUTABLE_COMMIT=6153e0b3fa0e3b33b10c87913873c9ad46fec07a
3:Traceback (most recent call last):
4:  File "<string>", line 1, in <module>
5:    import json,sys; d=json.load(open(sys.argv[1])); assert d.get("command_id")==sys.argv[2],d; assert d.get("status")=="OK",d; assert int(d.get("rc"))==0,d; assert d.get("execution_started") is True,d
6:                                                                                                       ^^^^^^^^^^^^^^^^^^^^^
7:AssertionError: {'schema_version': 1, 'channel': 'homelab-runtime', 'command_id': 'CLUSTER-REFERENCE-MODE-AUDIT-140', 'status': 'FAIL', 'rc': 22, 'host': 'pve01', 'mode': 'read-only', 'component': 'cluster-audit', 'started_at_utc': '2026-07-22T06:37:48Z', 'finished_at_utc': '2026-07-22T06:37:49Z', 'reference_register_checked': True, 'reference_sha256': '5763f2f8edc75fcf6f3951f8c95896d1cc112ceccb6cf5b64a383f540a4deb8e', 'error_register_checked': True, 'error_register_sha256': '08b3a769b8e38eaa1acec915352fb328180d70caa7ff6cd9d1ec0da426262752', 'command_sha256': '1f34a867cab9808781b5127ab5d4f8469449dfe4ebaa4284071157c47aa9d399', 'duplicate_failed_command_blocked': False, 'block_reason': None, 'execution_started': True, 'changes_made': False, 'sanitized': True, 'secrets_included': False, 'private_addresses_included': False, 'raw_evidence_retained_locally': True, 'raw_evidence_sha256': '0fb219efe96c7b0a4962325763ebbe3324456de8ca7b7d1e71142d92a6d8eab2', 'sanitized_output_sha256': '0fb219efe96c7b0a4962325763ebbe3324456de8ca7b7d1e71142d92a6d8eab2', 'output_truncated_in_json': False, 'full_sanitized_output_url': 'https://git.gram1.ru/.well-known/homelab-runtime/latest.txt', 'output': 'curl: (22) The requested URL returned error: 404\n'}
EVIDENCE_EXCERPT_END=/var/lib/homelab-chat-run/raw/CLUSTER-REFERENCE-WRITE-MODE-141-20260722T064108Z.log
EVIDENCE_FILE=/var/lib/homelab-chat-run/raw/GITEA-READER-LOCAL-SERVICE-V2-INSTALL-248-20260722T195622Z.log|SHA256=58ae91f2e92115d0de964a42b713a2ff6d620cbed42a2d41cbdba884857473af|BYTES=1078
EVIDENCE_EXCERPT_BEGIN=/var/lib/homelab-chat-run/raw/GITEA-READER-LOCAL-SERVICE-V2-INSTALL-248-20260722T195622Z.log
1:Created symlink '/etc/systemd/system/multi-user.target.wants/homelab-reader-v2.service' → '/etc/systemd/system/homelab-reader-v2.service'.
2:curl: (22) The requested URL returned error: 500
3:Traceback (most recent call last):
4:  File "<string>", line 145, in <module>
5:    feed=json.loads(subprocess.check_output(["/usr/bin/curl","-fsS",feed_url],text=True))
6:                    ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
7:  File "/usr/lib/python3.13/subprocess.py", line 472, in check_output
8:    return run(*popenargs, stdout=PIPE, timeout=timeout, check=True,
9:           ~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
10:               **kwargs).stdout
11:               ^^^^^^^^^
12:  File "/usr/lib/python3.13/subprocess.py", line 577, in run
EVIDENCE_EXCERPT_END=/var/lib/homelab-chat-run/raw/GITEA-READER-LOCAL-SERVICE-V2-INSTALL-248-20260722T195622Z.log
FINAL413_RAW_EVIDENCE_DISCOVERY_END=true
FINAL413_JOURNAL_BEGIN=true
2026-09-21T20:47:45+03:00 pve01 python3[1212]: [PRIVATE_IP] - - [21/Sep/2026 20:47:45] "GET /backup-restore-dashboard.txt HTTP/1.1" 200 -
2026-09-21T20:48:04+03:00 pve01 python3[1212]: [PRIVATE_IP] - - [21/Sep/2026 20:48:04] "GET /backup.txt HTTP/1.1" 200 -
2026-09-21T20:48:15+03:00 pve01 python3[1212]: [PRIVATE_IP] - - [21/Sep/2026 20:48:15] "GET /backup-restore-dashboard.txt HTTP/1.1" 200 -
2026-09-21T20:48:18+03:00 pve01 python3[1212]: [PRIVATE_IP] - - [21/Sep/2026 20:48:18] "GET /paperless-backup.txt HTTP/1.1" 200 -
2026-09-21T20:48:19+03:00 pve01 python3[1212]: [PRIVATE_IP] - - [21/Sep/2026 20:48:19] "GET /netbird-vps-backup.txt HTTP/1.1" 200 -
2026-09-21T20:48:21+03:00 pve01 python3[1212]: [PRIVATE_IP] - - [21/Sep/2026 20:48:21] "GET /app-stacks-batch-backup.txt HTTP/1.1" 200 -
2026-09-21T20:48:23+03:00 pve01 homelab-router-watchdog[989366]: ROUTER_WATCHDOG_STATUS=OK ACTION=none REASON=router_wan_and_outbound_healthy SSH_OK=1 WAN_OK=1 OUTBOUND_OK=2 FAIL_COUNT=0
2026-09-21T20:48:28+03:00 pve01 systemd[989492]: Queued start job for default target default.target.
2026-09-21T20:48:45+03:00 pve01 python3[1212]: [PRIVATE_IP] - - [21/Sep/2026 20:48:45] "GET /backup-restore-dashboard.txt HTTP/1.1" 200 -
2026-09-21T20:49:04+03:00 pve01 python3[1212]: [PRIVATE_IP] - - [21/Sep/2026 20:49:04] "GET /backup.txt HTTP/1.1" 200 -
2026-09-21T20:49:07+03:00 pve01 postfix/qmgr[3015187]: 33ABB245CA0: from=<>, size=2787, nrcpt=1 (queue active)
2026-09-21T20:49:07+03:00 pve01 postfix/qmgr[3015187]: 3174E245BC9: from=<>, size=2671, nrcpt=1 (queue active)
2026-09-21T20:49:07+03:00 pve01 postfix/qmgr[3015187]: A71CD242497: from=<>, size=8515, nrcpt=1 (queue active)
2026-09-21T20:49:07+03:00 pve01 postfix/local[989846]: error: open database /etc/aliases.db: No such file or directory
2026-09-21T20:49:07+03:00 pve01 postfix/local[989846]: warning: hash:/etc/aliases: lookup of 'root' failed
2026-09-21T20:49:07+03:00 pve01 postfix/local[989847]: error: open database /etc/aliases.db: No such file or directory
2026-09-21T20:49:07+03:00 pve01 postfix/local[989847]: warning: hash:/etc/aliases: lookup of 'root' failed
2026-09-21T20:49:07+03:00 pve01 postfix/local[989847]: warning: hash:/etc/aliases: lookup of 'root' failed
2026-09-21T20:49:15+03:00 pve01 python3[1212]: [PRIVATE_IP] - - [21/Sep/2026 20:49:15] "GET /backup-restore-dashboard.txt HTTP/1.1" 200 -
2026-09-21T20:49:18+03:00 pve01 python3[1212]: [PRIVATE_IP] - - [21/Sep/2026 20:49:18] "GET /paperless-backup.txt HTTP/1.1" 200 -
2026-09-21T20:49:19+03:00 pve01 python3[1212]: [PRIVATE_IP] - - [21/Sep/2026 20:49:19] "GET /netbird-vps-backup.txt HTTP/1.1" 200 -
2026-09-21T20:49:21+03:00 pve01 python3[1212]: [PRIVATE_IP] - - [21/Sep/2026 20:49:21] "GET /app-stacks-batch-backup.txt HTTP/1.1" 200 -
FINAL413_JOURNAL_END=true
PRODUCER_STATIC_BEGIN=true
PRODUCER_FILE=/usr/local/sbin/homelab-vm-cloud-quorum-queue|SHA256=fbc27ad67fc3d3f51934e1d73180fe0df8c9d15f129f34ebba39c56aa1d03612
3-umask 077
4-
5-WORKER=/usr/local/libexec/homelab-vm-cloud-quorum-node-worker
6:PROBE=/usr/local/libexec/homelab-vm-cloud-quorum-freshness-probe
7:LOCK=/run/lock/homelab-vm-cloud-quorum-queue.lock
8:HEAVY_LOCK=/run/homelab-backup-heavy.lock
9-FRESHNESS_SECONDS=72000
10-DUE_SECONDS=43200
11-SSH_BASE=(-o BatchMode=yes -o ConnectTimeout=12 -o StrictHostKeyChecking=yes -o UserKnownHostsFile=[SENSITIVE_PATH]
12:ALL_VMIDS=(160 170 130 171 180 190 150 9130 110 111 112 113 200)
13:MIGRATE_VMIDS=(160 170 130 171 180 190 150 9130 111 112 113)
14-
15-die(){ printf 'VM_QUORUM_QUEUE_ERROR=%s\n' "$1" >&2; exit "${2:-65}"; }
16-(( DUE_SECONDS > 0 && DUE_SECONDS < FRESHNESS_SECONDS )) || die DUE_THRESHOLD_INVALID 65
--
19-    110|112|150|170|171) printf 'pve01\n' ;;
20-    111|113|160|180|9130) printf 'pve02\n' ;;
21-    130|190|200) printf 'pve03\n' ;;
22:    *) die "VMID_NOT_ALLOWED_$1" 64 ;;
23-  esac
24-}
25-observed_owner(){
26:  local vmid="$1"
27:  pvesh get /cluster/resources --type vm --output-format json | jq -er --argjson id "$vmid" '.[]|select(.vmid==$id)|.node'
28-}
29-owner_host(){
30-  case "$1" in
--
35-}
36-run_worker() {
37-  (
38:    exec 209>"$HEAVY_LOCK"
39-    if ! /usr/bin/flock -n 209; then
40:      printf '%s\n' 'VM_QUEUE_HEAVY_LOCK_BUSY'
41-      exit 0
42-    fi
43-    _run_worker_unlocked "$@"
44-  )
45-}
46-_run_worker_unlocked() {
47:  local vmid="$1" action="$2" generation="${3:-}" owner observed host
48:  owner="$(expected_owner "$vmid")"
49:  observed="$(observed_owner "$vmid")"
50:  [[ "$observed" == "$owner" ]] || die "CLUSTER_OWNER_MISMATCH_${vmid}_${observed}_EXPECTED_${owner}" 65
51-  if [[ "$owner" == "pve01" ]]; then
52:    if [[ "$action" == "verify" ]]; then "$WORKER" verify "$vmid" "$generation"; else "$WORKER" "$action" "$vmid"; fi
53-  else
54-    host="$(owner_host "$owner")"
55-    if [[ "$action" == "verify" ]]; then
56:      ssh "${SSH_BASE[@]}" "$host" "$WORKER" verify "$vmid" "$generation"
57-    else
58:      ssh "${SSH_BASE[@]}" "$host" "$WORKER" "$action" "$vmid"
59-    fi
60-  fi
61-}
62-run_probe(){
63:  local vmid="$1" owner observed host
64:  owner="$(expected_owner "$vmid")"
65:  observed="$(observed_owner "$vmid")"
66:  [[ "$observed" == "$owner" ]] || die "CLUSTER_OWNER_MISMATCH_${vmid}_${observed}_EXPECTED_${owner}" 65
67-  if [[ "$owner" == "pve01" ]]; then
68:    "$PROBE" decision "$vmid"
69-  else
70-    host="$(owner_host "$owner")"
71:    ssh "${SSH_BASE[@]}" "$host" "$PROBE" decision "$vmid"
72-  fi
73-}
74-plan_all(){
75:  local vmid
76:  for vmid in "${ALL_VMIDS[@]}"; do
77:    printf 'QUEUE_PLAN VMID=%s EXPECTED_OWNER=%s OBSERVED_OWNER=%s\n' "$vmid" "$(expected_owner "$vmid")" "$(observed_owner "$vmid")"
78-  done
79-}
80:freshness_decision(){
81:  local vmid="$1" now_epoch="$2" out decision generation sealed_epoch age
82:  out="$(run_probe "$vmid")"
83-  printf '%s\n' "$out"
84-  decision="$(awk -F= '$1=="DECISION"{print $2}' <<<"$out" | tail -1)"
85-  case "$decision" in
86-    BACKUP_RESUME)
87:      generation="$(awk -F= '$1=="GENERATION"{print $2}' <<<"$out" | tail -1)"
88:      printf 'QUEUE_FRESHNESS VMID=%s DECISION=BACKUP_RESUME GENERATION=%s\n' "$vmid" "$generation"
89-      ;;
90:    SEALED_PROVEN)
91:      generation="$(awk -F= '$1=="GENERATION"{print $2}' <<<"$out" | tail -1)"
92-      sealed_epoch="$(awk -F= '$1=="SEALED_EPOCH"{print $2}' <<<"$out" | tail -1)"
93-      if [[ ! "$sealed_epoch" =~ ^[0-9]+$ ]]; then
94:        printf 'QUEUE_FRESHNESS VMID=%s DECISION=BACKUP_UNVERIFIED REASON=SEALED_EPOCH_INVALID\n' "$vmid"
95-        return 0
96-      fi
97-      age=$((now_epoch-sealed_epoch))
98-      if (( age >= 0 && age < DUE_SECONDS )); then
99:        printf 'QUEUE_FRESHNESS VMID=%s DECISION=SKIP_FRESH GENERATION=%s AGE_SECONDS=%s DUE_SECONDS=%s FRESHNESS_SECONDS=%s\n' "$vmid" "$generation" "$age" "$DUE_SECONDS" "$FRESHNESS_SECONDS"
100-      elif (( age >= DUE_SECONDS && age < FRESHNESS_SECONDS )); then
101:        printf 'QUEUE_FRESHNESS VMID=%s DECISION=BACKUP_DUE GENERATION=%s AGE_SECONDS=%s DUE_SECONDS=%s FRESHNESS_SECONDS=%s\n' "$vmid" "$generation" "$age" "$DUE_SECONDS" "$FRESHNESS_SECONDS"
102-      elif (( age >= FRESHNESS_SECONDS )); then
103:        printf 'QUEUE_FRESHNESS VMID=%s DECISION=BACKUP_STALE GENERATION=%s AGE_SECONDS=%s DUE_SECONDS=%s FRESHNESS_SECONDS=%s\n' "$vmid" "$generation" "$age" "$DUE_SECONDS" "$FRESHNESS_SECONDS"
104-      else
105:        printf 'QUEUE_FRESHNESS VMID=%s DECISION=BACKUP_UNVERIFIED REASON=SEALED_TIMESTAMP_IN_FUTURE GENERATION=%s AGE_SECONDS=%s\n' "$vmid" "$generation" "$age"
106-      fi
107-      ;;
108-    BACKUP_UNVERIFIED)
109:      printf 'QUEUE_FRESHNESS VMID=%s DECISION=BACKUP_UNVERIFIED\n' "$vmid"
110-      ;;
111-    *)
112:      die "FRESHNESS_DECISION_INVALID_${vmid}_${decision:-EMPTY}" 65
113-      ;;
114-  esac
115-}
116:freshness_plan(){
117:  local vmid now_epoch out decision
118-  [[ -x "$PROBE" ]] || die "FRESHNESS_PROBE_NOT_INSTALLED" 69
119:  for vmid in "${ALL_VMIDS[@]}"; do
120-    now_epoch="$(date -u +%s)"
121:    out="$(freshness_decision "$vmid" "$now_epoch")"
122-    printf '%s\n' "$out"
123-    decision="$(awk '/^QUEUE_FRESHNESS /{for(i=1;i<=NF;i++)if($i~/^DECISION=/){sub(/^DECISION=/,"",$i);print $i}}' <<<"$out" | tail -1)"
124:    [[ -n "$decision" ]] || die "FRESHNESS_PLAN_DECISION_MISSING_$vmid" 65
125:    printf 'QUEUE_FRESHNESS_PLAN VMID=%s DECISION=%s\n' "$vmid" "$decision"
126-  done
127-}
128-backup_list_force(){
129:  local vmid out generation
130-  exec 9>"$LOCK"
131-  flock -n 9 || die "GLOBAL_QUEUE_LOCK_BUSY" 75
132:  exec 8>"$HEAVY_LOCK"
133:  flock -n 8 || die "GLOBAL_HEAVY_LOCK_BUSY" 75
134:  for vmid in "$@"; do
135:    printf 'QUEUE_BEGIN VMID=%s OWNER=%s MODE=FORCE\n' "$vmid" "$(expected_owner "$vmid")"
136:    out="$(exec 8>&-; exec 9>&-; run_worker "$vmid" backup)"
137-    printf '%s\n' "$out"
138:    generation="$(awk -F= '$1=="GENERATION"{print $2}' <<<"$out" | tail -1)"
139:    [[ -n "$generation" ]] || die "GENERATION_NOT_RETURNED_$vmid" 65
140:    printf 'QUEUE_SEALED VMID=%s GENERATION=%s\n' "$vmid" "$generation"
141-  done
142-}
143-dispatch_plan(){
144:  freshness_plan
145-}
146-dispatch_one(){
147:  local vmid="$1" freshness decision now_epoch out generation
148-  [[ "${HOMELAB_BACKUP_DISPATCHER:-}" == 1 ]] || die "DISPATCH_ONE_DIRECT_FORBIDDEN" 64
149:  expected_owner "$vmid" >/dev/null
150-  exec 9>"$LOCK"
151-  if ! flock -n 9; then
152:    printf 'QUEUE_DEFERRED KIND=VM REASON=GLOBAL_QUEUE_LOCK_BUSY VMID=%s\n' "$vmid"
153-    return 0
154-  fi
155:  exec 8>"$HEAVY_LOCK"
156-  if ! flock -n 8; then
157:    printf 'QUEUE_DEFERRED KIND=VM REASON=GLOBAL_HEAVY_LOCK_BUSY VMID=%s\n' "$vmid"
158-    return 0
159-  fi
160-  now_epoch="$(date -u +%s)"
161:  freshness="$(exec 8>&-; exec 9>&-; freshness_decision "$vmid" "$now_epoch")"
162:  printf '%s\n' "$freshness"
163:  decision="$(awk '/^QUEUE_FRESHNESS /{for(i=1;i<=NF;i++)if($i~/^DECISION=/){sub(/^DECISION=/,"",$i);print $i}}' <<<"$freshness" | tail -1)"
164-  case "$decision" in
165-    SKIP_FRESH)
166:      generation="$(awk '/^QUEUE_FRESHNESS /{for(i=1;i<=NF;i++)if($i~/^GENERATION=/){sub(/^GENERATION=/,"",$i);print $i}}' <<<"$freshness" | tail -1)"
167:      printf 'QUEUE_DISPATCH_RESULT KIND=VM VMID=%s RESULT=SKIP_FRESH GENERATION=%s\n' "$vmid" "$generation"
168-      return 0
169-      ;;
170:    BACKUP_RESUME|BACKUP_STALE|BACKUP_DUE|BACKUP_UNVERIFIED) ;;
171:    *) die "FRESHNESS_RECHECK_INVALID_${vmid}_${decision:-EMPTY}" 65 ;;
172-  esac
173:  printf 'QUEUE_BEGIN VMID=%s OWNER=%s MODE=%s DISPATCH=ONE_TARGET\n' "$vmid" "$(expected_owner "$vmid")" "$decision"
174:  out="$(exec 8>&-; exec 9>&-; run_worker "$vmid" backup)"
175-  printf '%s\n' "$out"
176:  generation="$(awk -F= '$1=="GENERATION"{print $2}' <<<"$out" | tail -1)"
177:  [[ -n "$generation" ]] || die "GENERATION_NOT_RETURNED_$vmid" 65
178:  printf 'QUEUE_SEALED VMID=%s GENERATION=%s DISPATCH=ONE_TARGET\n' "$vmid" "$generation"
179:  printf 'QUEUE_DISPATCH_RESULT KIND=VM VMID=%s RESULT=SEALED GENERATION=%s\n' "$vmid" "$generation"
180-}
181-
182-ACTION="${1:-}"
--
185-    [[ "$#" == 1 ]] || die "USAGE_PLAN" 64
186-    plan_all
187-    ;;
188:  freshness-plan)
189-    [[ "$#" == 1 ]] || die "USAGE_FRESHNESS_PLAN" 64
190:    freshness_plan
191-    ;;
192-  dispatch-plan)
193-    [[ "$#" == 1 ]] || die "USAGE_DISPATCH_PLAN" 64
--
203-    ;;
204-  migrate)
205-    [[ "$#" == 1 ]] || die "USAGE_MIGRATE" 64
206:    backup_list_force "${MIGRATE_VMIDS[@]}"
207-    ;;
208-  all)
209-    [[ "$#" == 1 ]] || die "USAGE_ALL" 64
PRODUCER_FILE=/usr/local/libexec/homelab-vm-cloud-quorum-freshness-probe|SHA256=bd6257397c6ea910df2ea0dd57252b33bccd0bbd965175840486dfe5e079bf96
2-set -Eeuo pipefail
3-umask 077
4-STATE_ROOT=/var/lib/homelab-backup/cloud-quorum
5:RESTORE_ROOT=/var/lib/homelab-backup/vm-restore-validation
6-HOST="$(hostname -s)"
7-die(){ printf 'VM_FRESHNESS_PROBE_ERROR=%s\n' "$1" >&2; exit "${2:-65}"; }
8-expected_owner(){
--
10-110|112|150|170|171) printf 'pve01\n' ;;
11-111|113|160|180|9130) printf 'pve02\n' ;;
12-130|190|200) printf 'pve03\n' ;;
13:*) die "VMID_NOT_ALLOWED_$1" 64 ;;
14-esac
15-}
16-assert_local_identity(){
17:local vmid="$1" owner
18:owner="$(expected_owner "$vmid")"
19:[[ "$HOST" == "$owner" ]] || die "OWNER_MISMATCH_${vmid}_${HOST}_EXPECTED_${owner}" 65
20-}
21-state_scan(){
22:local vmid="$1" dir="$STATE_ROOT/vm${vmid}" f status
23-[[ -d "$dir" ]] || return 0
24-while IFS= read -r f; do
25-[[ -s "$f" && ! -L "$f" ]] || { printf 'UNSAFE|%s\n' "$f"; continue; }
--
29-return 0
30-}
31-decision(){
32:  local vmid="$1" dir latest generation restore updated epoch row kind file sha
33-  local -a pending=() scan=()
34:  assert_local_identity "$vmid"; dir="$STATE_ROOT/vm${vmid}"; mapfile -t scan < <(state_scan "$vmid")
35-  for row in "${scan[@]}"; do
36-    kind="${row%%|*}"; file="${row#*|}"
37-    case "$kind" in
38-      INCOMPLETE) pending+=("$file") ;;
39:      INVALID|UNSAFE) printf 'FRESHNESS_STATUS=OK\nVMID=%s\nDECISION=BACKUP_UNVERIFIED\nREASON=STATE_%s\nSTATE_FILE=%s\n' "$vmid" "$kind" "$file"; return 0 ;;
40:      *) die "STATE_SCAN_RESULT_INVALID_$vmid" 65 ;;
41-    esac
42-  done
43:  (( ${#pending[@]} <= 1 )) || die "MULTIPLE_INCOMPLETE_GENERATIONS_$vmid" 65
44:  if (( ${#pending[@]} == 1 )); then generation="$(jq -er '.generation' "${pending[0]}")"; printf 'FRESHNESS_STATUS=OK\nVMID=%s\nDECISION=BACKUP_RESUME\nGENERATION=%s\nSTATE_FILE=%s\n' "$vmid" "$generation" "${pending[0]}"; return 0; fi
45:  if [[ ! -d "$dir" ]]; then printf 'FRESHNESS_STATUS=OK\nVMID=%s\nDECISION=BACKUP_UNVERIFIED\nREASON=STATE_DIR_MISSING\n' "$vmid"; return 0; fi
46-  latest="$(find "$dir" -maxdepth 1 -type f -name '*.json' -printf '%T@|%p\n' | LC_ALL=C sort -t'|' -k1,1nr | awk -F'|' 'NR==1{print $2}')"
47:  if [[ -z "$latest" ]]; then printf 'FRESHNESS_STATUS=OK\nVMID=%s\nDECISION=BACKUP_UNVERIFIED\nREASON=STATE_MISSING\n' "$vmid"; return 0; fi
48:  [[ -s "$latest" && ! -L "$latest" ]] || die "LATEST_STATE_UNSAFE_$vmid" 65
49:  if ! jq -e '.schema=="homelab-cloud-quorum-payload-v1" and .status=="SEALED" and .cloud_quorum==2 and .cloud_a_verified==true and .cloud_b_verified==true and .part_hashes_verified==true and .seal_written==true and .cloud_a_seal_verified==true and .cloud_b_seal_verified==true and .local_payload_present==false and .local_cleanup=="OK"' "$latest" >/dev/null; then printf 'FRESHNESS_STATUS=OK\nVMID=%s\nDECISION=BACKUP_UNVERIFIED\nREASON=LATEST_STATE_NOT_STRICT_SEALED\nSTATE_FILE=%s\n' "$vmid" "$latest"; return 0; fi
50:  generation="$(jq -er '.generation' "$latest")"; sha="$(jq -er '.archive_sha256' "$latest")"; restore="$RESTORE_ROOT/vm${vmid}/$generation.json"
51:  if [[ ! -s "$restore" || -L "$restore" ]]; then printf 'FRESHNESS_STATUS=OK\nVMID=%s\nDECISION=BACKUP_UNVERIFIED\nREASON=RESTORE_EVIDENCE_MISSING\nGENERATION=%s\nSTATE_FILE=%s\nRESTORE_EVIDENCE=%s\n' "$vmid" "$generation" "$latest" "$restore"; return 0; fi
52:  if ! jq -e --arg l "vm${vmid}" --arg g "$generation" --arg s "$latest" --arg sha "$sha" '.schema=="homelab-vm-restore-validation-v1" and .logical_id==$l and .generation==$g and .transport_state=="SEALED" and .transport_state_file==$s and .restore_source=="Cloud A" and .parts_manifest_verified==true and .payload_sha256==$sha and .payload_sha256_verified==true and .payload_decompression_verified==true and .proxmox_config_extract_verified==true and .archive_recovery_readback_verified==true and .bounded_staging==true and .full_local_payload_written==false and .full_restore_proven==false and .result=="OK"' "$restore" >/dev/null; then printf 'FRESHNESS_STATUS=OK\nVMID=%s\nDECISION=BACKUP_UNVERIFIED\nREASON=RESTORE_EVIDENCE_NOT_STRICT_OK\nGENERATION=%s\nSTATE_FILE=%s\nRESTORE_EVIDENCE=%s\n' "$vmid" "$generation" "$latest" "$restore"; return 0; fi
53-  updated="$(jq -er '.updated_at_utc' "$latest")"
54:  if [[ ! "$updated" =~ ^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}Z$ ]]; then printf 'FRESHNESS_STATUS=OK\nVMID=%s\nDECISION=BACKUP_UNVERIFIED\nREASON=UPDATED_AT_FORMAT_INVALID\nGENERATION=%s\nUPDATED_AT_UTC=%s\nSTATE_FILE=%s\n' "$vmid" "$generation" "$updated" "$latest"; return 0; fi
55:  if ! epoch="$(date -u -d "$updated" +%s 2>/dev/null)"; then printf 'FRESHNESS_STATUS=OK\nVMID=%s\nDECISION=BACKUP_UNVERIFIED\nREASON=UPDATED_AT_INVALID\nGENERATION=%s\nUPDATED_AT_UTC=%s\nSTATE_FILE=%s\n' "$vmid" "$generation" "$updated" "$latest"; return 0; fi
56:  [[ "$epoch" =~ ^[0-9]+$ ]] || die "SEALED_EPOCH_INVALID_$vmid" 65
57:  printf 'FRESHNESS_STATUS=OK\nVMID=%s\nDECISION=SEALED_PROVEN\nGENERATION=%s\nUPDATED_AT_UTC=%s\nSEALED_EPOCH=%s\nSTATE_FILE=%s\nRESTORE_EVIDENCE=%s\n' "$vmid" "$generation" "$updated" "$epoch" "$latest" "$restore"
58-}
59-ACTION="${1:-}"
60-case "$ACTION" in
PRODUCER_FILE=/usr/local/libexec/homelab-vm-cloud-quorum-node-worker|SHA256=91bdd116be865560a38105dffbd1a66d687232035e2359e4a5be4d225e9c61d1
5-TRANSPORT_SHA_EXPECTED=df9e19485e5d87112bf58bf77bdddf3b9b896418dd85ff945a31cd5b6817f352
6-STATE_ROOT=/var/lib/homelab-backup/cloud-quorum
7-STAGE_ROOT=/mnt/staging/homelab-vm-cloud-quorum
8:RESTORE_STATE_ROOT=/var/lib/homelab-backup/vm-restore-validation
9:RESTORE_WORK_ROOT=/mnt/staging/homelab-vm-restore-validation
10-LXC_TMP_ROOT=/var/tmp
11-REMOTE_A='pve01-mail-01-crypt:homelab-backups'
12-REMOTE_B='pve01-mail-02-crypt:homelab-backups'
--
16-[[ -x "$TRANSPORT" && ! -L "$TRANSPORT" ]] || die TRANSPORT_MISSING 69
17-[[ "$(sha256sum "$TRANSPORT"|awk '{print $1}')" == "$TRANSPORT_SHA_EXPECTED" ]] || die TRANSPORT_SHA_MISMATCH 65
18-ACTIVE_RESTORE_STAGE=""
19:cleanup_restore_stage(){ if [[ -n "$ACTIVE_RESTORE_STAGE" && "$ACTIVE_RESTORE_STAGE" == "$RESTORE_WORK_ROOT"/* && -d "$ACTIVE_RESTORE_STAGE" ]]; then rm -rf --one-file-system "$ACTIVE_RESTORE_STAGE"; fi; }
20:trap cleanup_restore_stage EXIT
21:active_backup_restore(){ local rc; if pgrep -af '(^|/)(vzdump|qmrestore|pctrestore|vma|zstd|rclone)([[:space:]]|$)'; then return 0; else rc=$?; [[ "$rc" == 1 ]] && return 0; die "PGREP_FAILED_$rc" 69; fi; }
22-snapshot_count_160(){ qm listsnapshot 160 | awk '/->/ && $0 !~ /current/{n++} END{print n+0}'; }
23-vm_lock(){ qm config "$1" | awk -F': ' '$1=="lock"{print $2; found=1} END{if(!found) print "none"}'; }
24-expected_owner(){
--
26-110|112|150|170|171) printf 'pve01\n' ;;
27-111|113|160|180|9130) printf 'pve02\n' ;;
28-130|190|200) printf 'pve03\n' ;;
29:*) die "VMID_NOT_ALLOWED_$1" 64 ;;
30-esac
31-}
32-expected_type(){
33-case "$1" in
34-110|111|112|113|200) printf 'lxc\n' ;;
35-130|150|160|170|171|180|190|9130) printf 'qemu\n' ;;
36:*) die "VMID_NOT_ALLOWED_$1" 64 ;;
37-esac
38-}
39-expected_status(){
40-if [[ "$1" == "9130" ]]; then printf 'stopped\n'; else printf 'running\n'; fi
41-}
42-current_status(){
43:local vmid="$1" type="$2"
44:if [[ "$type" == "qemu" ]]; then qm status "$vmid" | awk '{print $2}'; else pct status "$vmid" | awk '{print $2}'; fi
45-}
46-assert_local_identity(){
47:local vmid="$1" owner type status expect_status
48:owner="$(expected_owner "$vmid")"
49:type="$(expected_type "$vmid")"
50:[[ "$HOST" == "$owner" ]] || die "OWNER_MISMATCH_${vmid}_${HOST}_EXPECTED_${owner}" 65
51-if [[ "$type" == "qemu" ]]; then
52:[[ -s "/etc/pve/qemu-server/${vmid}.conf" ]] || die "QEMU_CONFIG_MISSING_$vmid" 66
53-else
54:[[ -s "/etc/pve/lxc/${vmid}.conf" ]] || die "LXC_CONFIG_MISSING_$vmid" 66
55-fi
56:status="$(current_status "$vmid" "$type")"
57:expect_status="$(expected_status "$vmid")"
58:[[ "$status" == "$expect_status" ]] || die "STATUS_MISMATCH_${vmid}_${status}_EXPECTED_${expect_status}" 66
59:if [[ "$vmid" == "160" ]]; then [[ "$(snapshot_count_160)" == "0" ]] || die "VM160_SNAPSHOT_COUNT_CHANGED" 66; fi
60:if [[ "$vmid" == "9130" ]]; then [[ "$(vm_lock 9130)" == "none" ]] || die "VM9130_LOCK_PRESENT" 66; fi
61-VM_TYPE="$type"
62-VM_STATUS="$status"
63-}
64-assert_post_identity(){
65:local vmid="$1" type="$2" status expect_status
66:status="$(current_status "$vmid" "$type")"
67:expect_status="$(expected_status "$vmid")"
68:[[ "$status" == "$expect_status" ]] || die "POST_STATUS_MISMATCH_${vmid}_${status}_EXPECTED_${expect_status}" 66
69:if [[ "$vmid" == "160" ]]; then [[ "$(snapshot_count_160)" == "0" ]] || die "VM160_SNAPSHOT_COUNT_CHANGED_POST" 66; fi
70:if [[ "$vmid" == "9130" ]]; then [[ "$(vm_lock 9130)" == "none" ]] || die "VM9130_LOCK_PRESENT_POST" 66; fi
71-}
72-latest_incomplete_state(){
73:local vmid="$1" dir="$STATE_ROOT/vm${vmid}" f
74-[[ -d "$dir" ]] || return 0
75-while IFS= read -r f; do
76-jq -e '.status!="SEALED"' "$f" >/dev/null 2>&1 && printf '%s\n' "$f"
77-done < <(find "$dir" -maxdepth 1 -type f -name '*.json' -print | LC_ALL=C sort)
78-}
79:restore_dir(){ printf '%s\n' "$RESTORE_STATE_ROOT/vm$1"; }
80:restore_ok(){
81:  local vmid="$1" gen="$2" f state sha
82:  f="$(restore_dir "$vmid")/$gen.json"; state="$STATE_ROOT/vm${vmid}/$gen.json"
83-  [[ -s "$f" && ! -L "$f" && -s "$state" && ! -L "$state" ]] || return 1
84-  sha="$(jq -er '.archive_sha256' "$state")" || return 1
85:  jq -e --arg l "vm${vmid}" --arg g "$gen" --arg s "$state" --arg sha "$sha" '.schema=="homelab-vm-restore-validation-v1" and .logical_id==$l and .generation==$g and .transport_state=="SEALED" and .transport_state_file==$s and .restore_source=="Cloud A" and .parts_manifest_verified==true and .payload_sha256==$sha and .payload_sha256_verified==true and .payload_decompression_verified==true and .proxmox_config_extract_verified==true and .archive_recovery_readback_verified==true and .bounded_staging==true and .full_local_payload_written==false and .full_restore_proven==false and .result=="OK"' "$f" >/dev/null
86-}
87-prepare_cloud_a_manifest(){
88:  local vmid="$1" gen="$2" state="$3" work="$4" base manifest expected_msha got_msha expected_count expected_size idx name size psha count total
89-  base="$(jq -er '.remote_a_base' "$state")"; expected_msha="$(jq -er '.parts_manifest_sha256' "$state")"; expected_count="$(jq -er '.part_count' "$state")"; expected_size="$(jq -er '.archive_size_bytes' "$state")"
90:  [[ "$base" == "${REMOTE_A%/}/vm${vmid}/$gen" ]] || die "RESTORE_A_BASE_MISMATCH_$vmid" 70
91-  manifest="$work/PARTS.tsv"; rclone cat "${base%/}/PARTS.tsv" >"$manifest"
92:  got_msha="$(sha256sum "$manifest"|awk '{print $1}')"; [[ "$got_msha" == "$expected_msha" ]] || die "RESTORE_A_MANIFEST_SHA_MISMATCH_$vmid" 70
93-  count=0; total=0
94-  while IFS=$'\t' read -r idx name size psha; do
95:    [[ "$idx" =~ ^[0-9]{8}$ && "$name" == part-????????.bin && "$size" =~ ^[1-9][0-9]*$ && "$psha" =~ ^[0-9a-f]{64}$ ]] || die "RESTORE_A_MANIFEST_ROW_INVALID_$vmid" 70
96:    (( size <= 536870912 )) || die "RESTORE_A_PART_EXCEEDS_BOUND_$vmid" 70
97:    [[ "$idx" == "$(printf '%08d' "$count")" ]] || die "RESTORE_A_MANIFEST_INDEX_INVALID_$vmid" 70
98-    total=$((total+size)); count=$((count+1))
99-  done <"$manifest"
100:  [[ "$count" == "$expected_count" ]] || die "RESTORE_A_PART_COUNT_MISMATCH_$vmid" 70
101:  [[ "$total" == "$expected_size" ]] || die "RESTORE_A_MANIFEST_TOTAL_SIZE_MISMATCH_$vmid" 70
102-  printf '%s\n' "$base"
103-}
104-stream_cloud_a(){
105:  local vmid="$1" base="$2" manifest="$3" work="$4" idx name size psha part actual count
106-  count=0; part="$work/current.part"
107-  while IFS=$'\t' read -r idx name size psha; do
108-    rm -f -- "$part"; rclone cat "${base%/}/payload.parts/$name" >"$part"
109:    [[ -s "$part" && ! -L "$part" && "$(stat -c %s "$part")" == "$size" ]] || die "RESTORE_A_PART_SIZE_MISMATCH_$vmid" 70
110:    actual="$(sha256sum "$part"|awk '{print $1}')"; [[ "$actual" == "$psha" ]] || die "RESTORE_A_PART_SHA_MISMATCH_$vmid" 70
111-    cat -- "$part"; rm -f -- "$part"; count=$((count+1))
112-  done <"$manifest"
113-}
114:restore_validate(){
115:  local vmid="$1" gen="$2" logical state work payload_name expected_sha expected_size base manifest fifo sha_out sha_pid pipe_rc sha_rc actual_sha config config_sha members member_count cfg_member level out tmp
116:  assert_local_identity "$vmid"; logical="vm${vmid}"; state="$STATE_ROOT/$logical/$gen.json"
117:  [[ -s "$state" && ! -L "$state" ]] || die "RESTORE_STATE_MISSING_$vmid" 65
118:  jq -e '.schema=="homelab-cloud-quorum-payload-v1" and .status=="SEALED" and .cloud_quorum==2 and .cloud_a_verified==true and .cloud_b_verified==true and .part_hashes_verified==true and .seal_written==true and .cloud_a_seal_verified==true and .cloud_b_seal_verified==true and .local_payload_present==false and .local_cleanup=="OK"' "$state" >/dev/null || die "RESTORE_REQUIRES_STRICT_SEALED_$vmid" 65
119:  if restore_ok "$vmid" "$gen"; then printf 'RESTORE_VALIDATION_STATUS=OK\nVMID=%s\nGENERATION=%s\nRESULT=ALREADY_VALIDATED\nRESTORE_EVIDENCE=%s\n' "$vmid" "$gen" "$(restore_dir "$vmid")/$gen.json"; return 0; fi
120:  [[ -z "$(active_backup_restore)" ]] || die ACTIVE_BACKUP_RESTORE_PRESENT 75
121-  payload_name="$(jq -er '.payload_name' "$state")"; expected_sha="$(jq -er '.archive_sha256' "$state")"; expected_size="$(jq -er '.archive_size_bytes' "$state")"
122:  [[ "$payload_name" == "vzdump-lxc-${vmid}-"*.tar.zst || "$payload_name" == "vzdump-qemu-${vmid}-"*.vma.zst ]] || die "RESTORE_PAYLOAD_NAME_INVALID_$vmid" 70
123:  work="$RESTORE_WORK_ROOT/$logical/$gen"; if [[ -e "$work" ]]; then [[ -d "$work" && ! -L "$work" ]] || die "RESTORE_WORK_UNSAFE_$vmid" 70; rm -rf --one-file-system "$work"; fi; mkdir -p "$work"; chmod 0700 "$RESTORE_WORK_ROOT" "$RESTORE_WORK_ROOT/$logical" "$work"; ACTIVE_RESTORE_STAGE="$work"
124:  base="$(prepare_cloud_a_manifest "$vmid" "$gen" "$state" "$work")"; manifest="$work/PARTS.tsv"; fifo="$work/archive.sha.fifo"; sha_out="$work/archive.sha256"; mkfifo -m 0600 "$fifo"
125-  sha256sum <"$fifo" >"$sha_out" & sha_pid=$!
126-  if [[ "$VM_TYPE" == lxc ]]; then
127:    members="$work/members.txt"; if stream_cloud_a "$vmid" "$base" "$manifest" "$work" | tee "$fifo" | zstd -dc | tar -tf - >"$members"; then pipe_rc=0; else pipe_rc=$?; fi
128-  else
129:    if stream_cloud_a "$vmid" "$base" "$manifest" "$work" | tee "$fifo" | zstd -t - >/dev/null; then pipe_rc=0; else pipe_rc=$?; fi
130-  fi
131-  if wait "$sha_pid"; then sha_rc=0; else sha_rc=$?; fi; rm -f -- "$fifo"
132:  (( pipe_rc == 0 && sha_rc == 0 )) || die "RESTORE_A_STREAM_VALIDATION_FAILED_${vmid}_${pipe_rc}_${sha_rc}" 70
133:  actual_sha="$(awk 'NR==1{print $1}' "$sha_out")"; [[ "$actual_sha" == "$expected_sha" ]] || die "RESTORE_A_PAYLOAD_SHA_MISMATCH_$vmid" 70
134-  config="$work/proxmox-config.txt"; member_count=0
135-  if [[ "$VM_TYPE" == lxc ]]; then
136:    [[ -s "$members" ]] || die "RESTORE_LXC_ARCHIVE_EMPTY_$vmid" 70
137:    awk '$0 ~ /^\// || $0 ~ /(^|\/)\.\.(\/|$)/ {bad=1} END{exit bad}' "$members" || die "RESTORE_LXC_MEMBER_UNSAFE_$vmid" 70
138:    member_count="$(wc -l <"$members")"; [[ "$member_count" =~ ^[1-9][0-9]*$ ]] || die "RESTORE_LXC_MEMBER_COUNT_INVALID_$vmid" 70
139:    cfg_member="$(awk '$0=="./etc/vzdump/pct.conf" || $0=="etc/vzdump/pct.conf" {print; exit}' "$members")"; [[ -n "$cfg_member" ]] || die "RESTORE_LXC_CONFIG_MEMBER_MISSING_$vmid" 70
140:    if ( set +o pipefail; stream_cloud_a "$vmid" "$base" "$manifest" "$work" | zstd -dc | tar -xOf - "$cfg_member" >"$config" ); then :; else die "RESTORE_LXC_CONFIG_EXTRACT_FAILED_$vmid" 70; fi
141-    level="cloud-a-full-readback+part-sha+archive-sha+zstd+tar-list+config"
142-  else
143:    if ( set +o pipefail; stream_cloud_a "$vmid" "$base" "$manifest" "$work" | zstd -dc | vma config - >"$config" ); then :; else die "RESTORE_QEMU_CONFIG_EXTRACT_FAILED_$vmid" 70; fi
144-    level="cloud-a-full-readback+part-sha+archive-sha+zstd+vma-config"
145-  fi
146:  [[ -s "$config" && ! -L "$config" ]] || die "RESTORE_CONFIG_EMPTY_$vmid" 70; config_sha="$(sha256sum "$config"|awk '{print $1}')"
147:  out="$(restore_dir "$vmid")/$gen.json"; mkdir -p "$(dirname "$out")"; chmod 0700 "$RESTORE_STATE_ROOT" "$(dirname "$out")"; tmp="${out}.new.$$"
148:  jq -n --arg logical "$logical" --arg generation "$gen" --argjson vmid "$vmid" --arg vm_type "$VM_TYPE" --arg state "$state" --arg sha "$expected_sha" --arg config_sha "$config_sha" --arg level "$level" --argjson member_count "$member_count" --arg at "$(date -u +%Y-%m-%dT%H:%M:%SZ)" '{schema:"homelab-vm-restore-validation-v1",logical_id:$logical,generation:$generation,vmid:$vmid,vm_type:$vm_type,transport_state:"SEALED",transport_state_file:$state,restore_source:"Cloud A",parts_manifest_verified:true,payload_sha256:$sha,payload_sha256_verified:true,payload_decompression_verified:true,proxmox_config_extract_verified:true,proxmox_config_sha256:$config_sha,lxc_member_count:$member_count,archive_recovery_readback_verified:true,bounded_staging:true,max_staged_part_bytes:536870912,full_local_payload_written:false,full_restore_proven:false,validation_level:$level,result:"OK",validated_at_utc:$at}' >"$tmp"
149-  chmod 0600 "$tmp"; mv -f -- "$tmp" "$out"; rm -rf --one-file-system "$work"; ACTIVE_RESTORE_STAGE=""
150:  restore_ok "$vmid" "$gen" || die "RESTORE_EVIDENCE_POSTWRITE_INVALID_$vmid" 70
151:  printf 'RESTORE_VALIDATION_STATUS=OK\nVMID=%s\nGENERATION=%s\nRESTORE_EVIDENCE=%s\n' "$vmid" "$gen" "$out"
152-}
153-plan(){
154:local vmid="$1" owner type status
155:assert_local_identity "$vmid"
156:owner="$(expected_owner "$vmid")"
157:type="$(expected_type "$vmid")"
158:status="$(expected_status "$vmid")"
159:printf 'PLAN_STATUS=OK\nVMID=%s\nOWNER=%s\nTYPE=%s\nEXPECTED_STATUS=%s\n' "$vmid" "$owner" "$type" "$status"
160-}
161:verify_generation(){
162:  local vmid="$1" generation="$2"
163:  assert_local_identity "$vmid"
164:  restore_validate "$vmid" "$generation"
165:  assert_post_identity "$vmid" "$VM_TYPE"
166:  printf 'VERIFY_STATUS=OK\nVMID=%s\nGENERATION=%s\nRESTORE_EVIDENCE=%s\n' "$vmid" "$generation" "$(restore_dir "$vmid")/$generation.json"
167-}
168-backup_one(){
169:local vmid="$1" pending_count pending state generation payload gen_dir archive_count archive log_file before_status
170-local -a vzdump_args
171:assert_local_identity "$vmid"
172-[[ -x "$TRANSPORT" ]] || die "TRANSPORT_NOT_INSTALLED" 69
173-[[ -d /mnt/staging && ! -L /mnt/staging ]] || die "STAGING_UNSAFE" 66
174-mkdir -p "$STAGE_ROOT"
175-chmod 0700 "$STAGE_ROOT"
176:[[ -z "$(active_backup_restore)" ]] || die "ACTIVE_BACKUP_RESTORE_PRESENT" 75
177-rclone about pve01-mail-01-crypt: >/dev/null
178-rclone about pve01-mail-02-crypt: >/dev/null
179:mapfile -t pending < <(latest_incomplete_state "$vmid")
180-pending_count="${#pending[@]}"
181:(( pending_count <= 1 )) || die "MULTIPLE_INCOMPLETE_GENERATIONS_$vmid" 65
182-if (( pending_count == 1 )); then
183-state="${pending[0]}"
184:generation="$(jq -er '.generation' "$state")"
185-payload="$(jq -er '.payload_path' "$state")"
186:printf 'RESUME=YES\nVMID=%s\nGENERATION=%s\nSTATE=%s\n' "$vmid" "$generation" "$state"
187:"$TRANSPORT" backup-delete "vm${vmid}" "$generation" "$payload" "$REMOTE_A" "$REMOTE_B" "$STATE_ROOT"
188-else
189:generation="vm${vmid}-${HOST}-$(date -u +%Y%m%dT%H%M%SZ)"
190:gen_dir="$STAGE_ROOT/vm${vmid}/$generation"
191:[[ ! -e "$gen_dir" ]] || die "GENERATION_DIR_EXISTS_$generation" 65
192-mkdir -p "$gen_dir"
193-chmod 0700 "$gen_dir"
194-log_file="$gen_dir/vzdump.log"
195:printf 'RESUME=NO\nVMID=%s\nGENERATION=%s\n' "$vmid" "$generation"
196-vzdump_args=(--dumpdir "$gen_dir" --mode snapshot --compress zstd --ionice 7)
197-if [[ "$VM_TYPE" == "lxc" ]]; then
198-[[ -d "$LXC_TMP_ROOT" && ! -L "$LXC_TMP_ROOT" ]] || die "LXC_TMP_ROOT_UNSAFE" 66
199-[[ "$(find "$LXC_TMP_ROOT" -maxdepth 0 -printf '%m')" == "1777" ]] || die "LXC_TMP_ROOT_MODE_UNSAFE" 66
200-vzdump_args+=(--tmpdir "$LXC_TMP_ROOT")
201-fi
202:if ! ( umask 0022; exec vzdump "$vmid" "${vzdump_args[@]}" ) >"$log_file" 2>&1; then
203-rm -rf -- "$gen_dir"
204:die "VZDUMP_FAILED_$vmid" 70
205-fi
206:mapfile -t archives < <(find "$gen_dir" -maxdepth 1 -type f -name "vzdump-*-${vmid}-*.zst" -print)
207-archive_count="${#archives[@]}"
208:[[ "$archive_count" == "1" ]] || { rm -rf -- "$gen_dir"; die "VZDUMP_ARCHIVE_COUNT_${vmid}_${archive_count}" 70; }
209-archive="${archives[0]}"
210:[[ -s "$archive" && ! -L "$archive" ]] || die "VZDUMP_ARCHIVE_UNSAFE_$vmid" 70
211-zstd -t -- "$archive" >/dev/null
212:"$TRANSPORT" backup-delete "vm${vmid}" "$generation" "$archive" "$REMOTE_A" "$REMOTE_B" "$STATE_ROOT"
213-rm -f -- "$log_file"
214-rmdir -- "$gen_dir" 2>/dev/null || true
215:rmdir -- "$STAGE_ROOT/vm${vmid}" 2>/dev/null || true
216-fi
217:assert_post_identity "$vmid" "$VM_TYPE"
218:state="$STATE_ROOT/vm${vmid}/$generation.json"
219-jq -e '.status=="SEALED" and .cloud_quorum==2 and .local_payload_present==false and .local_cleanup=="OK" and .seal_written==true' "$state" >/dev/null
220:  restore_validate "$vmid" "$generation"
221:  printf 'BACKUP_STATUS=SEALED\nVMID=%s\nGENERATION=%s\nOWNER=%s\nTYPE=%s\nPOST_STATUS=%s\nRESTORE_EVIDENCE=%s\n' "$vmid" "$generation" "$HOST" "$VM_TYPE" "$(expected_status "$vmid")" "$(restore_dir "$vmid")/$generation.json"
222-}
223-host_preflight(){
224-local free a_free b_free
225-[[ -d /mnt/staging && ! -L /mnt/staging ]] || die "STAGING_UNSAFE" 66
226:[[ -z "$(active_backup_restore)" ]] || die "ACTIVE_BACKUP_RESTORE_PRESENT" 75
227-free="$(df -B1 --output=avail /mnt/staging | tail -1 | tr -d ' ')"
228-a_free="$(rclone about pve01-mail-01-crypt: --json | jq -er '.free')"
229-b_free="$(rclone about pve01-mail-02-crypt: --json | jq -er '.free')"
--
231-printf 'HOST_PREFLIGHT_STATUS=OK\nHOST=%s\nSTAGING_FREE_BYTES=%s\nREMOTE_A_FREE_BYTES=%s\nREMOTE_B_FREE_BYTES=%s\nACTIVE_BACKUP_RESTORE=0\n' "$HOST" "$free" "$a_free" "$b_free"
232-}
233-latest_sealed(){
234:  local vmid="$1" dir latest gen
235:  assert_local_identity "$vmid"; dir="$STATE_ROOT/vm${vmid}"
236:  [[ -d "$dir" ]] || die "STATE_DIR_MISSING_$vmid" 65
237-  latest="$(find "$dir" -maxdepth 1 -type f -name '*.json' -printf '%T@|%p\n' | LC_ALL=C sort -t'|' -k1,1nr | awk -F'|' 'NR==1{print $2}')"
238:  [[ -n "$latest" && -s "$latest" && ! -L "$latest" ]] || die "LATEST_STATE_MISSING_$vmid" 65
239:  jq -e '.status=="SEALED" and .cloud_quorum==2 and .local_payload_present==false and .local_cleanup=="OK" and .seal_written==true' "$latest" >/dev/null || die "LATEST_STATE_NOT_SEALED_$vmid" 65
240:  gen="$(jq -er '.generation' "$latest")"; restore_ok "$vmid" "$gen" || die "LATEST_RESTORE_NOT_OK_$vmid" 65
241:  printf 'LATEST_SEALED_STATUS=OK\nVMID=%s\nGENERATION=%s\nSTATE_FILE=%s\nRESTORE_EVIDENCE=%s\n' "$vmid" "$gen" "$latest" "$(restore_dir "$vmid")/$gen.json"
242-}
243-ACTION="${1:-}"
244-case "$ACTION" in
--
258-[[ "$#" == 2 ]] || die "USAGE_BACKUP" 64
259-backup_one "$2"
260-;;
261:  restore-validate)
262-    [[ "$#" == 3 ]] || die "USAGE_RESTORE_VALIDATE" 64
263:    restore_validate "$2" "$3"
264-    ;;
265-verify)
266-[[ "$#" == 3 ]] || die "USAGE_VERIFY" 64
267:verify_generation "$2" "$3"
268-;;
269-*)
270-die "ACTION_INVALID" 64
PRODUCER_FILE=/usr/local/libexec/homelab-cloud-quorum-payload|SHA256=df9e19485e5d87112bf58bf77bdddf3b9b896418dd85ff945a31cd5b6817f352
43-done
44-
45-# SECTION_ARGUMENTS_V1
46:usage(){
47:  printf 'usage: %s backup-delete LOGICAL_ID GENERATION PAYLOAD REMOTE_A_ROOT REMOTE_B_ROOT STATE_ROOT\n' "$0" >&2
48-  printf '       %s verify-sealed LOGICAL_ID GENERATION REMOTE_A_ROOT REMOTE_B_ROOT STATE_ROOT\n' "$0" >&2
49-}
50-valid_remote_root(){ [[ "$1" =~ ^[A-Za-z0-9][A-Za-z0-9._-]*:[A-Za-z0-9._/-]+$ ]]; }
--
52-ACTION="${1:-}"
53-case "$ACTION" in
54-  backup-delete)
55:    [[ "$#" -eq 7 ]] || { usage; die "ARGUMENT_COUNT_INVALID" 64; }
56-    LOGICAL_ID="$2"
57-    GENERATION="$3"
58-    PAYLOAD="$4"
--
61-    STATE_ROOT="$7"
62-    ;;
63-  verify-sealed)
64:    [[ "$#" -eq 6 ]] || { usage; die "ARGUMENT_COUNT_INVALID" 64; }
65-    LOGICAL_ID="$2"
66-    GENERATION="$3"
67-    PAYLOAD=""
--
70-    STATE_ROOT="$6"
71-    ;;
72-  *)
73:    usage
74-    die "ACTION_INVALID" 64
75-    ;;
76-esac
--
151-  jq -e \
152-    --arg schema "$SCHEMA" \
153-    --arg logical_id "$LOGICAL_ID" \
154:    --arg generation "$GENERATION" \
155-    --arg remote_a "$REMOTE_A_ROOT" \
156-    --arg remote_b "$REMOTE_B_ROOT" \
157-    --argjson chunk_size "$CHUNK_SIZE_BYTES" \
158-    '.schema==$schema and
159-     .logical_id==$logical_id and
160:     .generation==$generation and
161-     .remote_a_root==$remote_a and
162-     .remote_b_root==$remote_b and
163-     .chunk_size_bytes==$chunk_size and
--
187-    --arg schema "$SCHEMA" \
188-    --arg status "PREPARING" \
189-    --arg logical_id "$LOGICAL_ID" \
190:    --arg generation "$GENERATION" \
191-    --arg created "$now" \
192-    --arg payload_path "$PAYLOAD_REAL" \
193-    --arg payload_name "$PAYLOAD_NAME" \
--
199-    --argjson payload_size "$PAYLOAD_SIZE" \
200-    --argjson chunk_size "$CHUNK_SIZE_BYTES" \
201-    --argjson part_count "$PART_COUNT" \
202:    '{schema:$schema,status:$status,logical_id:$logical_id,generation:$generation,
203-      created_at_utc:$created,updated_at_utc:$created,
204-      payload_path:$payload_path,payload_name:$payload_name,
205-      archive_size_bytes:$payload_size,archive_sha256:$payload_sha,
--
332-    ABSENT)
333-      compute_local_payload_identity
334-      now="$(date -u +%Y-%m-%dT%H:%M:%SZ)"
335:      assert_new_remote_generation_absent
336-      write_initial_state "$now"
337-      state_identity_ok || die "INITIAL_STATE_IDENTITY_INVALID" 65
338-      state_payload_identity_ok || die "INITIAL_STATE_PAYLOAD_IDENTITY_INVALID" 65
--
391-}
392-
393-# SECTION_REMOTE_GENERATION_GUARD_V1
394:remote_generation_probe(){
395-  local label="$1" root="$2" root_listing logical_listing
396-  [[ "$label" == "A" || "$label" == "B" ]] || die "REMOTE_PROBE_LABEL_INVALID" 64
397-  root_listing="$WORK/remote-${label}-root.lsf"
--
414-  fi
415-}
416-
417:assert_new_remote_generation_absent(){
418-  local a_state b_state
419:  a_state="$(remote_generation_probe A "$REMOTE_A_ROOT")"
420:  b_state="$(remote_generation_probe B "$REMOTE_B_ROOT")"
421-  [[ "$a_state" == "ABSENT" ]] || die "REMOTE_A_GENERATION_ALREADY_EXISTS" 65
422-  [[ "$b_state" == "ABSENT" ]] || die "REMOTE_B_GENERATION_ALREADY_EXISTS" 65
423-}
--
831-    schema:"homelab-cloud-quorum-seal-v1",
832-    status:"SEALED",
833-    logical_id:.logical_id,
834:    generation:.generation,
835-    archive_name:.payload_name,
836-    archive_size_bytes:.archive_size_bytes,
837-    archive_sha256:.archive_sha256,
--
851-    .schema=="homelab-cloud-quorum-seal-v1" and
852-    .status=="SEALED" and
853-    (.logical_id|type=="string" and length>0) and
854:    (.generation|type=="string" and length>0) and
855-    (.archive_sha256|type=="string" and test("^[0-9a-f]{64}$")) and
856-    (.parts_manifest_sha256|type=="string" and test("^[0-9a-f]{64}$")) and
857-    .cloud_quorum==2 and
--
920-  mark_local_deleted
921-}
922-
923:seal_generation_and_mark(){
924-  assert_state_transition_source "DELETE_AUTHORIZED"
925-  jq -e '.local_payload_present==false and .local_cleanup=="OK"' "$STATE_FILE" >/dev/null || die "SEAL_LOCAL_DELETE_NOT_RECORDED" 65
926-  build_seal_file
--
929-  mark_sealed "$SEAL_SHA"
930-}
931-
932:verify_sealed_generation(){
933-  local status expected_seal_sha
934-  status="$(state_status)"
935-  [[ "$status" == "SEALED" ]] || die "VERIFY_SEALED_REQUIRES_SEALED_STATE" 65
--
951-  status="$(state_status)"
952-  case "$status" in
953-    SEALED)
954:      verify_sealed_generation
955-      printf 'RESULT=SEALED_ALREADY_VERIFIED\n'
956-      return 0
957-      ;;
--
974-      ;;
975-  esac
976-  delete_local_payload_after_authorization
977:  seal_generation_and_mark
978-  printf 'RESULT=SEALED\n'
979-}
980-
--
983-    perform_backup_delete
984-    ;;
985-  verify-sealed)
986:    verify_sealed_generation
987-    printf 'RESULT=SEALED_VERIFIED\n'
988-    ;;
989-esac
PRODUCER_STATIC_END=true
FINAL413_FAILURE_CLASS=STORAGE_OR_CAPACITY
DECISION=PASS_DR221_414_FINAL413_STORAGE_BLOCKER_PROVEN
NEXT_GATE=REPAIR_ONLY_VM210_DR_STORAGE_PRECONDITION_THEN_RETRY
CHANGES_MADE_BY_414=false
PRODUCT_MUTATION_BY_414=false
VM_MUTATION_BY_414=false
CLOUD_MUTATION_BY_414=false
HOMELAB_RESULT_CONTRACT={"version":1,"command_id":"NEWFI-260922-NEWFDOM-DR221-FRESHBACKUP-RCA414R1","status":"OK","changes_made":false,"rollback_started":false,"rollback_restored":null}
NEWFI414_END=true

OUTPUT_END
CHAT_OUTPUT_END
