Die Intelligenz sitzt nicht mehr NEBEN dem Coden, sondern DRIN. Alles auf der
Box gemessen, nicht angenommen.
Stufe 1 — Speicher-Haushalt (llama-swap-Config, nicht im Repo):
Coder dauerwarm statt ttl 600 (Kaltstart 23 s -> 491 ms), Devstral als
'kritiker' verdrahtet, Swap 11 GB -> 0. Zwei Befunde: Kontext 131k->65k spart
bei Qwen3-Next 0 GB (Hybrid-Attention), und llama-swap haelt nur EINE Gruppe
resident -> alles Ko-Residente in dieselbe Gruppe. `persistent: true` verhindert
dabei das Freiraeumen vor grossen Modellen -> ausgeloester Kernel-OOM, behoben
durch persistent:false + TTLs (Vision laedt jetzt in 10 s statt 117 s + Absturz).
Stufe 2 — Governor v2 (deploy/governor/):
Steht jetzt IM Pfad (:8100 -> MC2 :9001) statt daneben. Zaehlt den GANZEN
Anfragekoerper inkl. tools/tool_calls und kalibriert sich aus den echten
usage.prompt_tokens jeder Antwort nach: Schaetzfehler 200 % -> 0,3 %.
Soft-Einschub nur noch, wenn die Nachrichtenkette es erlaubt (kein Dazwischen-
funken in offene tool_calls). Neuer Status-Endpunkt + systemd-Unit.
Lucys Alltagsmodelle sind vom Schnitt ausgenommen.
Stufe 3 — OpenCode-Plugin (deploy/opencode/plugin/mc2-governor.ts):
Werkzeug-Zaun (git push, rm -rf, sudo, curl|sh — bewiesen), Pruef-Tor auf
session.idle mit Selbstreparatur, Savepoint statt Kompression, Meldungen an
Lucys Briefkasten mit eigenem Absender 'loop'.
Stufe 4 — Mannschaft (opencode.json):
plan+build -> coder (51,5 t/s) · explore -> hermes (69,6 t/s, warm, gratis) ·
review -> Devstral (15,0 t/s, FREMDE Modellfamilie gegen blinde Flecken).
Der 63-GB-Planer faellt aus der Tagesrolle raus.
Stufe 5 — ein Regelwerk, zwei Ausloeser:
deploy/opencode-lauf.sh faehrt dieselbe Bau-Pruef-Schleife unbeaufsichtigt
(die Schleife liegt hier UND im Plugin: bei `opencode run` endet der Prozess,
bevor session.idle fertig ist — gemessen). Bricht ab, wenn der Governor fehlt.
gitea-repo-create.sh saet jetzt VERIFY neben der CI-Ampel: jedes neue Repo
wird mit Innen- UND Aussen-Pruefung geboren.
Oberflaeche:
Token-Waechter-Kachel im Cockpit (Fuellstand, Marken, Ehrlichkeits-Nachweis),
/api/governor als gleichursprüngliches Fenster, Devstral im Modellkatalog,
Rollen-Texte auf die neue Mannschaft aktualisiert.
.gitattributes: deploy/**/*.py auf LF (deploy/*.py greift nur eine Ebene tief).
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
- deploy/ampel-ci.yml: sprachneutrale Actions-Ampel (erkennt Python/Node
selbst; Doku-Repo=gruen, Code ohne Tests=ROT)
- gitea-repo-create.sh: pflanzt die Ampel bei JEDER Repo-Anlage ein
(Contents-API, Push-Token, defensiv)
- projektstart-SOUL: drei harte AGENTS-Regeln (Ampel-Pflicht,
Spec-Abweichung=STOPP, Deploy nur via deploy.sh) — rippy-Lehren
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Worker-Subprozesse laufen mit abweichendem $HOME → das Skript fand das
write:user-Anlage-Token nicht und fiel aufs Push-Token (write:repository)
zurueck → 'Token hat fehlenden Scope', IDE-Vorbereiter blockte am Repo-Anlegen
(Pomodoro-Testlauf). Fix: echten Home aus /etc/passwd aufloesen (getent),
unabhaengig von $HOME.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Sicherer als .git-credentials zu ueberschreiben: Anlage-Token (write:user) aus
$GITEA_CREATE_TOKEN oder ~/.config/gitea/create-token; Push/PR-Token in
~/.git-credentials bleibt unangetastet (kein Bruch, falls das neue Token kein
write:repository hat). User/Host nicht-geheim mit Defaults.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Lucke im "Projekte selbst starten"-Weg: Werkstatt konnte nur Branches in
bestehende Repos proposen, kein neues Projekt-Repo anlegen. Neues Skript:
POST /api/v1/user/repos, IMMER privat (Gitea ist oeffentlich erreichbar!),
auto_init + default main, Token aus ~/.git-credentials (nie ausgegeben),
Audit-Log + stiller Chronik-Spiegel je Anlage.
Braucht Token-Scope write:user (aktuelles Box-Token hat nur write:repository);
ohne das meldet das Skript GENAU, welches Token in Gitea zu generieren ist,
statt kryptisch zu scheitern. Token-Upgrade = Commander-Handgriff (Credential).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>