- .vault-tools/plan-kopie/LIESMICH.md - .vault-tools/plan-kopie/rot_nachweis.py - .vault-tools/plan-kopie/welle_vergleich.py - .vault-tools/plan-kopie/welle_vergleich_treiber.py - .vault-tools/trading-plattform-pruefung/LIESMICH.md - .vault-tools/trading-plattform-pruefung/angriffe.py - .vault-tools/trading-plattform-pruefung/browserlauf.py - .vault-tools/trading-plattform-pruefung/browserlauf_zugang.py - .vault-tools/trading-plattform-pruefung/c_eigenlauf.py - .vault-tools/trading-plattform-pruefung/d_eigenlauf.py - .vault-tools/trading-plattform-pruefung/handelstag_auswertung.py - .vault-tools/trading-plattform-pruefung/ntfy_probe_server.py - … und 7 weitere Erzeugt vom PostToolUse-Hook .vault-tools/auto-push/auto_push.py. Co-Authored-By: Claude Opus 5 <[email protected]>
7.0 KiB
type, status, title, summary, tags, created, updated
| type | status | title | summary | tags | created | updated | ||
|---|---|---|---|---|---|---|---|---|
| resource | active | Planwerkzeuge: Plan auf eine Kopie anwenden und jede Welle dagegen vergleichen | Skripte für die Standardschleife bei Plänen mit ausgeschriebenem Code — schlanke Kopie bauen, Plan auf die Kopie anwenden, je Welle Menge und Bytes vergleichen, Aus-wird-Blöcke prüfen, Codeblöcke auf unsichtbare Zeichen absuchen, Escape-Folgen per Codepunkt setzen. Entstanden 2026-09-17 in der Trading Plattform (Teil 3b). |
|
2026-09-17 | 2026-09-17 |
Planwerkzeuge für die Kopie mit angewendetem Plan
Die Regel dazu steht in AI/Regelwerk/codeworkflow („Die Kopie mit dem angewendeten Plan bleibt stehen …"). Hier steht nur, wie man die Skripte benutzt. Alle laufen mit dem Windows-Python: PYTHONIOENCODING=utf-8 python -X utf8 <skript> ….
Ablauf
-
Kopie bauen — erst, wenn der Planer fertig gemeldet hat. Den Projektbaum ohne
.git, ohne Geheimnisdateien und ohnenode_modulesin einen Wegwerfordner kopieren. Ausschlüsse als Pfade vom Wurzelordner angeben, nicht als Ordnernamen: Ein Ausschluss von „jedem Ordner namensdata" hat am 2026-09-17 auch das Pakettrading/datagetroffen, und die Suite der Kopie brach mit Sammelfehlern ab. Nach dem Kopieren die Paketliste gegen das Original halten. Beides erledigtkopie_bauen.py <projekt> <ziel> --ohne <relpfad> …: Es nimmt Ausschlüsse nur als Pfade vom Wurzelordner, meldet einen Ausschluss ohne Gegenstück („ein Name statt eines Pfads?"), überspringt Verknüpfungen und Junctions, lässt__pycache__weg, weigert sich bei einem vorhandenen Ziel und vergleicht am Ende die Python-Pakete beider Bäume. Für die Trading Plattform:--ohne .git dashboard/node_modules dashboard/dist data artifacts config/secrets.toml docs/plans. Braucht die Kopienode_modules, eine Junction setzen (mklink /J) — und sie vor dem Löschen der Kopie mitcmd //c rmdir <pfad>wieder lösen, sonst trifftrm -rfdas echtenode_modules. Nietsc -bdurch die Junction fahren (schreibt nachnode_modules/.tmp);npx tsc -p tsconfig.app.json --noEmitnehmen. -
Plan anwenden:
plan_materialisiere.py <planordner> <kopie> task-01.md task-02.md …in Wellenreihenfolge. Erkennt die MarkenAus:/wird:, „Die ganze Datei ist neu", „vollständig ersetzt" und „Häng diesen Block ans Ende"; Dateien, die## Zieldateienals „(gelöscht)" führt, löscht es in der Kopie. Prosa-Tasks („wird: ein neuer Abschnitt, er muss sagen …") lassen sich nicht anwenden. -
Auf der Kopie fahren: Suite, Typprüfung, Mutanten. Ein Mutantenlauf gibt je Mutant die Fehlerzeile aus, nicht nur den Exitcode.
-
Vor jeder Welle und nach jeder Plankorrektur:
plan_bloecke.py vor <tasks…> --projekt <projekt>(jeder Aus-Block steht genau einmal im echten Baum) undplan_zeichen.py <planordner>(keine Zeilen- und Absatztrenner, Format- und Steuerzeichen in Codeblöcken). -
Nach jeder Welle:
welle_vergleich.py --projekt <projekt> --mat <kopie> [--prosa <rel> …] -- <taskdateien der Welle>. Prüft, ob genau die Zieldateien geändert sind und ob jede byte-gleich mit der Kopie ist. Es zeigt je Datei nur die erste Abweichung — danachdiffauf die ganze Datei. Eigene Plankorrekturen im Baum meldet es zu Recht als „außerhalb der Zieldateien". -
Escape-Folgen setzen:
plan_escape.py <datei> <zeile> <codepunkt-hex> …ersetzt echte Zeichen in einer Zeile durch ihre Escape-Folge, ohne dass eine Schreibschicht mitredet. -
Rot-Nachweis je Task (seit 2026-09-18):
rot_nachweis.py <basis-kopie> <planordner> <arbeitsordner> <spec.json> [--fixturen <ordner>] [--node-modules <pfad>].plan_materialisiere.pywendet eine Taskdatei immer ganz an; „erst der Test, dann die Umsetzung" lässt sich damit nicht beobachten. Das Skript stellt den Zustand dazwischen auf Wegwerfkopien her — Basis plus Voraussetzungstasks plus der Task, danach die produktiven Zieldateien zurück auf den Stand vor dem Task — und fährt die Testdateien des Tasks (pytest in WSL, vitest unter Windows über eine Junction, die es vor dem Löschen löst). Es meldet je TaskROTmit der ersten Fehlerzeile oderGRUEN; ein Test, der ohne Umsetzung grün ist, misst sie nicht. Die Basis-Kopie zieht man vor der ersten Welle.spec.jsonnennt je Task die Voraussetzungstasks. Erster Einsatz am 2026-09-18 an vier Plänen der Trading Plattform: 35 Tasks, alle rot an der gemeinten Stelle, keiner grün ohne Umsetzung. Die Executer brauchen den Tanz mit dem Beiseitelegen der Produktivdatei dann nicht mehr; ihr Auftrag sagt das ausdrücklich.
Was belegt ist
Seit 2026-09-18 nimmt welle_vergleich.py unter ## Zieldateien auch Pfade relativ zum Projekt (ohne Laufwerk und ohne Wurzel), weil Pläne für einen Git-Worktree keine absoluten Pfade nennen; ein .. darin ist ein Befund wie ein fremder absoluter Pfad. Jede Zeile braucht weiter die Klammer hinter dem Pfad ((neu), (geändert), (gelöscht)). plan_materialisiere.py erkennt eine Zieldatei ohne Schrägstrich nur mit den Endungen py, ts, tsx, toml, md, css und json — für compose.yaml in der Projektwurzel schreibt die Überschrift ./compose.yaml. Der Treiber fährt dazu drei weitere Fälle (relative Grundlinie, relative Abweichung, .. nach außen), zusammen 17.
welle_vergleich_treiber.py fährt 14 Angriffsfälle gegen welle_vergleich.py (Grundlinie zuerst; fremde Datei, unveränderte Zieldatei, Abweichung in erster und letzter Zeile und in der letzten Zieldatei, CRLF, Datei fehlt in der Kopie, Task ohne Zieldateien, Kopie fehlt, Löschung nicht ausgeführt, Prosa-Datei unverändert, Zieldatei außerhalb des Projekts, Datei länger als der Plan). plan_zeichen.py hat am 2026-09-17 an einem echten Fund rot gezeigt (U+2028 im Plan). plan_materialisiere.py reproduziert Task 108 des Teil-3b-Plans aus dem Stand vor den Wellen byte-genau. kopie_bauen.py ist am 2026-09-17 an drei kaputten Eingaben rot gesehen: Ziel existiert schon (Exit 2, nichts kopiert), Ausschluss node_modules ohne Gegenstück im Wurzelordner (Befund), und ein aus der Kopie entferntes Paket trading/data (die Paketprüfung nennt es; nach dem Zurücklegen leer). Einen Treiber dazu gibt es noch nicht — die drei Fälle sind von Hand gefahren.
Was die Skripte nicht sehen
Dateien, die .gitignore ausblendet; ob die Kopie selbst sauber ist (eine verschmutzte Kopie erzeugt Fehlalarm, kein falsches Grün); ob die Kopie älter ist als der Plan — wird eine Taskdatei nach dem Anwenden noch überarbeitet, meldet welle_vergleich.py eine Abweichung, die keine ist (2026-09-17, Teil 4c: der Planer lief noch, als die Kopie entstand). Dann entscheidet plan_bloecke.py nach gegen den echten Baum, und die betroffenen Dateien der Kopie werden aus git show HEAD:<pfad> neu aufgebaut und der Task erneut angewendet; verwechselbare sichtbare Zeichen (kyrillisches „с"). Sie sind ein Fangnetz, kein Nachweis — den liefert der Lauf mit echten Daten.
Das ältere .vault-tools/plan-diff/plan_diff.py vergleicht Ganzdatei-Blöcke einer früheren Plankonvention und bleibt dafür in Gebrauch.