import importlib.util
import json
from pathlib import Path

here = Path(__file__).resolve().parent
control = here.parents[3]
module = control / 'work/2026-09-28-smart-canteen-dm8-poc/http-harness/strict_response_compare.py'
spec = importlib.util.spec_from_file_location('strict', module)
strict = importlib.util.module_from_spec(spec)
spec.loader.exec_module(strict)
b, c = [json.loads((here / ('green-' + lane + '.json')).read_text()) for lane in ('B', 'C')]
expected = {'underflow_save', 'replace', 'repeat_save', 'clear', 'repeat_clear', 'no_meal_setup', 'final_clear'}
for report in (b, c):
    assert report['status'] == 'pass' and report['natural_unchanged'] is True
    assert set(report['samples']) == expected
    assert len(report['checks']) == 9 and all(v is True for v in report['checks'].values())
    assert report['cli_no_meal_response']['code'] == 0
    for response in report['samples'].values():
        assert response['http'] == 200 and response['body']['code'] == 0
for case in sorted(expected):
    assert not strict.compare(b['samples'][case]['body'], c['samples'][case]['body']), case
red = json.loads((here / 'red-B.json').read_text())
assert all(r['mysql_1690'] is True for r in red['samples'].values())
print(json.dumps({'status': 'passed', 'http_pairs': 7, 'strict_response_differences': 0,
    'per_engine_database_checks': 9, 'preserved_meal_service_check': True,
    'natural_current_menu_unchanged': True, 'scope': 'recount only; no transaction change'}))
