Stack-Hintergrund braucht einen ausgelieferten Ort: docs/ als inertes Verzeichnis, Decision-Seiten bleiben in kb/ #38

Closed
opened 2026-09-02 06:07:30 +00:00 by torben · 5 comments
Owner

Ausgangsbefund

Die dokumentierte adr-NNN--Konvention in kb/concepts/COLLECTION.md § "Decisions and ADRs" existierte nur auf Papier — keine Seite folgte dem Format. Stattdessen trugen sieben Seiten concept_type: decision in organischer Prosa ohne die vier vorgesehenen Felder: Delete Rather Than Anonymize, Dual Licensing by File Plan, Issue Label Scheme, KB Stack Versioning, Structural Enforcement over Documented Rule, Denylist over Allowlist, Diff-Reviewable Agent Edits.

Zusaetzlich lief confidence_decay() (tools/chemenu/commands/confidence_decay.py:120) bedingungslos ueber jede kb/-Seite, concept_type: decision eingeschlossen — ein Kategorienfehler: Zeitablauf macht eine Entscheidung nicht falscher. Was eine Entscheidung entwertet, ist Supersession.

Der eigentliche Treiber (2026-09-03)

dist export lieferte keine einzige kb/-Seite aus: find_leaks (tools/chemenu/commands/dist_cmd.py:455) verwarf alles unter kb//raw/, was nicht CONTRACT.md, ein .template oder log.md hiess. Eine frische Instanz bekam den Stack, aber keinen Grund fuer seine Form.

Das — nicht die Decay-Frage und nicht die tote ADR-Konvention — war die Luecke, die einen neuen Ort brauchte. Sie wird nicht dadurch geschlossen, dass sieben Seiten kb/ verlassen.

Entschieden (2026-09-03)

Zwei Kategorien werden getrennt, statt sieben Seiten zu verschieben:

gehoert nach Herkunft liefert aus Beispiel
Warum der Stack so gebaut ist docs/ stack-dev schreibt es, keine Quelle ja, verbatim "Warum Gates in Code stehen"
Was diese Instanz entschieden hat kb/ Transkript in raw/, belegt nein, zu Recht "Issue Label Scheme, entschieden 2026-09-02"

Die sieben Seiten bleiben in kb/

Der frueher hier geplante Umzug nach decisions/ ist verworfen. Zwei geprueft Gruende:

  1. Subtyp-Floor. instructions/dev/corpus-policy.md § Floors verlangt "Every declared subtype has ≥1 page" und nennt die Subtyp-Floors ausdruecklich als gating fuer eine laufende Aenderung. types/concept.md:35 deklariert decision als concept_type-Wert; die sieben sind alle Seiten dieses Subtyps. Ein Umzug bringt ihn auf exakt null.
  2. 89 Wikilinks aus kb/ zeigen auf die sieben, dazu tool-eigene Frontmatter-Arrays mit Taxonomie-Labels und Eintraege in der generierten kb/provenance.md. links.py kennt kein Ziel ausserhalb kb/, xref add loest nur gegen Seitentitel innerhalb kb/ auf, und lint_core.py:497 fuehrt broken_links als Fehlerklasse.

Der Decay-Skip ist permanent, nicht interim

Er ist nicht als Bruecke bis zu einer Migration gebaut, sondern als das, was er sachlich ist: eine kategorische Ausnahme. Die Begruendung im Docstring entsprechend — Zeitablauf falsifiziert keine Entscheidung, Supersession schon.

docs/ ist inert

Prosa ohne Frontmatter, ohne Typ, ohne Index, ohne Lint, ohne Decay, ohne Provenance. Kein Skill, kein automatischer Ladepfad — On-demand wie instructions/, aber ohne deren Bindungskraft.

Die eine Regel: docs/ enthaelt keinen normativen Satz. Was binden wuerde, gehoert in einen Contract. Damit ist es kein zweiter Ort fuer eine Regel (Invariante 8 bleibt heil).

Kein Rename: docs verify behaelt seinen Namen

Der frueher hier geplante Rename docs verifyparity verify ist verworfen. Verzeichnis und Verb kollidieren nur, wenn ein Befehl auf das Verzeichnis wirkt — und genau das tut keiner.

