diff --git a/docs/DECISIONS.md b/docs/DECISIONS.md index 2a98e45..b8679bd 100644 --- a/docs/DECISIONS.md +++ b/docs/DECISIONS.md @@ -1601,6 +1601,19 @@ frei. Verworfen: `$` (Preis-Kollision), `%` (ein Tippfehler vom Auskommentieren), `:` (zu nah an `:#…`), `§` (fehlt auf US-Tastaturen), `*` (Markdown, schon in D29 verworfen). +**Nachtrag — Ticket-Kennungen sind auch alphanumerisch; die +Numerik-Heuristik ist gestrichen.** Der ältere Nachtrag oben nahm an, als +Ticket-Link genüge heuristisch das rein numerische `#123`. Das trägt nicht: +Taiga schreibt `#US-123` für eine User Story, Jira `#ABC-123` — Kennungen +sind alphanumerisch (Nutzer-Hinweis). Statt die Form-Heuristik auszuweiten +(jedes `GROSS-123` als Ticket zu raten, kollidierte mit gewöhnlichen +Knoten-IDs), wird ein Token künftig am **Muster des angebundenen Trackers** +erkannt — konfigurierbar je Integration, z. B. `US-\d+` und `\d+` bei Taiga. +Die Zeichenmenge der Knoten-ID (§1: Buchstaben, Ziffern, `.`, `_`, `-`) +deckt solche Kennungen bereits ab; am Parser ändert sich nichts, die +Festlegung des Musters liegt beim Taiga-Spike. SPEC §11 ist entsprechend +umformuliert. + **Nachtrag — das XOR-Zeichen ist entschieden: `=`.** Das in §11 zunächst vorgeschlagene `x` ist verworfen; ausschlaggebend war, **wann** seine Glyph-Kollision auftritt: `x` teilt sich das Zeichen mit dem Statuscode für diff --git a/docs/SPEC.md b/docs/SPEC.md index 2f53ccb..3547183 100644 --- a/docs/SPEC.md +++ b/docs/SPEC.md @@ -47,9 +47,10 @@ sie ist die Adresse für Abhängigkeiten und Beschreibungsblöcke (§11). Label, und der für Abhängigkeiten reservierte Doppelpunkt `:#a,#b` (§11) kollidiert nicht. - Das **erste** solche Token der Zeile ist die ID; weitere `#`-Token bleiben im - Label stehen (dort liegt die reservierte Ticket-Referenz `#123`, §11). Eine - rein numerische ID ist zugleich die künftige Ticket-Referenz — oft ist die - Ticket-Nummer die natürliche Knoten-ID (D34). + Label stehen (dort liegt die reservierte Ticket-Referenz, §11). Eine ID, die + dem Muster des angebundenen Trackers entspricht (`#123`, `#US-123`), ist + zugleich die künftige Ticket-Referenz — oft ist die Ticket-Kennung die + natürliche Knoten-ID (D34). - Die ID gehört **nicht** zum Label. Eine eigene Darstellung im Diagramm hat sie (noch) nicht; sichtbar ist sie im Knoten-Tooltip und im `aria-label`. - **Doppelte ID:** Warnung `duplicateId` mit beiden Zeilennummern; die spätere @@ -730,18 +731,23 @@ das auch. Begründung und Zusammenhang: D34. ### Referenzen und Knoten-IDs (`#`) -- `#123` — Referenz auf externe Tickets (geplant für Taiga-Integration). - Ticket-Referenzen werden **so** notiert, weil es die etablierte - Kurzschreibweise ist; sie haben unter den `#`-Verwendungen Vorrang. +- `#123`, `#US-123` — Referenz auf externe Tickets (geplant für die + Tracker-Integration). Ticket-Referenzen werden **so** notiert, weil es die + etablierte Kurzschreibweise ist; sie haben unter den `#`-Verwendungen + Vorrang. Ticket-Kennungen sind **auch alphanumerisch** (Taiga schreibt + `#US-123` für eine User Story, Jira `#ABC-123`) — die Zeichenmenge der + Knoten-ID (§1) deckt sie ab. - `#auth` — **Knoten-ID**: **umgesetzt**, Definition jetzt in §1 (Zeichenmenge, Alleinstehend-Regel, Warnung `duplicateId`). Ziel für Abhängigkeiten und Beschreibungsblöcke (siehe unten). -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). +Beide Rollen vertragen sich: Oft **ist** die Ticket-Kennung die natürliche +Knoten-ID. Als Ticket-Link behandelt wird ein Token **nicht an seiner Form** +(die frühere Heuristik „rein numerisch" trägt bei alphanumerischen Kennungen +nicht), sondern am **Muster des angebundenen Trackers** — konfigurierbar, +z. B. `US-\d+`/`\d+` bei Taiga; festzulegen im Taiga-Spike (D34-Nachtrag). +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 diff --git a/docs/examples/werkbaum.werkbaum b/docs/examples/werkbaum.werkbaum index 6512f4c..b453f2e 100644 --- a/docs/examples/werkbaum.werkbaum +++ b/docs/examples/werkbaum.werkbaum @@ -22,7 +22,7 @@ - [^] A short text right at the node (S) %% a " line below the node - [^] A long block at the end, addressed by its id (S) %% behind a --- separator - [-] A separate storage format for the structure (L) %% the text is the format - - [ ] Ticket references (#123) (S) + - [ ] Ticket references (#123,#US-123) (S) %% Taiga writes #US-123 for a user story - [x] llms.md, the notation explained to AI agents (S) - [?] Benefit per node, not only cost (M) | [?] Another sigil next to the size (S) diff --git a/frontend/public/llms.md b/frontend/public/llms.md index f5bf007..e0d1aac 100644 --- a/frontend/public/llms.md +++ b/frontend/public/llms.md @@ -182,5 +182,7 @@ One node per line. Everything except the label is optional. ## Reserved — do not use for other purposes -- Purely numeric `#123`: ticket references (planned tracker integration). +- Ticket references like `#123` or `#US-123` (Taiga user story, Jira + `#ABC-123`): planned tracker integration will resolve node IDs that match + the connected tracker's reference pattern. - Free-standing `&tag`: keywords across the hierarchy (reserved, unbuilt).