import json
from pathlib import Path

from src.domain.app_blocks.fast_lane_runtime_proof import prove_declared_runtime, write_artifact


def test_declared_fast_lane_runtime_proof_covers_all_applications():
    proofs = prove_declared_runtime(Path.cwd() / ".runtime-proof-test")

    assert len(proofs) == 25
    assert all(item.runtime_proven for item in proofs), [item.__dict__ for item in proofs if not item.runtime_proven]
    assert all(item.persisted_records == item.read_back_records for item in proofs)


def test_declared_fast_lane_runtime_artifact_is_machine_readable():
    root = Path.cwd() / ".runtime-proof-test-artifact"
    proofs = prove_declared_runtime(root / "generated")
    artifact = write_artifact(proofs, root / "proof.json")
    payload = json.loads(artifact.read_text(encoding="utf-8"))

    assert payload["phase"] == "FL-D5"
    assert payload["declared_applications"] == 25
    assert payload["runtime_proven"] == 25
    assert payload["status"] == "runtime_proven"
