#!/usr/bin/env python3
"""Purchase approval flow read: actual empty source only, no nonempty claim."""
import hashlib
import json
from pathlib import Path
import subprocess
import integrate_20261010 as tool
from integrate_20261011_batches46_48 import item
HERE = Path(__file__).resolve().parent
P = Path('/Users/wiscourper/Documents/workspace/local/dm8-store-purchase-read3-20261012.L5dTYR/stage3')
BASE = 'work_store/apifox/2026-09-30-dm8-interface-acceptance/parallel-store-purchase-read3-20261012/'
REPORT = BASE + 'PHASE6_ROOT_REVIEW.md'

def verify():
    for name, pin in {
        'REPORT_PHASE6.md': 'e5c89282f48356685b262ac7e090d6643bfa960aa62e36cb6759b0bcc25e33ad',
        'manifest-phase6.json': '2c281f05aa63e29fd3e9617e40da71f87a482d86ddd82089a85ee15f1caa088e',
        'audit-phase6.js': '3b3cc7a27ea1116bc5c2e369fa19e0ef903bc63eff757c5bf2ca55ef2525d770',
    }.items():
        assert hashlib.sha256((P/name).read_bytes()).hexdigest() == pin
    r = json.loads(subprocess.check_output(['node', str(P/'audit-phase6.js'), '--readonly']))
    assert r['readonly'] and r['checks'] == 65 and r['assets'] == 33
    assert r['classification'] == 'limited-empty-source'
    assert r['new_key'] == 'POST /p/PurchaseFlow/info'
    assert r['continuous'] == {'B':1795, 'C':2295}

if __name__ == '__main__':
    audit = HERE/'integration-20261012-batch118.json'
    assert not audit.exists()
    targets = [item('store','POST','/p/PurchaseFlow/info',BASE,evidence=REPORT,
        from_repo='unreviewed',from_source='apifox-2026-05-08',
        mysql_state='partial-evidence-actual-empty-source-HTTP200-original-observer-false-preserved',
        dm_state='partial-evidence-actual-empty-source-HTTP200',
        readback='partial-evidence-original-parent-SELECT-fetchAll-zero-three-source-buckets-unchanged',
        success_case='partial-evidence-empty-approval-flow-only-nonempty-unverified',
        parity='partial-evidence-wire-hash-types-equal-full-raw-not-captured-known-empty-body-derivation-only',
        cleanup='no-fixtures-or-DML-worker-retained-continuous-read-count-not-reset')]
    tool.main(targets,audit,verify)
