#!/usr/bin/env python3
"""Recover historical Read7 evidence; no new requests or duplicated wallet key."""
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/read7-recovery-20261012')
BASE = 'work_store/apifox/2026-09-30-dm8-interface-acceptance/parallel-read7-recovery-20261012/'


def verify():
    for name, digest in [
        ('REPORT.md', 'c02dca2efa3637e997521ce956119b9a09d32fdca18344a92d7b830f62f83dd4'),
        ('manifest.json', 'a4454e5392cf3d09a473aca5642461b2f14cb26b8774c4d71a7b6cdbab911336'),
        ('verify.js', '6c998f9d9f3ffa6cc551e4592b35ae81fdad31625ea826fdc17c233d58f96573'),
        ('audit.json', '18bbe78a590a49d24c33c5cb26b3f0a85990288ffa8dcc00dd3e13b92a6c3865'),
    ]:
        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'] == 1445 and r['assets'] == 237
    assert len(r['new_canonical_keys']) == 4
    assert r['already_covered_key'] == 'POST /p/walletFlow/departments'
    source = json.loads((PRIVATE / 'source-review-v2.json').read_text())
    for lane in ['B', 'C']:
        s = r['sides'][lane]
        assert s['HTTP'] == 12 and s['keys'] == 7 and s['success'] == 8 and s['alias_failures'] == 4
        for pin in source['sides'][lane]['actual_included']:
            path = Path(pin['file'])
            assert not path.is_absolute() and '..' not in path.parts
            assert hashlib.sha256((tool.source_root('store') / 'application' / path).read_bytes()).hexdigest() == pin['old_SHA'] == pin['current_SHA']


if __name__ == '__main__':
    audit = HERE / 'integration-20261012-batch145.json'
    assert not audit.exists()
    specs = []
    for method, path in [('GET', '/p/consumeSubsidy/config'), ('GET', '/p/consumeSubsidy/result'),
                         ('POST', '/p/prints/print_list'), ('POST', '/p/prints/print_content')]:
        specs.append(item('store', method, path, BASE,
            from_repo='unreviewed', from_source='apifox-2026-05-08',
            risk='historical-readonly-no-real-print-or-subsidy-write',
            readback='tested-pass-historical-20261011-original-HTTP-and-independent-source-DTO',
            parity='partial-evidence-historical-typed-ordered-source-projection-called-files-current-SHA-same',
            cleanup='historical-actor-cache-worker-cleanup-proven-recovery-zero-DB-HTTP'))
    specs.append(item('store', 'POST', '/p/walletFlow/departments', BASE, evidence_only=True))
    for action in ['config', 'result']:
        specs.append(item('store', 'GET', '/p/consumeSubsidyLower/' + action, BASE,
            from_repo='unreviewed', from_source='apifox-2026-05-08',
            mysql_state='tested-fail-shared-original-module-not-exists-no-DB',
            dm_state='tested-fail-shared-original-module-not-exists-no-DB',
            success_case='tested-fail-original-empty-body-alias-module-error',
            readback='not-applicable-zero-business-native-queries',
            parity='not-compared-no-business-response', scope='no-db-original-route-error'))
    tool.main(specs, audit, verify)
