stack: TOC-Pflicht fuer Referenzdateien ueber 100 Zeilen (docs toc); session-setup.md/gates.md nennen die tatsaechliche Budget-Ausnahmeliste (schliesst #73, #76)
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:
+79
-1
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user