Files
mission-control-v2/docs/aufgaben/referenz-check.sh
T
HitonabiandClaude Opus 5 d880a76b6a
Ampel / ampel (push) Successful in 22s
fix(referenz): Pruefbefehl aus dem Suchpfad genommen, Lauf D ergaenzt
Zwei Fehler aus dem ersten Anlauf behoben:

1. referenz-check.sh lag unter deploy/ und enthielt selbst 7x das Wort
   "mem0" (es sucht ja danach) - damit zaehlte es sich in Kriterium 3 mit
   und das Kriterium war unerfuellbar. Jetzt unter docs/aufgaben/, wo
   Kriterium 3 nicht sucht. Strukturell geloest statt per grep-Ausnahme.

2. Der Lauf muss in einer FRISCHEN Sitzung starten - der Desktop hatte
   eine Sitzung vom Vortag fortgesetzt und deren Kontext mitgeschleppt.

Neu: Lauf D (reasoning_effort low). Der Fehlversuch zeigte, dass >95%
der Modell-Ausgabe unsichtbares Nachdenken war - 19.899 Tokens fuer
2.600 Zeichen sichtbaren Text. Das ist der billigste Hebel und wird
darum vor Modellwechseln geprueft.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-20 21:57:07 +02:00

63 lines
2.5 KiB
Bash

#!/usr/bin/env bash
# Referenz-Check (20.08.2026): prueft die fuenf Fertig-Kriterien der Messlatte.
#
# Zweck: "fertig" darf keine Auslegungssache sein. Derselbe Befehl fuer den Agenten
# (Selbstpruefung) und fuer die Auswertung. Siehe docs/aufgaben/referenzaufgabe-mem0-ausbau.md
#
# Aufruf: bash docs/aufgaben/referenz-check.sh [worktree-pfad]
# Exit: 0 = alle Kriterien gruen · 1 = mindestens eines rot
set -uo pipefail
W="${1:-$HOME/projekte/mc2-referenz}"
LINT="${LINT_RUFF:-$HOME/.venv-lint/bin/ruff}"
PY="${BACKEND_PY:-$HOME/mission-control-v2/backend/.venv/bin/python}"
SMOKE="${SMOKE_SH:-$HOME/mission-control-v2/deploy/self-smoke.sh}"
ROT=0
pruef() { # $1=Nummer $2=Beschreibung $3=Ergebnis(0/1) $4=Detail
if [ "$3" -eq 0 ]; then printf ' %s %-34s GRUEN %s\n' "$1" "$2" "${4:-}"
else printf ' %s %-34s ROT %s\n' "$1" "$2" "${4:-}"; ROT=1; fi
}
[ -d "$W" ] || { echo "ABBRUCH: Worktree nicht gefunden: $W"; exit 1; }
echo "=== Referenz-Check ($W) ==="
# 1 — Lint
if [ -x "$LINT" ]; then
out="$("$LINT" check "$W" 2>&1)"; rc=$?
pruef 1 "Lint sauber (ruff)" $rc "$(printf '%s' "$out" | tail -1)"
else
pruef 1 "Lint sauber (ruff)" 1 "ruff fehlt unter $LINT"
fi
# 2 — Backend laedt
out="$(cd "$W/backend" && "$PY" -c 'import app' 2>&1)"; rc=$?
pruef 2 "Backend importierbar (app)" $rc "$(printf '%s' "$out" | tail -1)"
# 3 — keine mem0-Reste (docs/ ausgenommen: Historie)
n="$(cd "$W" && grep -ril mem0 backend/ mcp/ deploy/ --include='*.py' --include='*.sh' 2>/dev/null | wc -l)"
[ "$n" -eq 0 ]; rc=$?
pruef 3 "Keine mem0-Reste" $rc "$n Datei(en) mit Treffern"
[ "$n" -gt 0 ] && (cd "$W" && grep -ril mem0 backend/ mcp/ deploy/ --include='*.py' --include='*.sh' 2>/dev/null | sed 's/^/ /')
# 3b — der Sidecar-Ordner selbst
if [ -d "$W/mem0_service" ]; then pruef "3b" "Ordner mem0_service entfernt" 1 "liegt noch da"
else pruef "3b" "Ordner mem0_service entfernt" 0; fi
# 4 — Selbsttest (laeuft gegen das LAUFENDE System, nicht gegen den Worktree)
if [ -r "$SMOKE" ]; then
out="$(timeout 540 bash "$SMOKE" 2>&1)"; rc=$?
pruef 4 "Selbsttest self-smoke" $rc "$(printf '%s' "$out" | grep -cE '\bPASS\b') PASS / $(printf '%s' "$out" | grep -cE '\bFAIL\b') FAIL"
else
pruef 4 "Selbsttest self-smoke" 1 "nicht lesbar: $SMOKE"
fi
# 5 — MC2 lebt
curl -s -m 8 localhost:9001/api/health 2>/dev/null | grep -q '"status":"ok"'; rc=$?
pruef 5 "MC2 gesund" $rc
echo
if [ $ROT -eq 0 ]; then echo " ERGEBNIS: FERTIG — alle Kriterien gruen."
else echo " ERGEBNIS: NICHT fertig — mindestens ein Kriterium ist rot."; fi
exit $ROT