"""Lambda asgv-evaluate-results function module. Runs deterministic post-processing on the LLM validation output to produce a reliability-enriched result, then stores it in S3 under the prefix created by asgv-prepare-payload. """ from typing import Any, Mapping from lambdacommon.common_config import logger from src.logic.evaluate_rules import evaluate from src.logic.s3 import load_from_s3, store_result def handler(event: Mapping[str, Any] | None, context: Any) -> dict[str, Any]: """Lambda entry point.""" try: data = (event or {}).get("data") or {} output_s3_path = data.get("output_s3_path") llm_response_s3_path = data.get("llm_response_s3_path") release_id = data.get("release_id") if not output_s3_path: raise ValueError("Missing output_s3_path in event") if not llm_response_s3_path: raise ValueError("Missing or invalid llm_response_s3_path in event") llm_response = load_from_s3(llm_response_s3_path) result = evaluate(llm_response, release_id=release_id) result_s3_url = store_result(output_s3_path, result) return {"result_s3_url": result_s3_url, "result": result} except Exception as e: logger.exception(str(e)) raise e