#!/usr/bin/env python3
"""Reproducible local microbenchmark; not a production workload benchmark."""
from __future__ import annotations
import json
import platform
import statistics
import sys
import time
from datetime import datetime, timezone
from pathlib import Path
from existence_possibility_compiler import compile_plan

ROOT = Path(__file__).resolve().parent
problem = json.loads((ROOT / "example_problem.json").read_text(encoding="utf-8"))
clock = datetime(2026, 11, 3, 12, 0, tzinfo=timezone.utc)
warmups, rounds = 20, 300
for _ in range(warmups):
    compile_plan(problem, now=clock)
samples = []
for _ in range(rounds):
    start = time.perf_counter_ns()
    compile_plan(problem, now=clock)
    samples.append((time.perf_counter_ns() - start) / 1_000_000)

def percentile(values, q):
    ordered = sorted(values)
    return ordered[min(len(ordered)-1, max(0, round((len(ordered)-1)*q)))]

result = {
    "benchmark": "Darkoza EPC v0.1 planning-only synthetic fixture",
    "measured_at_utc": datetime.now(timezone.utc).isoformat().replace("+00:00", "Z"),
    "python": platform.python_version(),
    "platform": platform.platform(),
    "warmup_runs": warmups,
    "measured_runs": rounds,
    "latency_ms": {
        "median": round(statistics.median(samples), 4),
        "p95": round(percentile(samples, .95), 4),
        "p99": round(percentile(samples, .99), 4),
        "max": round(max(samples), 4),
    },
    "search_states": compile_plan(problem, now=clock)["search"]["states_explored"],
    "fixture_actions": len(problem["actions"]),
    "scope": "Local in-process planning latency only; excludes I/O, model inference, network, persistence, UI and concurrent workloads."
}
print(json.dumps(result, indent=2))
