Files
claude-regelwerk/AI/Regelwerk/veroeffentlichung.md
T
Pascal MichelandClaude Opus 5 3bb28e4b3c Automatischer Push: AI/Regelwerk/veroeffentlichung.md
- AI/Regelwerk/veroeffentlichung.md

Erzeugt vom PostToolUse-Hook .vault-tools/auto-push/auto_push.py.

Co-Authored-By: Claude Opus 5 <[email protected]>
2026-09-17 23:14:51 +02:00

7.5 KiB

type, status, title, summary, tags, created, updated
type status title summary tags created updated
resource reference Veröffentlichung der Anweisungsschicht Welcher Teil des Vaults in das Gitea-Repo claude-regelwerk geht, wie die Positivliste funktioniert und was der automatische Push tut. Laden, bevor der veröffentlichte Umfang geändert wird oder wenn ein Auto-Push-Befund im Kontext steht.
regelwerk
git
veroeffentlichung
werkzeuge
2026-09-17 2026-09-17

Veröffentlichung der Anweisungsschicht

Angeordnet am 2026-09-17. Die Anweisungsschicht des Vaults liegt seitdem in einem eigenen Git-Repo und wird täglich um 04:00 gepusht. Laden, wenn der Umfang geändert werden soll oder wenn im Laufprotokoll ein Befund steht.

Der Vault-Root ist jetzt ein Git-Repo. Das war er vorher nicht, und es widerspricht nicht AI/Regelwerk/projekte: Die Projekte unter Code Projekte/ behalten ihre eigenen Repos, die von diesem hier nicht berührt werden.

Remote https://git.nexhorizons.de/Nexhorizons-Public/claude-regelwerk.git
Zweig main
Sichtbarkeit Organisation Nexhorizons-Public und Repo sind beide public. Anonym trotzdem gesperrt: Die Instanz verlangt für jede Ansicht eine Anmeldung (REQUIRE_SIGNIN_VIEW), gemessen am 2026-09-17 mit 403 auf der API und einer Weiterleitung auf den Login im Web. Das lässt sich nur in der app.ini am Server ändern, nicht über die API.

Was hinausgeht — und warum die Liste so herum steht

