#!/usr/bin/env python3
"""Run only Root's two approved C schema statements; never auto rollback/replay."""
import base64
import hashlib
import json
import re
import shlex
import subprocess
from pathlib import Path

root = Path(__file__).parent
sql_bytes = (root/'business-forward-proposal.sql').read_bytes()
assert hashlib.sha256(sql_bytes).hexdigest() == 'c1a05b964267d00f3d29d01cffcb50d063fdb1674aec9f6c5d323d9a870784ec'
sql = '\n'.join(line for line in sql_bytes.decode().splitlines() if not line.lstrip().startswith('--')).strip()
alter, trigger = sql.split(';', 1)
statements = [alter.strip()+';', trigger.strip().removesuffix('/').strip()]
assert statements[0].startswith('ALTER TABLE') and statements[1].startswith('CREATE TRIGGER')
assert 'OR REPLACE' not in sql
expected = json.loads((root/'private-evidence/C-fresh-v3.json').read_text())
workspace = root.parents[3]
source_files = ['application/p/logic/MaterialCategory.php','application/model/MaterialCategory.php','application/model/BaseModel.php','application/cores/database/Dm.php']
expected_sources = {file:hashlib.sha256((workspace/'zhctproject/store'/file).read_bytes()).hexdigest() for file in source_files}
inputs = {'expected':expected,'expectedSources':expected_sources,'statements':statements}
prefix = '<?php\n'
for key, value in inputs.items():
    encoded = base64.b64encode(json.dumps(value,ensure_ascii=False).encode()).decode()
    prefix += '$'+key+'=json_decode(base64_decode('+repr(encoded)+'),true);\n'
payload = prefix.encode() + (root/'schema-run.php').read_bytes().removeprefix(b'<?php')
php='/www/server/php/73/bin/php'
child=php+' -c /www/server/php/73/etc/php-cli.ini -d extension=/home/dmdba/dmdbms/drivers/php_pdo/libphp73_dm.so -d extension=/home/dmdba/dmdbms/drivers/php_pdo/php73_pdo_dm.so'
wrapper='$env=[];foreach(explode(chr(0),file_get_contents("/proc/112175/environ")) as $s){$v=explode("=",$s,2);if(count($v)===2)$env[$v[0]]=$v[1];}if(($env["POC_EXTERNAL_STUBS"]??"")!=="1"||($env["POC_REAL_QUEUE"]??"0")!=="0")exit(78);$env["PM_LANE"]="C";$env["PM_ROOT"]="/tmp/zhct-dm-poc-20260928.fcpiiN/store";$p=proc_open('+repr(child)+',[0=>STDIN,1=>STDOUT,2=>STDERR],$pipes,null,$env);exit(proc_close($p));'
evidence=root/'schema-private-evidence'
evidence.mkdir(mode=0o700,exist_ok=True)
assert not (evidence/'C-schema.jsonl').exists(), 'Never blindly replay unknown DDL state'
with (evidence/'C-schema.jsonl').open('xb') as output, (evidence/'C-schema.stderr').open('xb') as error:
    (evidence/'C-schema.jsonl').chmod(0o600);(evidence/'C-schema.stderr').chmod(0o600)
    result=subprocess.run(['ssh','-S','/private/tmp/cdx-train-root-20261010.sock','-o','BatchMode=yes','root@121.43.241.161',php+' -r '+shlex.quote(wrapper)],input=payload,stdout=output,stderr=error,check=False)
print('C schema exit', result.returncode)
raise SystemExit(result.returncode)
