#!/usr/bin/env python3
"""Readonly validation of literal SQL receipts, intentionally no HTTP matrix update."""
import hashlib
import json
from pathlib import Path
import subprocess

ROOT = Path(__file__).resolve().parents[4]
PRIVATE = ROOT / 'worktrees/dm8-compat-20261012/private-prepay-harness'


def verify():
    for name, digest in [
        ('constant-sql-manifest.sha256', '40e360d619c5aeac8bd3ac0c79d3c01de50c81ff12560f286ea04eccd4b6aab1'),
        ('verify_constant_sql_dialect.php', '0d1e74dba897c9b163721e0a7f852bd18232043fd7ea2e944d3b49bb35fcc99f'),
    ]:
        assert hashlib.sha256((PRIVATE / name).read_bytes()).hexdigest() == digest
    result = json.loads(subprocess.check_output(['/opt/homebrew/opt/php@7.4/bin/php', str(PRIVATE / 'verify_constant_sql_dialect.php')]))
    assert result['passed'] and result['connections'] == 4 and result['http_coverage_delta'] == 0
    expected = {'case_equal_ascii': '1', 'case_like_ascii': '1', 'trailing_equal': '1',
                'trailing_like': '0', 'empty_is_null': '0', 'empty_equals_empty': '1',
                'coalesce_empty': '', 'length_empty': '0', 'concat_null': None}
    for lane in ['B', 'C']:
        raw = json.loads((PRIVATE / ('constant-sql-dialect-20261012-' + lane + '.json')).read_text())
        text = json.loads((PRIVATE / ('constant-sql-text-followup-20261012-' + lane + '.json')).read_text())
        assert raw['business_http_requests'] == raw['business_dml'] == 0
        for database in ['store', 'ai_api']:
            cases = raw['result'][database]['cases']
            for name, want in expected.items():
                value = cases[name]['rows'][0]['v']
                assert value['string_value'] == want
                if name not in ('coalesce_empty', 'concat_null'):
                    assert value['pdo_type'] == ('string' if lane == 'B' else 'integer')
            count = cases['decimal_empty_aggregate']['rows'][0]['count_rows']
            assert count['pdo_type'] == ('string' if lane == 'B' else 'integer')
            assert text['results'][database]['sum_two_decimal_server_text']['value'] == ('0.30' if lane == 'B' else '0.3')
    return {'status': 'verified', 'connections': 4, 'http_coverage_delta': 0}


if __name__ == '__main__':
    print(json.dumps(verify()))
