Publish-Remote-Gate ist in diesem Checkout inert: .wikitool-remotes.json fehlt, ENVIRONMENT.md beschreibt es als gesetzt #34
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Verifiziert am 2026-09-01.
Befund
.wikitool-remotes.jsonexistiert in diesem Checkout nicht.tools/chemenu/commands/git_publish.py:101dokumentiert das Verhalten ausdrücklich:absent → unrestricted. Der Publish-Remote-Gate ist damit nicht scharf.
ENVIRONMENT.mdbeschreibtorigindagegen als „einziges Publish-Ziel", undAGENTS.mdführtden Gate unter den drei in Code erzwungenen Grenzen. Eine Regel, die dokumentiert ist und nicht
greift, ist schlechter als eine fehlende: sie erzeugt genau das Vertrauen, das sie nicht
verdient.
Warum das jetzt zählt
Solange dies eine Instanz mit einem einzigen, öffentlichen Remote ist, ist der Schaden begrenzt.
Mit der privaten Arbeitsinstanz aus #30 — Clone mit zusätzlichem
upstream-Remote — entstehtgenau das Szenario, gegen das der Gate gebaut wurde: privater Korpus, der auf ein öffentliches
Upstream gepusht wird und von dort nicht zurückgeholt werden kann.
instructions/private-instance.mdSchritt 5 setzt die Datei als Teil der Einrichtung. DerZeitpunkt, sie hier zu haben, ist vor dem Klonen — sonst erbt die private Instanz einen
Checkout, dessen Sicherung nie geprüft wurde.
prio/1weilsize/XS: der Aufwand ist eine kleine Datei, der vermiedene Schaden istirreversibel und steht unmittelbar bevor. Herabstufen, falls die private Instanz doch später
kommt.
Akzeptanzkriterien
.wikitool-remotes.jsonin diesem Checkout angelegt, mit derorigin-URL als einzigem erlaubten Zieltools/wikitool doctormeldet den Gate als gesetztpublishgegen ein nicht gelistetes Ziel verweigert mit Exit 42doctordas Fehlen deutlicher melden sollte als bisher — eine dokumentierte, aber inerte Sicherung sollte nicht nur informativ auftauchenIn #36 (Master: Weg zum MCP-Leseserver) als Schritt 0 geführt: nicht auf dem Pfad zum Server,
aber vorab zu erledigen, weil es Vorbedingung für #30 ist und Minuten kostet. Blockiert den
Abschluss von #36 nicht.
Umgesetzt in 2.2.3.
.wikitool-remotes.jsonin diesem Checkout angelegt, mit derorigin-Push-URL als einzigemZiel. Gitignored, reist also nicht mit.
doctormeldetOK publish-remotes: Gate armed: 1 allowed push target(s).publish --remote gatecheck→ Exit 42, Arbeitsbaum unberührt, Test-Remote wieder entfernt.doctorsagte bisher nur, ob die Datei da ist. Jetzt beginntjeder der drei Zustände mit
Gate armed:bzw.Gate not armed:. Der einzelne Remote ohneAllowlist bleibt
OK— er hat nichts zu schützen, und ein FAIL machte die Datei durch dieHintertür verpflichtend —, sagt aber ausdrücklich, dass jedes Push-Ziel durchkommt.
Nebenbefund:
check_publish_remotes()hatte keine Tests. Drei sind dazugekommen, einer jeZustand.
Damit steht die Sicherung vor dem Klonen der privaten Instanz (#30), was der eigentliche
Punkt an
prio/1war.