Umgesetzt (2026-09-03, 4.3.0, Commit 0b8ca74)

  • confidence_decay() ueberspringt concept_type: decision strukturell; kategorische Begruendung im Docstring. Regressionstest test_decay_skips_decision_pages ergaenzt (tools/chemenu/tests/test_confidence_decay.py)
  • kb/concepts/COLLECTION.md § "Decisions and ADRs" → § "Decisions" ersetzt durch die real gelebte Form: Entscheidung = gewoehnliche Concept-Seite, organische Prosa, **Status:** optional (in der Praxis ungenutzt), Supersession per supersedes-Link, kein adr-NNN--Praefix. Der Umzugs-Verweis auf einen "neuen Ort" ist entfallen
  • kb/CONVENTIONS.md § Naming und instructions/kb-profiles.md (Profil german) korrigiert — beide dokumentierten noch die verworfene adr-NNN--Namensregel
  • _copy_tree(config.ROOT / "docs", "docs", frozenset()) in dist_cmd.build_plan(); Test test_plan_ships_docs_verbatim ergaenzt (tools/chemenu/tests/test_dist_cmd.py)
  • Routing-Zeile in AGENTS.md § Routing plus Zeile und erklaerender Absatz in § File naming, mit der Regel, dass docs/ keinen normativen Satz traegt
  • Klarstellungssatz in tools/CONTRACT.md: docs verify prueft Dokumentations-Paritaet, nicht das docs/-Verzeichnis; docs/ in der dist export-Zeile ergaenzt
  • Version-Bump MINOR (4.2.0 → 4.3.0) mit Changelog-Eintrag; Decay-Skip und COLLECTION-Sektion sind im selben Bump mitgefahren
  • docs verify, instructions verify und die volle pytest-Suite (869 tests) grün vor Publish; ueber den Mass-Update Gate (11 Dateien, Token vom Operator freigegeben) veroeffentlicht
  • docs/ befuellen → #45 (eigenes Issue, status/blocked auf dieses, jetzt entsperrt)

Offene Kante, bewusst nicht geschlossen: das docs/-Verzeichnis selbst existiert im Arbeitsbaum noch nicht — git verfolgt keine leeren Verzeichnisse, und eine Datei eigens zum Anlegen des Verzeichnisses zu schreiben waere Inhalt vor seiner Zeit, wo #45 die eigentliche Befuellung macht. Der _copy_tree-Aufruf in dist_cmd.py ist bereits scharf (_copy_tree liefert bei fehlendem source_root still ein leeres Dict, siehe dist_cmd.py:213) und braucht keine Anpassung, sobald #45 das Verzeichnis mit Inhalt anlegt.

Bewusst akzeptierte offene Kanten

  • Die Grenze "Hintergrund vs. Regel" prueft nichts. Urteilssache — eine Maschine, die Prosa auf Normativitaet prueft, waere teurer als der Fehler.
  • Ueberschneidung zwischen einer docs/-Seite und einer kb/-Seite zum selben Thema ist zulaessig, solange die eine erklaert und die andere belegt.
  • Der Umfang von docs/ ist unbegrenzt, wenn niemand ihn deckelt. #45 deckelt ihn auf drei bis vier Startseiten.

Verworfen

  • decisions/ als eigenes Wurzelverzeichnis (Subtyp-Floor + 89 Links)
  • Umzug einzelner Seiten nach docs/ (Empfaenger hat die sources:-Transkripte nicht)
  • docs verifyparity verify (Kollision entfaellt, Blast Radius ~39 Dateien, Begruendung widerlegt)

Verwandt

#45 (Befuellung, jetzt entsperrt), #39 (Ownership-Modell, gelandet — docs/ liefert verbatim aus, wie kb/CONTRACT.md), #27 (geschlossen mit Verweis hierhin), #36, #28 (Subtyp-Floor, der den Umzug ausschloss), #19 (Vorgeschichte, unveraendert).

Vorgeschichte

Urspruenglicher Befund und Interims-Vorschlag vom 2026-09-02. Ort- und Formatfrage in der Folgesitzung entschieden (Arbeitsname decisions/, organische Prosa). Am 2026-09-03 kam eine zweite Instanz desselben Routing-Musters dazu (docs/ + parity verify-Rename). Dieselbe Sitzung hat den Zuschnitt anschliessend korrigiert: die Implementierungspruefung fand den Subtyp-Floor aus #28, die 89 Wikilinks und den unterschaetzten Rename-Umfang, und stiess auf den eigentlichen Treiber — dist export liefert keinen Hintergrund aus. Eine Folgesitzung, ebenfalls am 2026-09-03, hat den Zuschnitt umgesetzt: Code, Docs und Tests wie oben, Version 4.3.0, veroeffentlicht als Commit 0b8ca74.

