feat(governor): Plugin ins Repo geholt, git push freigegeben, force push bleibt gesperrt
Das Plugin existierte nur im Konfigordner des PCs - ohne Sicherung, ohne Historie. Zaun-Regel 'git push' entfernt (jede Aenderung soll im git landen), dafuer gezielte Sperre fuer --force/--mirror/--delete. Beides gemessen. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
56668ee43d
commit
c2a54bd25d
@@ -0,0 +1,78 @@
|
||||
# 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).
|
||||
Reference in New Issue
Block a user