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]>
91 lines
9.4 KiB
Markdown
91 lines
9.4 KiB
Markdown
---
|
|
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-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|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 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:
|
|
|
|
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.
|
|
|
|
## 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/`. Dazu `README.md` aus `.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 `.gitignore` dieselben 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 `.git` und packt neu aus. Er weigert sich, wenn `origin` nicht 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|unveraendert` oder `BEFUND 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|↑ 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
|