CHAT_OUTPUT_BEGIN
COMMAND_ID=SUPPORT-260924-HOMELAB-MOLDOVA-RELEASE-AUTH-EXACT-1146R1
STATUS=OK
RC=0
HOST=pve01
MODE=read-only
COMPONENT=homelab-moldova-release-auth-exact
REFERENCE_REGISTER_CHECK=OK
REFERENCE_SHA256=5a3d8e5154c41cb582a4e0aca68090be1f0138918bf82131a948df326f9d8d66
ERROR_REGISTER_CHECK=OK
ERROR_REGISTER_SHA256=3b09a553ec0f527ed3afeed4753f52a74ee3036045bbfb3c685e9f8af4ba7ba0
COMMAND_SHA256=2ecf45c3dc29b0d52ce5e023d056614d7ae82c2a141b7e4d50abcf70ede7b8e5
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=33797061a32049635fc79cd84c3c526a8480e12813aa01c6817da699fb08c805
SANITIZED_OUTPUT_SHA256=33797061a32049635fc79cd84c3c526a8480e12813aa01c6817da699fb08c805
OUTPUT_BEGIN
WORKERS2_MOLDOVA_RELEASE_AUTH_EXACT_BEGIN=1
COMMAND_ID=SUPPORT-260924-HOMELAB-MOLDOVA-RELEASE-AUTH-EXACT-1146R1
MODE=read-only
COMPONENT=homelab-moldova-release-auth-exact
MUTATION_BOUNDARY=NONE;EXACT_RELEASE_STATIC_CODE_INSPECTION_ONLY;NO_MOLDOVA_CONNECTION;NO_REMOTE_SSH;NO_PROVIDER_CALL;NO_SYSTEMD_ACTION;NO_BACKUP_RUN;NO_BACKUP_MUTATION;NO_TARGET_POLICY_MUTATION;NO_NETBIRD_MUTATION;NO_MONITORING_MUTATION;NO_GIT_WRITE;NO_SECRET_VALUE_READOUT
PREDECESSOR_1145=PASS_MOLDOVA_1145_BACKUP_SSH_EXECUTOR_RCA
PREDECESSOR_1145_RELEASE=/opt/homelab-backup-v2/releases/backup-v2-overlay-504r1-ca6876fa9c3b
CARRIER_BASELINE=KNOWN_GOOD_1137_BYTE_SEMANTICS
REFERENCE_SHA256=5a3d8e5154c41cb582a4e0aca68090be1f0138918bf82131a948df326f9d8d66
ERROR_REGISTER_SHA256=3b09a553ec0f527ed3afeed4753f52a74ee3036045bbfb3c685e9f8af4ba7ba0
RUNNER_SHA256=b248a4c32c9cc64e5747e7dce6c7fc0a23f5124a77c71ce72e27a81aceae9d2d
TARGETS_SHA256=5cba5f1e14c65211c9fab6d11594c19279ab68369b4db3f7283708c368348288
MD_RELAY_COUNT=1
MD_RELAY_ENABLED=false
MD_RELAY_TYPE=vps_md
MD_RELAY_SCOPE=vps
RELEASE_ROOT_BEGIN=1
RELEASE_EXISTS=true
RELEASE_MODE=500
RELEASE_OWNER=root:root
RELEASE_FILE_COUNT=6
RELEASE_ROOT_END=1
RELEASE_IDENTITY_BEGIN=1
RELEASE_FILES=entry504.py,fresh_lxc_helper.py,lxc_adapter.py,producer_exec_helper.py,qemu_adapter.py,scheduler_adapter.py
RELEASE_FILE|name=entry504.py|exists=true|bytes=10566|mode=400|uid=0|gid=0|sha256=ca6876fa9c3b1465b045344a8ad46962de16972c7dadc4ac6257c7d225047793|expected_sha256=ca6876fa9c3b1465b045344a8ad46962de16972c7dadc4ac6257c7d225047793|identity_ok=true
RELEASE_FILE|name=fresh_lxc_helper.py|exists=true|bytes=2320|mode=400|uid=0|gid=0|sha256=dbb3e6dbb71b10797df736431d9501a752a0f8c439163c9a0bddb7f76747f011|expected_sha256=dbb3e6dbb71b10797df736431d9501a752a0f8c439163c9a0bddb7f76747f011|identity_ok=true
RELEASE_FILE|name=lxc_adapter.py|exists=true|bytes=13825|mode=400|uid=0|gid=0|sha256=3fa7d194010d76f7c8bc95035ae8876262e9337903e310f45f45df88c266dc8d|expected_sha256=3fa7d194010d76f7c8bc95035ae8876262e9337903e310f45f45df88c266dc8d|identity_ok=true
RELEASE_FILE|name=producer_exec_helper.py|exists=true|bytes=3449|mode=400|uid=0|gid=0|sha256=b3b97099bcd7126670f866e81faae6a42a96d869d9989e6a67f6ea6c871c90b3|expected_sha256=b3b97099bcd7126670f866e81faae6a42a96d869d9989e6a67f6ea6c871c90b3|identity_ok=true
RELEASE_FILE|name=qemu_adapter.py|exists=true|bytes=4627|mode=400|uid=0|gid=0|sha256=1906db42bd34bbe85eb46fd9797b3572d46e0a41c29d1c29be5f9df5e448f15b|expected_sha256=1906db42bd34bbe85eb46fd9797b3572d46e0a41c29d1c29be5f9df5e448f15b|identity_ok=true
RELEASE_FILE|name=scheduler_adapter.py|exists=true|bytes=4097|mode=400|uid=0|gid=0|sha256=a6f67159a64067773323f028126e3109e15cf17a8142cea5e6129970f1d4da96|expected_sha256=a6f67159a64067773323f028126e3109e15cf17a8142cea5e6129970f1d4da96|identity_ok=true
RELEASE_IDENTITY_BAD=0
RELEASE_IDENTITY_END=1
RELEASE_IMPORTS_AND_AUTH_SNIPPETS_BEGIN=1
SRC|file=entry504.py|line=1|text=from __future__ import annotations
SRC|file=entry504.py|line=2|text=import hashlib, importlib, json, os, pathlib, stat, sys, types
SRC|file=entry504.py|line=62|text=    required=('capture_pve_guest','backup_target','load_targets','cluster_inventory','ssh_remote',
SRC|file=entry504.py|line=69|text=    if not isinstance(g.get('SCP'),str) or not g['SCP'].startswith('/'):
SRC|file=entry504.py|line=70|text=        raise RuntimeError('LEGACY_SCP_API')
SRC|file=entry504.py|line=126|text=        import tempfile
SRC|file=fresh_lxc_helper.py|line=1|text=from __future__ import annotations
SRC|file=fresh_lxc_helper.py|line=2|text=import base64, hashlib, json, pathlib, sys
SRC|file=fresh_lxc_helper.py|line=19|text=    import adapter
SRC|file=lxc_adapter.py|line=1|text=from __future__ import annotations
SRC|file=lxc_adapter.py|line=2|text=import base64, hashlib, json, os, pathlib, re, selectors, shlex, signal, stat, subprocess, sys, time
SRC|file=lxc_adapter.py|line=36|text=    p=legacy.ssh_remote(node,['sha256sum','--',path],timeout=30)
SRC|file=lxc_adapter.py|line=44|text=    rows=_j(legacy.ssh_remote(node,['pvesh','get','/cluster/resources','--type','vm','--output-format','json'],timeout=60),'RESOURCES_JSON')
SRC|file=lxc_adapter.py|line=45|text=    stores=_j(legacy.ssh_remote(node,['pvesh','get',f'/nodes/{node}/storage','--output-format','json'],timeout=60),'STORAGE_JSON')
SRC|file=lxc_adapter.py|line=52|text=        cfg=_j(legacy.ssh_remote(node,['pvesh','get',f'/nodes/{node}/{r["type"]}/{rid}/config','--output-format','json'],timeout=60),'CONFIG_JSON')
SRC|file=lxc_adapter.py|line=55|text=    tasks=_j(legacy.ssh_remote(node,['pvesh','get',f'/nodes/{node}/tasks','--limit','999','--output-format','json'],timeout=60),'TASKS_JSON')
SRC|file=lxc_adapter.py|line=57|text=    q=legacy.ssh_remote(node,['test','-f','/etc/vzdump.conf'],timeout=30,check=False)
SRC|file=lxc_adapter.py|line=59|text=    if q.returncode==0: defaults=legacy.ssh_remote(node,['cat','--','/etc/vzdump.conf'],timeout=30).stdout
SRC|file=lxc_adapter.py|line=68|text=    p=subprocess.run(['/usr/bin/python3','-I','-B',str(HELPER)],input=data,capture_output=True,timeout=120,cwd='/',env=ENV)
SRC|file=lxc_adapter.py|line=95|text=    p=subprocess.run(['/usr/bin/python3','-I','-B',str(EXEC_HELPER)],input=data,capture_output=True,timeout=timeout+120,cwd='/',env=ENV)
SRC|file=lxc_adapter.py|line=112|text=    except subprocess.TimeoutExpired:
SRC|file=lxc_adapter.py|line=130|text=    ssh=['/usr/bin/ssh','-o','BatchMode=yes','-o','StrictHostKeyChecking=yes','-o','ConnectTimeout=15',f'root@{node}',remote]
SRC|file=lxc_adapter.py|line=133|text=        p=subprocess.Popen(ssh,stdin=subprocess.DEVNULL,stdout=subprocess.PIPE,stderr=subprocess.PIPE,cwd='/',env=ENV,start_new_session=True,close_fds=True)
SRC|file=lxc_adapter.py|line=158|text=        return {'executor':'remote-bounded-ssh-cwd-root','producer_rc':rc,'size':total,'sha256':digest.hexdigest(),
SRC|file=lxc_adapter.py|line=162|text=        summary={'executor':'remote-bounded-ssh-cwd-root','producer_rc':None if p is None else p.returncode,'archive_bytes':total,
SRC|file=lxc_adapter.py|line=199|text=        legacy.ssh_remote(node,['install','-d','-m','710','-o','0','-g','100000',scratch],timeout=30)
SRC|file=lxc_adapter.py|line=200|text=        q=legacy.ssh_remote(node,['stat','-c','%a:%u:%g',scratch],timeout=30)
SRC|file=lxc_adapter.py|line=213|text=            legacy.ssh_remote(node,['rm','-rf','--',scratch],timeout=60,check=False); raise
SRC|file=producer_exec_helper.py|line=1|text=from __future__ import annotations
SRC|file=producer_exec_helper.py|line=2|text=import hashlib, json, os, pathlib, sys
SRC|file=producer_exec_helper.py|line=29|text=    import adapter
SRC|file=producer_exec_helper.py|line=50|text=    import adapter
SRC|file=qemu_adapter.py|line=1|text=from __future__ import annotations
SRC|file=qemu_adapter.py|line=2|text=import hashlib, json, pathlib, re
SRC|file=qemu_adapter.py|line=12|text=    p=legacy.ssh_remote(node,['sha256sum','--',path],timeout=30)
SRC|file=qemu_adapter.py|line=49|text=        legacy.ssh_remote(node,['install','-d','-m','700','-o','0','-g','0',srcdir],timeout=30)
SRC|file=qemu_adapter.py|line=51|text=            vp=legacy.ssh_remote(node,['vzdump',str(vmid),'--mode','snapshot','--compress','zstd','--dumpdir',srcdir],timeout=7200,check=False)
SRC|file=qemu_adapter.py|line=56|text=            p=legacy.ssh_remote(node,['find',srcdir,'-maxdepth','1','-type','f','-printf','%p\n'],timeout=30)
SRC|file=qemu_adapter.py|line=62|text=            q=legacy.ssh_remote(node,['stat','-c','%s','--',src],timeout=30)
SRC|file=qemu_adapter.py|line=69|text=                legacy.run([legacy.SCP,'-q','-o','BatchMode=yes','-o','StrictHostKeyChecking=yes','root@'+node+':'+src,str(local)],timeout=7200)
SRC|file=qemu_adapter.py|line=73|text=            legacy.ssh_remote(node,['rm','-rf','--',srcdir],timeout=60,check=False); raise
SRC|file=scheduler_adapter.py|line=1|text=from __future__ import annotations
SRC|file=scheduler_adapter.py|line=2|text=import json, pathlib
RELEASE_AUTH_MATCH_COUNT=28
RELEASE_IMPORTS_AND_AUTH_SNIPPETS_END=1
RELEASE_AST_CALLS_BEGIN=1
AST_CALL|file=entry504.py|line=29|fn=RuntimeError|src=RuntimeError('BASE_RELEASE_ROOT')
AST_CALL|file=entry504.py|line=60|fn=RuntimeError|src=RuntimeError('LEGACY_PROVENANCE_CARDINALITY')
AST_CALL|file=entry504.py|line=66|fn=RuntimeError|src=RuntimeError('LEGACY_PROVENANCE_API')
AST_CALL|file=entry504.py|line=70|fn=RuntimeError|src=RuntimeError('LEGACY_SCP_API')
AST_CALL|file=entry504.py|line=73|fn=RuntimeError|src=RuntimeError('QEMU_ADAPTER_BIND_RESULT')
AST_CALL|file=entry504.py|line=76|fn=RuntimeError|src=RuntimeError('LXC_ADAPTER_BIND_RESULT')
AST_CALL|file=entry504.py|line=80|fn=RuntimeError|src=RuntimeError('SCHEDULER_ADAPTER_BIND_RESULT')
AST_CALL|file=entry504.py|line=95|fn=RuntimeError|src=RuntimeError('LXC_502_BYTE_IDENTITY')
AST_CALL|file=entry504.py|line=101|fn=RuntimeError|src=RuntimeError('TARGET_CARDINALITY')
AST_CALL|file=entry504.py|line=107|fn=RuntimeError|src=RuntimeError('PATCH_BINDING')
AST_CALL|file=entry504.py|line=109|fn=RuntimeError|src=RuntimeError('SCHEDULER_CHOOSE_BINDING')
AST_CALL|file=entry504.py|line=111|fn=RuntimeError|src=RuntimeError('SCHEDULER_WRITE_BINDING')
AST_CALL|file=entry504.py|line=113|fn=RuntimeError|src=RuntimeError('SCHEDULER_BACKOFF_CONTRACT')
AST_CALL|file=entry504.py|line=115|fn=RuntimeError|src=RuntimeError('WRAPPER_PUBLIC_API')
AST_CALL|file=entry504.py|line=33|fn=RuntimeError|src=RuntimeError('BASE_RELEASE_FILE_'+rel)
AST_CALL|file=entry504.py|line=69|fn=isinstance|src=isinstance(g.get('SCP'),str)
AST_CALL|file=entry504.py|line=69|fn=startswith|src=g['SCP'].startswith('/')
AST_CALL|file=entry504.py|line=129|fn=RuntimeError|src=RuntimeError('SCHEDULER_PROOF_BASE')
AST_CALL|file=entry504.py|line=170|fn=RuntimeError|src=RuntimeError('PLAN_TARGET_NOT_LEGACY_LXC')
AST_CALL|file=entry504.py|line=177|fn=RuntimeError|src=RuntimeError('VERIFY_SYNTHETIC_CT112_FORBIDDEN')
AST_CALL|file=entry504.py|line=69|fn=g.get|src=g.get('SCP')
AST_CALL|file=entry504.py|line=132|fn=tempfile.TemporaryDirectory|src=tempfile.TemporaryDirectory(prefix='homelab-scheduler-proof-',dir='/run')
AST_CALL|file=entry504.py|line=143|fn=RuntimeError|src=RuntimeError('SCHEDULER_PROOF_PEER_NOT_SELECTED')
AST_CALL|file=entry504.py|line=146|fn=RuntimeError|src=RuntimeError('SCHEDULER_PROOF_FAILURE_STATE')
AST_CALL|file=entry504.py|line=149|fn=RuntimeError|src=RuntimeError('SCHEDULER_PROOF_RETRY_NOT_REELIGIBLE')
AST_CALL|file=entry504.py|line=153|fn=RuntimeError|src=RuntimeError('SCHEDULER_PROOF_SUCCESS_RESET')
AST_CALL|file=fresh_lxc_helper.py|line=12|fn=RuntimeError|src=RuntimeError(code)
AST_CALL|file=lxc_adapter.py|line=36|fn=legacy.ssh_remote|src=legacy.ssh_remote(node,['sha256sum','--',path],timeout=30)
AST_CALL|file=lxc_adapter.py|line=44|fn=_j|src=_j(legacy.ssh_remote(node,['pvesh','get','/cluster/resources','--type','vm','--output-format','json'],timeout=60),'RESOURCES_JSON')
AST_CALL|file=lxc_adapter.py|line=45|fn=_j|src=_j(legacy.ssh_remote(node,['pvesh','get',f'/nodes/{node}/storage','--output-format','json'],timeout=60),'STORAGE_JSON')
AST_CALL|file=lxc_adapter.py|line=55|fn=_j|src=_j(legacy.ssh_remote(node,['pvesh','get',f'/nodes/{node}/tasks','--limit','999','--output-format','json'],timeout=60),'TASKS_JSON')
AST_CALL|file=lxc_adapter.py|line=57|fn=legacy.ssh_remote|src=legacy.ssh_remote(node,['test','-f','/etc/vzdump.conf'],timeout=30,check=False)
AST_CALL|file=lxc_adapter.py|line=68|fn=subprocess.run|src=subprocess.run(['/usr/bin/python3','-I','-B',str(HELPER)],input=data,capture_output=True,timeout=120,cwd='/',env=ENV)
AST_CALL|file=lxc_adapter.py|line=95|fn=subprocess.run|src=subprocess.run(['/usr/bin/python3','-I','-B',str(EXEC_HELPER)],input=data,capture_output=True,timeout=timeout+120,cwd='/',env=ENV)
AST_CALL|file=lxc_adapter.py|line=44|fn=legacy.ssh_remote|src=legacy.ssh_remote(node,['pvesh','get','/cluster/resources','--type','vm','--output-format','json'],timeout=60)
AST_CALL|file=lxc_adapter.py|line=45|fn=legacy.ssh_remote|src=legacy.ssh_remote(node,['pvesh','get',f'/nodes/{node}/storage','--output-format','json'],timeout=60)
AST_CALL|file=lxc_adapter.py|line=52|fn=_j|src=_j(legacy.ssh_remote(node,['pvesh','get',f'/nodes/{node}/{r["type"]}/{rid}/config','--output-format','json'],timeout=60),'CONFIG_JSON')
AST_CALL|file=lxc_adapter.py|line=55|fn=legacy.ssh_remote|src=legacy.ssh_remote(node,['pvesh','get',f'/nodes/{node}/tasks','--limit','999','--output-format','json'],timeout=60)
AST_CALL|file=lxc_adapter.py|line=133|fn=subprocess.Popen|src=subprocess.Popen(ssh,stdin=subprocess.DEVNULL,stdout=subprocess.PIPE,stderr=subprocess.PIPE,cwd='/',env=ENV,start_new_session=True,close_fds=True)
AST_CALL|file=lxc_adapter.py|line=199|fn=legacy.ssh_remote|src=legacy.ssh_remote(node,['install','-d','-m','710','-o','0','-g','100000',scratch],timeout=30)
AST_CALL|file=lxc_adapter.py|line=200|fn=legacy.ssh_remote|src=legacy.ssh_remote(node,['stat','-c','%a:%u:%g',scratch],timeout=30)
AST_CALL|file=lxc_adapter.py|line=52|fn=legacy.ssh_remote|src=legacy.ssh_remote(node,['pvesh','get',f'/nodes/{node}/{r["type"]}/{rid}/config','--output-format','json'],timeout=60)
AST_CALL|file=lxc_adapter.py|line=59|fn=legacy.ssh_remote|src=legacy.ssh_remote(node,['cat','--','/etc/vzdump.conf'],timeout=30)
AST_CALL|file=lxc_adapter.py|line=213|fn=legacy.ssh_remote|src=legacy.ssh_remote(node,['rm','-rf','--',scratch],timeout=60,check=False)
AST_CALL|file=producer_exec_helper.py|line=16|fn=RuntimeError|src=RuntimeError(code)
AST_CALL|file=qemu_adapter.py|line=12|fn=legacy.ssh_remote|src=legacy.ssh_remote(node,['sha256sum','--',path],timeout=30)
AST_CALL|file=qemu_adapter.py|line=49|fn=legacy.ssh_remote|src=legacy.ssh_remote(node,['install','-d','-m','700','-o','0','-g','0',srcdir],timeout=30)
AST_CALL|file=qemu_adapter.py|line=51|fn=legacy.ssh_remote|src=legacy.ssh_remote(node,['vzdump',str(vmid),'--mode','snapshot','--compress','zstd','--dumpdir',srcdir],timeout=7200,check=False)
AST_CALL|file=qemu_adapter.py|line=56|fn=legacy.ssh_remote|src=legacy.ssh_remote(node,['find',srcdir,'-maxdepth','1','-type','f','-printf','%p\n'],timeout=30)
AST_CALL|file=qemu_adapter.py|line=62|fn=legacy.ssh_remote|src=legacy.ssh_remote(node,['stat','-c','%s','--',src],timeout=30)
AST_CALL|file=qemu_adapter.py|line=69|fn=legacy.run|src=legacy.run([legacy.SCP,'-q','-o','BatchMode=yes','-o','StrictHostKeyChecking=yes','root@'+node+':'+src,str(local)],timeout=7200)
AST_CALL|file=qemu_adapter.py|line=73|fn=legacy.ssh_remote|src=legacy.ssh_remote(node,['rm','-rf','--',srcdir],timeout=60,check=False)
RELEASE_AST_CALL_COUNT=52
RELEASE_AST_CALLS_END=1
AUTH_PATTERN|name=VPS_MD|count=0|files=
AUTH_PATTERN|name=SSH|count=4|files=lxc_adapter.py
AUTH_PATTERN|name=SCP|count=2|files=entry504.py,qemu_adapter.py
AUTH_PATTERN|name=RSYNC|count=0|files=
AUTH_PATTERN|name=HOSTKEY|count=2|files=lxc_adapter.py,qemu_adapter.py
AUTH_PATTERN|name=IDENTITY|count=2|files=lxc_adapter.py
AUTH_PATTERN|name=BATCH|count=2|files=lxc_adapter.py,qemu_adapter.py
AUTH_PATTERN|name=OPS_USER|count=0|files=
RELEASE_AUTH_CLASS=VPS_MD_HANDLER_NOT_LOCATED
DECISION=PASS_MOLDOVA_1146_RELEASE_AUTH_EXACT_COLLECTED
NEXT_GATE=READ_EXACT_1146_AND_BUILD_REMOTE_ROLE_PREFLIGHT_FROM_RELEASE_CODE
TASK_RESULT=PASS_MOLDOVA_RELEASE_AUTH_EXACT
HOMELAB_RESULT_CONTRACT={"version":1,"command_id":"SUPPORT-260924-HOMELAB-MOLDOVA-RELEASE-AUTH-EXACT-1146R1","status":"OK","changes_made":false,"rollback_started":false,"rollback_restored":null}
WORKERS2_MOLDOVA_RELEASE_AUTH_EXACT_END=1

OUTPUT_END
CHAT_OUTPUT_END
