#!/usr/bin/env python3
"""Supplement monitoring physical FLOAT and nonempty list with 240C + 249B."""
import hashlib
import json
import subprocess
import sys
from pathlib import Path
import integrate_20261010 as tool
from integrate_20261011_batches46_48 import item

HERE = Path(__file__).resolve().parent
C = Path('/Users/wiscourper/Documents/workspace/local/dm8-store-purchase-read3-20261012.L5dTYR/stage3/bio240-20261013/execution240')
B = tool.ROOT.parent / 'worktrees/dm8-compat-20261012/private-prepay-harness/batch249-monitoring-b-fixture-plan'
BASE = tool.STORE + 'parallel-monitoring-float-20261013/'


def verify():
    for path, sha in [(B / 'REPORT249.md', 'e95c1169c93f1f3ac2e379e6bcbacd0cf58796215743146609948629b9695a65'),
                      (B / 'verify249.php', '3948fb9b8a5239eebc78a8f1a82d4e1573652ab5f57fe22f624a41fdf6a43f6e'),
                      (B / 'manifest249.json', '0f9591073a2a7568ba5f1edaf7865772539fd8aaf2ad54ac1ce562f9b05c8169'),
                      (C / 'verify240.py', 'b2f12a7771b1b1037ad1f8e369b73791092f895f30a04a105312d62b065907cf')]:
        assert hashlib.sha256(path.read_bytes()).hexdigest() == sha, str(path)
    b = json.loads(subprocess.check_output(['/opt/homebrew/opt/php@7.4/bin/php', str(B / 'verify249.php')]))
    c = json.loads(subprocess.check_output([sys.executable, '-B', str(C / 'verify240.py')]))
    assert b['assertions'] == 331 and b['new_B_original_HTTP'] == 5 and b['physical_and_wire_scalar_C240_match']
    assert c['checks'] == 559 and c['totals']['C']['HTTP'] == 5 and c['totals']['B']['HTTP'] == 0
    for name in ['audit-F3U.json', 'audit-F4A.json', 'response-F3I.json', 'response-F4I.json']:
        assert (B / 'C240-reference' / name).read_bytes() == (C / 'evidence-C/private' / name).read_bytes()
    for name, sha in [('application/common/service/MonitoringPlainFloat.php', 'ffa427a556ede25e766085abe2421f5b96f318891b183f9b520c4cff738dd62f'),
                      ('application/p/logic/EngineryIochemistry.php', '1367ca4c87aba597895d55a8cd84f9ad2e20acc066d71e79bf24e7cd5652ac65')]:
        raw = subprocess.check_output(['git', '-C', str(tool.source_root('store')), 'show', '7b10c4743:' + name])
        assert hashlib.sha256(raw).hexdigest() == sha


if __name__ == '__main__':
    audit = HERE / 'integration-20261013-batch249.json'
    assert not audit.exists(), 'Never replay integration main'
    rows = [item('store', 'POST', '/p/engineryIochemistry/' + name, BASE,
                 success_case='partial-evidence-original-monitoring-two-FLOAT-vectors-240C-and-fresh249B',
                 readback='tested-pass-independent-physical-binary32-storage-full9-detail-full5-list-and-own77-Staff',
                 parity='partial-evidence-proven-vector-wire-values-types-match-no-generic-field-removal',
                 boundary_empty_min_max='partial-evidence-16777217-and-12.345-backend-vectors-not-all-FLOAT-domains')
            for name in ['add', 'info', 'lists']]
    rows.append(item('store', 'POST', '/p/engineryIochemistry/update', BASE, evidence_only=True))
    tool.main(rows, audit, verify)
