#!/usr/bin/env bash set -euo pipefail ROOT_DIR="$(cd "$(dirname "$0")/../.." && pwd)" DATE_TAG="${1:-$(date +%F)}" OUT_DIR="${ROOT_DIR}/reports/gates" mkdir -p "${OUT_DIR}" SNAPSHOT_MD="${OUT_DIR}/metrics_daily_snapshot_${DATE_TAG}.md" SNAPSHOT_CSV="${OUT_DIR}/metrics_daily_snapshots.csv" DRIFT_MD="${ROOT_DIR}/reports/design_drift_daily_${DATE_TAG}.md" latest_file_or_empty() { local pattern="$1" local latest latest="$(ls -1t ${pattern} 2>/dev/null | head -n 1 || true)" echo "${latest}" } DEP_FILE="$(latest_file_or_empty "${ROOT_DIR}/reports/dependency/dependency_audit_result_*.md")" SP_FILE="$(latest_file_or_empty "${ROOT_DIR}/reports/gates/superpowers_stage_validation_*.md")" TRACE_FILE="$(latest_file_or_empty "${ROOT_DIR}/reports/supply_traceability_matrix_*.csv")" M017="0.00" M018="0.00" M019="0.00" M017_NOTE="dependency audit report missing" M018_NOTE="superpowers stage validation report missing" M019_NOTE="traceability matrix missing" if [[ -f "${DEP_FILE}" ]] && grep -q 'Result: PASS' "${DEP_FILE}"; then M017="100.00" M017_NOTE="dependency audit result PASS" fi if [[ -f "${SP_FILE}" ]]; then total_steps="$(grep -E '^\| PHASE-' "${SP_FILE}" | wc -l | tr -d ' ')" pass_steps="$(grep -E '^\| PHASE-[0-9]+ \| PASS \|' "${SP_FILE}" | wc -l | tr -d ' ')" if [[ "${total_steps}" -gt 0 ]]; then M018="$(awk -v p="${pass_steps}" -v t="${total_steps}" 'BEGIN{printf "%.2f", (p/t)*100}')" M018_NOTE="pass_steps=${pass_steps}/${total_steps}" fi fi if [[ -f "${TRACE_FILE}" ]]; then total_rows="$(awk -F',' 'NR>1{count++} END{print count+0}' "${TRACE_FILE}")" tracked_rows="$(awk -F',' 'NR>1{if($1!="" && $3!="" && $5!="" && $6!="" && $7!="")count++} END{print count+0}' "${TRACE_FILE}")" if [[ "${total_rows}" -gt 0 ]]; then M019="$(awk -v t="${tracked_rows}" -v a="${total_rows}" 'BEGIN{printf "%.2f", (t/a)*100}')" M019_NOTE="tracked_rows=${tracked_rows}/${total_rows}" fi fi M017_STATUS="PASS"; [[ "${M017}" != "100.00" ]] && M017_STATUS="FAIL" M018_STATUS="PASS"; [[ "${M018}" != "100.00" ]] && M018_STATUS="FAIL" M019_STATUS="PASS"; [[ "${M019}" != "100.00" ]] && M019_STATUS="FAIL" if [[ ! -f "${SNAPSHOT_CSV}" ]]; then echo "date,m017,m018,m019,m017_status,m018_status,m019_status,dep_file,stage_file,trace_file" > "${SNAPSHOT_CSV}" fi tmp_csv="$(mktemp)" awk -F',' -v d="${DATE_TAG}" ' NR==1 {print; next} $1==d {next} $1 ~ /^[0-9]{4}-[0-9]{2}-[0-9]{2}-debug$/ {next} {print} ' "${SNAPSHOT_CSV}" > "${tmp_csv}" echo "${DATE_TAG},${M017},${M018},${M019},${M017_STATUS},${M018_STATUS},${M019_STATUS},${DEP_FILE},${SP_FILE},${TRACE_FILE}" >> "${tmp_csv}" mv "${tmp_csv}" "${SNAPSHOT_CSV}" cat > "${SNAPSHOT_MD}" < "${DRIFT_MD}" <