Stack

Status: Entwurf

Vorschläge von Claude – nicht verbindlich, bis Daniel sie freigibt.

Die Sprache des Cores ist die eine Entscheidung, von der alles andere abhängt. Sie richtet sich nach den MVP-Formaten (Formate: Text, HTML, Python... (DEC_FORMATS)): Markdown, rST mit Sphinx-Needs und reiner Text.

Python

TypeScript / Node

Rust

rST + Sphinx-Needs

docutils / Sphinx – der einzige vollständige rST-Parser

kein vollständiger rST-Parser

kein vollständiger rST-Parser

Markdown

markdown-it-py (dieselben Regeln wie markdown-it)

markdown-it

pulldown-cmark, comrak

Code-Formate später

tree-sitter-Bindings

tree-sitter-Bindings

tree-sitter (nativ)

Dieselbe Sprache wie die Erweiterungen für VS Code / Chrome

nein – sie rufen deciwa serve / --json auf

ja

nein, aber WASM möglich

Sphinx-Erweiterung für Review am Ergebnis

nativ

–

–

Installation für Nutzer

uv tool install deciwa, pipx

npm i -g

eine einzelne Binary

Tempo bis 0.1

schnell

mittel (rST-Lücke)

langsam

Vorschlag: Core und CLI sind in Python geschrieben PROP_PYTHON_CORE

rST mit Sphinx-Needs ist ein MVP-Format, und nur docutils parst rST vollständig. Derselbe Code läuft dann innerhalb eines Sphinx-Builds, um das gerenderte HTML mit Selektoren zu markieren – die Grundlage für Review am Ergebnis. Die TypeScript-Integrationen von 0.3/0.4 sprechen über --json und deciwa serve mit der CLI, wie es Die CLI ist der Master, mit... (DEC_CLI_MASTER) ohnehin verlangt. Braucht der Browser je eine Elementsuche ohne lokale CLI, bleibt ein WASM- oder TypeScript-Port einzelner Adapter möglich, weil die Selektoren ein dokumentiertes Format sind.

Vorschlag: Tooling: Python 3.12+, uv, ruff, pytest, click PROP_TOOLING
status: draft
  • uv für Umgebungen, Locking und uv tool install deciwa.

  • ruff für Lint und Format, pytest für Tests, mypy strict für src/deciwa/model und src/deciwa/engine.

  • click für die CLI – klein, stabil, keine Magie.

  • pydantic wird nicht genutzt; das Modell besteht aus einfachen Dataclasses plus einem JSON Schema in schema/, damit auch andere Sprachen die Dateien validieren können.

  • Laufzeit-Abhängigkeiten für 0.1: click, markdown-it-py, docutils, pyyaml (Frontmatter). Sphinx nur als optionales Extra (deciwa[sphinx]).

Frage: Python für Core und CLI? Q_CORE_LANG
status: open
to: Daniel

Ja → PROP_PYTHON_CORE und PROP_TOOLING werden Entscheidungen. Nein → welche Sprache, und wie soll der rST-/Sphinx-Needs-Adapter funktionieren?