## Ausgangsbefund Die dokumentierte `adr-NNN-`-Konvention in `kb/concepts/COLLECTION.md` § "Decisions and ADRs" existierte nur auf Papier — keine Seite folgte dem Format. Stattdessen trugen sieben Seiten `concept_type: decision` in organischer Prosa ohne die vier vorgesehenen Felder: *Delete Rather Than Anonymize*, *Dual Licensing by File Plan*, *Issue Label Scheme*, *KB Stack Versioning*, *Structural Enforcement over Documented Rule*, *Denylist over Allowlist*, *Diff-Reviewable Agent Edits*. Zusaetzlich lief `confidence_decay()` (`tools/chemenu/commands/confidence_decay.py:120`) bedingungslos ueber jede `kb/`-Seite, `concept_type: decision` eingeschlossen — ein Kategorienfehler: Zeitablauf macht eine Entscheidung nicht falscher. Was eine Entscheidung entwertet, ist Supersession. ## Der eigentliche Treiber (2026-09-03) `dist export` lieferte **keine einzige `kb/`-Seite** aus: `find_leaks` (`tools/chemenu/commands/dist_cmd.py:455`) verwarf alles unter `kb/`/`raw/`, was nicht `CONTRACT.md`, ein `.template` oder `log.md` hiess. Eine frische Instanz bekam den Stack, aber keinen Grund fuer seine Form. Das — nicht die Decay-Frage und nicht die tote ADR-Konvention — war die Luecke, die einen neuen Ort brauchte. Sie wird nicht dadurch geschlossen, dass sieben Seiten `kb/` verlassen. ## Entschieden (2026-09-03) Zwei Kategorien werden getrennt, statt sieben Seiten zu verschieben: | | gehoert nach | Herkunft | liefert aus | Beispiel | |---|---|---|---|---| | Warum der Stack so gebaut ist | `docs/` | stack-dev schreibt es, keine Quelle | ja, verbatim | "Warum Gates in Code stehen" | | Was *diese* Instanz entschieden hat | `kb/` | Transkript in `raw/`, belegt | nein, zu Recht | "Issue Label Scheme, entschieden 2026-09-02" | ### Die sieben Seiten bleiben in `kb/` Der frueher hier geplante Umzug nach `decisions/` ist **verworfen**. Zwei geprueft Gruende: 1. **Subtyp-Floor.** `instructions/dev/corpus-policy.md` § Floors verlangt "Every declared subtype has ≥1 page" und nennt die Subtyp-Floors ausdruecklich als gating fuer eine laufende Aenderung. `types/concept.md:35` deklariert `decision` als `concept_type`-Wert; die sieben sind alle Seiten dieses Subtyps. Ein Umzug bringt ihn auf exakt null. 2. **89 Wikilinks aus `kb/`** zeigen auf die sieben, dazu tool-eigene Frontmatter-Arrays mit Taxonomie-Labels und Eintraege in der generierten `kb/provenance.md`. `links.py` kennt kein Ziel ausserhalb `kb/`, `xref add` loest nur gegen Seitentitel innerhalb `kb/` auf, und `lint_core.py:497` fuehrt `broken_links` als Fehlerklasse. ### Der Decay-Skip ist permanent, nicht interim Er ist nicht als Bruecke bis zu einer Migration gebaut, sondern als das, was er sachlich ist: eine kategorische Ausnahme. Die Begruendung im Docstring entsprechend — Zeitablauf falsifiziert keine Entscheidung, Supersession schon. ### `docs/` ist inert Prosa ohne Frontmatter, ohne Typ, ohne Index, ohne Lint, ohne Decay, ohne Provenance. Kein Skill, kein automatischer Ladepfad — On-demand wie `instructions/`, aber ohne deren Bindungskraft. **Die eine Regel: `docs/` enthaelt keinen normativen Satz.** Was binden wuerde, gehoert in einen Contract. Damit ist es kein zweiter Ort fuer eine Regel (Invariante 8 bleibt heil). ### Kein Rename: `docs verify` behaelt seinen Namen Der frueher hier geplante Rename `docs verify` → `parity verify` ist **verworfen**. Verzeichnis und Verb kollidieren nur, wenn ein Befehl auf das Verzeichnis wirkt — und genau das tut keiner. ## Umgesetzt (2026-09-03, 4.3.0, Commit `0b8ca74`) - [x] `confidence_decay()` ueberspringt `concept_type: decision` strukturell; kategorische Begruendung im Docstring. Regressionstest `test_decay_skips_decision_pages` ergaenzt (`tools/chemenu/tests/test_confidence_decay.py`) - [x] `kb/concepts/COLLECTION.md` § "Decisions and ADRs" → § "Decisions" ersetzt durch die real gelebte Form: Entscheidung = gewoehnliche Concept-Seite, organische Prosa, `**Status:**` optional (in der Praxis ungenutzt), Supersession per `supersedes`-Link, kein `adr-NNN-`-Praefix. Der Umzugs-Verweis auf einen "neuen Ort" ist entfallen - [x] `kb/CONVENTIONS.md` § Naming und `instructions/kb-profiles.md` (Profil `german`) korrigiert — beide dokumentierten noch die verworfene `adr-NNN-`-Namensregel - [x] `_copy_tree(config.ROOT / "docs", "docs", frozenset())` in `dist_cmd.build_plan()`; Test `test_plan_ships_docs_verbatim` ergaenzt (`tools/chemenu/tests/test_dist_cmd.py`) - [x] Routing-Zeile in `AGENTS.md` § Routing plus Zeile und erklaerender Absatz in § File naming, mit der Regel, dass `docs/` keinen normativen Satz traegt - [x] Klarstellungssatz in `tools/CONTRACT.md`: `docs verify` prueft Dokumentations-Paritaet, nicht das `docs/`-Verzeichnis; `docs/` in der `dist export`-Zeile ergaenzt - [x] Version-Bump MINOR (4.2.0 → 4.3.0) mit Changelog-Eintrag; Decay-Skip und COLLECTION-Sektion sind im selben Bump mitgefahren - [x] `docs verify`, `instructions verify` und die volle `pytest`-Suite (869 tests) grün vor Publish; ueber den Mass-Update Gate (11 Dateien, Token vom Operator freigegeben) veroeffentlicht - [ ] `docs/` befuellen → **#45** (eigenes Issue, `status/blocked` auf dieses, jetzt entsperrt) **Offene Kante, bewusst nicht geschlossen:** das `docs/`-Verzeichnis selbst existiert im Arbeitsbaum noch nicht — git verfolgt keine leeren Verzeichnisse, und eine Datei eigens zum Anlegen des Verzeichnisses zu schreiben waere Inhalt vor seiner Zeit, wo #45 die eigentliche Befuellung macht. Der `_copy_tree`-Aufruf in `dist_cmd.py` ist bereits scharf (`_copy_tree` liefert bei fehlendem `source_root` still ein leeres Dict, siehe `dist_cmd.py:213`) und braucht keine Anpassung, sobald #45 das Verzeichnis mit Inhalt anlegt. ## Bewusst akzeptierte offene Kanten - Die Grenze "Hintergrund vs. Regel" prueft nichts. Urteilssache — eine Maschine, die Prosa auf Normativitaet prueft, waere teurer als der Fehler. - Ueberschneidung zwischen einer `docs/`-Seite und einer `kb/`-Seite zum selben Thema ist zulaessig, solange die eine erklaert und die andere belegt. - Der Umfang von `docs/` ist unbegrenzt, wenn niemand ihn deckelt. #45 deckelt ihn auf drei bis vier Startseiten. ## Verworfen - `decisions/` als eigenes Wurzelverzeichnis (Subtyp-Floor + 89 Links) - Umzug einzelner Seiten nach `docs/` (Empfaenger hat die `sources:`-Transkripte nicht) - `docs verify` → `parity verify` (Kollision entfaellt, Blast Radius ~39 Dateien, Begruendung widerlegt) ## Verwandt #45 (Befuellung, jetzt entsperrt), #39 (Ownership-Modell, gelandet — `docs/` liefert verbatim aus, wie `kb/CONTRACT.md`), #27 (geschlossen mit Verweis hierhin), #36, #28 (Subtyp-Floor, der den Umzug ausschloss), #19 (Vorgeschichte, unveraendert). ## Vorgeschichte Urspruenglicher Befund und Interims-Vorschlag vom 2026-09-02. Ort- und Formatfrage in der Folgesitzung entschieden (Arbeitsname `decisions/`, organische Prosa). Am 2026-09-03 kam eine zweite Instanz desselben Routing-Musters dazu (`docs/` + `parity verify`-Rename). Dieselbe Sitzung hat den Zuschnitt anschliessend korrigiert: die Implementierungspruefung fand den Subtyp-Floor aus #28, die 89 Wikilinks und den unterschaetzten Rename-Umfang, und stiess auf den eigentlichen Treiber — `dist export` liefert keinen Hintergrund aus. Eine Folgesitzung, ebenfalls am 2026-09-03, hat den Zuschnitt umgesetzt: Code, Docs und Tests wie oben, Version 4.3.0, veroeffentlicht als Commit `0b8ca74`.
torben added the prio/plannedsize/L labels 2026-09-02 06:07:30 +00:00
Author
Owner

