Automatischer Push der Anweisungsschicht

Der Vault-Root pusht ab jetzt nach jeder Änderung an CLAUDE.md,
AI/Regelwerk/, .claude/agents/, .claude/skills/, .claude/settings.json
oder .vault-tools/ selbsttätig nach Gitea.

- .vault-tools/auto-push/auto_push.py: PostToolUse-Hook, committet und
  pusht. Fehlendes Token, fehlendes Remote und gescheiterter Push sind
  Befunde und gehen in den Kontext, nicht ins Schweigen.
- .vault-tools/auto-push/askpass.py: reicht GITEA_TOKEN an git weiter,
  damit es weder in .git/config noch in einer Kommandozeile steht.
- .vault-tools/auto-push/faelle_auto_push.py: 28 Fälle gegen ein echtes
  Wegwerf-Repo mit echtem Remote, alle bestanden. Der Lauf hat zwei
  Fehler gefunden, die jetzt behoben sind: die Pfadauflösung scheiterte
  an Windows-Kurznamen, und die Laufzeitsperre landete im Repo.
- AI/Regelwerk/veroeffentlichung.md und ein Abschnitt im Stamm halten
  die Regel fest.

Co-Authored-By: Claude Opus 5 <[email protected]>
This commit is contained in:
Pascal MichelandClaude Opus 5 committed 2026-09-17 22:54:37 +02:00
1 parent c064c729ed
commit b148b90a23
8 files changed
+812 -2

No files matched your search

+58
View File
@@ -0,0 +1,58 @@
---
type: resource
status: reference
title: "Veröffentlichung der Anweisungsschicht"
summary: "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."
tags: [regelwerk, git, veroeffentlichung, werkzeuge]
created: 2026-09-17
updated: 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 nach jeder Änderung automatisch gepusht. Laden, wenn der Umfang geändert werden soll oder wenn eine Auto-Push-Meldung im Kontext steht.
**Der Vault-Root ist jetzt ein Git-Repo.** Das war er vorher nicht, und es widerspricht nicht [[AI/Regelwerk/projekte|projekte.md]]: Die Projekte unter `Code Projekte/` behalten ihre eigenen Repos, die von diesem hier nicht berührt werden.
| | |
| --- | --- |
| Remote | `https://git.nexhorizons.de/Nexhorizons/claude-regelwerk.git` |
| Zweig | `main` |
| Sichtbarkeit | Repo auf public, aber die Organisation `Nexhorizons` ist privat und die Instanz verlangt für jede Ansicht eine Anmeldung. **Faktisch ist es damit nur für angemeldete Nutzer der Instanz sichtbar.** |
## 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`** — nicht die Pfadliste im Hook. Die Liste dort entscheidet nur, ob der Hook überhaupt anläuft.
## 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.
## Der automatische Push
`.vault-tools/auto-push/auto_push.py`, eingetragen als PostToolUse-Hook auf `Edit|Write|MultiEdit`. Nach jeder Änderung an einer eingeschlossenen Datei: `git add -A`, Commit, Push. 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.
**Eine fehlende Voraussetzung ist ein Befund, kein Grund zu schweigen.** Fehlendes Token, fehlendes Remote, gescheiterter Push: Der Hook meldet das in den Kontext. Ein gescheiterter Push verliert nichts — der Commit bleibt lokal, der nächste Lauf schiebt ihn mit.
**Wenn eine Auto-Push-Meldung kommt**, ist sie zu lesen und nicht wegzuklicken. Der häufigste Fall wird ein Push-Fehler bei fehlendem Netz sein; dann genügt es, später eine beliebige eingeschlossene Datei erneut zu speichern.
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 der Hook auslöst und ob die Positivliste hält, und nicht, ob eine eingeschlossene Datei etwas enthält, das niemand veröffentlichen wollte.
## Referenzen
- [[CLAUDE|↑ Claude.md (Stamm)]]
- [[AI/Regelwerk/pruefwerkzeuge|pruefwerkzeuge.md]]: Angriffsliste und „eine fehlende Voraussetzung ist ein Befund"
- [[AI/Regelwerk/windows-shell|windows-shell.md]]: Geheimnisse nur als Länge ausgeben
- [[AI/Regelwerk/projekte|projekte.md]]: die eigenen Repos der Code-Projekte