stack: TOC-Pflicht fuer Referenzdateien ueber 100 Zeilen (docs toc); session-setup.md/gates.md nennen die tatsaechliche Budget-Ausnahmeliste (schliesst #73, #76)
CI / verify (push) Failing after 57s
Release / release (push) Successful in 37s

Files changed:
- AGENTS.md
- CHANGES.md
- VERSION
- instructions/CONTRACT.md
- instructions/capture-session.md
- instructions/claude-code-model-selection.md
- instructions/dev/issue-tracking.md
- instructions/dev/testing-conventions.md
- instructions/dev/version-parts.md
- instructions/evolve-subtypes.md
- instructions/gates.md
- instructions/german-terminology.md
- instructions/ingest-large-tree.md
- instructions/kb-profiles.md
- instructions/link-taxonomy.md
- instructions/mcp-read-server.md
- instructions/migrate-corpus.md
- instructions/migrations/3.0.0-authoring-conventions.md
- instructions/migrations/4.0.0-link-taxonomy.md
- instructions/private-instance.md
- instructions/session-setup.md
- instructions/setup-instance.md
- kb/CONTRACT.md
- kb/CONVENTIONS.md
- kb/concepts/COLLECTION.md
- raw/CONTRACT.md
- tools/CONTRACT.md
- tools/chemenu/commands/docs_verify.py
- tools/chemenu/commands/instructions_cmd.py
- tools/chemenu/tests/test_docs_verify.py
- tools/chemenu/tests/test_instructions_cmd.py
- tools/chemenu/tests/test_toc.py
- tools/chemenu/toc.py
- types/type-spec.md
This commit is contained in:
2026-09-09 20:38:42 +02:00
parent a51d7a322f
commit 2c4c2b1c7c
34 changed files with 929 additions and 15 deletions
+79 -1
View File
@@ -35,7 +35,7 @@ dev-checkout concern - readable here, never shipped as something to parse.
---
## 4.8.0-beta.12 - 2026-09-09 - Ausgelieferte Doku zitiert keine Issue-Nummern mehr, docs verify prueft es (schliesst #77)
## 5.0.0-beta.1 - 2026-09-09 - TOC-Pflicht fuer Referenzdateien ueber 100 Zeilen; session-setup.md/gates.md nennen die tatsaechliche Budget-Ausnahmeliste (schliesst #73, #76)
**Author:** Torben Nehmer
@@ -53,8 +53,13 @@ dev-checkout concern - readable here, never shipped as something to parse.
- instructions/CONTRACT.md: Skill-H1, Referenztiefe und Begruendungsprosa praezisiert (#71, #72, #79)
- SKILL.md-Sanierung: Checklisten, Kommandolisten, wiki-status-Hard-Rule, wiki-query-Filingpruefung (#70, #74, #75, #78)
- Ausgelieferte Doku zitiert keine Issue-Nummern mehr, docs verify prueft es (schliesst #77)
- TOC-Pflicht fuer Referenzdateien ueber 100 Zeilen; session-setup.md/gates.md nennen die tatsaechliche Budget-Ausnahmeliste (schliesst #73, #76)
<!-- /wikitool:bumps -->
**Migration:** none required - Betrifft nur AGENTS.md, die Stage-/Collection-Contracts und instructions/; kb/-Inhalt bleibt unberuehrt, keine Migration noetig.
**Breaking Change:** docs verify verlangt jetzt eine aktuelle Inhaltsverzeichnis-Region (<!-- wikitool:toc -->) auf AGENTS.md, jedem Stage-/Collection-Contract und jeder flachen instructions/**.md-Datei ueber 100 Zeilen. Eine bestehende Instanz mit einer eigenen instructions/*.md-Datei ueber 100 Zeilen ohne TOC sieht docs verify nach dem Tool-Update neu fehlschlagen, bis einmalig 'wikitool docs toc --apply' laeuft und der Diff committet wird.
Das Label `status/incoming` gibt es seit heute in Gitea: der Mensch legt einen
Stub an — zwei Sätze, ein Verdacht, ein „wäre interessant" — und der Stack
komplettiert ihn. `instructions/dev/issue-tracking.md` beschrieb es nicht, und
@@ -840,6 +845,79 @@ Tracker schreibt" und „dem Tracker selbst"), sowie die 16 Doku-Dateien:
Schließt #77.
**Warum das eine MAJOR ist, obwohl `kb/` unberührt bleibt** (#73, #76): Anthropics
Skill-Authoring-Doku verlangt für Referenzdateien über 100 Zeilen ein
Inhaltsverzeichnis, damit ein Agent, der eine solche Datei nur mit `head -100`
anliest, trotzdem die volle Abschnittsübersicht sieht — dieselbe Vorschau-Mechanik,
die #72 schon für die Referenztiefe als real anerkannt hat. Ein von Hand
gepflegtes Inhaltsverzeichnis wäre die nächste Drift-Quelle; also ist es jetzt eine
dritte generierte Region neben `xref`s und `cite`s (`<!-- wikitool:toc -->` ...
`<!-- /wikitool:toc -->`, `tools/chemenu/toc.py`), erzeugt und geprüft wie jede
andere abgeleitete Kopie. `wikitool docs toc [--apply]` schreibt sie; `docs verify`
prüft jetzt, dass sie auf jeder Datei aktuell ist, die `AGENTS.md`, ein
Stage-/Collection-Contract oder die flache `instructions/**.md`-Form abdeckt (25
Dateien in diesem Repo, `instructions/dev/` eingeschlossen — strukturell dieselbe
Dateiform, nur von `dist export` ausgenommen). Der Umfang ist berechnet, nie eine
Handliste: er folgt AGENTS.md § File naming, nicht einer Link-Traversierung ab den
fünf Content-Skills, und schließt `types/<name>.md`-Einzelspecs bewusst aus — die
laufen über `wikitool types describe`, das den Inhalt neu rendert statt die Datei
roh auszugeben, sodass die Vorschau-Mechanik dort gar nicht greift.
Das ist grenzüberschreitend, weil `docs verify` damit eine neue Pflichtprüfung
über *bestehenden* Inhalt bekommt: eine Instanz mit einer eigenen
`instructions/*.md`-Datei über 100 Zeilen, an der nichts geändert wurde, sieht
`docs verify` nach reinem Tool-Update neu fehlschlagen, bis einmalig
`wikitool docs toc --apply` läuft und der Diff committet wird — derselbe
Bruchtyp wie ein verschärftes Type-Spec-Pflichtfeld. Keine Migration nötig, weil
kein `kb/`-Inhalt betroffen ist; der einmalige `docs toc --apply`-Lauf ist der
volle Reparaturweg.
Zwei Nebenfunde beim Bauen der TOC-Regel, beide vor dem Bump behoben, weil sie
sonst denselben Bump falsch aussehen ließen: `docs verify`s
`ISSUE_REFERENCE_RE` (`#\d+`) hielt numerierte-Schritt-Anker wie
`#2-fix-the-fidelity-before-writing-a-word` für Issue-Zitate — die Regel nahm
bisher an, dass ein Anker immer mit einem Buchstaben beginnt, was für
nummerierte Überschriften (`instructions/capture-session.md`) nicht mehr gilt;
behoben durch einen Lookbehind, der genau die `](#...`-Linkfragment-Form
ausschließt, ohne ein echtes `(#66)`-Zitat zu übersehen. Und
`instructions_cmd.dev_only_forbidden_references` prüfte mit blankem
`name in text`: ein TOC-Anker wie `#where-stack-development-happens`
(`instructions/private-instance.md`) enthält „stack-dev" als reine Teilzeichenkette,
ohne den Skill zu meinen — behoben durch eine wortgrenzengebundene
Regex-Suche.
Geändert: `tools/chemenu/toc.py` (neu), `tools/chemenu/commands/docs_verify.py`
(`check_toc_regions`, `docs toc`-Kommando, `ISSUE_REFERENCE_RE`-Lookbehind),
`tools/chemenu/commands/instructions_cmd.py`
(`dev_only_forbidden_references` wortgrenzengebunden), `tools/CONTRACT.md`
(`docs toc`-Zeile), `tools/chemenu/tests/test_toc.py` (neu, 15 Tests),
`tools/chemenu/tests/test_docs_verify.py` (drei neue Tests: nummerierter Anker,
geklammertes echtes Zitat, TOC-Region auf dem realen Baum),
`tools/chemenu/tests/test_instructions_cmd.py` (ein neuer Test für die
Teilzeichenketten-Kollision), sowie die 25 Referenzdateien, die jetzt eine
TOC-Region tragen: `AGENTS.md`, `kb/CONTRACT.md`, `kb/CONVENTIONS.md`,
`kb/concepts/COLLECTION.md`, `raw/CONTRACT.md`, `tools/CONTRACT.md`,
`types/type-spec.md`, `instructions/CONTRACT.md`, `instructions/gates.md`,
`instructions/setup-instance.md`, `instructions/private-instance.md`,
`instructions/link-taxonomy.md`, `instructions/kb-profiles.md`,
`instructions/ingest-large-tree.md`, `instructions/capture-session.md`,
`instructions/claude-code-model-selection.md`, `instructions/german-terminology.md`,
`instructions/evolve-subtypes.md`, `instructions/mcp-read-server.md`,
`instructions/migrate-corpus.md`, `instructions/migrations/3.0.0-authoring-conventions.md`,
`instructions/migrations/4.0.0-link-taxonomy.md`, `instructions/dev/issue-tracking.md`,
`instructions/dev/testing-conventions.md`, `instructions/dev/version-parts.md`.
Zusätzlich, unabhängig davon (#76): `instructions/session-setup.md` § Scope und
`instructions/gates.md` behaupteten, die Budget-Ausnahme richte sich danach, ob
ein Kommando das Wiki verändert. Tatsächlich zählt `run_budget.py` eine feste
Allowlist (`SKIP_COMMANDS`/`SKIP_COMMAND_PATHS`) — `lint` schreibt nur ins
gitignorte `reports/`, sieht also lesend aus, steht aber nicht auf der Liste und
zählt wie jedes mutierende Kommando. Beide Dateien verweisen jetzt auf die Liste
in `tools/CONTRACT.md`, statt sie mit einer falschen Faustregel zu umschreiben.
Kein Versionsbezug — reine Prosa-Korrektur, im selben Bump mitgeführt.
Schließt #73, #76.
---
## 4.7.4 - 2026-09-04 - bootstrap.md nennt den session-id-WARN nach frischem Bootstrap explizit als erwartet