Skip to content

Architecture CONTENT MODEL

github-actions[bot] edited this page Sep 1, 2026 · 4 revisions

docs > CONTENT_MODEL Datum: 2026-03-11 Status: stable Primary (Quelle der Wahrheit):

  • src/README.md
  • include/README.md
  • examples/README.md
  • docs/_standards/DOC_TEMPLATE.md
  • docs/_standards/doc_header.schema.yml

Bezug / Reference:

  • Issue: [META] Dokumentationssystem: Primary β†’ Secondary β†’ Compendium
  • Kontext: Dieses Dokument beschreibt das dreistufige Dokumentationsmodell von ThemisDB.

TL;DR

ThemisDB verwendet ein dreistufiges Dokumentationsmodell: Primary Docs (Quellcode-nah in src/, include/, examples/) β†’ Secondary Docs (mehrsprachig, nutzerorientiert in docs/de/, docs/en/) β†’ Compendium (kurierte Gesamtschau in compendium/). PrimΓ€re Docs sind die einzige β€žSource of Truth". Drift zwischen den Stufen ist gewollt sichtbar.


Kontext

  • Problem: Dokumentation war ΓΌber viele Verzeichnisse verstreut ohne klares Modell, wer welchen Inhalt β€žbesitzt" und wie Γ„nderungen fließen.
  • Ziel: Ein reproduzierbares, wartbares Dokumentationssystem mit klaren Verantwortlichkeiten und automatisierter Drift-Erkennung.
  • Nicht-Ziele: VollstΓ€ndige Neuschreibung aller Inhalte; große API/Feature-Γ„nderungen.

