#!/usr/bin/env bash
set -euo pipefail
set -o pipefail

SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
AI_RESEARCH_ROOT="$(cd "${SCRIPT_DIR}/.." && pwd)"
REPO_ROOT="$(cd "${AI_RESEARCH_ROOT}/.." && pwd)"

TS="$(date -u +%Y%m%dT%H%M%SZ)"
EVIDENCE_FILE="${AI_RESEARCH_ROOT}/audit/entrypoint_matrix_proof_${TS}.txt"

{
  echo "ENTRYPOINT_MATRIX_EVIDENCE"
  echo "timestamp=${TS}"
  echo "timestamp_utc=$(date -u '+%Y-%m-%dT%H:%M:%SZ')"
  echo "repo_root=${REPO_ROOT}"
  echo "ai_research_root=${AI_RESEARCH_ROOT}"
  echo "matrix=${AI_RESEARCH_ROOT}/benchmarks/ENTRYPOINT_MATRIX.md"
  echo
} > "${EVIDENCE_FILE}"

run_step() {
  local scope="$1"
  local cwd="$2"
  local cmd="$3"
  local rc
  local start
  local end

  start="$(date -u '+%Y-%m-%dT%H:%M:%SZ')"
  {
    echo "scope=${scope}"
    echo "cwd=${cwd}"
    echo "command=${cmd}"
    echo "start=${start}"
  } >> "${EVIDENCE_FILE}"

  set +e
  (cd "${cwd}" && bash -lc "${cmd}")
  rc=$?
  set -e

  end="$(date -u '+%Y-%m-%dT%H:%M:%SZ')"
  {
    echo "end=${end}"
    echo "exit_code=${rc}"
    echo "status=$([[ ${rc} -eq 0 ]] && echo PASS || echo FAIL)"
    echo
  } >> "${EVIDENCE_FILE}"

  return ${rc}
}

run_matrix() {
  local scope="$1"
  local cwd="$2"
  shift 2
  local -a cmds=("$@")
  local failed=0
  local cmd

  for cmd in "${cmds[@]}"; do
    if ! run_step "${scope}" "${cwd}" "${cmd}"; then
      failed=1
    fi
  done

  return ${failed}
}

REPO_COMMANDS=(
  "python3 ai_research/benchmarks/coverage_gap_audit.py"
  "python3 ai_research/benchmarks/normalize_benchmark_summary.py"
  "python3 ai_research/benchmarks/generate_class_trends.py"
  "python3 ai_research/benchmarks/check_cycle_decision.py"
  "python3 ai_research/benchmarks/generate_benchmark_delta.py"
  "bash ai_research/benchmarks/entrypoint_contract.sh"
  "bash ai_research/benchmarks/entrypoint_contract_check.sh"
  "bash ai_research/benchmarks/entrypoint_contract_check.sh --manifest ai_research/benchmark_manifest.json"
)

AI_COMMANDS=(
  "python3 benchmarks/coverage_gap_audit.py"
  "python3 benchmarks/normalize_benchmark_summary.py"
  "python3 benchmarks/generate_class_trends.py"
  "python3 benchmarks/check_cycle_decision.py"
  "python3 benchmarks/generate_benchmark_delta.py"
  "bash benchmarks/entrypoint_contract.sh"
  "bash benchmarks/entrypoint_contract_check.sh"
  "bash benchmarks/entrypoint_contract_check.sh --manifest benchmark_manifest.json"
)

FAILED=0
run_matrix "repo_root" "${REPO_ROOT}" "${REPO_COMMANDS[@]}" || FAILED=1
run_matrix "ai_research_root" "${AI_RESEARCH_ROOT}" "${AI_COMMANDS[@]}" || FAILED=1

{
  echo "overall_exit_code=$(( FAILED == 0 ? 0 : 1 ))"
  echo "overall_status=$([[ ${FAILED} -eq 0 ]] && echo PASS || echo FAIL)"
  echo "proof_file=${EVIDENCE_FILE}"
} >> "${EVIDENCE_FILE}"

echo "proof_file=${EVIDENCE_FILE}"
if [[ ${FAILED} -ne 0 ]]; then
  exit 1
fi
exit 0
