#!/usr/bin/env python3
"""Record real Config reads without treating synthetic Coze data as business CRUD."""
import hashlib
import json
import subprocess
from pathlib import Path
import integrate_20261010 as tool
from integrate_20261011_batches46_48 import item

HERE = Path(__file__).resolve().parent
PRIVATE = tool.ROOT.parent.parent / 'local/dm8-store-purchase-read3-20261012.L5dTYR/stage3/knowledgebase-http179-20261013'
BASE = 'work_store/apifox/2026-09-30-dm8-interface-acceptance/parallel-knowledge-config-boundary-20261013/'


def verify():
    for name, digest in [
        ('REPORT179.md', '1c8a8dd65e012d660cef46876bc87c84278c93a022fdc4c02acb26a9db97d16d'),
        ('manifest179.json', '1b8655ea319298b5c22ab4243da89cef5dfd22c921d0bdd6155c848b790de30b'),
        ('verify179.js', '415502673d09d5e8eea22900287d9db01f02157f837c12068bb4d6067f2c022d'),
        ('plan179.json', 'caf95ce7b12ed0470670a6b47e63f88b489a7df16580722b61051e0944199e00'),
    ]:
        assert hashlib.sha256((PRIVATE / name).read_bytes()).hexdigest() == digest
    r = json.loads(subprocess.check_output(['node', str(PRIVATE / 'verify179.js'), '--readonly']))
    assert r['passed'] and r['checks'] == 1216 and r['assets'] == 218 and r['keys'] == 20
    assert r['DML'] == r['DDL'] == r['transactions'] == r['AI'] == r['real_external'] == 0
    assert not r['Coze_landing_tested'] and r['classification'] == 'limited-real-config-boundary'
    assert r['sides']['B']['reads'] == 99 and r['sides']['C']['reads'] == 142
    plan = json.loads((PRIVATE / 'plan179.json').read_text())
    for case in plan['cases']:
        sides = [json.loads((PRIVATE / (side + '/wire-' + case['label'] + '.json')).read_text()) for side in ('B', 'C')]
        if case['action'] == 'diagnostics':
            assert all(x['masked_not_original_wire'] and x['sensitive_comparison_RAM_only'] for x in sides)
            assert sides[0]['masked_body'] == sides[1]['masked_body']
        else:
            assert sides[0]['original_body_base64'] == sides[1]['original_body_base64']
    sources = json.loads((PRIVATE / 'source179-map.json').read_text())
    for spec in sources['files']:
        if spec['path'].startswith('application/'):
            assert hashlib.sha256((tool.source_root('store') / spec['path']).read_bytes()).hexdigest() == spec['sha256']


if __name__ == '__main__':
    audit = HERE / 'integration-20261013-batch179.json'
    assert not audit.exists()
    cases = json.loads((PRIVATE / 'plan179.json').read_text())['cases']
    specs = [item('store', c['method'], c['literal_path'], BASE,
        risk='real-config-fallback-read-original-controller-auth-transport-only-Coze-fixture',
        mysql_state='partial-evidence-real-config-read-only-external-transport-stubbed',
        dm_state='partial-evidence-real-config-read-only-external-transport-stubbed',
        success_case='partial-evidence-limited-config-DB-boundary-not-Coze-business-CRUD',
        readback='tested-pass-native-coze-auth-select-fetch-source-token-header-match-config-and-actor-unchanged',
        parity='partial-evidence-two-sensitive-diagnostics-RAM-MAC-and-eighteen-original-wire-pairs',
        cleanup='own-workers-tokens-cache-zero-configuration-unchanged-no-real-external') for c in cases]
    tool.main(specs, audit, verify)