Das Dreistufige Inhaltsmodell

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  PRIMΓ„R (Source of Truth)                                       β”‚
β”‚  src/**  Β·  include/**  Β·  examples/**                          β”‚
β”‚  README.md Β· ARCHITECTURE.md Β· ROADMAP.md Β· CHANGELOG.md …     β”‚
β”‚  β†’ Implementierungsnah, darf "driften" um Stale-Docs zu zeigen  β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                         β”‚  ableiten / ΓΌberfΓΌhren
                         β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  SEKUNDΓ„R (Nutzerorientierte ErklΓ€rung)                         β”‚
β”‚  docs/de/**  Β·  docs/en/**  Β·  docs/fr/**  …                   β”‚
β”‚  Jede Datei hat: Breadcrumb Β· Datum Β· Status Β· Primary-Quelle   β”‚
β”‚  Status: draft β†’ review β†’ stable | drifting | stale | archived  β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                         β”‚  kuratieren / zusammenstellen
                         β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  COMPENDIUM (Whitebook / PDF)                                   β”‚
β”‚  compendium/docs/**                                              β”‚
β”‚  Kapitel Β· AnhΓ€nge Β· Glossar                                    β”‚
β”‚  β†’ Abgeleitet aus PrimΓ€r + SekundΓ€r + examples/**               β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Stufe 1 β€” Primary Docs (Source of Truth)

Speicherort: src/<modul>/, include/<modul>/, examples/<modul>/

Dateitypen:

Dateiname Zweck
README.md Modul-Übersicht, API-Einstieg
ARCHITECTURE.md Interne Designentscheidungen
ROADMAP.md Geplante Features, Phasen
CHANGELOG.md Versionshistorie
FUTURE_ENHANCEMENTS.md Langfristige Ideen

Konventionen:

  • Jede Datei reprΓ€sentiert implementierungsnahe Wahrheit.
  • Bewusstes β€žDriften" ist erlaubt β€” veraltete Primary Docs zeigen an, was ΓΌberarbeitet werden muss.
  • Ein automatisiertes Inventar wird generiert: docs/_generated/primary_index.json (via tools/primary_docs_indexer.py).

Inventar aktualisieren:

python3 tools/primary_docs_indexer.py --repo-root . --output docs/_generated/primary_index.json

Stufe 2 β€” Secondary Docs (docs/*)

Speicherort: docs/de/<modul>/, docs/en/<modul>/, …

Sprachen:

Verzeichnis Status
docs/de/ πŸ‡©πŸ‡ͺ PrimΓ€rsprache (autoritativ)
docs/en/ πŸ‡¬πŸ‡§ VollstΓ€ndige Übersetzung
docs/fr/ πŸ‡«πŸ‡· In Entwicklung
docs/es/ πŸ‡ͺπŸ‡Έ In Entwicklung

Pflicht-Header (jede Datei in docs/de/ und docs/en/):

[docs](https://github.com/makr-code/ThemisDB/blob/develop/index.md) > [de](https://github.com/makr-code/ThemisDB/blob/develop/docs/index.md) > [<modul>](https://github.com/makr-code/ThemisDB/blob/develop/docs/architecture/index.md) > [<doc_kind>](https://github.com/makr-code/ThemisDB/blob/develop/docs/architecture/<doc_kind>.md)
**Datum:** YYYY-MM-DD
**Status:** draft | review | stable | deprecated | archived
**Primary (Quelle der Wahrheit):**
- `src/<modul>/README.md`

**Bezug / Reference:**
- Issue/PR: #<id>
- Kontext: <1 Satz warum diese Doku existiert>

doc_kind Werte:

  • architecture β€” Designentscheidungen, interne Architektur
  • feature β€” Feature-Beschreibungen fΓΌr Endnutzer
  • howto β€” Schritt-fΓΌr-Schritt-Anleitungen
  • reference β€” API-Referenz, Parameter-Listen
  • roadmap β€” Geplante Entwicklung
  • troubleshooting β€” Fehlerdiagnose
  • faq β€” HΓ€ufige Fragen

Status-Bedeutungen:

Status Bedeutung
draft Entwurf, noch nicht ΓΌberprΓΌft
review In Überprüfung
stable GeprΓΌft, aktuell
deprecated Veraltet, wird bald entfernt
archived Archiviert, nur noch historisch relevant

ZusΓ€tzlich wird vom Drift-Detektor automatisch erkannt:

Status Drift-Erkennung
drifting Secondary-Doc ist Γ€lter als 90 Tage relativ zur Primary-Quelle
stale Secondary-Doc ist Γ€lter als 180 Tage relativ zur Primary-Quelle

Stufe 3 β€” Compendium (Whitebook)

Speicherort: compendium/docs/

Struktur:

compendium/docs/
β”œβ”€β”€ cover.md                    # Titelseite
β”œβ”€β”€ preface.md                  # Vorwort
β”œβ”€β”€ chapter_00_genesis.md       # Ursprung und Vision
β”œβ”€β”€ chapter_01_introduction.md  # EinfΓΌhrung
β”‚   ...
β”œβ”€β”€ chapter_42_*.md             # Spezialisierte Themen
β”œβ”€β”€ appendix_d_feature_status.md
β”œβ”€β”€ appendix_e_incident_runbooks.md
β”œβ”€β”€ appendix_f_aql_cheatsheet.md
β”œβ”€β”€ appendix_g_configuration.md
β”œβ”€β”€ appendix_h_glossary.md
└── appendix_i_troubleshooting.md

Build:

# MkDocs-basierter Compendium-Build
mkdocs build --config-file compendium/mkdocs-compendium.yml

# Oder mit dem Skript (inkl. PDF-Optimierung):
bash scripts/build_compendium_pdf.sh

Modul-Pipeline: Primary β†’ Secondary β†’ Compendium

Schritt 1 β€” Primary Doc schreiben/aktualisieren

Datei: src/<modul>/README.md (oder ARCHITECTURE.md, ROADMAP.md, …)

# Modulname

Kurze Beschreibung des Moduls.

## Features
- Feature A
- Feature B

## API
...

Schritt 2 β€” Inventar aktualisieren

python3 tools/primary_docs_indexer.py

Ergebnis: docs/_generated/primary_index.json enthΓ€lt den neuen Eintrag.

Schritt 3 β€” Secondary Doc erstellen

Datei: docs/de/<modul>/architecture.md

[docs](https://github.com/makr-code/ThemisDB/blob/develop/index.md) > [de](https://github.com/makr-code/ThemisDB/blob/develop/docs/index.md) > [<modul>](https://github.com/makr-code/ThemisDB/blob/develop/docs/architecture/index.md) > [architecture](https://github.com/makr-code/ThemisDB/blob/develop/docs/architecture/architecture.md)
**Datum:** 2026-03-11
**Status:** draft
**Primary (Quelle der Wahrheit):**
- `src/<modul>/ARCHITECTURE.md`

**Bezug / Reference:**
- Issue: #<id>
- Kontext: Architektur-Dokumentation fΓΌr <modul>

---

## TL;DR
...

Schritt 4 β€” Header-Validierung lokal prΓΌfen

python3 scripts/doc-header-check.py --mode all

Schritt 5 β€” Drift prΓΌfen

python3 scripts/drift-detector.py

Schritt 6 β€” Compendium-Kapitel aktualisieren

Falls relevant: compendium/docs/chapter_<n>_<modul>.md anpassen oder neu erstellen.

Schritt 7 β€” CI

Der Pull Request durchlΓ€uft automatisch:

  1. docs-lint β€” Markdown-Linting
  2. link-check β€” Interne Links
  3. toc-validation β€” Navigationsstruktur
  4. metadata-check β€” YAML-Metadaten
  5. doc-header-check β€” Header-Schema-Validierung
  6. drift-detection β€” Vergleich Primary vs. Secondary

CI-Validierungs-Pipeline

PR/Push β†’ docs-pipeline.yml                        ← einziger Einstiegspunkt
          β”œβ”€β”€ validate (ruft documentation-validation.yml als reusable workflow)
          β”‚     β”œβ”€β”€ docs-lint
          β”‚     β”œβ”€β”€ link-check (intern)
          β”‚     β”œβ”€β”€ external-link-check (main/develop only)
          β”‚     β”œβ”€β”€ toc-validation
          β”‚     β”œβ”€β”€ metadata-check
          β”‚     β”œβ”€β”€ doc-header-check (changed-only)
          β”‚     β”œβ”€β”€ drift-detection
          β”‚     β”‚     └── [develop only] Issues fΓΌr driftende/stale SekundΓ€rdoku
          β”‚     └── validation-summary
          β”œβ”€β”€ build-site (MkDocs ohne PDF)
          β”œβ”€β”€ build-pdf (on-demand / Release-Tags, ENABLE_PDF_EXPORT=1)
          └── deploy-pages (main branch)

Push to main/develop/release/* β†’ primary-docs-index.yml
          └── Update docs/_generated/primary_index.json

Push to develop (src/**/*.md | include/**/*.md) β†’ module-docs-sync.yml
          β”œβ”€β”€ module_docs_builder  β†’ docs/de/<modul>/PRIMARY_SOURCES.md
          β”‚                          docs/en/<modul>/PRIMARY_SOURCES.md
          β”‚                          /tmp/module-findings.json
          β”œβ”€β”€ changelog_updater   β†’ CHANGELOG.md [Unreleased] fortschreiben
          β”œβ”€β”€ git commit + push   β†’ "docs: sync module docs [skip ci]"
          └── module_docs_issue_reporter β†’ Issues fΓΌr neue/underdokumentierte Module