Die .gitignore im Vault-Root ist eine Positivliste: Sie schließt mit /* erst alles aus und nimmt dann einzeln wieder auf. Eine Ausschlussliste wäre hier falsch herum — sie müsste jede künftige Notiz, jeden neuen Kundenordner und jede Depotdatei vorhersehen, und die erste vergessene Zeile ist eine Veröffentlichung.

Eingeschlossen sind: CLAUDE.md, README.md, AI/Regelwerk/, .claude/agents/, .claude/skills/, .claude/settings.json, .vault-tools/.

Draußen bleibt damit alles andere, insbesondere Inbox/, Code Projekte/, Security - Compliance Projekte/, Finanzen/, IT Workspace/, AI/sessions/, AI/secondbrain/, Bookstack/, Import/ und .claude/settings.local.json.

Wer den Umfang ändern will, ändert die .gitignore. Die Pfadliste in auto_push.py entscheidet nichts darüber — sie gehört zum Hook-Betrieb, der seit dem 2026-09-17 nicht mehr eingetragen ist. Der Code bleibt trotzdem stehen, weil der Fallkatalog ihn fährt und ein Hook-Betrieb jederzeit wieder eingetragen werden kann.

Was vor der Aufnahme einer Datei geprüft wird

Vor jeder Erweiterung der Positivliste, von Hand:

  1. Kundennamen, Domains, IP-Adressen, Snippet- und Ticket-IDs. In seo.md stand ein Kundenname im Klartext; er ist am 2026-09-17 durch eine neutrale Bezeichnung ersetzt worden. Die Fallgeschichte gehört ins Harness-Gedächtnis, nicht ins Regelwerk.
  2. Zugangsdaten. Skripte lesen Zugänge aus Umgebungsvariablen, nie aus einer Datei im Repo. Gilt auch für Standardwerte und Beispielaufrufe in Kommentaren.
  3. __pycache__ und Laufzeitdateien. .pyc trägt kompilierte Zeichenketten, unter anderem URLs, und ist bereits einmal aufgefallen.

Wann gepusht wird

Täglich um 04:00 über die Windows-Aufgabenplanung, Aufgabe Claude-Vault Auto-Push. Sie startet taeglich_push.py, und das Skript ruft dieselbe Arbeitsfunktion auf, die vorher am PostToolUse-Hook hing.

Die Aufgabe braucht den vollen Pfad zu python.exe. Mit -Execute "python" endete der erste Lauf am 2026-09-17 mit 0x80070002 (Datei nicht gefunden) und ohne eine Zeile im Protokoll — die Aufgabenplanung löst den PATH nicht so auf wie eine Konsole. Eingetragen ist deshalb der volle Pfad unter AppData\Local\Programs\Python\Python313\. Nach einem Python-Update ist dieser Pfad zu prüfen, sonst läuft die Aufgabe still ins Leere.

Belegt am 2026-09-17: Lauf aus der Aufgabenplanung heraus, Ergebnis 0x0, Protokollzeile gepusht, b7f325a9 -> 2e397718, Remote danach gleich HEAD. Damit ist auch belegt, dass die Aufgabe im S4U-Kontext an GITEA_TOKEN herankommt.

Was das kostet: Eine Änderung liegt bis zu 24 Stunden ungepusht herum. Wer sie sofort draußen haben will, startet den Lauf von Hand — python .vault-tools/auto-push/taeglich_push.py oder in der Aufgabenplanung „Ausführen".

Keine Cowork-Routine. Cloud-Routinen laufen in Anthropics Cloud und haben weder Zugriff auf D:\Claude noch auf die Umgebungsvariable GITEA_TOKEN dieser Maschine — steht so in der Routinen-Doku und deckt sich mit dem Depotbericht-Lauf vom 2026-09-07, der ohne Ergebnis blieb. Eine Routine dafür wäre eine Attrappe.

Jeder Lauf schreibt eine Zeile nach .vault-tools/auto-push/lauf.log, auch ein Lauf ohne Änderung. Ein Protokoll, das nur bei Erfolg schreibt, lässt sich von einer nie gestarteten Aufgabe nicht unterscheiden. Exit 0 heißt gepusht oder nichts zu tun, Exit 1 ist ein Befund mit Text im Protokoll.

Was der Push tut

git add -A, Commit, Push — die Arbeitsfunktion steht in .vault-tools/auto-push/auto_push.py. Das Token kommt über .vault-tools/auto-push/askpass.py aus der Umgebungsvariable GITEA_TOKEN; in .git/config steht nur der Benutzername.

Es gibt keine Freigabe und keinen Geheimnis-Scan. Was in einer eingeschlossenen Datei steht, geht heraus, sobald sie geschrieben wird — auch ein halbfertiger Zwischenstand. Das ist so angeordnet und der Grund, warum die Positivliste die einzige Schranke ist.

Der Lauf pusht den ganzen Baum. git add -A nimmt jede geänderte eingeschlossene Datei mit, egal aus welcher Sitzung sie stammt. Beim Hook-Betrieb am 2026-09-17 sind so zwei unfertige Zwischenstände einer Nachbarsitzung mitgegangen. Bei einem Lauf um 04:00 fällt das weniger auf und wiegt schwerer: Was um 03:59 halbfertig auf der Platte liegt, ist um 04:00 draußen.

Eine fehlende Voraussetzung ist ein Befund, kein Grund zu schweigen. Fehlendes Token, fehlendes Remote, gescheiterter Push: Der Lauf schreibt den Befund ins Protokoll und endet mit Exit 1, den die Aufgabenplanung als „Letztes Ergebnis" führt. Ein gescheiterter Push verliert nichts — der Commit bleibt lokal, der nächste Lauf schiebt ihn mit.

Das Protokoll ist die einzige Stelle, an der ein Fehler auftaucht. Niemand sitzt um 04:00 davor. Der häufigste Fall wird ein Push-Fehler bei fehlendem Netz oder ausgeschaltetem Rechner sein; beides holt der nächste Lauf nach. Wer wissen will, ob die Aufgabe überhaupt läuft, liest lauf.log — dort steht auch jeder Lauf ohne Änderung.

Der Watermark-Hook meldet diese Datei als KI-markiert. Das ist ein Fehlalarm. Ausgelöst hat ihn das Wort „claude" im Frontmatter-Feld summary — der Repo-Name claude-regelwerk genügt dafür. Am 2026-09-17 mit drei Proben eingegrenzt: dieselbe Zeile mit gitea-export statt claude-regelwerk läuft durch. Die Datei enthält keine auffälligen Codepunkte. Nicht bereinigen.

Der Fallkatalog liegt daneben: python .vault-tools/auto-push/faelle_auto_push.py fährt 28 Fälle gegen ein echtes Wegwerf-Repo mit echtem Remote. Er ist ein Fangnetz, kein Nachweis — er sieht, ob ausgelöst wird und ob die Positivliste hält, und nicht, ob eine eingeschlossene Datei etwas enthält, das niemand veröffentlichen wollte.

Referenzen