#!/usr/bin/env python3
"""One enum route, two source-positive parameter branches, four real HTTP requests."""
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 = tool.ROOT.parent / 'worktrees/dm8-compat-20261012/private-prepay-harness/batch191-ai-enum-read'
BASE = 'work_ai_api/2026-09-30-dm8-interface-acceptance/parallel-enum-read-20261013/'


def verify():
    for name, digest in [
        ('REPORT.md', '71f463ea5fb22c33667eaf6169a5bde7ca7dfa41e8d5f2744420ea244eafaf3a'),
        ('verify_green_offline.php', '8c540ed23164da2f1b1ad4e662c25f1f87a4aad9da7150479ccb2a01c34b72d5'),
    ]:
        assert hashlib.sha256((PRIVATE / name).read_bytes()).hexdigest() == digest
    r = json.loads(subprocess.check_output(['/opt/homebrew/opt/php@7.4/bin/php', str(PRIVATE / 'verify_green_offline.php')]))
    assert r['status'] == 'verified-green' and r['unique_interface_keys'] == 1 and r['formal_http_total'] == 4
    assert r['original_body_parity_excluding_trace_id']
    assert r['fixture_dml'] == r['business_dml'] == r['ddl'] == 0
    for name, digest in [
        ('app/api/controller/Enum.php', 'c55b920b324fbb892e96538677d157fd03eed4661e447b645cd0e3747ecdb597'),
        ('app/store/model/ConfigEnum.php', '1ad3ff29586efe439c97c0fb3bfee3075c203e40674ce4fddecdbc473161588a'),
        ('app/common/model/ConfigEnum.php', '3d553fd14bab3a6cf316ad5593035fdb1d718a95a1b8777b21d650ef2a516e76'),
    ]:
        assert hashlib.sha256((tool.source_root('ai_api') / name).read_bytes()).hexdigest() == digest


if __name__ == '__main__':
    audit = HERE / 'integration-20261013-batch191.json'
    assert not audit.exists()
    specs = [item('ai_api', 'GET', '/api/Enum/all', BASE,
        readback='tested-pass-real-type2-five-type3-fourteen-source-projections-unchanged',
        success_case='partial-evidence-enum-types2-and3-nonempty-original-model',
        parity='partial-evidence-complete-original-JSON-equal-except-trace-ratio-fixed-two-strings',
        cleanup='no-fixtures-no-business-writes-private-readonly-worker-lifecycle-separate')]
    tool.main(specs, audit, verify)
