import importlib.util
from pathlib import Path

spec=importlib.util.spec_from_file_location('transport','/tmp/codex/ltb1021/2026-10-06_icerti-ai2-deploy_r01/remote.py')
remote=importlib.util.module_from_spec(spec);spec.loader.exec_module(remote)
CODE=r'''
import json,os,signal,sys,time
from pathlib import Path
signal.alarm(30)
sys.path.insert(0,'/usr/local/lib/contextra-maintenance/portable-20261006T192646')
import field_profiles as fp,field_resources as resources,server_context as server
server.verify_tools()
hosts=[p for p in resources.snapshot() if p['role']=='vscode-extensionHost' and p['uid']==fp.account().pw_uid]
assert len(hosts)==1,'RECHECK_EXTENSION_HOST_SELECTION'
p=hosts[0];parent=resources.process(p['ppid'])
print('BEFORE',json.dumps(p))
# User explicitly confirmed saved files and approved this extension host only.
resources.stop(p,True)
time.sleep(5)
still=resources.process(parent['pid'])
assert still['start_ticks']==parent['start_ticks'],'PARENT_CHANGED'
def sample():
    v=list(map(int,Path('/proc/stat').read_text().splitlines()[0].split()[1:9]));return sum(v),v[3]+v[4]
a=sample();time.sleep(5);b=sample()
rows=resources.snapshot()
hosts=[p for p in rows if p['role']=='vscode-extensionHost']
searches=[p for p in rows if p['role']=='vscode-file-search']
mem={k:int(v.split()[0]) for k,v in (line.split(':',1) for line in Path('/proc/meminfo').read_text().splitlines()) if k in ('MemAvailable','MemTotal')}
print('AFTER',json.dumps(dict(cpu_average=round(100*(1-(b[1]-a[1])/(b[0]-a[0])),1),extension_hosts=hosts,searches=searches,memory_kib=mem,vscode_parent_preserved=True)))
'''
raw=remote.run(CODE,root=True,timeout=40)
p=Path(__file__).parent/'recovery.log';p.write_text(raw);p.chmod(0o600)
print(raw)
