fix(referenz): Pruefbefehl aus dem Suchpfad genommen, Lauf D ergaenzt
Ampel / ampel (push) Successful in 22s
Ampel / ampel (push) Successful in 22s
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>
This commit is contained in:
co-authored by
Claude Opus 5
parent
ff319ff291
commit
d880a76b6a
@@ -0,0 +1,62 @@
|
||||
#!/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
|
||||
@@ -64,8 +64,21 @@ Nur Kriterium 3 ist offen. Wer 3 erfüllt und dabei 1/2/4/5 kaputtmacht, hat ver
|
||||
|
||||
Treffer in `docs/` sind erlaubt — das ist Historie und darf stehenbleiben.
|
||||
|
||||
Selbstprüfung mit einem Befehl:
|
||||
|
||||
```bash
|
||||
bash ~/projekte/mc2-referenz/docs/aufgaben/referenz-check.sh
|
||||
```
|
||||
|
||||
> Der Prüfbefehl liegt bewusst unter `docs/aufgaben/` und **nicht** unter `deploy/`. Im ersten Anlauf
|
||||
> lag er in `deploy/`, enthielt selbst siebenmal das Wort „mem0" (er sucht ja danach) und zählte sich
|
||||
> damit in Kriterium 3 mit — das Kriterium war unerfüllbar. In `docs/` wird er nicht durchsucht.
|
||||
|
||||
## Randbedingungen
|
||||
|
||||
- ‼️ **In einer FRISCHEN Sitzung starten**, nicht in einer fortgesetzten. Beim ersten Anlauf hat der
|
||||
Desktop eine Sitzung vom Vortag weitergeführt und deren Kontext mitgeschleppt — die Messung war
|
||||
dadurch wertlos. Im Desktop also einen **neuen Chat** anlegen, nicht den alten öffnen.
|
||||
- **Nicht pushen.** Der Zweig bleibt lokal, damit der Lauf wiederholbar ist.
|
||||
- **Nichts außerhalb des Worktrees anfassen** — kein `/etc`, keine systemd-Dienste, kein Neustart.
|
||||
- Wenn ein Kriterium nicht erfüllbar ist: **ehrlich sagen und aufhören.** Ein klares
|
||||
@@ -82,8 +95,19 @@ git worktree add -b referenz/mem0-ausbau ~/projekte/mc2-referenz main
|
||||
|
||||
## Messprotokoll
|
||||
|
||||
| Lauf | Modell in der `coder`-Rolle | Fertig? | Wanduhr | Züge | Bemerkung |
|
||||
| Lauf | Aufbau | Fertig? | Wanduhr | Züge | Bemerkung |
|
||||
|---|---|---|---|---|---|
|
||||
| A | Qwen3.8-27B (dicht, 12,6 t/s) — Ausgangswert | | | | |
|
||||
| B | Qwen3.8-27B **+ DFlash-2** | | | | |
|
||||
| C | Qwen3.6-35B-A3B (`fast`, 95,7 t/s) | | | | |
|
||||
| — | *Fehlversuch 20.08. 21:10* | ✗ | 76 min, abgebrochen | 8 | Kriterium 3 unerfüllbar + fortgesetzte Alt-Sitzung. **Verwertbar trotzdem:** 19.899 Ausgabe-Tokens, davon nur ~2.600 Zeichen sichtbar → **>95 % unsichtbares Nachdenken**. Kompression feuerte bereits. |
|
||||
| A | Qwen3.8-27B, `reasoning_effort: medium` — Ausgangswert | | | | |
|
||||
| **D** | **Qwen3.8-27B, `reasoning_effort: low`** | | | | Billigster Hebel: eine Konfigzeile, kein Modellwechsel |
|
||||
| B | Qwen3.8-27B **+ DFlash-2** | | | | Entwurfsmodell liegt bereit |
|
||||
| C | Qwen3.6-35B-A3B (`fast`, 95,7 t/s) | | | | SWE-bench 73,4 |
|
||||
|
||||
### Was der Fehlversuch schon gezeigt hat
|
||||
|
||||
Pro Zug erzeugte das Modell ~2.487 Tokens, sichtbar wurden davon 181–451 Zeichen. Bei 12,6 t/s sind
|
||||
das ~26 Minuten reine Erzeugung für ~2.600 Zeichen Text. **Der Engpass ist Denk-Aufwand × Bandbreite,
|
||||
nicht das Harness.** Darum Lauf D vor B und C: er prüft den billigsten Hebel zuerst.
|
||||
|
||||
Inhaltlich war das Modell gut — es fand von selbst den Prüfstein (`mem0_ms` → `memory_ms` im Frontend),
|
||||
statt blind zu löschen.
|
||||
|
||||
Reference in New Issue
Block a user