#!/usr/bin/env python3
"""Root intake of seven existing routes; preserve three genuine contract reds."""
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_1401_1421_1441.md'

def verify():
    base = tool.ROOT.parent / 'worktrees/dm8-compat-20261012/private-prepay-harness'
    for name, sha, key, count in [
        ('review-ai-store1421/verify_independent.py', 'ee92baca0189d8870a37741baf73532f2266cc2ec62120ee7c4d4d51b5613b2b', 'checks', 17940),
        ('review-subsidy1401/verify.py', '0c8926830c7acba079219a6df001ef9a6ed23237e82921a74e6b1e68b168d793', 'independent_checks', 1863),
        ('review-identity1441/verify_independent.py', '1e1bcc47d9dfda6b144c977c624a48fbd2880f7a1332503410e4d676fff8a0e5', 'checks', 17755),
    ]:
        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
        if 'subsidy' in name:
            assert r['evidence_pass'] and not r['compatibility_pass'] and len(r['differences']) == 9
            assert r['new_SQL_HTTP'] == 0
        else:
            assert r['passed'] and r['new_SQL_HTTP_business_CLI'] == 0

if __name__ == '__main__':
    audit = Path(__file__).with_name('integration-20261014-batches1401-1441.json')
    assert not audit.exists(), 'Never replay main'
    rows = []
    for action in ('move', 'recovery'):
        rows.append(item('ai_api', 'POST', '/admin/Store/' + action, '', evidence=REPORT,
            scope='new-disabled-deleted-own-Store-original-recycle-transaction',
            risk='owned-fixture-recycle-state-update-no-account-permission',
            success_case='partial-evidence-own-disabled-deleted-Store-original-POST-native-commit',
            readback='tested-pass-complete-Store18-before-after-16-fixed-fields-empty-associations-new-PDO',
            parity='partial-evidence-full-status200-message-data-empty-array-trace-original-types',
            cleanup='own-deleted-disabled-Store-retained-private-cache-absence-proven-detail-cleanup-summary-overwrite-disclosed'))
    for action in ('detail', 'userList'):
        rows.append(item('store', 'POST', '/api/subsidy/' + action, '', evidence=REPORT,
            from_repo='unreviewed', from_source='apifox-2026-05-08',
            scope='fresh-owned-old-CDXPAY-batch-two-DB-readonly-no-new-funds-or-rows',
            mysql_state='tested-pass', dm_state='tested-fail-money-and-datetime-output-contract',
            success_case='failed-nonempty-money-string-number-and-datetime-format-parity',
            readback='tested-pass-full-own-Staff77-log28-detail15-grant17-unchanged-declared-actor-config-projections',
            parity='failed-nine-field-differences-across-two-responses-original-numeric-userList-push-money-preserved',
            cleanup='old-marked-batch-retained-zero-DML-private-workers-stopped-original-red-sealed'))
    for action in ('create', 'update', 'delete'):
        red = action == 'update'
        rows.append(item('store', 'POST', '/api/identity/' + action, '', evidence=REPORT,
            from_repo='unreviewed', from_source='apifox-2026-05-08',
            scope='new-unreferenced-business-identity-original-CRUD-and-real-audit-no-role-assignment',
            risk='owned-enumeration-CRUD-with-original-audit-separate-commits',
            mysql_state='tested-pass', dm_state='tested-fail-create-time-zero-fraction-DTO' if red else 'tested-pass',
            success_case='failed-update-create-time-format-difference' if red else 'partial-evidence-own-unreferenced-identity-and-original-audit',
            readback='tested-pass-complete-own-identity9-audit20-bind-trace-context-actual-ref-count0',
            parity='failed-update-create-time-DM-zero-microseconds' if red else 'partial-evidence-full-six-field-create-string-ID-or-delete-empty-array',
            cleanup='new-identity-original-softdeleted-audits-retained-no-successful-write-replay'))
    tool.main(rows, audit, verify)
