#!/usr/bin/env python3
"""Single canonical key per actual route. No prefix deployment claims."""
import hashlib
import json
import subprocess
import sys
from pathlib import Path
import integrate_20261010 as tool
from integrate_20261011_batches46_48 import item

REPORT = 'work/2026-09-28-smart-canteen-dm8-poc/matrix-integration/ROOT_ACCEPTANCE_20261014_1021_1181.md'

def verify():
    base = tool.ROOT.parent / 'worktrees/dm8-compat-20261012/private-prepay-harness'
    for name, sha, key, count in [
        ('review-staff1021/verify.py', '170817d5ba3d8dde524ffa752803fc3fe1e697b8b8fb9dc9e25adb1a130f8bfa', 'independent_checks', 4852),
        ('review-bank1181/verify_independent.py', '49002b493cb9c663d6f3ff549b29f5b97b16c41c2d6e7e0ce2b83eb1984b7972', 'checks', 19026),
    ]:
        p = base / name
        assert hashlib.sha256(p.read_bytes()).hexdigest() == sha
        r = json.loads(subprocess.check_output([sys.executable, '-B', str(p)]))
        assert r[key] == count and r['new_SQL'] == r['new_HTTP'] == 0

if __name__ == '__main__':
    audit = Path(__file__).with_name('integration-20261014-staff-bank.json')
    assert not audit.exists(), 'Never replay main'
    rows = [
        item('store', 'POST', '/p/staff/update', '', evidence=REPORT,
             scope='owned-hidden-staff-name-update-original-six-DML-transaction-no-User',
             success_case='partial-evidence-name-only-original-transaction-lowest-AI-http-synthetic-id0',
             readback='tested-pass-Staff77-Department23-relation-native-commit-new-PDO-readback',
             parity='partial-evidence-full-body-values-types-identical-headers-not-complete',
             cleanup='marked-own-test-rows-retained-workers-stopped'),
        item('ai_api', 'POST', '/api/Bank/smartCanteenUrl', '', evidence=REPORT,
             scope='original-school-config-empty-oauth-read-real-crypto-fake-lowest-transport',
             success_case='partial-evidence-original-nine-field-response-one-positive-one-missing-user',
             missing_required='partial-evidence-original-missing-user-status500-empty-array',
             readback='tested-pass-all-owned-Store-school-config-columns-values-types-unchanged',
             parity='partial-evidence-complete-JSON-types-values-source-derived-real-bank-not-tested',
             request_type='application/x-www-form-urlencoded',
             cleanup='three-synthetic-rows-retained-private-workers-stopped'),
    ]
    tool.main(rows, audit, verify)
