docs: Knotenbeschreibungen entschieden — "-Zeilen und ----Beschreibungsteil (D34-Nachtrag)

Kurzform (Nutzer-Entscheidung): eine neue Zeile mit `"` unter dem Knoten
— eigenes Zeichen statt Einrückung, weil Einrückung Hierarchie bedeutet;
Leerraum-Regel wie bei =, >/<, damit "Zitat"-Labels unberührt bleiben.
Langform (Nutzer-Entscheidung): hinter einem `---`-Trenner nach
YAML-/Frontmatter-Vorbild eröffnen ID-Zeilen (#auth) Blöcke, deren
eingerückte Zeilen der Text sind — kein Schlusszaun, der vergessen werden
könnte; die Wurzelknoten-Regel endet am Trenner, darum braucht dort keine
Zeile ein Zeichen. Fehlertoleranz: verwaiste/uneingerückte Zeilen im
Beschreibungsteil warnen zeilengenau — ein versehentlicher Trenner macht
sich laut bemerkbar. SPEC §11, TASKS, ROADMAP und Plan nachgezogen; damit
ist die letzte offene Schreibweise der fünf D34-Erweiterungen fest.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
mhoennig
2026-08-22 18:33:23 +02:00
co-authored by Claude Fable 5
parent 15c3e85e26
commit c4abd24ce8
5 changed files with 103 additions and 12 deletions
+35
View File
@@ -1656,6 +1656,41 @@ eingeklappter Knoten sichtbar gekennzeichnet (etwa „▸“ oder die Anzahl der
verborgenen Kinder); die genaue Form entscheidet sich beim Bauen, die verborgenen Kinder); die genaue Form entscheidet sich beim Bauen, die
SPEC-Aussage ist nur: sichtbare Struktur, Einklappung gekennzeichnet. SPEC-Aussage ist nur: sichtbare Struktur, Einklappung gekennzeichnet.
**Nachtrag — die Knotenbeschreibungen sind entschieden: `"`-Zeilen und ein
`---`-Beschreibungsteil.** Die letzte offene Schreibweise der fünf
Erweiterungen. Entschieden vom Nutzer in zwei Schritten:
**Kurzform: eine neue Zeile mit `"`.** Ein eigenes einleitendes Zeichen war
die einzige Möglichkeit — Einrückung bedeutet Hierarchie (§2), eine
eingerückte Folgezeile ist ein Kindknoten. `"` liest sich als Zitat („was der
Autor dazu sagt“), ist auf DE- (Shift+2) wie US-Layout direkt tippbar und an
dieser Position frei. Die Leerraum-Regel (wie `=`, `>`/`<`) hält gequotete
Labels (`"Zitat"`) heraus; auf Zeilen mit Zerlegungszeichen gilt das Zeichen
nicht, ein `- " Zitat" …`-Label bleibt also unberührt.
**Langform: hinter einem `---`-Trenner, nur mit Einrückung — ohne weitere
Zeichen.** Vorgeschlagen waren zeilenweise `"`-Präfixe (robust, aber lästig
beim Einfügen längerer Texte) und ein `"""`-Zaun (einfügefreundlich, aber ein
vergessener Schlusszaun verschluckte den Rest des Dokuments — der hässlichste
Fehlermodus in einem bis dahin zeilenlokalen Format). Der Nutzer wählte die
dritte, bessere Form: **ein `---`-Trenner nach YAML-/Frontmatter-Vorbild**
beendet den Baumteil; dahinter eröffnen ID-Zeilen (`#auth`) Blöcke, deren
eingerückte Zeilen der Text sind. Das nimmt dem Zaun beide Schwächen
zugleich: Es gibt **keinen Schlusszaun, den man vergessen könnte** (der
Beschreibungsteil läuft planmäßig bis zum Dateiende), und der Parser-Zustand
ist ein einziger Einweg-Schalter statt offen/zu. Die Wurzelknoten-Regel gilt
hinter dem Trenner nicht mehr — darum braucht dort keine Zeile ein Zeichen.
Der Fehlermodus „versehentlicher Trenner mitten im Plan“ ist bewusst laut
gemacht: Uneingerückte Nicht-ID-Zeilen und verwaiste eingerückte Zeilen im
Beschreibungsteil geben je eine Warnung mit Zeilennummer — verschluckte
Knotenzeilen melden sich also zeilengenau selbst, statt still zu
verschwinden (dieselbe Haltung wie bei `unknownStatus`, §4).
Zwei bewusste Verhaltensänderungen, beide dokumentiert (§11): `---` ergab
bisher einen Knoten mit Label `--`, und eine zeichenlose Zeile, die mit
`" ` beginnt, war bisher ein Wurzelknoten mit `"`-Label.
## D35 — XOR (`=`) umgesetzt: „realisiert“ definiert, „1“-Plakette, keine neue Linienart ## D35 — XOR (`=`) umgesetzt: „realisiert“ definiert, „1“-Plakette, keine neue Linienart
Das in D34 entschiedene XOR-Gate ist gebaut (SPEC §1/§3/§9); beim Bauen waren Das in D34 entschiedene XOR-Gate ist gebaut (SPEC §1/§3/§9); beim Bauen waren
drei Dinge zu entscheiden, die die SPEC bis dahin offen ließ: drei Dinge zu entscheiden, die die SPEC bis dahin offen ließ:
+2 -1
View File
@@ -142,7 +142,8 @@ Pfad, der die Wahrheit sagt.
- **Knotenbeschreibungen** — Erläuterungstext zum Knoten, im Diagramm als - **Knotenbeschreibungen** — Erläuterungstext zum Knoten, im Diagramm als
Tooltip oder Pop-up: kurz direkt beim Knoten, lang als Block am Dokumentende Tooltip oder Pop-up: kurz direkt beim Knoten, lang als Block am Dokumentende
über die ID zugeordnet. Die Arbeit steckt nicht im Anzeigen, sondern in der über die ID zugeordnet. Die Arbeit steckt nicht im Anzeigen, sondern in der
Schreibweise: Einrückung bedeutet hier bereits Hierarchie. Schreibweise: Einrückung bedeutet hier bereits Hierarchie. Die Schreibweise
ist entschieden (D34-Nachtrag): `"`-Zeilen bzw. ID-Blöcke hinter `---`.
**Was daraus folgt.** **Was daraus folgt.**
+60 -8
View File
@@ -711,17 +711,69 @@ ist, damit der gewählte Knoten effektiv fertig werden kann. Gemeinsam
benötigte Abhängigkeiten werden dabei **nur einmal** gezählt. Genau das macht benötigte Abhängigkeiten werden dabei **nur einmal** gezählt. Genau das macht
die Rechnung schwerer als heute — siehe D34. die Rechnung schwerer als heute — siehe D34.
### Knotenbeschreibungen ### Knotenbeschreibungen (`"` und `---`)
Erläuternder Text zu einem Knoten, im Diagramm als Tooltip oder Pop-up. Erläuternder Text zu einem Knoten, im Diagramm als Tooltip oder Pop-up.
Vorgesehen sind zwei Formen: ein **kurzer Text unmittelbar beim Knoten** und Beide Schreibweisen sind **entschieden** (D34-Nachtrag), noch nicht gebaut.
ein **längerer Block am Ende des Dokuments**, über die Knoten-ID zugeordnet. Der Kern des Problems war: Einrückung bedeutet Hierarchie (§2) — eine
eingerückte Folgezeile **ist** ein Kindknoten, und jede Zeile ohne Zeichen ist
ein Wurzelknoten. Die Kurzform löst das mit einem eigenen Zeichen, die
Langform, indem sie den Geltungsbereich dieser Regeln beendet.
**Offen — und hier liegt die eigentliche Arbeit:** Die kurze Form kann nicht **Kurzform — `"`-Zeile unter dem Knoten:**
einfach eine eingerückte Folgezeile sein. Einrückung bedeutet in dieser
Notation Hierarchie (§2); eine eingerückte Zeile **ist** ein Kindknoten. Die ```
kurze Form braucht deshalb ein eigenes einleitendes Zeichen, die lange Form - [~] Auth-Dienst #auth (L)
eine Blockform, die sich nicht mit einem Wurzelknoten verwechseln lässt. " Kapselt Login, Tokens und Rollen.
```
- Eine Zeile, deren erstes Zeichen nach der Einrückung `"` ist (**mit
folgendem Leerraum**, Leerraum-Regel wie bei `=` und `>`/`<` — ein Label wie
`"Zitat"` bleibt damit ein Label), ist **Beschreibung, kein Knoten**.
- Sie gehört zum **vorangehenden Knoten**; mehrere `"`-Zeilen hintereinander
setzen dieselbe Beschreibung fort. Die Einrückung der `"`-Zeile hat keine
Bedeutung (Konvention: wie ein Kind eingerückt). Eine `"`-Zeile ohne
vorangehenden Knoten ist eine Warnung mit Zeilennummer.
- Der Inhalt ist **Freitext**: Die §1-Extraktion (Größe, Tags, IDs, URL …)
findet darin nicht statt. Nur `%%`-Kommentare werden weiterhin entfernt —
der Kommentar fällt als Erstes (§1), einheitlich im ganzen Dokument.
- Nur auf Zeilen **ohne** Zerlegungszeichen: `- " Zitat" als Label` bleibt ein
gewöhnlicher Knoten.
**Langform — Beschreibungsteil hinter `---`:**
```
[~] Auth-Dienst #auth (L)
- [ ] Login
---
#auth
Hintergrund, Entscheidungen, Verweise — freier Text,
zeilenweise eingerückt. Leerzeilen trennen Absätze.
#api
Der nächste Block.
```
- Eine Zeile aus **drei oder mehr `-`** (nur Bindestriche, umgebender Leerraum
erlaubt) trennt den Baumteil vom **Beschreibungsteil**; alles danach gehört
zu ihm (YAML-/Frontmatter-Konvention: „ab hier etwas anderes“). Es gibt
keinen Schlusszaun — er kann also nicht vergessen werden.
- Im Beschreibungsteil eröffnet eine **uneingerückte Zeile mit genau einer
Knoten-ID** (`#auth`, allein) einen Block; die **eingerückten** Zeilen
darunter sind sein Text (um den Einzug gekürzt; Leerzeilen bleiben als
Absatztrenner erhalten). Anführungszeichen braucht es hier nicht — die
Wurzelknoten-Regel (§2) gilt hinter dem Trenner nicht mehr.
- **Fehlertoleranz:** Eine ID ohne zugehörigen Knoten → Warnung (wie
`unknownDep`). Eine uneingerückte Zeile, die keine ID-Zeile ist, oder
eingerückte Zeilen ohne eröffneten Block → Warnung mit Zeilennummer. Ein
versehentlicher Trenner mitten im Plan fällt dadurch sofort auf: Die
verschluckten Knotenzeilen werden zeilengenau gemeldet.
- Mehrere Blöcke zur selben ID werden in Dokumentreihenfolge aneinander-
gehängt; Kurz- und Langform zum selben Knoten dürfen koexistieren
(Anzeige-Details werden beim Bauen festgelegt). Weitere `---`-Zeilen im
Beschreibungsteil haben keine Bedeutung.
- Bewusste Verhaltensänderung: Eine Zeile `---` ergab bisher einen Knoten mit
Label `--`; sie ist jetzt der Trenner.
## 12. Dateiendung ## 12. Dateiendung
+3
View File
@@ -113,3 +113,6 @@ entscheiden, **bevor** Code entsteht.
`tests/xor.test.js`. `tests/xor.test.js`.
- [ ] Knotenbeschreibungen: Schreibweise für kurze und lange Form festlegen - [ ] Knotenbeschreibungen: Schreibweise für kurze und lange Form festlegen
(Einrückung ist bereits Hierarchie), dann Tooltip/Pop-up. (Einrückung ist bereits Hierarchie), dann Tooltip/Pop-up.
→ Schreibweise entschieden (D34-Nachtrag): Kurzform als `"`-Zeile unter
dem Knoten (Leerraum-Regel), Langform als eingerückte ID-Blöcke hinter
einem `---`-Trenner (SPEC §11). Zu bauen: Parser + Anzeige.
+3 -3
View File
@@ -18,9 +18,9 @@
- [x] Cycles are legal — they mean "finished together" (XS) - [x] Cycles are legal — they mean "finished together" (XS)
- [x] An id with no node behind it is a warning (XS) - [x] An id with no node behind it is a warning (XS)
- [x] XOR, = — exactly one alternative, not at least one (S) - [x] XOR, = — exactly one alternative, not at least one (S)
- [?] Node descriptions, shown as a tooltip or pop-up (M) - [ ] Node descriptions, shown as a tooltip or pop-up (M)
- [?] A short text right at the node (S) %% indentation already means hierarchy - [ ] A short text right at the node (S) %% decided: a " line below the node
- [?] A long block at the end, addressed by its id (S) - [ ] A long block at the end, addressed by its id (S) %% decided: behind a --- separator
- [-] A separate storage format for the structure (L) %% the text is the format - [-] A separate storage format for the structure (L) %% the text is the format
- [ ] Ticket references (#123) (S) - [ ] Ticket references (#123) (S)
- [?] Benefit per node, not only cost (M) - [?] Benefit per node, not only cost (M)