#!/usr/bin/env python3
"""Two real report SQL paths, conservatively limited until stated gaps close."""
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 = Path('/Users/wiscourper/Documents/workspace/local/dm8-store-purchase-read3-20261012.L5dTYR/stage3/report-retest-pool-20261012')
BASE = 'work_store/apifox/2026-09-30-dm8-interface-acceptance/parallel-overview-retest-20261012/'


def verify():
    for name, digest in [
        ('REPORT.md', '9c8a64deabb1d0adb2f99263af973d1302db2d75877e829304910e7746c44635'),
        ('manifest.json', 'e02db9cf2536a963f101beb10897db9b073b3f703ff8c1fbdd9fbaef6aa29209'),
        ('verify.js', 'ea85e1160a328de6f8cdb7b20383867854e53e95c9efe700b7d328e4595dd656'),
        ('audit.json', '533552b29476184f2a90602c5d6851636af30b2642ae5f88163dd54885f67002'),
    ]:
        assert hashlib.sha256((PRIVATE / name).read_bytes()).hexdigest() == digest
    r = json.loads(subprocess.check_output(['node', str(PRIVATE / 'verify.js'), '--readonly']))
    assert r['readonly'] and r['checks'] == 1713 and r['assets'] == 57
    for lane in ['B', 'C']:
        s = r['sides'][lane]
        assert s['HTTP'] == 2 and s['owner_and_links_empty'] and s['protected_equal'] and s['actor_config_equal']
        dashboard, operations = s['cases']['B'], s['cases']['C']
        assert dashboard['business_SELECTs'] == 4 and operations['business_SELECTs'] == 6
        assert not dashboard['full_typed_match'] and operations['full_typed_match']
        assert dashboard['business_completed_count'] > 0
        assert dashboard['scope_derived'] and operations['scope_derived']
    assert all(v == 0 for v in r['sides']['C']['cases']['C']['source_counts'].values())
    assert hashlib.sha256((tool.source_root('store') / 'application/p/logic/MealOrder.php').read_bytes()).hexdigest() == '33c0a7be0f0cd88c0ce91861f6372c2579cf048b57ed757b54ce088cc3d9765f'


if __name__ == '__main__':
    audit = HERE / 'integration-20261012-batch144.json'
    assert not audit.exists()
    specs = []
    for action, limitation in [('dashboardOverview', 'nonempty-aggregation-ordered-hot-dishes-contract-open'),
                               ('operationsOverview', 'source-matched-DM-empty-cohorts-only')]:
        specs.append(item('store', 'POST', '/p/mealOrder/' + action, BASE,
            from_repo='unreviewed', from_source='apifox-2026-05-08',
            mysql_state='partial-evidence-' + limitation,
            dm_state='partial-evidence-' + limitation,
            risk='read-only-single-approved-restaurant-financial-report',
            readback='partial-evidence-original-business-SELECT-fetch-and-stable-source',
            success_case='partial-evidence-' + limitation,
            parity='partial-evidence-' + limitation,
            cleanup='no-writes-original-actor-and-ACL-unchanged-private-runtime-retained'))
    tool.main(specs, audit, verify)
