#!/usr/bin/env python3
"""Private read-only dual-version CLI; secrets only inherited in memory."""
import hashlib,json,os,pathlib,resource,subprocess,sys
root=pathlib.Path(__file__).resolve().parent
if not str(root).startswith('/tmp/cdx-gift-read-'):raise SystemExit('private root gate')
runtime=root/'runtime'
runtime.mkdir(mode=0o700,exist_ok=True)
cmd=pathlib.Path('/proc/53772/cmdline').read_bytes()
if b'127.0.0.1:18102' not in cmd:raise SystemExit('approved environment source drift')
live={k.decode():v.decode() for k,v in (x.split(b'=',1) for x in pathlib.Path('/proc/53772/environ').read_bytes().split(b'\0') if b'=' in x)}
env={k:v for k,v in os.environ.items() if not k.startswith(('POC_','SHADOW_','DM_PROBE_','S2_'))}
for key in ('LD_LIBRARY_PATH','DM_SVC_PATH'):
    if key in live:env[key]=live[key]
for key in ('HOST','PORT','SCHEMA','USER','PASSWORD'):env['SHADOW_'+key]=live['POC_AI_'+key]
if (env['SHADOW_HOST'],env['SHADOW_PORT'],env['SHADOW_SCHEMA'])!=('127.0.0.1','5238','AIZHCT_APP'):raise SystemExit('approved target gate')
env.update(S2_ASSETS=str(root),S2_RUNTIME=str(runtime),S2_APP_ROOT='/tmp/cdx-coupon-http-C-9LLQWL/app-root')
def core0():resource.setrlimit(resource.RLIMIT_CORE,(0,0))
out=[]
for key in ('73','74'):
    args=['/www/server/php/'+key+'/bin/php','-n','-d','extension=/home/dmdba/dmdbms/drivers/php_pdo/libphp'+key+'_dm.so','-d','extension=/home/dmdba/dmdbms/drivers/php_pdo/php'+key+'_pdo_dm.so',str(root/'GiftReadProbe.php')]
    p=subprocess.run(args,env=env,cwd=str(root),stdout=subprocess.PIPE,stderr=subprocess.PIPE,timeout=45,preexec_fn=core0)
    try:r=json.loads(p.stdout)
    except (ValueError,UnicodeError):r={'status':'invalid_output','stdout_sha256':hashlib.sha256(p.stdout).hexdigest()}
    out.append({'version_key':key,'exit_code':p.returncode,'stderr_bytes':len(p.stderr),'stderr_sha256':hashlib.sha256(p.stderr).hexdigest(),'report':r})
    if p.returncode!=0 or p.stderr or r.get('status')!='pass':break
print(json.dumps({'scope':'fixed-five-row-readonly','runs':out},ensure_ascii=False,sort_keys=True))
raise SystemExit(0 if len(out)==2 and all(r['exit_code']==0 and r['stderr_bytes']==0 and r['report'].get('status')=='pass' for r in out) else 1)
