.vault-tools (ohne trading-plattform-pruefung und watermarks-remover), .claude/agents, .claude/skills, .claude/workflows, .claude/settings.json. Co-Authored-By: Claude Opus 5.5 <[email protected]>
8.4 KiB
type, title, status, summary, tags, created, updated, modell, modell_begruendung
| type | title | status | summary | tags | created | updated | modell | modell_begruendung | ||
|---|---|---|---|---|---|---|---|---|---|---|
| plan-task | Task 05 — Bestandslauf: Probelauf, Halt, echter Lauf nach Freigabe | draft | Fährt Zähler und Bestandsskript gegen den echten Vault: Phase A nur Probelauf mit Auszählung und Halt, Phase B erst nach ausdrücklicher Freigabe mit Sicherung außerhalb des Vaults; kein Commit. |
|
2026-09-29 | 2026-09-29 | sonnet | Keine Codeänderung, aber Befehle gegen den echten Vault mit einem harten Halt, einem Datumswert aus der Laufzeit und Ausgaben, die vor dem Weitermachen gelesen werden müssen. |
Übersicht: 00-uebersicht.md
Task 05 — Bestandslauf
Globale Vorgaben: 00-uebersicht.md im selben Ordner, Abschnitt „Globale Vorgaben“.
Voraussetzungen: Tasks 01, 02 und 04 sind umgesetzt und geprüft. Pascal hat die Prüfschritte P1 bis P3 aus der Übersicht in Obsidian beantwortet.
Der Task hat zwei Phasen. Phase A fährst du, wenn der Auftrag „Phase A“ sagt. Phase B fährst du nur, wenn im Auftrag wörtlich „Phase B freigegeben“ steht. Steht das nicht da, endet dein Lauf nach Phase A.
Zieldateien
Im Vault und in den Projekt-Repos ändert nur waisen_bestand.py selbst Dateien, und nur in Phase B. Du legst von Hand nur an:
D:\Claude-waisen-protokoll\(neu, außerhalb des Vaults, Ausgaben der Läufe)D:\Claude-Sicherung-<Datum>-waisen\(neu, außerhalb des Vaults, legt das Skript in Phase B selbst an)
Verbote
- Kein Commit, kein
git add, keingit stash, keingit checkoutin irgendeinem Repo. - Keine Datei im Vault von Hand anfassen, auch nicht, um einen Befund „schnell“ zu beheben.
- Phase B nie ohne die wörtliche Freigabe im Auftrag. Bricht ein Lauf ab, nicht wiederholen und nichts zurückkopieren: melden.
- Befehle im Bash-Werkzeug, nicht in der PowerShell. Dort schreibt
>UTF-16.
Phase A — Probelauf
A1 — Treiber im echten Baum
PYTHONIOENCODING=utf-8 python D:/Claude/.vault-tools/linkcheck/faelle_waisen.py > /dev/null; echo "faelle_waisen exit=$?"; PYTHONIOENCODING=utf-8 python D:/Claude/.vault-tools/linkcheck/faelle_waisen_bestand.py > /dev/null; echo "faelle_waisen_bestand exit=$?"
Erwartet: zweimal exit=0. Sonst Halt und melden.
A2 — Protokollordner
mkdir -p D:/Claude-waisen-protokoll && test ! -e D:/Claude-waisen-protokoll/probelauf.txt && echo "angelegt"
Erwartet: angelegt. Den Ordner kann Task 06 schon angelegt haben (Unterordner nachbesserung-06/); liegt dort aber schon eine probelauf.txt, Halt und melden.
A3 — Zählung vorher
PYTHONIOENCODING=utf-8 python D:/Claude/.vault-tools/linkcheck/waisen.py --vault D:/Claude --liste > D:/Claude-waisen-protokoll/waisen-vorher.txt; echo "exit=$?"; grep -E '^(Notizen im Graphen|Einträge in userIgnoreFilters|Ausgenommene Waisen|Muster ohne Treffer|Waisen außerhalb)' D:/Claude-waisen-protokoll/waisen-vorher.txt
Erwartet: exit=1 und die Zahlenzeilen. exit=2 heißt abgebrochen: Halt und melden.
A4 — Probelauf
PYTHONIOENCODING=utf-8 python D:/Claude/.vault-tools/linkcheck/waisen_bestand.py --vault D:/Claude > D:/Claude-waisen-protokoll/probelauf.txt; echo "exit=$?"
Erwartet: exit=0.
A5 — Auszählung (Messschritt M3)
P=D:/Claude-waisen-protokoll/probelauf.txt; echo "ZIEL gesamt: $(grep -c '^ZIEL ' "$P")"; echo "davon Plan-Uebersichten: $(grep -c '^ZIEL .*/00-uebersicht\.md \[' "$P")"; echo "davon Code Projekte: $(grep -c '^ZIEL Code Projekte/' "$P")"; echo "davon IT Workspace: $(grep -c '^ZIEL IT Workspace/' "$P")"; echo "davon AI/secondbrain: $(grep -c '^ZIEL AI/secondbrain/' "$P")"; echo "UEBERSPRUNGEN: $(grep -c '^UEBERSPRUNGEN ' "$P")"; echo "REST: $(grep -c '^REST ' "$P")"; grep -E '^(Waisen außerhalb|Durch Anhänge)' "$P"
A6 — Stichproben gegen die Verbote
P=D:/Claude-waisen-protokoll/probelauf.txt; echo "Taskdateien als Ziel:"; grep -E '^ZIEL .*/task-[^/]*\.md \[' "$P"; echo "Ausnahmen als Ziel:"; grep -E '^ZIEL (Bookstack/|Code Projekte/[^/]*/data/)' "$P"; echo "Ende der Stichprobe"
Erwartet: zwischen den Überschriften und Ende der Stichprobe steht nichts. Steht dort eine Zeile, Halt und melden.
A7 — Halt
Melde die vollständige Ausgabe von A1 bis A6 und den Pfad D:/Claude-waisen-protokoll/probelauf.txt. Dann endet dein Lauf. Den Probelauf liest der Koordinator, die Freigabe für Phase B gibt Pascal.
Phase B — echter Lauf, nur mit „Phase B freigegeben“
B1 — Vault seit Phase A unverändert?
PYTHONIOENCODING=utf-8 python D:/Claude/.vault-tools/linkcheck/waisen_bestand.py --vault D:/Claude > D:/Claude-waisen-protokoll/probelauf-2.txt; echo "exit=$?"; diff <(grep -E '^(ZIEL | \| |UEBERSPRUNGEN |REST )' D:/Claude-waisen-protokoll/probelauf.txt) <(grep -E '^(ZIEL | \| |UEBERSPRUNGEN |REST )' D:/Claude-waisen-protokoll/probelauf-2.txt) && echo "GLEICH"
Erwartet: exit=0 und GLEICH. Zeigt diff Unterschiede, hat sich der Vault seit Phase A geändert: Halt, die diff-Ausgabe melden, nichts anwenden.
B1b — Git-Stand der berührten Repos vorher
Jedes Ziel liegt in einem Git-Repo: in einem Code-Projekt, im _arbeitsstand eines Projekts im IT Workspace oder im Repo der Vault-Wurzel. Manche Repos tragen schon vorher fremde Änderungen. Deshalb wird der Stand vorher festgehalten und nachher verglichen. GIT_OPTIONAL_LOCKS=0 verhindert, dass git status den Index auffrischt.
D=D:/Claude-waisen-protokoll; sed -nE 's/^ZIEL (.*) \[.*$/\1/p' "$D/probelauf-2.txt" | while IFS= read -r f; do git -C "D:/Claude/$(dirname "$f")" rev-parse --show-toplevel 2>/dev/null; done | sort -u > "$D/repos.txt"; echo "Repos: $(wc -l < "$D/repos.txt")"; cat "$D/repos.txt"; while IFS= read -r r; do echo "== $r"; GIT_OPTIONAL_LOCKS=0 git -C "$r" status --short --untracked-files=all; done < "$D/repos.txt" > "$D/git-vorher.txt"; echo "exit=$?"
Erwartet: eine Zeile Repos: <Zahl>, die Liste der Repos und exit=0.
B2 — Anwenden
S="D:/Claude-Sicherung-$(date +%F)-waisen"; echo "Sicherung: $S"; test ! -e "$S" && PYTHONIOENCODING=utf-8 python D:/Claude/.vault-tools/linkcheck/waisen_bestand.py --vault D:/Claude --anwenden --sicherung "$S" > D:/Claude-waisen-protokoll/anwenden.txt; echo "exit=$?"
Erwartet: die Zeile Sicherung: D:/Claude-Sicherung-<Datum>-waisen und exit=0. Prüfe, ob das Datum mit dem Sitzungsdatum aus deinem Kontext übereinstimmt, und melde es. Bei exit=2 die ganze Datei anwenden.txt melden, besonders die Zeilen unter Vor dem Abbruch schon angehängt, und nichts weiter tun.
B3 — Anwenden hat getan, was der Probelauf zeigte
diff <(grep -E '^(ZIEL | \| |UEBERSPRUNGEN |REST )' D:/Claude-waisen-protokoll/probelauf-2.txt) <(grep -E '^(ZIEL | \| |UEBERSPRUNGEN |REST )' D:/Claude-waisen-protokoll/anwenden.txt) && echo "GLEICH"; grep -E '^(Angehängt an|Waisen außerhalb der Ausnahmen)' D:/Claude-waisen-protokoll/anwenden.txt
Erwartet: GLEICH, dazu die Zeilen mit „vorher“ und „nachher“.
B4 — Zählung nachher
PYTHONIOENCODING=utf-8 python D:/Claude/.vault-tools/linkcheck/waisen.py --vault D:/Claude --liste > D:/Claude-waisen-protokoll/waisen-nachher.txt; echo "exit=$?"; grep '^Waisen außerhalb' D:/Claude-waisen-protokoll/waisen-nachher.txt
Erwartet: dieselbe Zahl wie in der Zeile „nachher“ aus B3.
B5 — Stand der Projekt-Repos
Setze S auf den Pfad aus B2, Zeile Sicherung:, und fahre:
D=D:/Claude-waisen-protokoll; while IFS= read -r r; do echo "== $r"; GIT_OPTIONAL_LOCKS=0 git -C "$r" status --short --untracked-files=all; done < "$D/repos.txt" > "$D/git-nachher.txt"; diff "$D/git-vorher.txt" "$D/git-nachher.txt"; echo "diff-exit=$?"; echo "Zeilen in GEAENDERT.txt: $(wc -l < "$S/GEAENDERT.txt")"
Erwartet: diff zeigt nur Zeilen, die mit > und danach M beginnen, eine je geänderter Datei eines Code-Projekts oder eines _arbeitsstand. Die Pfade darin sind relativ zum Repo, in GEAENDERT.txt relativ zum Vault. Dateien unter AI/, Inbox/ und IT Workspace/ außerhalb eines _arbeitsstand ignoriert das Repo der Vault-Wurzel, sie erscheinen nicht. Eine Zeile, die mit < beginnt, oder eine neue Zeile zu einer Datei, die nicht in GEAENDERT.txt steht, meldest du wörtlich: Sie kann von einer parallelen Sitzung stammen. Committen tut der Koordinator, je Repo einzeln und nur die Dateien aus GEAENDERT.txt.
B6 — Bericht
Melde die vollständige Ausgabe von B1 bis B5, den Sicherungspfad und die Pfade der vier Protokolldateien. Nichts committen, nichts zurückkopieren.