Stack-Hintergrund braucht einen ausgelieferten Ort: docs/ als inertes Verzeichnis, Decision-Seiten bleiben in kb/ #38
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Ausgangsbefund
Die dokumentierte
adr-NNN--Konvention inkb/concepts/COLLECTION.md§ "Decisions and ADRs" existierte nur auf Papier — keine Seite folgte dem Format. Stattdessen trugen sieben Seitenconcept_type: decisionin 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 jedekb/-Seite,concept_type: decisioneingeschlossen — ein Kategorienfehler: Zeitablauf macht eine Entscheidung nicht falscher. Was eine Entscheidung entwertet, ist Supersession.Der eigentliche Treiber (2026-09-03)
dist exportlieferte keine einzigekb/-Seite aus:find_leaks(tools/chemenu/commands/dist_cmd.py:455) verwarf alles unterkb//raw/, was nichtCONTRACT.md, ein.templateoderlog.mdhiess. 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:
docs/kb/raw/, belegtDie sieben Seiten bleiben in
kb/Der frueher hier geplante Umzug nach
decisions/ist verworfen. Zwei geprueft Gruende: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:35deklariertdecisionalsconcept_type-Wert; die sieben sind alle Seiten dieses Subtyps. Ein Umzug bringt ihn auf exakt null.kb/zeigen auf die sieben, dazu tool-eigene Frontmatter-Arrays mit Taxonomie-Labels und Eintraege in der generiertenkb/provenance.md.links.pykennt kein Ziel ausserhalbkb/,xref addloest nur gegen Seitentitel innerhalbkb/auf, undlint_core.py:497fuehrtbroken_linksals 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 inertProsa 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 verifybehaelt seinen NamenDer frueher hier geplante Rename
docs verify→parity verifyist 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()ueberspringtconcept_type: decisionstrukturell; kategorische Begruendung im Docstring. Regressionstesttest_decay_skips_decision_pagesergaenzt (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 persupersedes-Link, keinadr-NNN--Praefix. Der Umzugs-Verweis auf einen "neuen Ort" ist entfallenkb/CONVENTIONS.md§ Naming undinstructions/kb-profiles.md(Profilgerman) korrigiert — beide dokumentierten noch die verworfeneadr-NNN--Namensregel_copy_tree(config.ROOT / "docs", "docs", frozenset())indist_cmd.build_plan(); Testtest_plan_ships_docs_verbatimergaenzt (tools/chemenu/tests/test_dist_cmd.py)AGENTS.md§ Routing plus Zeile und erklaerender Absatz in § File naming, mit der Regel, dassdocs/keinen normativen Satz traegttools/CONTRACT.md:docs verifyprueft Dokumentations-Paritaet, nicht dasdocs/-Verzeichnis;docs/in derdist export-Zeile ergaenztdocs verify,instructions verifyund die vollepytest-Suite (869 tests) grün vor Publish; ueber den Mass-Update Gate (11 Dateien, Token vom Operator freigegeben) veroeffentlichtdocs/befuellen → #45 (eigenes Issue,status/blockedauf 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 indist_cmd.pyist bereits scharf (_copy_treeliefert bei fehlendemsource_rootstill ein leeres Dict, siehedist_cmd.py:213) und braucht keine Anpassung, sobald #45 das Verzeichnis mit Inhalt anlegt.Bewusst akzeptierte offene Kanten
docs/-Seite und einerkb/-Seite zum selben Thema ist zulaessig, solange die eine erklaert und die andere belegt.docs/ist unbegrenzt, wenn niemand ihn deckelt. #45 deckelt ihn auf drei bis vier Startseiten.Verworfen
decisions/als eigenes Wurzelverzeichnis (Subtyp-Floor + 89 Links)docs/(Empfaenger hat diesources:-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, wiekb/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 exportliefert 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 Commit0b8ca74.Changelog: Body umstrukturiert. Frage 1 (Ort) entschieden: außerhalb
kb/, dauerhaft im Repo, Stack-Content, Arbeitsnamedecisions/. Frage 2 (Format) entschieden: organische Prosa stattadr-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 referenced this issue2026-09-03 04:33:45 +00:00
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.mdverbatim vs.kb/CONVENTIONS.md/kb/*/COLLECTION.mdals 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.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 inAGENTS.md“ mitdecisions/teilt. Details siehe Body § „Zweite Instanz desselben Musters (2026-09-03)“.Kein dauerhafter Ort für Architekturentscheidungen: die adr-NNN--Konvention ist tot, confidence decay passt nicht auf Decision-Seitento Stack-Hintergrund braucht einen ausgelieferten Ort: docs/ als inertes Verzeichnis, Decision-Seiten bleiben in kb/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: decisionginge auf null — und bricht 89 Wikilinks plus tool-eigene Frontmatter-Arrays, fuer die es kein Ziel ausserhalbkb/gibt), und der Renamedocs verify→parity verify(Kollision entfaellt, weil das Toolingdocs/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/*.ymlundINSTALL.mdwiderlegt).Neu: der eigentliche Treiber ist benannt —
dist exportliefert nullkb/-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/blockedauf dieses Issue.Labels:
area/kb→area/distribution,size/M→size/S.Changelog: Umgesetzt und geschlossen.
docs/-Export, Decay-Skip fuerconcept_type: decision, COLLECTION.md- und CONVENTIONS.md-Korrektur, Routing-Eintraege inAGENTS.md/tools/CONTRACT.md, alles unter 4.3.0 (Commit0b8ca74).docs/selbst bleibt bis #45 unpopuliert - git verfolgt keine leeren Verzeichnisse,_copy_treebraucht keine weitere Aenderung dafuer.