--- 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-23 --- # 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|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-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/workflows/` (seit 2026-09-23, auf Pascals Wort), `.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 - [[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