#!/usr/bin/env python3
"""Record three real terminal Staff actions, never infer all scenarios closed."""
import hashlib
import json
import subprocess
from pathlib import Path
import integrate_20261010 as tool
from integrate_20261011_batches46_48 import item

HERE = Path(__file__).resolve().parent
PRIVATE = Path('/private/tmp/cdx-ai-hk-course-b.Kmdirn/meal193-terminal-staff')
BASE = 'work_ai_api/2026-09-30-dm8-interface-acceptance/parallel-terminal-staff-crud-20261013/'


def verify():
    for name, digest in [
        ('REPORT_193.md', '93f276ff62de50af35ab4c85706bce0d3737ed77379917a59e0ea5ce7767488c'),
        ('verify193_offline.php', '6bb5e28ec9e8b1592830f2d18d37cbeb80c21bb156c914809772fc3788da2afb'),
        ('B-business.json', 'ed0215c0569912cfc241ad01af110360a0928746fc3444c7cf4c6e61afd33728'),
        ('C-business.json', '3fce06ced877c6067e1b299407bb3cf3a9d06998157f894c94d97dbbd915f252'),
    ]:
        assert hashlib.sha256((PRIVATE / name).read_bytes()).hexdigest() == digest
    r = json.loads(subprocess.check_output(['/opt/homebrew/opt/php@7.4/bin/php', str(PRIVATE / 'verify193_offline.php')]))
    assert r['status'] == 'verified-three-real-owned-crud-http-and-rows'
    assert r['B_C_full_business_body_equal_excluding_trace_and_own_id']
    for lane in ('B', 'C'):
        s = r[lane]
        assert (s['HTTP'], s['staff_insert'], s['staff_update'], s['relation_insert'], s['relation_delete']) == (3, 1, 2, 1, 1)
        assert s['operator_unchanged'] and s['token_removed'] and s['fresh_creator_tenant_4byte_2dp_match']
    for name, digest in [
        ('app/terminal/controller/store/Staff.php', '2c67a7a7e0700a760d9a83ca9eb479142056122be964c7efff99ff53e670b1ca'),
        ('app/terminal/service/staff/Staff.php', '00c5ecd01c1156bb8f0f01acc6a945bad5c6f67fd98d50a6187a709581656cea'),
        ('app/terminal/model/staff/Staff.php', 'ff0be29a5492e4117b963b7ae253d6728dd55a06c0ac40c46be9316ca656e5b3'),
        ('app/terminal/model/staff/StaffStoreUser.php', 'bf4647be103da02cf12baaed17450aa6024e23eaa50933b3ac6062429db283b6'),
        ('app/terminal/validate/Staff.php', '85ac14efa82ca6b66d8e93654d634866c3ca3137eab80dc28e72d438ca74a8ec'),
        ('app/terminal/controller/Controller.php', 'dbab5d94e55687fe3df36c52ea7419bdd94242e944228be3baa9210c5be7c212'),
    ]:
        assert hashlib.sha256((tool.source_root('ai_api') / name).read_bytes()).hexdigest() == digest


if __name__ == '__main__':
    audit = HERE / 'integration-20261013-batch193.json'
    assert not audit.exists(), 'Preserve one-time transition audit'
    specs = [item('ai_api', 'POST', '/terminal/store.Staff/' + action, BASE,
        risk='approved-owned-staff-crud-no-money-or-external-service',
        request_type='original-JSON-form-or-delete-empty-body-with-own-id',
        readback='tested-pass-original-staff-relation-transitions-and-new-connection-creator-tenant-fourbyte-decimal',
        success_case='partial-evidence-owned-staff-add-edit-delete-original-transactions',
        parity='partial-evidence-full-business-body-equal-except-trace-and-own-ID-string',
        boundary_empty_min_max='partial-evidence-fourbyte-name-two-decimal-input-no-invalid-or-overflow-claim',
        cleanup='own-staff-softdeleted-relation-deleted-token-absent-own-workers-stopped-natural-operator-unchanged')
        for action in ('add', 'edit', 'delete')]
    tool.main(specs, audit, verify)
