#!/usr/bin/env python3
"""Record the existing GET evidence while retaining the schema-version mismatch."""
import hashlib
import json
import subprocess
from pathlib import Path
import integrate_20261010 as tool
from integrate_20261011_batches46_48 import item

P = Path('/Users/wiscourper/Documents/workspace/local/dm8-sealed-ai-20261013.4PoFa9')

def verify():
    for name, manifest_sha, script, script_sha, count in [
        ('meal250-course-today', 'cecb6efc8971c4bee232ed1b020dd198d5031c43ecb8d3051967623a04f0027f', 'verify250.php', 'e802ebc6b361a998a6ad2ab394055bc71dda09de5edefdb624032b54b6328c71', 60),
        ('meal252-course-today-regression', '70ebae7a5f258ddf1267679b5ea7cd7a2b8bb85dc0afd7e3889da0cdb4dbd84b', 'verify252.php', '8b33482d91d70b9d27540f2f91880b86f4abd85187291e9a9781363e08ef5bf0', 56)]:
        base = P / name
        assert hashlib.sha256((base / 'MANIFEST.json').read_bytes()).hexdigest() == manifest_sha
        for f in json.loads((base / 'MANIFEST.json').read_text())['files']:
            path = Path(f['path'])
            assert not path.is_absolute() and '..' not in path.parts
            data = (base / path).read_bytes()
            assert len(data) == f['bytes'] and hashlib.sha256(data).hexdigest() == f['sha256']
        assert hashlib.sha256((base / script).read_bytes()).hexdigest() == script_sha
        r = json.loads(subprocess.check_output(['/opt/homebrew/opt/php@7.4/bin/php', str(base / script)]))
        assert r['checks'] == count
    data = subprocess.check_output(['git', '-C', str(tool.source_root('ai_api')), 'show', 'develop_dameng:app/api/service/user/UserCourse.php'])
    assert hashlib.sha256(data).hexdigest() == 'e5bf952c2fa74bcd5b68f2c50d2e695b148ff3d9c9d42726480727ff5e79ffab'

if __name__ == '__main__':
    audit = Path(__file__).with_name('integration-20261013-today-schema.json')
    assert not audit.exists(), 'Never replay main'
    report = tool.AI + 'parallel-today-schema-20261013/ROOT_REVIEW.md'
    rows = [item('ai_api', 'GET', '/api/user.UserCourse/today', '', evidence=report,
        mysql_state='tested-pass-original-existing-plan-readonly-source-oracle',
        dm_state='tested-fail-response-schema-version-mismatch-intensity-fixed',
        success_case='failed-open-three-course-schema-fields-version-mismatch-not-a-DM-driver-only-bug',
        readback='tested-pass-complete-sealed-Goal-Plan-course-and-protection-rows-zero-HTTP-write',
        parity='failed-open-B17keys-C20keys-formal-schema-contract-not-yet-aligned')]
    tool.main(rows, audit, verify)
