from __future__ import annotations

REQUIRED = set(["FRUIT-THIN-01","FRUIT-PINCH-01","FRUIT-SAFE-01"])


def execute(payload: dict) -> dict:
    results = []
    seen = set()
    for scenario in payload.get("scenarios", []):
        scenario_id = str(scenario.get("id", ""))
        seen.add(scenario_id)
        actual, limit = float(scenario.get("actual", 0)), float(scenario.get("limit", 0))
        operator = scenario.get("operator")
        passed = actual <= limit if operator == "lte" else actual >= limit if operator == "gte" else False
        results.append({"id": scenario_id, "actual": actual, "limit": limit, "operator": operator, "passed": passed})
    missing = sorted(REQUIRED - seen)
    passed_count = sum(item["passed"] for item in results)
    accepted = bool(results) and not missing and passed_count == len(results)
    return {"component": "metafarmers/fruit-robot-validation", "accepted": accepted,
            "status": "VERIFIED" if accepted else "BLOCKED", "target": "validation",
            "verdict": "PASS" if accepted else "FAIL", "passed": passed_count,
            "total": len(results), "missingRequired": missing, "results": results}