Changelog: Body umstrukturiert. Frage 1 (Ort) entschieden: außerhalb kb/, dauerhaft im Repo, Stack-Content, Arbeitsname decisions/. Frage 2 (Format) entschieden: organische Prosa statt adr-NNN-, weil das schon real gelebte Praxis ist. Interims-Fix bleibt als Brücke bis zur Migration. Neuer Punkt ergänzt: Auslieferung sollte dem .template-Muster aus #39 folgen, sobald #39 gelandet ist. Akzeptanzkriterien entsprechend ersetzt durch "Verbleibende Arbeit".

**Changelog:** Body umstrukturiert. Frage 1 (Ort) entschieden: außerhalb `kb/`, dauerhaft im Repo, Stack-Content, Arbeitsname `decisions/`. Frage 2 (Format) entschieden: organische Prosa statt `adr-NNN-`, weil das schon real gelebte Praxis ist. Interims-Fix bleibt als Brücke bis zur Migration. Neuer Punkt ergänzt: Auslieferung sollte dem `.template`-Muster aus #39 folgen, sobald #39 gelandet ist. Akzeptanzkriterien entsprechend ersetzt durch "Verbleibende Arbeit".
torben added area/kbkind/buildprio/blockingsize/M and removed prio/plannedsize/L labels 2026-09-02 21:03:40 +00:00
torben added prio/planned and removed prio/blocking labels 2026-09-02 21:23:47 +00:00
Author
Owner

