docs: Schlagworte auf &tag umreserviert, #-Doppelrolle aufgelöst (D34)

Tickets haben auf `#` Vorrang (`#123` als etablierte Kurzschreibweise, oft
zugleich die natürliche Knoten-ID; notfalls Präfix wie `#t123`). Freie
Schlagworte verlassen `#` und gehen auf `&tag` — als niedrig priorisierte
Idee, ausdrücklich ungebaut: Ohne Konsumenten (Filter-Linse, Taiga-Label-Sync)
sind Tags nur Kommentare mit Extra-Syntax; gebaut erst zusammen mit dem ersten.

Zeichenwahl nach den D32-Kriterien: `&` ist auf DE- wie US-Layout eine
Shift-Taste, nie ein Dead-Key; „R&D" und „Drag & Drop" bleiben durch die
Alleinstehend-Regel (wie `!!!`) Labels. Verworfen: `~` (Dead-Key auf Mac-DE,
Zirka-Kollision), `$`, `%`, `:`, `§`, `*`.

Damit ist der offene Punkt aus D34 durch Wegfall statt Trennregel geschlossen.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
mhoennig
2026-08-22 12:15:22 +02:00
co-authored by Claude Fable 5
parent 90230c4dd3
commit 477ef6c812
5 changed files with 65 additions and 11 deletions
+29
View File
@@ -1545,3 +1545,32 @@ mit `:#id` überholt — ein Verweis auf den Titel bricht beim Umbenennen, und R
ist in dieser Palette nicht vergeben (SPEC §4 nutzt Pastelltöne für Status,
`--warn` für Hinweise). Die Datei ist entsprechend korrigiert; die dortigen
Phasen bleiben, was sie sind: eine Wunschliste, kein Beschluss.
**Nachtrag — die `#`-Doppelrolle ist aufgelöst, durch Wegfall statt Trennregel.**
Entschieden: **Ticket-Referenzen haben auf `#` Vorrang**`#123` ist die
etablierte Kurzschreibweise, und oft ist die Ticket-Nummer ohnehin die
natürliche Knoten-ID; die beiden Rollen vertragen sich (numerisch = Ticket als
Heuristik, notfalls Präfix-Konvention wie `#t123`). Knifflig bleibt allein das
heuristische Erzeugen von Taiga-Links — das ist benannt und liegt beim
Taiga-Spike.
**Freie Schlagworte verlassen `#` und gehen auf `&tag`** — als **niedrig
priorisierte Idee**, ausdrücklich ungebaut. Der Schritt zurück („wofür brauchen
wir überhaupt Tags?") ergab: Es gibt bisher keinen Konsumenten. Die
Reservierung stammt aus D7 als Beifang der Kommentarzeichen-Entscheidung; kein
geplantes Feature wertet Schlagworte aus. Ihr einziges echtes Argument ist,
dass der Baum genau **eine** Zerlegung ist — ein Tag benennt eine **Menge** von
Knoten quer dazu (die ID benennt einen, Abhängigkeiten verbinden Paare). Ohne
Auswerter (Filter-/Hervorheben-Linse im Diagramm, Taiga-Label-Sync) sind Tags
nur Kommentare mit Extra-Syntax; `%% frontend` sagt dem Leser heute dasselbe.
Gebaut werden sie deshalb erst **zusammen mit** dem ersten Konsumenten.
Zeichenwahl `&` nach den D32-Kriterien (schnell zu tippen, kollisionsfrei,
keine Markdown-Bedeutung): Shift-Taste auf DE- wie US-Layout, nie ein Dead-Key
— anders als `~`, das auf deutschen Macs hinter Alt+N klemmt und mit
Zirka-Angaben („~3 Wochen") kollidiert. „R&D" und „Drag & Drop" bleiben durch
die Alleinstehend-Regel (wie `!!!`) Labels. Der Einwand „`&` heißt und" trägt
nicht: Das Und der Notation ist `-` am Zeilenanfang — `&` ist gerade deshalb
frei. Verworfen: `$` (Preis-Kollision), `%` (ein Tippfehler vom
Auskommentieren), `:` (zu nah an `:#…`), `§` (fehlt auf US-Tastaturen), `*`
(Markdown, schon in D29 verworfen).
+7
View File
@@ -104,6 +104,13 @@ Tastendruck ein Commit); und wer bei einem Backend eigentlich was darf
erweitert D18 (heute rein statisch/kostenminimierend) um Nutzen- und
Status-/Zeitachse.
- Attribut-Syntax für Termine/Meilensteine.
- Schlagworte `&tag` mit einer Filter-/Hervorheben-Linse im Diagramm: Der Baum
ist genau eine Zerlegung — ein Tag benennt eine Menge von Knoten quer dazu
(z. B. `&frontend` in feature-geschnittenen Slices). Schreibweise reserviert
(SPEC §11, D34-Nachtrag); bewusst erst zusammen mit dem ersten Konsumenten
bauen (Linse oder Taiga-Label-Sync) — ohne Auswerter sind Tags nur
Kommentare mit Extra-Syntax. Die Inversions-Mechanik der Linse gibt es durch
den günstigsten Pfad (D18) schon.
## Vollständiges Lean-Pathfinding
+21 -8
View File
@@ -508,21 +508,34 @@ anderweitig verwenden** — nicht: schon entschieden. Die endgültige Schreibwei
wird hier festgelegt, **bevor** sie gebaut wird; wo unten „offen“ steht, ist sie
das auch. Begründung und Zusammenhang: D34.
### Referenzen, Schlagworte und Knoten-IDs (`#`)
### Referenzen und Knoten-IDs (`#`)
- `#123` — Referenz auf externe Tickets (geplant für Taiga-Integration).
- `#tag` — freie Schlagworte.
Ticket-Referenzen werden **so** notiert, weil es die etablierte
Kurzschreibweise ist; sie haben unter den `#`-Verwendungen Vorrang.
- `#auth`**Knoten-ID**: ein whitespace-freier Bezeichner, der einen Knoten im
ganzen Dokument eindeutig benennt. Ziel für Abhängigkeiten und
Beschreibungsblöcke (siehe unten). Zwei Knoten mit derselben ID sind ein
Fehler und bekommen eine Warnung mit Zeilennummer (§4).
**Offen: `#` trägt damit drei Bedeutungen.** `#123` ist rein numerisch und
bleibt unterscheidbar; **ID und Schlagwort sehen einander gleich**. Vor der
Implementierung ist eine Trennregel zu entscheiden — etwa „das erste
`#`-Token einer Zeile ist die ID, jedes weitere ein Schlagwort“ oder ein
eigenes Zeichen für eine der beiden Rollen. Solange das offen ist, ist auch
`#tag` nicht gebaut.
Beide Rollen vertragen sich: Oft **ist** die Ticket-Nummer die natürliche
Knoten-ID. Als Ticket-Link behandelt wird heuristisch das rein **numerische**
`#123`; wo das nicht reicht, schafft eine Präfix-Konvention (z. B. `#t123`)
Eindeutigkeit. Freie Schlagworte liegen **nicht** mehr auf `#` — siehe `&tag`
unten; damit ist die frühere Dreifach-Rolle von `#` aufgelöst (D34).
### Schlagworte (`&tag`) — reserviert, bewusst ungebaut
- `&tag` — freies Schlagwort: benennt eine **Menge** von Knoten quer zur
Hierarchie (die ID benennt genau einen). Mehrere pro Zeile, Position egal,
gleiche Zeichenmenge wie `@name` (§7: Unicode-Buchstaben, Ziffern, `.`,
`_`, `-`).
- Erkannt nur **alleinstehend** angesetzt (`(^|\s)&\w`, wie `!!!` in §1) —
„R&D“ und „Drag & Drop“ bleiben damit gewöhnliche Labels.
- **Niedrig priorisiert:** Ohne ein Feature, das Schlagworte auswertet
(Filter-/Hervorheben-Linse, Taiga-Label-Sync), sind sie nur Kommentare mit
Extra-Syntax — gebaut werden sie erst **zusammen mit** dem ersten solchen
Konsumenten. Bis dahin gilt allein: `&` nicht anderweitig vergeben.
### Abhängigkeiten zwischen Knoten (`:#auth,#api`)
+5 -2
View File
@@ -66,8 +66,11 @@ Reihenfolge ist nicht beliebig: ohne IDs keine Abhängigkeiten, ohne die keinen
effektiven Status und keine Closure-Rechnung. Jeder Punkt beginnt in
[SPEC §11](SPEC.md) — die dort benannten offenen Schreibweisen sind zu
entscheiden, **bevor** Code entsteht.
- [ ] `#`-Doppelrolle auflösen (Knoten-ID vs. Schlagwort) und in SPEC §11
festschreiben; `#tag` hängt an derselben Entscheidung.
- [x] `#`-Doppelrolle auflösen und in SPEC §11 festschreiben.
→ Durch Wegfall statt Trennregel: Tickets haben Vorrang (`#123`
numerisch, oft zugleich die natürliche Knoten-ID; notfalls Präfix wie
`#t123`); Schlagworte gehen auf `&tag` — niedrig priorisiert, gebaut
erst mit dem ersten Konsumenten (D34-Nachtrag).
- [ ] Knoten-IDs parsen; doppelte ID → Warnung mit Zeilennummer.
- [ ] Abhängigkeiten `:#a,#b` parsen; unbekannte ID → Warnung, Zyklen erlaubt.
- [ ] Effektiven Status rechnen (intrinsisch + Abhängigkeiten); Darstellung
+3 -1
View File
@@ -9,7 +9,9 @@
- [^] People tags, bare URLs, %% comments (XS)
- [^] And/or decomposition (S)
- [^] Optional nodes — neither required nor an alternative (S)
- [?] Node IDs, #auth (S) %% but # already means tickets and tags, see SPEC §11
- [?] Node IDs, #auth (S) %% often just the ticket number, see SPEC §11
+ [?] Free tags, &tag (M) %% only together with a consumer, see D34
- [?] A lens: highlight every node tagged &x (S)
- [?] Dependencies across the tree, :#auth,#api (M)
- [?] They constrain the status, not when work may start (S)
- [?] Effective status: intrinsic, plus what it depends on (S)