#!/usr/bin/env python3
"""Original archive creator failure and repaired original request readbacks."""
import hashlib
import json
from pathlib import Path
import subprocess
import sys
import integrate_20261010 as tool
from integrate_20261011_batches46_48 import item

HERE = Path(__file__).resolve().parent
STAGE = Path('/Users/wiscourper/Documents/workspace/local/dm8-store-purchase-read3-20261012.L5dTYR/stage3')
BASE = tool.STORE + 'parallel-registration-quit-20261013/'


def verify():
    for subdir, number, report, manifest, verifier, checks, assets in [
        ('archive225-20261013/execution225', 225,
         'a11eb31a29c432745a4e4dcb82007be717d11d36deff64a3b4990d913ea571a8',
         'bf521bab8181d03f019a828e3c23e600ceddac82771adaa9311b1234accf1eca',
         '06ad3029de03e5247c9cd27743b313a4758a453f7b92085b82ae98f9a62ed958', 985, 148),
        ('archive229-20261013', 229,
         'd87a6a623c69fa36f011b29c54c1aca908f40051eb684aab5897b9fd04ce7679',
         '6d6e5498c962e8c3d1a918e94cdaec0b18cd07d74fc33d8e406c9ab877717657',
         'cc0383842d98a296afd9ec20d0ff53ef777cf5b30c64e4e1043848855d556059', 1012, 143),
    ]:
        root = STAGE / subdir
        for name, digest in {f'REPORT{number}.md': report, f'manifest{number}.json': manifest,
                f'verify{number}.py': verifier}.items():
            assert hashlib.sha256((root / name).read_bytes()).hexdigest() == digest, name
        r = json.loads(subprocess.check_output([sys.executable, '-B', str(root / f'verify{number}.py')]))
        assert r['checks'] == checks and r['assets'] == assets
    source = tool.source_root('store')
    for name, digest in {
        'application/p/logic/RegistrationSheet.php': '55daa789139eac61331bce7e0938d18e4e6aabed743e5d6b1c55dfd0554ed4d6',
        'application/model/QuitTeam.php': 'd624530f83b5b03be682a29db8f4863eadaebd947ab77b504c60d5a74deaff7f',
        'tests/Archives/ArchiveCreatorContractTest.php': '1fdde4e9998ad28e308e58ed1b07c74c0aa7633676b0a9e441f68d77ff30b547',
        'tests/Archives/QuitTimeContractTest.php': '22ce86a8c42bee77e4b32b6350e9bb0c3f6c7d11322fb0ad18812e1985f3d536',
    }.items():
        tested = subprocess.check_output(['git', '-C', str(source), 'show',
            'a07d5c39e5e529b9d8a4018d020473c05ce7ff53:' + name])
        assert hashlib.sha256(tested).hexdigest() == digest
    subprocess.run(['git', '-C', str(source), 'merge-base', '--is-ancestor',
        'a07d5c39e5e529b9d8a4018d020473c05ce7ff53', 'develop_dameng'], check=True)


if __name__ == '__main__':
    audit = HERE / 'integration-20261013-batch229.json'
    assert not audit.exists(), 'Never replay integration main'
    specs = [item('store', 'POST', '/p/' + group + '/' + action, BASE,
        success_case='partial-evidence-original-owned-archive-225B-229C-creator-red-fixed',
        readback='tested-pass-complete32-11-8-six-CLOB-parent-child-fourtypes-original-transactions',
        parity='partial-evidence-complete-DTO-source-values-types-MySQL-wire-unchanged-DM-zero-fraction',
        cleanup='marked-rows-retained-four-exact-workers-reused-token-cache-zero-no-Staff-or-external-write')
        for group in ('RegistrationSheet', 'QuitTeam') for action in ('add', 'update', 'info')]
    tool.main(specs, audit, verify)