Update 2026-09-03: #39 (3.0.0) und #40 (4.0.0/4.1.0) sind gelandet. Der Punkt "Verhältnis zum Ownership-Modell aus #39 klären" in den Verbleibenden Arbeiten ist damit nicht mehr blockiert - das .template-Splitting-Muster (kb/CONTRACT.md verbatim vs. kb/CONVENTIONS.md/kb/*/COLLECTION.md als Instanz-Template) existiert jetzt real und kann direkt als Vorbild für die Auslieferung der Entscheidungsseiten übernommen werden, statt gegen eine sich noch bewegende Grundlage zu bauen. Nächster Schritt in der vereinbarten Reihenfolge: nach #28, vor #42.

**Update 2026-09-03:** #39 (3.0.0) und #40 (4.0.0/4.1.0) sind gelandet. Der Punkt "Verhältnis zum Ownership-Modell aus #39 klären" in den Verbleibenden Arbeiten ist damit nicht mehr blockiert - das `.template`-Splitting-Muster (`kb/CONTRACT.md` verbatim vs. `kb/CONVENTIONS.md`/`kb/*/COLLECTION.md` als Instanz-Template) existiert jetzt real und kann direkt als Vorbild für die Auslieferung der Entscheidungsseiten übernommen werden, statt gegen eine sich noch bewegende Grundlage zu bauen. Nächster Schritt in der vereinbarten Reihenfolge: nach #28, vor #42.
Author
Owner

Changelog: Body ergänzt um eine zweite Instanz desselben Routing-Musters (docs/-Verzeichnis + docs verifyparity verify-Rename), die sich den offenen Punkt „Verzeichnisname und Routing-Eintrag in AGENTS.md“ mit decisions/ teilt. Details siehe Body § „Zweite Instanz desselben Musters (2026-09-03)“.

