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

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

required_files=(
  "AGENTS.md"
  "docs/INDEX.md"
  "docs/ARCHITECTURE.md"
  "docs/COMMAND_SURFACE.md"
  "docs/GOLDEN_PRINCIPLES.md"
)

for file in "${required_files[@]}"; do
  if [[ ! -f "$file" ]]; then
    echo "missing required legibility file: $file" >&2
    exit 1
  fi
done

agents_lines="$(wc -l < AGENTS.md | tr -d ' ')"
if (( agents_lines > 220 )); then
  echo "AGENTS.md should stay concise; found ${agents_lines} lines (max 220)." >&2
  exit 1
fi

index_links=(
  "ARCHITECTURE.md"
  "COMMAND_SURFACE.md"
  "GOLDEN_PRINCIPLES.md"
)

for link in "${index_links[@]}"; do
  if ! grep -Fq "$link" docs/INDEX.md; then
    echo "docs/INDEX.md is missing link to ${link}" >&2
    exit 1
  fi
done

if ! grep -Fq "AGENTS.md" README.md; then
  echo "README.md should link AGENTS.md for discoverability." >&2
  exit 1
fi

if ! grep -Fq "docs/INDEX.md" README.md; then
  echo "README.md should link docs/INDEX.md for discoverability." >&2
  exit 1
fi

families=(auth env cluster data metrics loki diagnose events raw)
for family in "${families[@]}"; do
  if ! grep -Eq "^## ${family}$" docs/COMMAND_SURFACE.md; then
    echo "docs/COMMAND_SURFACE.md is missing section for command family: ${family}" >&2
    exit 1
  fi
done

plan_files=(docs/*-plan.md)
if [[ "${plan_files[0]}" != "docs/*-plan.md" ]]; then
  for plan in "${plan_files[@]}"; do
    if ! grep -Fxq "## Execution Protocol (Mandatory)" "$plan"; then
      echo "${plan} must include heading: ## Execution Protocol (Mandatory)" >&2
      exit 1
    fi

    if ! grep -Fq "fresh non-inherited subagent" "$plan"; then
      echo "${plan} must explicitly require fresh non-inherited subagent execution." >&2
      exit 1
    fi

    if ! grep -Fq "operator prompt template" "$plan"; then
      echo "${plan} must include an operator prompt template for explicit delegation authorization." >&2
      exit 1
    fi
  done
fi

echo "agent legibility checks passed"
