An deciwa arbeiten¶
Wie die Docs funktionieren und wie aus einem Vorschlag eine Entscheidung wird. Das Repository und seine Pakete: Technischer Überblick.
Die Docs sind die Wahrheit¶
Diese Docs sind die einzige Quelle der Wahrheit für alle, die deciwa entwickeln. Entscheidungen sind Anforderungen: jedes Feature und jedes Stück Code muss zu ihnen passen. Jede Aussage ist ein Sphinx-Needs-Objekt mit ID und Status.
Objekt |
Präfix |
Status |
Bedeutung |
|---|---|---|---|
Entscheidung |
|
|
von Daniel entschieden – verbindlich |
Vorschlag |
|
|
Teil der technischen Details einer Version, noch nicht verbindlich |
Frage |
|
|
jemand muss etwas entscheiden – siehe Offene Fragen |
Ein freigegebener Vorschlag wird zur Entscheidung: er bekommt ein DEC_-Objekt in Entscheidungen, und die technische Seite verlinkt darauf.
Produktbeschreibung, Integrationen, Entscheidungen und technische Details liegen in docs/ als Markdown (MyST). Die HTML-Seiten werden erzeugt; niemand bearbeitet sie.
$ uv sync # packages + docs tools
$ .venv/bin/sphinx-autobuild docs docs/_build/html --port 4336 # live preview
$ .venv/bin/sphinx-build -W -b html docs docs/_build/html # CI build, warnings fail
Veröffentlichte Docs¶
.github/workflows/docs.yml prüft die Docs (Warnungen lassen den Build scheitern) bei jedem Push und Pull Request. Von main aus veröffentlicht es sie im Branch gh-pages des öffentlichen Repositorys danwos/deciwa.docs, dessen GitHub Pages sie unter https://deciwa.danwos.dev ausliefern – der Code hier bleibt privat. Der veröffentlichte Build ist ein Offline-Review-Build ohne die Review-Daten aus .deciwa/, damit Besucher deciwa auf diesen Seiten in ihrem eigenen Browser ausprobieren können.
Übersetzungen¶
Die Docs erscheinen auf Englisch und Deutsch; weitere Sprachen können auf demselben Weg folgen.
Vorschlag: Englisch ist die Quelle der Docs; Deutsch ist eine Übersetzung in gettext-Katalogen PROP_DOCS_TRANSLATION
|
Alle schreiben und ändern das englische Markdown. Die Übersetzungen liegen in |
Vorschlag: Reviews und Entscheidungen finden nur auf den englischen Docs statt PROP_DOCS_REVIEW_SOURCE
|
Eine Übersetzung wird geprüft wie jede Formulierung, verbindlich ist aber die englische Aussage: |
Heute ist jede Beschriftung des Overlays englisch. Es könnte seine Sprache aus |
Die Kataloge nach einer Änderung an den englischen Docs aktualisieren:
$ .venv/bin/sphinx-build -E -b gettext -D needs_build_json=0 docs docs/_build/gettext
$ .venv/bin/sphinx-intl update -p docs/_build/gettext -d docs/locales -l de
$ .venv/bin/sphinx-intl stat -d docs/locales -l de # what is left to translate
$ .venv/bin/sphinx-build -W -b html -D language=de docs docs/_build/html/de
Diese Docs in deciwa reviewen¶
Diese Docs nutzen die Sphinx-Integration selbst: uv sync, dann .venv/bin/deciwa serve und http://127.0.0.1:4337 öffnen. Was freigegeben werden muss, steht in .deciwa/config.toml (heute: jedes Need). Der ganze Ablauf – reviewen, mit deciwa todo / deciwa resolve arbeiten, neu bauen – steht im Workflow.
Einen prop freizugeben oder eine question zu beantworten ist in deciwa die Entscheidung; der Vorschlag wird dann wie unten beschrieben zu einem dec.
Vom Vorschlag zur Entscheidung¶
Die technischen Details der nächsten Version liegen in
technical/(heute für 0.1). Jede Aussage, die eine Entscheidung braucht, ist einpropmit Statusdraft.Jeder offene Punkt ist eine
question, derento:nennt, wer entscheidet.Ist eine Seite bereit fürs Review, gehen ihre Vorschläge auf
review.Daniel entscheidet: ein Vorschlag wird
approvedoderrejected, eine Frage wirdanswered.Jeder freigegebene Vorschlag bekommt einen
decindecisions/index.mdmitdecided,reasonundalternatives; die Produktseiten werden passend aktualisiert. Die technische Seite kann dann auf das gekürzt werden, was noch offen ist.
Objekte¶
```{dec} Short statement of the decision
:id: DEC_SOMETHING
:status: approved
:decided: 2026-10-19
:reason: Why.
:alternatives: What else was considered.
```
Typ |
Präfix |
Felder |
|---|---|---|
|
|
|
|
|
|
|
|
|
Ein Objekt im Text referenzierst du mit {need}`DEC_SOMETHING`.
Code¶
Der Code ist in Pakete aufgeteilt – Pakete. Logik gehört in deciwa-core; Frontends nutzen nur deciwa.core.Project.
Code folgt den Entscheidungen. Passen Code und eine Entscheidung nicht zusammen, gewinnt die Entscheidung – oder ein neuer Vorschlag ändert zuerst die Entscheidung.