docs: Mehrprojekt-Pläne — &taiga.slug erbt je Teilbaum, erster &tag-Konsument (D91-Nachtrag 3, SPEC §11)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Fable 5
parent
4c98ec6603
commit
c712e81970
@@ -19,6 +19,7 @@ reverse.
|
||||
|
||||
## 2026-08-27
|
||||
|
||||
- Plans spanning several Taiga projects: a `&taiga.slug` tag names the project per subtree, inherited downwards — the first consumer of the reserved free tags, recorded as planned
|
||||
- Creating Taiga tickets from nodes recorded as planned: a story per node from the node window, sub-packages as tasks picked in a dialog, through a backend proxy — the ref lands in the line as `#US-123`/`#T-1234`, beside the node id
|
||||
- The unassigned pill in the people bar shows each language's short form now — German `N.N.`, English `TBD` — with the long wording in the tooltip
|
||||
- `pull-doc --open` opens the fetched document in IntelliJ IDEA afterwards — also when nothing changed
|
||||
|
||||
@@ -7956,3 +7956,45 @@ ein Dokument theoretisch Refs aus **mehreren** Projekten mischen — und
|
||||
`#US-123` ist nur je Projekt eindeutig. Der spätere Resolver braucht darum
|
||||
eine Projekt-Zuordnung; praktisch gehört ein Plan zu einem Projekt, und die
|
||||
Frage stellt sich erst bei `#trk.resolve`.
|
||||
|
||||
**Nachtrag 3 — Pläne über mehrere Taiga-Projekte: `&taiga.<slug>` erbt im
|
||||
Teilbaum (2026-08-27).** Die in Nachtrag 2 benannte Grenze ist real
|
||||
(Nutzer: „wir haben einige Werkbäume, die sich über mehrere Taiga-Projekte
|
||||
erstrecken") und braucht eine Notationsantwort — außerhalb des Textes
|
||||
gemerkt (localStorage, Server-Metadatum) bräche D14: In einem geteilten
|
||||
Dokument müsste jeder dieselbe Zuordnung kennen. Entschieden
|
||||
(Multiple-Choice):
|
||||
|
||||
**Das Schlagwort `&taiga.<projekt-slug>` am Wurzelknoten des jeweiligen
|
||||
Teilbaums**, vererbt auf die Nachkommen wie die `@`-Tags beim
|
||||
Zuständigen-Engpass (D71) — der nächste Vorfahr mit `taiga.*`-Tag gewinnt.
|
||||
Refs bleiben damit überall kurz (`#US-123`), ein Ein-Projekt-Plan braucht
|
||||
genau ein Tag, und es ist der **erste Konsument des reservierten `&tag`**
|
||||
— SPEC §11 nennt „Taiga-Label-Sync" seit D34 wörtlich als möglichen
|
||||
Anlass; die Schlagwort-Syntax wird also zusammen mit der Ticket-Anlage
|
||||
gebaut (`#not.tag.project` im Plan, Abhängigkeit von
|
||||
`#trk.create.project`). Alle übrigen `&`-Schlagworte bleiben frei — das
|
||||
Werkzeug wertet nur das `taiga.`-Präfix aus.
|
||||
|
||||
**Verworfen:**
|
||||
|
||||
- **Slug im Ref-Token** (`#<slug>.US-123`) — keine neue Syntax und jede
|
||||
Zeile für sich eindeutig, aber lange Tokens an jeder Ticket-Zeile, auch
|
||||
in Plänen mit nur einem Projekt.
|
||||
- **Slug nur bei Bedarf** — zwei Formen nebeneinander und eine stille
|
||||
Umschreib-Frage, sobald das zweite Projekt später dazukommt.
|
||||
- **Resolver probiert alle Projekte** (`by_ref` über die Mitgliedschaften)
|
||||
— bei Nummern-Kollisionen zwischen Projekten schlicht mehrdeutig, und
|
||||
ein Leser ohne Login rät.
|
||||
|
||||
**Der Anlege-Dialog wird vorbelegt und schreibt zurück** (revidiert das
|
||||
„blind fragen" aus dem Haupttext): Gefragt wird weiterhin bei jeder
|
||||
Anlage, aber mit dem geerbten Projekt vorausgewählt; die **erste** Anlage
|
||||
in einem Teilbaum ohne Zuordnung schreibt `&taiga.<slug>` an den Knoten
|
||||
zurück — undo-fähig wie die Ref, über dieselbe Maschinerie. Die
|
||||
Zuordnung entsteht so beim Arbeiten von selbst, statt gepflegt werden zu
|
||||
müssen.
|
||||
|
||||
An `llms.md` ändert sich weiterhin nichts — die Syntax ist reserviert und
|
||||
ungebaut; nachgezogen wird sie, wenn `&tag` wirklich gebaut wird
|
||||
(SPEC §13).
|
||||
|
||||
+12
-1
@@ -1311,7 +1311,10 @@ laufen **je Projekt** fortlaufend über alle Typen, das Präfix trägt den Typ,
|
||||
den die Auflösung braucht). Die Ref wird **zusätzlich zur Knoten-ID** als
|
||||
eigenes Token an die Zeile geschrieben: Mit vorhandener ID bleibt sie
|
||||
Ticket-Referenz im Label (§1: nur das erste `#`-Token ist die ID), ohne ID
|
||||
wird sie von selbst die ID. Siehe D91-Nachtrag 2.
|
||||
wird sie von selbst die ID. Erstreckt sich ein Plan über **mehrere**
|
||||
Taiga-Projekte, benennt das Schlagwort `&taiga.<slug>` (unten) das Projekt
|
||||
je Teilbaum — eine Ref wird gegen das Projekt des nächsten Vorfahren mit so
|
||||
einem Tag aufgelöst. Siehe D91-Nachträge 2 und 3.
|
||||
Freie Schlagworte liegen **nicht** mehr auf `#` — siehe `&tag` unten; damit
|
||||
ist die frühere Dreifach-Rolle von `#` aufgelöst (D34).
|
||||
|
||||
@@ -1327,6 +1330,14 @@ ist die frühere Dreifach-Rolle von `#` aufgelöst (D34).
|
||||
(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.
|
||||
- **Der erste Konsument ist festgelegt** (D91-Nachtrag 3): das
|
||||
**Taiga-Projekt-Schlagwort**. `&taiga.<projekt-slug>` benennt das
|
||||
Taiga-Projekt, zu dem ein Teilbaum gehört, und **vererbt sich** auf die
|
||||
Nachkommen wie die `@`-Tags beim Zuständigen-Engpass (§7/§9) — der
|
||||
nächste Vorfahr mit einem `taiga.*`-Tag gewinnt, ein eigener Tag am
|
||||
Knoten übersteuert. Alle übrigen Schlagworte bleiben frei; die Syntax
|
||||
wird zusammen mit der Ticket-Anlage gebaut, und die Zitier-Konvention
|
||||
gilt auch hier (`(&taiga.slug)` bleibt Label).
|
||||
|
||||
### Nutzen je Knoten (`(M/9)`) — festgelegt, noch nicht gebaut
|
||||
|
||||
|
||||
@@ -12,8 +12,9 @@
|
||||
- [^] #not.gates: And/or decomposition (S)
|
||||
- [^] #not.opt: Optional nodes — neither required nor an alternative (S)
|
||||
- [^] #not.id: Node IDs, (#auth:) before the title (S) %% often the ticket number, see SPEC §11
|
||||
+ [?] #not.tag: Free tags, &tag (M) %% only together with a consumer, see D34
|
||||
+ [ ] #not.tag: Free tags, &tag (M) %% first consumer found: the Taiga project tag, D91
|
||||
- [?] #not.tag.lens: A lens: highlight every node tagged &x (S)
|
||||
- [ ] #not.tag.project: (&taiga.slug) assigns the Taiga project, inherited (S)
|
||||
- [^] #not.dep: Dependencies across the tree, (:#auth,#api) (M)
|
||||
- [^] #not.dep.status: They constrain the status, not when work may start (S)
|
||||
- [^] #not.dep.eff: Effective status: intrinsic, plus what it depends on (S)
|
||||
@@ -25,7 +26,7 @@
|
||||
- [^] #not.desc.long: A long block at the end, addressed by its id (S) %% behind a --- separator
|
||||
- [^] #not.sizes: Size conflict — sub-packages must fit the given size (S) %% ranges, XXL open-ended, see D62
|
||||
- [-] #not.store: A separate storage format for the structure (L) %% the text is the format
|
||||
- [ ] #not.ticket: Ticket references (#123,#US-123) (S) %% Taiga writes #US-123 for a user story
|
||||
- [ ] #not.ticket: Ticket references (#US-123,#T-1234) (S) %% Werkbaum writes the US-/T- prefixes itself
|
||||
- [^] #not.llms: llms.md, the notation explained to AI agents (S)
|
||||
- [^] #not.llms.index: llms.txt, the signpost that points at it (XS) %% the convention wants an index, not the content
|
||||
- [ ] #not.benefit: Benefit per node: a 0-9 digit in the size token (M) %% (M/9), benefit alone as (/7) — see SPEC §11
|
||||
@@ -204,9 +205,10 @@
|
||||
- [ ] #trk.resolve.read: Read title, link and status (S)
|
||||
- [ ] #trk.resolve.map: Map the workflow onto the states (S)
|
||||
- [?] #trk.write: Write the status back (M) :#trk.resolve
|
||||
- [ ] #trk.create: Create tickets from nodes (L)
|
||||
- [ ] #trk.create: Create tickets from nodes (XL)
|
||||
- [ ] #trk.create.proxy: Backend proxy with named endpoints (M)
|
||||
- [ ] #trk.create.login: Log in to Taiga, token stays in the browser (S) :#trk.create.proxy
|
||||
- [ ] #trk.create.project: The project comes from the inherited tag (S) :#not.tag.project
|
||||
- [ ] #trk.create.story: A "create story" action in the node window (S) :#trk.create.login
|
||||
- [ ] #trk.create.tasks: Sub-packages become tasks, picked in a dialog (M) :#trk.create.story
|
||||
- [ ] #trk.create.ref: The ref lands in the line beside the id (S) :#trk.create.story
|
||||
@@ -273,14 +275,20 @@
|
||||
|
||||
#not.tag
|
||||
A tag names a set of nodes across the tree, whereas the tree itself is
|
||||
exactly one decomposition. Reserved but deliberately unbuilt: with nothing
|
||||
to evaluate them, tags are only comments with extra syntax.
|
||||
exactly one decomposition. Long reserved but unbuilt — tags without a
|
||||
consumer are only comments with extra syntax; the first consumer is now
|
||||
the Taiga project tag below, so the syntax gets built with it (D91).
|
||||
|
||||
#not.tag.lens
|
||||
The consumer that would justify tags: pick one and let everything else
|
||||
recede. The mechanics already exist — the cheapest path dims unneeded nodes
|
||||
in exactly that way.
|
||||
|
||||
#not.tag.project
|
||||
A tag of the form (&taiga.slug) names the Taiga project a subtree belongs
|
||||
to, inherited downwards like people tags in the bottleneck rule — plans
|
||||
that span several projects tag each subtree once, refs stay short.
|
||||
|
||||
#not.dep
|
||||
A node may need nodes outside its own subtree. That is the one thing a pure
|
||||
tree cannot express, and everything below this node follows from it.
|
||||
@@ -336,8 +344,8 @@
|
||||
|
||||
#not.ticket
|
||||
A reference into a tracker. Which token counts as a ticket comes from the
|
||||
connected tracker's own pattern rather than from guessing at its shape,
|
||||
which is why this waits for the tracker work.
|
||||
connected tracker's pattern — for Taiga fixed as US-/T- plus number,
|
||||
prefixes written by Werkbaum itself since Taiga only counts per project.
|
||||
|
||||
#not.llms
|
||||
An English short form of the specification, served at the site root, so an
|
||||
@@ -1169,8 +1177,8 @@
|
||||
proxy once at login and is never logged.
|
||||
|
||||
#trk.create.story
|
||||
"Create story" in the node window: pick the project from your list — asked
|
||||
on every creation, so nothing stale is remembered — and the story is
|
||||
"Create story" in the node window: confirm the project — asked on every
|
||||
creation, prefilled from the inherited project tag — and the story is
|
||||
created. A node that already carries a ticket ref is left alone.
|
||||
|
||||
#trk.create.tasks
|
||||
@@ -1179,6 +1187,11 @@
|
||||
children plus the realized alternatives of a |/= group; discarded ones
|
||||
never appear, finished ones start unchecked.
|
||||
|
||||
#trk.create.project
|
||||
The dialog's project choice is prefilled from the nearest (&taiga.slug)
|
||||
tag up the tree, and the first creation in a subtree without one writes
|
||||
the tag back, undoable — the assignment grows out of the work itself.
|
||||
|
||||
#trk.create.ref
|
||||
The returned ref is appended to the line as an extra token — #US-123 for
|
||||
stories, #T-1234 for tasks, prefixes written by Werkbaum since Taiga's own
|
||||
|
||||
Reference in New Issue
Block a user