import subprocess,json,pathlib,os def run(*a):return subprocess.check_output(a,text=True,stderr=subprocess.STDOUT) gpu=json.loads(run('docker','inspect','h3-caption-gpu3-canary-8a5f'))[0] env=dict(x.split('=',1) for x in gpu['Config']['Env']) print('history environment',{k:v for k,v in env.items() if k.startswith('H3_HISTORY')}) for k in ('H3_WORKER_CONTROL_FILE','H3_CANARY_TOKEN_FILE'): print(k,env.get(k)) for m in gpu['Mounts']: if m['Destination'] in ('/h3-process-launch.py','/run/h3-control','/app/custom_nodes','/run/h3-history.json'): p=pathlib.Path(m['Source']);print('path',str(p),'writable',os.access(p,os.W_OK)) if p.name=='process_launch.py': print(p.read_text()[:12000]) print('GPU3 main boot',run('docker','exec','h3-caption-gpu3-canary-8a5f','python','-c',"from pathlib import Path; p=Path('/app/main.py');s=p.read_text();print(s[:7000])")) normal=json.loads(run('docker','inspect','canvas-h3-prompt-normalizer-healthy-20261026'))[0] en=dict(x.split('=',1) for x in normal['Config']['Env']);fn=en.get('COMFY_ADMISSION_FILE');print('admission file',fn) for m in normal['Mounts']: if fn and fn.startswith(m['Destination']+'/'): p=pathlib.Path(m['Source'])/fn[len(m['Destination'])+1:];print('admission host',str(p),'writable',os.access(p,os.W_OK),'content',p.read_text())