#!/usr/bin/env python3
"""Root-only integration of AI order.Event/updateRemark bounded B/C evidence."""
import hashlib
import json
from pathlib import Path
import subprocess
import sys

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-ai-order-remark-owned-exec-20261011.jt8LBT/final-seal')
EVIDENCE = 'work_ai_api/2026-09-30-dm8-interface-acceptance/parallel-ai-order-remark-owned-20261011/ROOT_REVIEW_ORDER_REMARK_20261011.md'


def verify():
    assert (tool.ROOT / EVIDENCE).is_file()
    manifest = (PRIVATE / 'MANIFEST.json').read_bytes()
    assert hashlib.sha256(manifest).hexdigest() == '99806c8616c43e56fde732d9a5a4300967b1ef3e399ced38d78c089fb67612cf'
    result = json.loads(subprocess.run([sys.executable, '-B', str(PRIVATE / 'verify.py')],
        check=True, capture_output=True, text=True).stdout)
    assert result == {'assets': 93, 'checks': 164, 'result': 'PASS_OWN_REMARK_BOTH', 'HTTP': 2,
        'UPDATE': 2, 'other_DML': 0, 'B_SQL_native': [22, 8], 'C_SQL_native': [32, 18]}


def targets():
    base = EVIDENCE.rsplit('/ROOT_REVIEW', 1)[0] + '/'
    return [item('ai_api', 'POST', '/store/order.Event/updateRemark', base, evidence=EVIDENCE,
        terminal='AI-Store-merchant-PC-RemarkForm',
        role='existing-marked-merchant-operator-original-auth',
        risk='single-merchant-remark-update-on-own-cancelled-zero-money-order',
        scope='AI-primary-own-order-marker-per-engine-cancelled-unpaid-zero-financial-and-point-counters',
        request_type='original-JSON-form-orderId-and-merchant_remark-only',
        success_case='partial-evidence-one-owned-cancelled-zero-order-remark-update-per-engine',
        mysql_state='tested-pass-one-source-select-one-row-and-one-update-affected1-SQLSTATE00000',
        dm_state='tested-pass-one-source-select-one-row-and-one-update-affected1-SQLSTATE00000',
        readback='partial-evidence-full37-column-typed-source-row-before-after-and-independent-post-stop-read; only remark-and-native-auto-time-change',
        parity='partial-evidence-identical-success-envelope-and-owned-field-update; engine-local IDs and native timestamps retained',
        cleanup='owned-orders-retained-with-marker-token-cache-workers-and-private-runtime-released',
        missing_required='not-tested', invalid_type='not-tested', duplicate_retry='not-tested',
        boundary_empty_min_max='limited-to-one-existing-cancelled-unpaid-zero-order-per-engine', performance='not-tested')]


if __name__ == '__main__':
    audit = HERE / 'integration-20261011-batch104.json'
    assert not audit.exists(), 'Preserve previous integration evidence'
    tool.main(targets(), audit, verify)
