#!/usr/bin/env bash
# 09-trampa-doc-codigo.sh — demuestra la divergencia doc ↔ código.
#
# Dos puntos:
#   (A) mark-read SIN `ids`: la doc dice 400; el código MARCA TODAS.
#   (B) paginación del buzón: la doc dice `next_cursor` siempre null; el código
#       devuelve un cursor keyset real.
#
# Ejecuta (A) contra la instancia local y, además, coteja cada punto con su
# fichero del repositorio y su línea.
#
# Uso:  ./09-trampa-doc-codigo.sh
set -euo pipefail

BASE="${VALET_BASE:-http://127.0.0.1:3458}"
REPO="${VALET_REPO:-/data/rust/valet}"
WORK="${WORKDIR:-/tmp/opencode/valet-847}"
T2="$(cat "$WORK/token2.txt")"

echo "=== (A) mark-read SIN ids: lo que dice la doc y lo que hace el código ==="
echo
echo "-- DOC  docs/api-notifications.md:191-193"
sed -n '191,193p' "$REPO/docs/api-notifications.md" | sed 's/^/   /'
echo
echo "-- CÓDIGO  src/routes/notifications.rs:386-393"
sed -n '386,393p' "$REPO/src/routes/notifications.rs" | sed 's/^/   /'
echo
echo "-- EJECUCIÓN REAL (ids ausente = cuerpo {}):"
# Primero crea un par de no leídas para que el marcado masivo tenga efecto.
for i in 1 2; do
  curl -s -X POST "$BASE/api/notifications" \
    -H "Authorization: Bearer $T2" -H "Content-Type: application/json" \
    -d "{\"message\":\"trampa $i\",\"origin\":\"monitor\"}" >/dev/null
done
curl -s -w "\n   [%{http_code}]\n" -X POST "$BASE/api/notifications/mark-read" \
  -H "Content-Type: application/json" -d '{}'
echo "   ^ marca TODAS, no un 400."

echo
echo
echo "=== (B) paginación del buzón: doc vs spec vs código ==="
echo
echo "-- DOC  docs/api-notifications.md:155-156"
sed -n '155,156p' "$REPO/docs/api-notifications.md" | sed 's/^/   /'
echo
echo "-- SPEC  openspec/specs/notifications/spec.md:174-177"
sed -n '174,177p' "$REPO/openspec/specs/notifications/spec.md" | sed 's/^/   /'
echo
echo "-- CÓDIGO  src/routes/notifications.rs:293-299"
sed -n '293,299p' "$REPO/src/routes/notifications.rs" | sed 's/^/   /'
echo
echo "-- EJECUCIÓN REAL: unread?limit=1 devuelve next_cursor no nulo (ver 08)."