Skripte:

Skript Zweck
scripts/docs-lint.py Markdown-Syntax, Heading-Hierarchie, Metadaten
scripts/link-check.py Interne/externe Links
scripts/toc-check.py Navigationsstruktur vs. mkdocs.yml
scripts/doc-header-check.py Header-Schema-Validierung
scripts/drift-detector.py Drift Primary β†’ Secondary
tools/primary_docs_indexer.py Primary-Doc-Inventar generieren
tools/module_docs_builder.py Modulweise PRIMARY_SOURCES.md generieren (DE + EN)
tools/ci/changelog_updater.py CHANGELOG.md [Unreleased] automatisch fortschreiben
tools/ci/module_docs_issue_reporter.py GitHub Issues fΓΌr neue/underdokumentierte Module und Drift

Drift-Erkennung

Drift ist gewollt β€” er zeigt an, wenn Secondary Docs hinter ihren Primary-Quellen zurΓΌckbleiben.

Workflow:

  1. tools/primary_docs_indexer.py speichert last_modified jeder Primary-Datei.
  2. scripts/drift-detector.py vergleicht die Timestamps von Primary- und Secondary-Docs.
  3. Docs mit Alter > 90 Tage relativ zur Primary-Quelle werden als drifting markiert.
  4. Docs mit Alter > 180 Tage relativ zur Primary-Quelle werden als stale markiert.

Drift-Report lokal ausfΓΌhren:

python3 scripts/drift-detector.py --format text

Secondary Doc manuell als drifting kennzeichnen:

**Status:** drifting

Lokaler Build (Reproduzierbar)

Prerequisites

pip install -r requirements-docs.txt

MkDocs Site bauen

bash scripts/build-docs.sh
# β†’ Output: ./site/

Mit PDF

ENABLE_PDF_EXPORT=1 bash scripts/build-docs.sh
# β†’ Output: ./artifacts/docs/ThemisDB-Documentation-*.pdf

Compendium bauen

bash scripts/build_compendium_pdf.sh

Alle Validierungen lokal

bash scripts/validate-docs.sh

Konventionen und QualitΓ€tssicherung

Dateinamen-Konventionen

  • Lowercase, Bindestriche statt Leerzeichen: feature-overview.md
  • Keine Sonderzeichen außer - und _
  • Englische Dateinamen auch in deutschen Docs (Pfade sind sprachunabhΓ€ngig)

Markdown-Stil

Konfiguriert in .markdownlint.json:

  • ATX-Style Headings (#, ##, …)
  • 2-Space EinrΓΌckung fΓΌr Listen
  • Kein Überspringen von Heading-Ebenen

Schema-Validierung

Das Header-Schema ist definiert in docs/_standards/doc_header.schema.yml. Es wird von scripts/doc-header-check.py validiert.

Eine Vorlage ist in docs/_standards/DOC_TEMPLATE.md zu finden.


Links


ThemisDB 1.9.0-beta Β· Home Β· Module-Index Β· GitHub Β· Issues

ThemisDB Wiki

🏠 Overview

πŸš€ Getting Started

πŸ“– Tutorials

πŸ“— User Guide

βš™οΈ Operations & Security

πŸ“Ÿ Ops Runbooks

πŸ—οΈ Architecture

πŸ“ ADRs

πŸ”§ Contributing

πŸ“‹ Governance

πŸ” Audit

🧩 Plugins

πŸ”Œ Adapters

πŸ’‘ Examples

πŸ“¦ Client SDKs

πŸŽ“ Training

πŸ› οΈ Tools

πŸ€– Developer LLM Wiki

Clone this wiki locally