**Changelog:** Body ergänzt um eine zweite Instanz desselben Routing-Musters (`docs/`-Verzeichnis + `docs verify` → `parity verify`-Rename), die sich den offenen Punkt „Verzeichnisname und Routing-Eintrag in `AGENTS.md`“ mit `decisions/` teilt. Details siehe Body § „Zweite Instanz desselben Musters (2026-09-03)“.
torben changed title from Kein dauerhafter Ort für Architekturentscheidungen: die adr-NNN--Konvention ist tot, confidence decay passt nicht auf Decision-Seiten to Stack-Hintergrund braucht einen ausgelieferten Ort: docs/ als inertes Verzeichnis, Decision-Seiten bleiben in kb/ 2026-09-03 15:46:16 +00:00
torben added size/Sarea/distribution and removed size/Marea/kb labels 2026-09-03 15:46:21 +00:00
Author
Owner

Changelog: Zuschnitt nach einer Implementierungspruefung korrigiert, Body und Titel neu geschrieben.

Verworfen: der Umzug der sieben Decision-Seiten nach decisions/ (verletzt den Subtyp-Floor aus #28concept_type: decision ginge auf null — und bricht 89 Wikilinks plus tool-eigene Frontmatter-Arrays, fuer die es kein Ziel ausserhalb kb/ gibt), und der Rename docs verifyparity verify (Kollision entfaellt, weil das Tooling docs/ nie anfasst; Blast Radius war ~39 Dateien statt der im Body genannten 3 Stellen, und die MINOR-Begruendung "kein externer Consumer" wird von .gitea/workflows/*.yml und INSTALL.md widerlegt).

Neu: der eigentliche Treiber ist benannt — dist export liefert null kb/-Seiten aus, eine frische Instanz bekommt keinen Hintergrund. docs/ schliesst das additiv, inert, mit der einen Regel "kein normativer Satz". Der Decay-Skip ist von Interims-Bruecke auf permanente kategorische Ausnahme umgestellt.

Abgespalten: #45 fuer das Befuellen von docs/, status/blocked auf dieses Issue.

Labels: area/kbarea/distribution, size/Msize/S.

**Changelog:** Zuschnitt nach einer Implementierungspruefung korrigiert, Body und Titel neu geschrieben. Verworfen: der Umzug der sieben Decision-Seiten nach `decisions/` (verletzt den Subtyp-Floor aus #28 — `concept_type: decision` ginge auf null — und bricht 89 Wikilinks plus tool-eigene Frontmatter-Arrays, fuer die es kein Ziel ausserhalb `kb/` gibt), und der Rename `docs verify` → `parity verify` (Kollision entfaellt, weil das Tooling `docs/` nie anfasst; Blast Radius war ~39 Dateien statt der im Body genannten 3 Stellen, und die MINOR-Begruendung "kein externer Consumer" wird von `.gitea/workflows/*.yml` und `INSTALL.md` widerlegt). Neu: der eigentliche Treiber ist benannt — `dist export` liefert null `kb/`-Seiten aus, eine frische Instanz bekommt keinen Hintergrund. `docs/` schliesst das additiv, inert, mit der einen Regel "kein normativer Satz". Der Decay-Skip ist von Interims-Bruecke auf permanente kategorische Ausnahme umgestellt. Abgespalten: **#45** fuer das Befuellen von `docs/`, `status/blocked` auf dieses Issue. Labels: `area/kb` → `area/distribution`, `size/M` → `size/S`.
Author
Owner

Changelog: Umgesetzt und geschlossen. docs/-Export, Decay-Skip fuer concept_type: decision, COLLECTION.md- und CONVENTIONS.md-Korrektur, Routing-Eintraege in AGENTS.md/tools/CONTRACT.md, alles unter 4.3.0 (Commit 0b8ca74). docs/ selbst bleibt bis #45 unpopuliert - git verfolgt keine leeren Verzeichnisse, _copy_tree braucht keine weitere Aenderung dafuer.

**Changelog:** Umgesetzt und geschlossen. `docs/`-Export, Decay-Skip fuer `concept_type: decision`, COLLECTION.md- und CONVENTIONS.md-Korrektur, Routing-Eintraege in `AGENTS.md`/`tools/CONTRACT.md`, alles unter 4.3.0 (Commit `0b8ca74`). `docs/` selbst bleibt bis #45 unpopuliert - git verfolgt keine leeren Verzeichnisse, `_copy_tree` braucht keine weitere Aenderung dafuer.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: torben/chemenu#38