$ErrorActionPreference = "Stop"
$pyExe = "C:\xampp\htdocs\centro de investigacion\.venv\Scripts\python.exe"
$script = @'
import sys
import json
import zipfile
import hashlib
from pathlib import Path

audit_dir = Path(r"C:\Users\intel\AppData\Local\OptimusAudits\ORC31_20261027")
cand_dir = audit_dir / "candidate_v1_1"
trial_dir = audit_dir / "parallel_trial_install"
prod_db = Path(r"C:\xampp\htdocs\centro de investigacion\storage\db\research_center.db")
EXPECTED_PROD_DB_SHA = "e4a5a8dae3b9bf9c24df50abc243cb4969f4cf4b29cc98f1013091cf01f9cde9"

def sha256_file(p: Path) -> str:
    return hashlib.sha256(p.read_bytes()).hexdigest().lower()

print("=== ORC-31 INDEPENDENT VERIFICATION SCRIPT ===")

# 1. Verify UTF-8 (no UTF-16 BOM) on all logs
for log_name in ["00_INFORME_ORC31.md", "02_SUITE_GLOBAL_UTF8.txt", "03_PAQUETE_PORTATIL_UTF8.txt", "04_ENSAYO_INSTALACION_PARALELA.txt"]:
    fp = audit_dir / log_name
    assert fp.is_file(), f"Missing log file: {fp}"
    raw = fp.read_bytes()
    assert not raw.startswith(b"\xff\xfe") and not raw.startswith(b"\xfe\xff"), f"UTF-16 BOM detected in {log_name}"
    text = raw.decode("utf-8")
    assert len(text) > 100
print("[PASS] All ORC-31 logs exist and are clean UTF-8 without UTF-16 BOM.")

# 2. Verify Global Suite Log result
suite_text = (audit_dir / "02_SUITE_GLOBAL_UTF8.txt").read_text(encoding="utf-8")
assert "161 passed" in suite_text and "failed" not in suite_text.splitlines()[-1], "Global suite did not pass 161 tests"
assert "UndefinedMetricWarning" not in suite_text, "UndefinedMetricWarning should be resolved"
print("[PASS] Global test suite log verified: 161 passed, 0 failed, 0 UndefinedMetricWarning.")

# 3. Verify Portable Package & Manifest 100% match
zip_v11 = audit_dir / "optimus_research_center_portable_v1.1.0.zip"
manifest = json.loads((audit_dir / "manifest.json").read_text(encoding="utf-8"))
assert sha256_file(zip_v11) == manifest["sha256"].lower()
assert manifest["version"] == "1.1.0"
assert manifest["packager_version"] == "1.0.0-m22d"
assert manifest["protocol_version"] == "1.0.0"

manifest_files = {item["path"]: item for item in manifest["files"]}
with zipfile.ZipFile(zip_v11, "r") as zf:
    names = set(m for m in zf.namelist() if not m.endswith("/"))
    assert names == set(manifest_files.keys())
    for n in names:
        data = zf.read(n)
        assert hashlib.sha256(data).hexdigest().lower() == manifest_files[n]["sha256"].lower()
        assert len(data) == manifest_files[n]["size_bytes"]
print(f"[PASS] Portable package v1.1.0 ({zip_v11.name}) matches manifest.json across all {len(names)} files.")

# 4. Verify Candidate Manifest ORC31_CANDIDATE_MANIFEST.json
cand_manifest = json.loads((cand_dir / "ORC31_CANDIDATE_MANIFEST.json").read_text(encoding="utf-8"))
tracked = cand_manifest["core_and_modified_files_sha256"]
for rel, exp_sha in tracked.items():
    assert sha256_file(cand_dir / rel) == exp_sha.lower(), f"Candidate hash mismatch on {rel}"
print(f"[PASS] Candidate manifest verified across all {len(tracked)} tracked files.")

# 5. Verify Historical Manifests Preserved
assert (audit_dir / "ORC29_CANDIDATE_MANIFEST_HISTORICAL.json").is_file()
assert (audit_dir / "ORC29_PORTABLE_MANIFEST_HISTORICAL.json").is_file()
print("[PASS] Historical manifests preserved intact.")

# 6. Verify Parallel Trial Installation & Protected Production DB Immutability
assert (trial_dir / "storage" / "db" / "research_center.db").is_file()
assert (trial_dir / "storage" / "evidence" / "scenarios_execution_evidence.json").is_file()
assert sha256_file(prod_db) == EXPECTED_PROD_DB_SHA
print("[PASS] Parallel trial installation verified and Protected Production DB SHA-256 is 100% untouched.")
print("ORC31_READY_FOR_CONTROLLED_INSTALLATION=TRUE")
'@
$script | & $pyExe -

