Files
HitonabiandClaude Opus 5 f3139d2b5d
Ampel / ampel (push) Successful in 21s
docs(governor): Plugin abgeschaltet - SAVEPOINT-Hook kollidierte mit OpenChambers Komprimierung
Bei jeder Komprimierung schob der Governor einen zusaetzlichen Auftrag nach
(SAVEPOINT.md schreiben); der Agent verlor dadurch einen Zug an Buchhaltung.
Nachgewiesen im Referenzlauf 22.08. 14:47. Der Abbau war schon am 21.08.
angeordnet - ich hatte das Behalten empfohlen und Zustimmung angenommen,
statt sie einzuholen.

Quelle bleibt im Repo, Wiederherstellung ist ein Copy-Item.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-22 15:33:14 +02:00

117 lines
5.3 KiB
Markdown

# OpenCode-Plugin: MC2-Governor
**Hier liegt die Quelle. Der Einsatzort ist eine Kopie.**
```
deploy/opencode-plugin/mc2-governor.ts <- versioniert, hier aendern
| kopieren
v
%USERPROFILE%\.config\opencode\plugin\ <- wird von OpenCode automatisch geladen
```
Bis zum 21.08.2026 existierte diese Datei **nur** im Konfigordner des PCs — 11 KB
verhaltensbestimmender Code ohne Sicherung und ohne Historie. Deshalb liegt sie jetzt hier.
## Ausbringen
```powershell
Copy-Item "deploy\opencode-plugin\mc2-governor.ts" "$env:USERPROFILE\.config\opencode\plugin\" -Force
```
Wirkt sofort in der naechsten OpenCode-Sitzung; OpenChamber muss dafuer nicht neu starten,
eine neue Sitzung reicht.
## Was es tut
1. **Werkzeug-Zaun** (`tool.execute.before`) — blockt Handgriffe, die ein Agent nie
unbeaufsichtigt tun darf. Leitplanke gegen Entgleisen, **keine** Sandbox.
2. **Pruef-Tor + Reparaturschleife** (`session.idle`) — sagt der Agent „fertig", laeuft der
Verify-Befehl aus der Datei `VERIFY` im Repo-Wurzelverzeichnis. ROT geht als naechster
Auftrag zurueck an den Agenten, bis zu `MC2_LOOP_MAX_ROUNDS` mal.
‼️ **Schlaeft derzeit:** es gibt in keinem Projekt eine `VERIFY`-Datei. Ohne sie tut
diese Funktion nichts — schadet aber auch nicht.
3. **Savepoint statt Zusammenfassen** (`session.compacted`) — beim Komprimieren fallen
still die Regeln aus dem Kontext; stattdessen wird `SAVEPOINT.md` geschrieben.
4. **Stimme** — Ereignisse gehen an MC2 `/api/voice/announce`, Lucy spricht sie.
Der zugehoerige **Governor-Proxy auf `:8100`** (Token-Zaehler mit Hart-Deckel, Juli 2026)
**existiert nicht mehr** — kein Port, kein Ordner, keine Unit. Nachgemessen am 21.08.2026.
Dieses Plugin haengt nicht an ihm.
## Schalter (Umgebungsvariablen)
| Variable | Default | Wirkung |
|---|---|---|
| `MC2_BOX_URL` | `http://192.168.178.151:9001` | MC2-Basis fuer Meldungen |
| `MC2_FENCE_OFF` | — | `1` schaltet den **ganzen** Zaun ab (alles oder nichts) |
| `MC2_LOOP_AUTOFIX` | an | `0` schaltet die Reparaturschleife ab |
| `MC2_LOOP_MAX_ROUNDS` | `3` | Runden der Reparaturschleife |
| `MC2_LOOP_ANNOUNCE` | an | `0` macht Lucy stumm |
| `MC2_LOOP_SILENT` | — | `1` = Meldungen ohne Ton |
## Aenderung 21.08.2026: `git push` ist frei
Der Zaun blockte urspruenglich **jedes** `git push` („Veroeffentlichen ist Sache des
Menschen"). Das passt nicht mehr: die Bahn ist jetzt PC → Gitea → Box, und jede Aenderung
soll auch im git landen. Ein Agent, der committen, aber nicht pushen darf, laesst Arbeit
auf einem einzelnen Rechner liegen.
**Erzwungenes Pushen bleibt verboten**`--force`, `--mirror`, `--delete`. Das
ueberschreibt fremde Arbeit auf dem Server und ist genau die Klasse Unfall, gegen die der
Zaun existiert. `--force-with-lease` ist bewusst ausgenommen.
Beides gemessen: `git push --dry-run origin main` laeuft durch,
`git push --force --dry-run origin main` wird mit `[MC2-ZAUN]` abgewiesen.
## ‼️ Falle: das `bash`-Werkzeug ist auf Windows kein bash
Es laeuft in **PowerShell**. `tail`, `head`, `grep` und Freunde gibt es dort nicht, und
Pipes verhalten sich anders. Wer dem Agenten Befehle vorgibt, muss das beruecksichtigen.
## ‼️ Falle: Gitea-Anmeldung ist flatterhaft
Der Git Credential Manager haelt fuer die DDNS-Domain ein **OAuth-Token mit einer Stunde
Laufzeit**. Laeuft es ab, scheitert der Push des Agenten mit
`remote: Failed to authenticate user` — ein Push aus PowerShell erneuert es, danach geht es
wieder. Dauerhafte Loesung waere ein langlebiges Gitea-Token auf die **interne** Adresse
`http://192.168.178.153:3000` (die DDNS-Domain ist nachts durch die Zwangstrennung ohnehin
zeitweise tot).
---
## ‼️ ABGESCHALTET am 22.08.2026
**Das Plugin ist nicht mehr aktiv.** Es liegt hier als Quelle und im Konfigordner
unter `plugin-archiv/`, aber nicht mehr in `~/.config/opencode/plugin/`.
**Warum:** Beim ersten echten Arbeitslauf fiel auf, dass bei jeder Komprimierung
zwei Dinge uebereinander passierten — OpenChamber dampfte den Verlauf ein, und der
Governor schob sofort einen zusaetzlichen Auftrag nach („schreib SAVEPOINT.md").
Der Agent verlor dadurch jedes Mal einen Zug an Buchhaltung statt an die Aufgabe.
Nachgewiesen: `SAVEPOINT.md` in `mc2-referenz`, geschrieben 22.08. 14:47 mitten
im Lauf.
Der User hatte den Abbau schon am 21.08. angeordnet („alle Guards, alle
Governor, Stewards — brauchen wir nicht mehr"). Ich hatte damals das Behalten
empfohlen und seine Antwort zum `git push`-Riegel als Zustimmung zum Rest
gewertet. **Das war eine Annahme, keine Entscheidung.**
## Was damit wegfaellt — bewusst
| war | jetzt |
|---|---|
| Sperrliste: `rm -rf`, `sudo`, force push, `curl\|sh`, `ssh` ausser Arcane, `npm publish` | **kein Netz mehr** — der Agent darf alles, was die Shell hergibt |
| Pruef-Tor + Reparaturschleife (`VERIFY`) | schlief ohnehin, es gab nirgends eine `VERIFY`-Datei im PC-Baum |
| SAVEPOINT beim Komprimieren | weg — genau der Grund fuer den Abbau |
| Meldungen an Lucys Stimme | weg |
**Wiederherstellen** (wenn der fehlende Zaun sich raecht):
```powershell
Copy-Item "deploy\opencode-plugin\mc2-governor.ts" "$env:USERPROFILE\.config\opencode\plugin\"
```
Plugins werden beim **Start des OpenCode-Servers** geladen — Aendern wirkt erst
nach einem Neustart von OpenChamber, nicht sofort. Deshalb liess sich das Plugin
auch mitten in einem laufenden Referenzlauf gefahrlos entfernen.