from __future__ import annotations


def execute(payload: dict) -> dict:
    reasons = []
    if not payload.get("railDetected"): reasons.append("RAIL_NOT_DETECTED")
    if abs(float(payload.get("alignmentErrorDeg", 999))) > 3: reasons.append("ALIGNMENT_OUT_OF_TOLERANCE")
    if not payload.get("safetyZoneClear"): reasons.append("SAFETY_ZONE_OCCUPIED")
    if float(payload.get("speedMps", 0)) > 0.25: reasons.append("ENTRY_SPEED_TOO_HIGH")
    accepted = not reasons
    return {"component": "kitech/greenhouse-rail-entry-safety", "accepted": accepted,
            "status": "ENTRY_ALLOWED" if accepted else "ENTRY_BLOCKED", "target": "mcu",
            "command": "ENTER_RAIL" if accepted else "STOP", "allowedSpeedMps": 0.2 if accepted else 0.0,
            "blockingReasons": reasons, "energyMode": str(payload.get("energyMode", "NORMAL"))}
