feat: Autorenkonventionen nach Eigentum geschnitten - kb/CONVENTIONS.md, deklarierte Collections (3.0.0)
CI / verify (push) Successful in 53s
Release / release (push) Successful in 38s

Files changed:
- .gitea/workflows/ci.yml
- .wikitool-kb.json
- AGENTS.md
- CHANGES.md
- INSTALL.md
- README.md
- VERSION
- instructions/CONTRACT.md
- instructions/dev/testing-conventions.md
- instructions/german-terminology.md
- instructions/kb-profiles.md
- instructions/migrations/3.0.0-authoring-conventions.md
- instructions/private-instance.md
- instructions/setup-instance.md
- instructions/wiki-ingest/SKILL.md
- instructions/wiki-manage/SKILL.md
- kb/CONTRACT.md
- kb/CONVENTIONS.md
- kb/CONVENTIONS.md.template
- kb/comparisons/COLLECTION.md
- kb/concepts/COLLECTION.md
- kb/entities/COLLECTION.md
- kb/sources/COLLECTION.md
- tools/CONTRACT.md
- tools/README.md
- tools/chemenu/commands/dist_cmd.py
- tools/chemenu/commands/docs_verify.py
- tools/chemenu/commands/doctor.py
- tools/chemenu/commands/new_page.py
- tools/chemenu/conventions.py
- tools/chemenu/kb_collections.py
- tools/chemenu/kb_scan.py
- tools/chemenu/provenance.py
- tools/chemenu/sections.py
- tools/chemenu/tests/conftest.py
- tools/chemenu/tests/test_conventions.py
- tools/chemenu/tests/test_dist_cmd.py
- tools/chemenu/tests/test_doctor.py
- tools/chemenu/tests/test_new_page.py
- tools/chemenu/tests/test_types_cmd.py
- types/comparison.md
- types/concept.md
- types/entity.md
- types/source.md
- types/type-spec.md
This commit is contained in:
2026-09-02 15:02:10 +02:00
parent 9843df99d3
commit 502971d147
45 changed files with 1817 additions and 232 deletions
+50 -16
View File
@@ -60,24 +60,58 @@ bereit für den ersten `Ingest`.
- Nicht genannt: lokal bleiben - dann braucht **jeder** spätere `tools/wikitool publish`
ein `--no-push` (dessen Branch-Prüfung dabei ohnehin entfällt, siehe Schritt 2).
5. **Entscheidungspunkt - KB-Sprache.** Frage den Nutzer, in welcher Sprache die Seiten unter
`kb/` geschrieben werden sollen. Diese Instanz erbt aus dem Quell-Repo **Deutsch** - sowohl die
Regel in [kb/CONTRACT.md](../kb/CONTRACT.md#language) als auch das Vokabular in
[german-terminology.md](german-terminology.md) und die deutschen Abschnittsnamen in
`tools/chemenu/sections.py`. Das ist eine Entscheidung der Ursprungsinstanz, keine
Eigenschaft des Musters, und sie wird hier nicht stillschweigend weitergereicht.
5. **Entscheidungspunkt - Autorenkonventionen.** Die Distribution bringt keine ausgefüllten
Konventionen mit, sondern `kb/CONVENTIONS.md.template` und je Collection ein
`kb/<name>/COLLECTION.md.template`. Beide **binden**, sobald sie übernommen sind, und beide
gehören dieser Instanz - deshalb liefert der Stack nur die Vorlage. Die eine Entscheidung
dahinter ist: **in welcher Sprache und in welchem Ton schreibt diese Instanz ihre Seiten?**
- **Deutsch bestätigt:** nichts zu tun.
- **Andere Sprache:** *vor dem ersten Ingest* umstellen, denn danach ist es eine Migration
jeder vorhandenen Seite. Zu ändern sind der Abschnitt "Language" in `kb/CONTRACT.md`, die
Tonfall-Beispiele und Hedge-Wörter darunter, die vier Page-Type-Templates in `types/`, die
kanonischen Namen in `sections.py` (die bisherigen als Alias behalten) und die
Beziehungslabels in `kb/CONTRACT.md` § Linking. `german-terminology.md` wird dann ersetzt
oder gelöscht.
Ablauf:
Unverändert bleibt in jedem Fall die eigentliche Regel: **jede Zeile einer Seite ist Prosa
oder Identifier, und nur Prosa wird übersetzt.** Titel, Wikilink-Ziele, Cite-IDs, Enum-Werte,
Tags, Befehle und Pfade folgen keiner KB-Sprache.
1. Die Collection-Contracts übernehmen - vier Kopien, keine Frage an den Nutzer, denn was
dort steht ist unabhängig von der Sprache brauchbar:
```bash
for template in kb/*/COLLECTION.md.template; do
cp "$template" "${template%.template}"
done
```
Die `.template`-Dateien bleiben liegen; sie sind die Vorlage für den nächsten Export.
2. Den Nutzer nach der KB-Sprache fragen. `kb/CONVENTIONS.md.template` ist auf **Englisch**
voreingestellt; [kb-profiles.md](kb-profiles.md) hält daneben ein vollständiges
deutsches Profil bereit, und dessen Volltext ist die `kb/CONVENTIONS.md` des Quell-Repos.
Der Profilkatalog ist eine **Palette, kein Enum**: übernommen wird der Text *in* die
Instanzdatei, nicht ein Verweis auf den Katalog.
3. `kb/CONVENTIONS.md.template` nach `kb/CONVENTIONS.md` kopieren, entlang des gewählten
Profils ausfüllen - Sprache, Abschnittsnamen, Namensformen, Ton, Beziehungslabels,
Confidence-Rubrik - und dabei die Sentinel-Zeile (`wikitool:template-unfilled`) entfernen.
Die Platzhalter in geschweiften Klammern **sind** der Fragenkatalog.
4. Bei einer anderen Sprache als der des Quell-Repos: `german-terminology.md` löschen oder
durch das eigene Vokabular ersetzen - sie ist Material des deutschen Profils, nicht des
Stacks.
**Vor dem ersten Ingest entscheiden.** Die `sections:`-Namen in `kb/CONVENTIONS.md` sind die
Überschriften, die `xref` und `cite` in jede Seite schreiben; sie danach zu ändern ist eine
Migration jeder vorhandenen Seite (`section_aliases:` trägt die alten Namen, siehe
[migrate-corpus.md](migrate-corpus.md)).
**Nichts davon liegt unter `tools/` oder `types/`.** Der Compiler liest die Abschnittsnamen
aus `kb/CONVENTIONS.md`, und die vier Page-Type-Templates setzen sie über
`{section.…}`-Variablen ein - eine anderssprachige Instanz ändert dort keine Datei.
Unverändert bleibt in jedem Fall die Regel, die dem Stack gehört: **jede Zeile einer Seite
ist Prosa oder Identifier, und nur Prosa wird übersetzt** ([kb/CONTRACT.md § Language and
identifiers](../kb/CONTRACT.md#language-and-identifiers)). Titel, Wikilink-Ziele, Cite-IDs,
Enum-Werte, Tags, Befehle und Pfade folgen keiner KB-Sprache.
`tools/wikitool doctor` prüft das Ergebnis in Schritt 12 (`conventions`): eine fehlende
Datei ist ein `FAIL`, eine mit Sentinel oder ohne vollständigen `sections:`-Block ebenso.
`docs verify` prüft zusätzlich `profile:` und `required_by_stack:` auf jedem
`COLLECTION.md`.
6. **Entscheidungspunkt - Personalization.** Die Distribution bringt
`USER.md.template` und `SOUL.md.template` mit, aber keine ausgefüllten Fassungen: wer diese