from pathlib import Path
import json,hashlib,shutil
H=Path(__file__).resolve().parent;P=H.parent/'parallel-ai-scale-owned-source-20261011';OLD=Path('/tmp/cdx-ai-scale-owned-flow-20261011');R=Path('/tmp/cdx-ai-scale-datetime-read4-20261011');MAIN=Path('/Users/wiscourper/Documents/workspace/zhct/zhctproject/ai_api');F=Path('/Users/wiscourper/Documents/workspace/zhct/zhctprompt/work/2026-09-28-smart-canteen-dm8-poc/matrix-integration/AI_RUNTIME_SOURCE_20261011_1230.json')
assert not R.exists();R.mkdir(mode=0o700);(H/'tools').mkdir(exist_ok=True);(R/'source').mkdir(mode=0o700);pins=json.loads(F.read_text());assert len(pins['files'])==6169
for n,d in pins['files'].items():
 p=MAIN/n;assert hashlib.sha256(p.read_bytes()).hexdigest()==d;q=R/'source'/n;q.parent.mkdir(parents=True,exist_ok=True);shutil.copyfile(p,q)
for q in (H/'source-frozen-sha.json',R/'source-frozen-sha.json'):q.write_text(json.dumps(pins,indent=2)+'\n')
for p in (P/'execution/tools').glob('*.php'):
 raw=p.read_text()
 if p.name=='native.php':raw=raw.replace('6168','6169')
 if p.name=='source-state.php':raw=raw.replace('6168','6169')
 if p.name=='app.php':raw=raw.replace('CDXOWNSCALE11','CDXSCALEDTREAD11').replace('owned-scale.invalid','owned-scale-date.invalid')
 if p.name=='launch.php':raw=raw.replace('19021:19022','19031:19032')
 if p.name=='NativePdo.php':raw=raw.replace('$n<1000','$n<600').replace('Unified SQL cap1000','Unified SQL cap600')
 for q in (H/'tools'/p.name,R/p.name):q.write_text(raw)
keys=['AI_U1','AI_U2','STORE_U1','STORE_U2','account_settlement','user_balance_log','user_subsidy','user_gift_log','meal_order','initial_menu','meal_order_pickup']
for lane in ('B','C'):
 d=R/f'seed-{lane}';d.mkdir(mode=0o700);src=OLD/f'private-{lane}-final';final=json.loads((src/'final-capture.json').read_text())
 for name in ['prepared.json',f'preflight-{lane}.json','prior-persistence.json','owned-actor.json','schema.json','store-schema.json','scale-flow.json','scale-flow-after-W2.json']:
  shutil.copyfile(src/name,d/name);(d/name).chmod(0o600)
 data={'AI-baseline.json':final['AI'],'scale-baseline.json':final['scale'],'disease-baseline.json':final['protection']['related'],'fund-baseline.json':{k:final['protection']['old']['core'][k] for k in keys}}
 for name,v in data.items():(d/name).write_text(json.dumps(v,ensure_ascii=False,indent=2)+'\n');(d/name).chmod(0o600)
 for label in ['R1_WELLAND_BY_DATE','R2_YUNKANGBAO_BY_DATE']:
  shutil.copyfile(src/f'response-{label}.json',d/f'old-response-{label}.json');(d/f'old-response-{label}.json').chmod(0o600)
plan={'status':'ROOT_AUTHORIZED_ONLY4READ_NO_PREPARE_DMLDDL','source_runtime_manifest':str(F),'source_runtime_manifest_SHA':hashlib.sha256(F.read_bytes()).hexdigest(),'source_files':6169,'root_review':'SCALE_MAIN_REVIEW_20261011.json','ports':{'B':19031,'C':19032},'cases':[{'label':'R1_WL_BY_DATE','method':'GET','path':'/api/WellandScale/byDate','query':'date=2026-10-11','body_raw':''},{'label':'R2_QN_BY_DATE','method':'GET','path':'/api/YunkangbaoScale/byDate','query':'date=2026-10-11','body_raw':''},{'label':'R3_WL_LATEST','method':'POST','path':'/api/WellandScale/latest','query':'','body_raw':'{}'},{'label':'R4_QN_LATEST','method':'GET','path':'/api/YunkangbaoScale/latest','query':'','body_raw':''}],'authority':'Root eachside4HTTP/0prepareDMLDDL/read600/preflight180/nativeB60C120/token1; exact B datetime_precision0; C physical6 unchanged; own10measurement and ownAI/funds strict; no globalStoreStaff claim; Prepay raw released; no outside/UserApi/Serve; old success writer never replay'}
for q in (H/'execution-plan.json',R/'execution-plan.json'):q.write_text(json.dumps(plan,ensure_ascii=False,indent=2)+'\n')
print(json.dumps({'source_files':6169,'DB':0,'HTTP':0,'DMLDDL':0}))
