#!/usr/bin/env python3
"""Render the review-only schematic for the workload-regime experiment card."""

from pathlib import Path

import matplotlib.pyplot as plt
import numpy as np


def logistic(x: np.ndarray, center: float, width: float) -> np.ndarray:
    return 1.0 / (1.0 + np.exp(-(x - center) / width))


rho = np.linspace(0.02, 1.25, 300)
families = {
    "homogeneous / real": (0.54, "#1f77b4", "-"),
    "homogeneous / simulator": (0.36, "#1f77b4", "--"),
    "heterogeneous / real": (0.76, "#d95f02", "-"),
    "heterogeneous / simulator": (0.68, "#d95f02", "--"),
}

fig, axes = plt.subplots(1, 2, figsize=(11.5, 4.6), constrained_layout=True)

for label, (center, color, style) in families.items():
    state = 0.1 + 0.82 * logistic(rho, center, 0.055)
    axes[0].plot(rho, state, color=color, linestyle=style, linewidth=2.2, label=label)

axes[0].axhline(0.5, color="0.35", linewidth=1, linestyle=":")
axes[0].set(
    title="A. Closed-loop scheduler-state knee",
    xlabel="Normalized decode offered load, ρ",
    ylabel="State index (batch / occupancy)",
    xlim=(0, 1.25),
    ylim=(0, 1.02),
)
axes[0].legend(frameon=False, fontsize=8, loc="lower right")

homogeneous_slack = 0.32 - 0.82 * np.exp(-((rho - 0.45) / 0.18) ** 2) - 0.12 * rho
heterogeneous_slack = 0.38 - 0.43 * np.exp(-((rho - 0.72) / 0.20) ** 2) - 0.10 * rho
capacity_aligned = 0.18 + 0.18 * logistic(rho, 0.83, 0.07)

axes[1].plot(rho, homogeneous_slack, color="#1f77b4", linewidth=2.2, label="homogeneous")
axes[1].plot(rho, heterogeneous_slack, color="#d95f02", linewidth=2.2, label="heterogeneous")
axes[1].plot(rho, capacity_aligned, color="#2a9d8f", linewidth=2.2, label="capacity-aligned")
axes[1].axhline(0, color="black", linewidth=1.2)
axes[1].fill_between(rho, -0.55, 0, color="#d62728", alpha=0.09, label="ranking reversal")
axes[1].set(
    title="B. Config-ranking decision boundary",
    xlabel="Normalized decode offered load, ρ",
    ylabel="Minimum signed decision slack",
    xlim=(0, 1.25),
    ylim=(-0.55, 0.55),
)
axes[1].legend(frameon=False, fontsize=8, loc="lower right")

for ax in axes:
    ax.grid(alpha=0.18)
    ax.text(
        0.5,
        0.94,
        "MOCK / SCHEMATIC — NOT DATA",
        transform=ax.transAxes,
        ha="center",
        va="top",
        fontsize=10,
        fontweight="bold",
        color="#9d0208",
        bbox={"facecolor": "white", "edgecolor": "#9d0208", "alpha": 0.86},
    )

out = Path(__file__).with_name("mock_workload_regime_boundary.png")
fig.savefig(out, dpi=180)
print(out)
