#!/usr/bin/env bash # hardstop-test.sh — prueft die drei Governor-Pfade mit direkten curls: # klein -> passthrough (Modell antwortet normal) # mittel -> soft-Einschub (Modell bekommt die Stopp-Anweisung, antwortet) # gross -> HART-STOPP (Governor antwortet selbst, KEIN Modell-Call) set -u GOV="http://127.0.0.1:8100/v1/chat/completions" python3 - <<'PY' > /tmp/gov_small.json import json print(json.dumps({"model":"Qwen3-Coder-Next","messages":[{"role":"user","content":"Reply with exactly: SMALL"}],"max_tokens":8,"stream":False})) PY python3 - <<'PY' > /tmp/gov_mid.json import json print(json.dumps({"model":"Qwen3-Coder-Next","messages":[{"role":"user","content":"BEGIN "+"lorem ipsum "*2500+" END"}],"max_tokens":40,"stream":False})) PY python3 - <<'PY' > /tmp/gov_big.json import json print(json.dumps({"model":"Qwen3-Coder-Next","messages":[{"role":"user","content":"x"*40000}],"max_tokens":16,"stream":False})) PY echo "=== TEST A: klein (passthrough) ===" curl -s -m 60 "$GOV" -H "Content-Type: application/json" --data @/tmp/gov_small.json | jq -r '.choices[0].message.content' echo "=== TEST B: mittel ~30k Zeichen (soft-Einschub, geht ans Modell) ===" curl -s -m 120 "$GOV" -H "Content-Type: application/json" --data @/tmp/gov_mid.json | jq '{id, content: (.choices[0].message.content|.[0:80])}' echo "=== TEST C: gross ~40k Zeichen (HART-STOPP, kein Modell-Call) ===" curl -s -m 30 "$GOV" -H "Content-Type: application/json" --data @/tmp/gov_big.json | jq '{id, finish: .choices[0].finish_reason, content: (.choices[0].message.content|.[0:70]), usage}'