-
v3.0.0 Stable
released this
2026-09-02 13:05:10 +00:00 | 91 commits to main since this release3.0.0 - 2026-09-02 - Autorenkonventionen nach Eigentum geschnitten: kb/CONVENTIONS.md, deklarierte Collections
Author: Torben Nehmer
Breaking Change: kb/CONTRACT.md ist um alles gekuerzt, was eine Instanz selbst entscheidet; das steht jetzt in einer neuen, instanzeigenen kb/CONVENTIONS.md, aus der der Compiler die drei toolgefuehrten Abschnittsnamen liest. Eine bestehende Instanz muss diese Datei anlegen, auf jedem kb/*/COLLECTION.md profile: und required_by_stack: deklarieren und kb/CONTRACT.md aus dem Release nachziehen - sonst FAILt doctor und docs verify bricht. Ablauf: instructions/migrations/3.0.0-authoring-conventions.md
kb/CONTRACT.mdwar eine Datei mit zwei Autoritäten. Der eine Teil ist code-erzwungen und in
jeder Instanz gleich; der andere - § Language komplett, das Beziehungslabel-Vokabular, die
Tonfall-Beispiele samt deutscher Buzzword-Liste, die Confidence-Rubrik, das ADR-Präfix - ist
Konvention, die jede Instanz für sich entscheidet, und wurde trotzdem als bindender Contract
verbatim ausgeliefert. Wer bei Schritt 5 vonsetup-instance.md"Englisch" antwortete, hatte
danachkb/CONTRACT.md, vier Type-Specs undtools/chemenu/sections.pylokal geändert -
undprivate-instance.mds Decision Point sagt für so einen Merge-Konflikt: Upstream-Seite
nehmen. Für diese Instanz hieß das: KB-Sprache zurück auf Deutsch.Der Schnitt läuft jetzt danach, wer den Satz ändern darf.
kb/CONTRACT.mdbehält, was
wikitoolerzwingt; neu daneben liegtkb/CONVENTIONS.md, die genauso bindet und der
Instanz gehört. Unterschied ist Eigentum, nicht Autorität - deshalb liefert die Distribution nur
kb/CONVENTIONS.md.template, exakt derUSER.md/SOUL.md-Split ein Verzeichnis tiefer. Dazu
instructions/kb-profiles.md: der Katalog erprobter Profile, ausdrücklich Palette und kein
Enum. Übernommen wird der Text in die Instanzdatei, nie ein Verweis auf den Katalog - ein
Verweis wäre wieder genau die Konstruktion, die dieser Release beendet.sections.pyhält keine Überschrift mehr.RELATIONSHIPS = "Beziehungen"war die Stelle,
an der die Konvention in Code übergelaufen war: solange sie dort stand, konnte kein Template die
Sprache umstellen. Neu isttools/chemenu/conventions.py, das die drei Namen aus
kb/CONVENTIONS.mdliest;sections.pylöst sie per PEP 562 bei jedem Zugriff auf, wie
configseine Pfade - ein Modulkonstante hätte den Wert an den Baum gebunden, in dem der Prozess
gestartet ist. Aus demselben Grund istprovenance.CITE_BLOCK_HEADINGein__getattr__und
render_cite_block(heading=None)löst innerhalb des Aufrufs auf. Der Alias-Mechanismus, den das
Modul schon hatte, ist der Migrationspfad: erkannt wird die kanonische Form plus die
deklariertensection_aliases:plus das, was dieser Stack vor der Konventionsdatei geschrieben
hat. Ohne Datei antwortet dieser Fallback - richtig für jeden Korpus, der ihn erreichen kann,
denn der wurde unter genau diesen Namen geschrieben;doctorist die laute Hälfte davon.Die vier Page-Type-Specs schreiben
## {section.relationships}statt einer Überschrift.
Neue Template-Variablen{section.relationships}/{section.see_also}/{section.footnotes},
gefüllt aus der Instanzdeklaration. Damit ändert eine anderssprachige Instanz keine Datei unter
tools/odertypes/mehr - was Schritt 5 vonsetup-instance.mdvon fünf Editierstellen
über drei Schichten auf eine Entscheidung reduziert.COLLECTION.mdbekommt Frontmatter. Bisher wurde eine Collection rein an der Dateipräsenz
erkannt; die Deklaration brauchte einen Träger, sonst wäre der Ortsschnitt nur durch einen
Prosaschnitt ersetzt worden.profile:nennt den übernommenen Katalogeintrag (Freitext - eine
selbst angelegte Collection hat dort keinen),required_by_stack:sagt, obwikitooldie
Collection namentlich auflöst. Das zweite ist nicht die Wahl der Instanz:docs verify
prüft es beidseitig gegenkb_collections.STACK_REQUIRED_COLLECTIONS. Heute steht dort genau
sources-sources coverage, die[^cite-id]-Auflösung undkb/provenance.mdhängen an dem
Namen,entitiesan keinem.Das zweite Leck der Merge-Prozedur ist zu.
git checkout HEAD -- kb rawholte alles unter
beiden Stages auf den Vor-Merge-Stand - auchkb/CONTRACT.mdundraw/CONTRACT.md. Änderte der
Upstream einen davon, warf die Prozedur das Update still weg, und die Kontrollzeile meldete dabei
leer, bestätigte den Fehler also, statt ihn zu fangen.private-instance.mdnimmt die
Upstream-Seite jetzt für die drei Maschinerie-Pfade unter den Content-Stages zurück
(kb/CONTRACT.md,kb/CONVENTIONS.md.template,raw/CONTRACT.md) und schließt sie aus der
Kontrollzeile aus. Dieselbe Altlast in der Tarball-Richtung:INSTALL.mdSchritt 3 fasstekb/
gar nicht an und zogkb/CONTRACT.mddamit nie nach - jetzt ausdrücklich benannt.Verworfen, gemessen:
sources/auskb/herausziehen. Der Graph ist einwurzelig
(kb_scan.iter_kb_pagesmacht einrglobüberkb/, darauf sitzen Link-Graph, Orphan-Check,
index rebuildundsearch), und Source-Seiten sind darin der dichteste Knotentyp. Ein Hoist
machte jede Graph-Operation dauerhaft zweiwurzelig, um ein Verzeichnis umzubenennen. Vor allem
aber kann der Ort Eigentum ohnehin nicht kodieren, sobald Collections offen sind: eine selbst
angelegte liegt im selbenkb/wie die Defaults. Eigentum ist eine deklarierte Eigenschaft -
daher das Frontmatter oben. Gitea #39 trägt die Ablehnung im Volltext.Warum das MAJOR ist. Die Rückwärtshälfte des Drop-in-Tests hält - 2.5.0 ignoriert beide neuen
Deklarationen folgenlos. Die Vorwärtshälfte nicht: nach dem Kopieren der Maschinerie FAILt
doctorauf der fehlendenkb/CONVENTIONS.md,docs verifybricht auf den undeklarierten
Collections, undkb/CONTRACT.mdmuss aus dem Release nachgezogen werden. Ein Shim war die
Alternative (doctornur WARN, Pflichtfelder tolerant) und wurde verworfen: er hätte genau den
Zustand normalisiert, in dem eine Instanz glaubt, sie habe entschieden, während in Wahrheit der
Fallback antwortet - für eine englische Instanz hieße das## Beziehungenin englischen Seiten.
Die Handarbeit ist eine Datei und zwei Frontmatter-Zeilen je Collection; keine einzigekb/-Seite
ändert sich, weshalbmigrate done 3.0.0 --pages 0ehrlich und kein Platzhalter ist.Downloads