#!/usr/bin/env python3
"""Root-only integration of one bounded Store Role.add B/C path."""
import hashlib
import json
from pathlib import Path

import integrate_20261010 as tool
from integrate_20261011_batches46_48 import item

PRIVATE = Path('/Users/wiscourper/Documents/workspace/local/dm8-store-role-v2-actual-20261011.CFwEN4')
REPORT = 'work_store/apifox/2026-09-30-dm8-interface-acceptance/parallel-store-role-r1-20261011/ROOT_REVIEW_ROLE_ADD_20261011.md'


def verify():
    assert (tool.ROOT / REPORT).is_file()
    manifest_bytes = (PRIVATE / 'manifest.json').read_bytes()
    manifest = json.loads(manifest_bytes)
    assert hashlib.sha256(manifest_bytes).hexdigest() == '7d48d0402d6d108a71bb12afac268342430b52053a2539e09a6f3e8d20214a06'
    assert manifest['status'] == 'R1_NEW_FIXTURE_BOUNDED_PASS'
    assert manifest['checks'] == 166 and len(manifest['files']) == 102
    for entry in manifest['files']:
        raw = (PRIVATE / entry['path']).read_bytes()
        assert len(raw) == entry['bytes']
        assert hashlib.sha256(raw).hexdigest() == entry['sha256']
        assert (PRIVATE / entry['path']).stat().st_mode & 0o777 == 0o600
    report = (PRIVATE / 'REPORT.md').read_text()
    for phrase in ['添加成功', 'parent lastID', 'commit', '三关联独立fresh回读', 'create_time', '完整7列']:
        assert phrase in report
    assert manifest['source_map_SHA'] == '579f33e733a7277bcfbca61d7ab458f5ec14b05ec3944c1480792579804fe872'
    assert manifest['HTTP'] == {'B': 1, 'C': 1}
    assert manifest['INSERT_affected'] == {'B': 1, 'C': 1}
    assert manifest['original_parent_lastID_once'] and manifest['original_commit_once']
    assert manifest['own_links'] == 0 and manifest['old_W1_marker_and_UUID'] == 0
    assert manifest['new_reads'] == {'B': 39, 'C': 48}
    assert manifest['owner_cumulative'] == {'B': 929, 'C': 1129}
    assert manifest['U'] == manifest['D'] == manifest['F1'] == manifest['DDL'] == 0
    assert manifest['resources_clean']


def targets():
    return [item('store', 'POST', '/p/role/add', REPORT.rsplit('/ROOT_REVIEW', 1)[0] + '/',
        evidence=REPORT,
        from_source='runtime-route-dev-zhct_dev',
        module='角色管理', terminal='PC端', role='existing-authorized-marked-test-actor',
        risk='single-unassigned-role-insert',
        scope='store-primary-single-new-role-add-no-user-menu-or-data-permission-links',
        request_type='application/x-www-form-urlencoded',
        success_case='partial-evidence-one-marked-unassigned-role-insert-per-engine-not-role-module-closure',
        mysql_state='tested-pass', dm_state='tested-pass',
        readback='tested-pass-original-seven-column-row-generated-key-transaction-and-three-empty-links',
        parity='partial-evidence-original-response-equal-physical-rows-and-types-verified-per-lane-DATETIME6-kept',
        cleanup='retained-one-owned-unassigned-role-per-lane-worker-token-cache-source-released',
        missing_required='not-tested', invalid_type='not-tested', duplicate_retry='not-tested',
        boundary_empty_min_max='not-tested', performance='not-tested')]


if __name__ == '__main__':
    audit = Path(__file__).with_name('integration-20261011-batch94.json')
    assert not audit.exists(), 'Preserve any previous integration evidence'
    tool.main(targets(), audit, verify)
