incoming/.gitkeep als Datei- statt Verzeichnismuster trackbar (schliesst #88)
CI / verify (push) Successful in 53s
Release / release (push) Successful in 35s

Files changed:
- .gitignore
- CHANGES.md
- README.md
- VERSION
- incoming/.gitkeep
- instructions/bootstrap.md
- raw/CONTRACT.md
- tools/CONTRACT.md
- tools/chemenu/commands/docs_verify.py
This commit is contained in:
2026-09-11 13:11:31 +02:00
parent 95ab40827a
commit 36da0855cf
9 changed files with 77 additions and 32 deletions
+37 -1
View File
@@ -35,7 +35,7 @@ dev-checkout concern - readable here, never shipped as something to parse.
---
## 5.0.0-beta.14 - 2026-09-11 - tools/CONTRACT.md als Nachschlage-Dokument strukturiert: ###-Gruppen in beiden Tabellen, spiegelnde Reihenfolge, Lead-in-Regel
## 5.0.0-beta.15 - 2026-09-11 - incoming/.gitkeep als Datei- statt Verzeichnismuster trackbar (schliesst #88)
**Author:** Torben Nehmer
@@ -67,6 +67,7 @@ dev-checkout concern - readable here, never shipped as something to parse.
- AGENTS.md-Changelog-Absatz korrigiert: Contract-Prosa ist Sitzungsarbeit, doc-pull-through-Instruction ergaenzt
- docs verify prueft die Kommando- und Fehlerkontrakttabelle in tools/CONTRACT.md getrennt, 10 fehlende Fehlerkontrakt-Zeilen nachgetragen (schliesst #91)
- tools/CONTRACT.md als Nachschlage-Dokument strukturiert: ###-Gruppen in beiden Tabellen, spiegelnde Reihenfolge, Lead-in-Regel
- incoming/.gitkeep als Datei- statt Verzeichnismuster trackbar (schliesst #88)
<!-- /wikitool:bumps -->
@@ -1308,6 +1309,41 @@ Verifiziert: `tools/wikitool docs verify`, `tools/wikitool instructions verify`,
`pytest`-Suite (1195 passed). Typischer Zugriff: Median 229 statt 17.500 Tokens.
Schließt #92.
**`incoming/.gitkeep` ist jetzt trackbar - Datei- statt Verzeichnismuster in `.gitignore` (#88).**
`/incoming/` schloss bisher das Verzeichnis selbst aus, und Regel 2 im `.gitignore`-Kopf sagt
genau, warum das eine Falle ist: git kann keine Datei wieder einschließen, deren Elternverzeichnis
ausgeschlossen ist, also blieb ein `!incoming/.gitkeep` wirkungslos. Ein frischer Klon hatte den
Eingang deshalb nie - `instructions/bootstrap.md` Schritt 2 (`mkdir -p incoming`) fing das für
einen Menschen ab, der die Instruction liest, aber nicht für einen Checkout, den eine Maschine
anlegt: der Korpus-Checkout des MCP-Read-Servers entsteht aus Klon plus `fetch && reset --hard`
und läuft durch keinen Bootstrap, also fehlte der Eingang dort still, bis das erste Kommando ihn
brauchte.
Umgestellt auf `/incoming/*` plus `!/incoming/.gitkeep` - jetzt ignoriert das Muster den Inhalt,
nicht das Verzeichnis, und die Negation greift tatsächlich. Gegengeprüft in beide Richtungen:
`git check-ignore --no-index incoming/.gitkeep` meldet die Datei als nicht ignoriert,
`incoming/probe.pdf` weiterhin als ignoriert - die Kanarie aus
`docs_verify.REQUIRED_IGNORE_CANARIES` hält also unverändert. `incoming/.gitkeep` steht jetzt
zusätzlich in `REQUIRED_TRACKED_PATHS`, damit eine künftige Rückkehr zur Verzeichnisform
`docs verify` laut fehlschlagen lässt statt still zu wirken. Ein voller `dist export` +
`git init` + `git add -A`-Replay bestätigt, dass `incoming/.gitkeep` im allerersten Commit einer
frischen Instanz landet, während `incoming/probe.pdf` dort weiterhin ignoriert bleibt.
`instructions/bootstrap.md` Schritt 2 entfällt ersatzlos - ein frischer Klon braucht ihn nicht
mehr -, die übrigen Schritte rücken nach. `mcp-upload/` bleibt bewusst bei der Verzeichnisform
ohne `.gitkeep`: die Schreibprimitive des `submit`-Tools legt das Verzeichnis selbst an, sobald
sie gebraucht wird, und ein Checkout, der das Tool nie aktiviert, braucht das Verzeichnis auch
nie - anders als bei `incoming/` gibt es dort keinen Frisch-Klon-Fall abzudecken. Der
`.gitignore`-Kommentar zu `mcp-upload/` benennt diesen Kontrast jetzt ausdrücklich, statt sich
nur noch mit dem alten (identischen) Verhalten von `incoming/` zu vergleichen.
Geändert: `.gitignore` (beide Kommentarblöcke, neues Muster), `incoming/.gitkeep` (neu),
`tools/chemenu/commands/docs_verify.py` (`REQUIRED_TRACKED_PATHS`), `instructions/bootstrap.md`
(Schritt 2 entfernt, Rest umnummeriert), `raw/CONTRACT.md`, `tools/CONTRACT.md` (`dist export`-
Zeile), `README.md` (Architekturdiagramm-Kommentar). Verifiziert: `tools/wikitool docs verify`,
`tools/wikitool instructions verify`, volle `pytest`-Suite (1195 passed), manueller
`dist export`-Replay. Schließt #88.
---
## 4.7.4 - 2026-09-04 - bootstrap.md nennt den session-id-WARN nach frischem Bootstrap explizit als erwartet