#!/usr/bin/env python3
"""One bounded nonempty Food/search request per engine, no replay."""
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/next-food-search-20261012')
BASE = 'work_store/apifox/2026-09-30-dm8-interface-acceptance/parallel-food-search-20261012/'


def verify():
    for name, digest in [
        ('manifest.json', 'd380e15651696b2b38c363d5fecf2a7116f06852179adfe6cbf16164523faf49'),
        ('verify.js', '4b69ae61dbefdddcd265c5b4dbd360fb49a490924c9a52bb2eae6d165b2811ae'),
        ('REPORT.md', '17810bcd82aa715cec8155f80930e752551fe40b2a220de5697f999fe6ae58df'),
    ]:
        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'] == 362 and r['assets'] == 24
    assert r['new_keys'] == ['POST /p/food/search']
    for lane, total, native in [('B', 2326, 5), ('C', 2338, 9)]:
        e = r['sides'][lane]
        assert e['HTTP'] == 1 and e['rows'] == 10 and e['total'] == total and e['original_native'] == native
        assert e['source_match'] and e['source_stable']


if __name__ == '__main__':
    audit = HERE / 'integration-20261012-batch136.json'
    assert not audit.exists()
    specs = [item('store', 'POST', '/p/food/search', BASE,
        from_repo='unreviewed', from_source='apifox-2026-05-08',
        scope='readonly-foods-composition-id-name-page1-size10-not-UI-default999999',
        readback='tested-pass-ten-original-rows-order-and-count-source-before-after',
        parity='partial-evidence-each-source-complete-DTO-equal-and-cross-engine-JSON-types-equal',
        cleanup='no-business-writes-actor-config-unchanged-private-runtime-retained')]
    tool.main(specs, audit, verify)
