Pascals Entscheidung E8 vom 2026-10-15: Die Ordner haben im öffentlichen Repo nichts zu suchen. abendkontrolle*.py nennt SSH-Benutzer und private IP des Docker-Hosts. Die Positivliste nimmt beide Ordner jetzt aus, die Dateien bleiben auf der Platte; der Verlauf der Trading-Werkzeuge liegt in einem eigenen lokalen Repo im selben Ordner. Co-Authored-By: Claude Opus 5.5 <[email protected]>
9.4 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. |
|
2026-09-17 | 2026-10-15 |
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 und ohne Anmeldung lesbar, seit Pascal am 2026-10-14 REQUIRE_SIGNIN_VIEW in der app.ini geändert hat (gemessen: Web und API 200, anonymer git clone geht). Vorher Weiterleitung auf den Login und 403 auf der API. Jedes public Repo der Instanz ist damit anonym lesbar. |
| Zweites Repo | https://git.nexhorizons.de/Nexhorizons-Public/claude-werkzeuge.git, Spiegel der Werkzeuge, siehe „Werkzeug-Spiegel" unten |
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/.
Ausgenommen aus .vault-tools/ sind seit 2026-10-15 auf Pascals Wort .vault-tools/trading-plattform-pruefung/ und .vault-tools/watermarks-remover/. Die Trading-Werkzeuge nennen Benutzer und Adressen des Docker-Hosts; sie sind ein eigenes lokales Git-Repo im selben Ordner. Ein neues Werkzeug des Trading-Projekts unter .vault-tools/ bekommt eine Ausnahmezeile in der .gitignore, bevor es geschrieben wird.
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:
- Kundennamen, Domains, IP-Adressen, Snippet- und Ticket-IDs. In
seo.mdstand 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. - Zugangsdaten. Skripte lesen Zugänge aus Umgebungsvariablen, nie aus einer Datei im Repo. Gilt auch für Standardwerte und Beispielaufrufe in Kommentaren.
__pycache__und Laufzeitdateien..pycträ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.
Werkzeug-Spiegel claude-werkzeuge
Angeordnet am 2026-10-14. Nach dem Vault-Push spiegelt derselbe 04:00-Lauf die Werkzeuge in ein zweites öffentliches Repo.
- Inhalt: der committete Stand von
.vault-tools/und.claude/, ohne.vault-tools/trading-plattform-pruefung/und.vault-tools/watermarks-remover/. DazuREADME.mdaus.vault-tools/auto-push/werkzeuge-README.md. - Neue Werkzeuge gehen automatisch mit. Die Ausschlüsse sind eine Negativliste in
werkzeuge_spiegel.py(AUSSCHLUESSE), so angeordnet („alle Werkzeuge außer Trading"). Seit die.gitignoredieselben Ordner ausnimmt, sind sie nie committet und damit doppelt gesperrt. Ein neues Trading-Werkzeug trägst du an beiden Stellen ein. - Klon:
D:\ClaudeData\claude-werkzeuge, außerhalb des Vaults. Der Lauf leert ihn bis auf.gitund packt neu aus. Er weigert sich, wennoriginnicht genau auf das Spiegel-Repo zeigt oder der Ordner im Vault liegt. - Das Repo ist ein Spiegel. Änderungen direkt in
claude-werkzeugeüberschreibt der nächste Lauf. - Protokoll: eine zweite Zeile je Lauf in
lauf.log(ok werkzeuge gespiegelt|unveraendertoderBEFUND werkzeuge: …). Scheitert der Vault-Push, entfällt der Spiegel. - Fallkatalog:
python .vault-tools/auto-push/faelle_werkzeuge_spiegel.py, Wegwerf-Vaults mit echten bare-Remotes. Fangnetz, kein Nachweis.
Referenzen
- CLAUDE
- AI/Regelwerk/pruefwerkzeuge: Angriffsliste und „eine fehlende Voraussetzung ist ein Befund"
- AI/Regelwerk/windows-shell: Geheimnisse nur als Länge ausgeben
- AI/Regelwerk/projekte: die eigenen Repos der Code-Projekte