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

MSG_FILE="${1:-}"

if [[ -z "$MSG_FILE" || ! -f "$MSG_FILE" ]]; then
  echo "commit-msg hook: missing commit message file" >&2
  exit 1
fi

if git rev-parse -q --verify MERGE_HEAD >/dev/null 2>&1; then
  exit 0
fi

missing=0

check_line() {
  local pattern="$1"
  local label="$2"
  if ! grep -q "^${pattern}" "$MSG_FILE"; then
    echo "missing required commit metadata: ${label}" >&2
    missing=1
  fi
}

check_line "Proof:" "Proof:"
check_line "Assumptions:" "Assumptions:"
check_line "Still fake:" "Still fake:"

if [[ "$missing" -ne 0 ]]; then
  cat >&2 <<'EOF'

Required non-merge commit message body lines:
  Proof: <which approved proof or charter this serves>
  Assumptions: <key assumptions or constraints>
  Still fake: <what remains mocked, unverified, or incomplete>
EOF
  exit 1
fi
