from __future__ import annotations


def execute(payload: dict) -> dict:
    localization = payload.get("localization", {})
    fused = 0.45 * float(localization.get("uwb", 0)) + 0.55 * float(localization.get("slam", 0))
    reasons = []
    if fused < 0.75: reasons.append("LOCALIZATION_QUALITY")
    if int(localization.get("ageMs", 999999)) > 500: reasons.append("LOCALIZATION_STALE")
    if payload.get("otaState") != "CURRENT": reasons.append("OTA_NOT_CURRENT")
    accepted = not reasons
    dispatch = None if not accepted else {"robotId": str(payload.get("robotId")), "missionId": str(payload.get("missionId")), "mode": "AUTONOMOUS"}
    return {"component": "via/greenhouse-fleet-control", "accepted": accepted,
            "status": "DISPATCHED" if accepted else "BLOCKED", "target": "service",
            "missionId": str(payload.get("missionId", "unknown")), "robotId": str(payload.get("robotId", "unknown")),
            "fusedLocalization": round(fused, 3), "dispatch": dispatch, "blockingReasons": reasons}
