diff --git a/docs/DECISIONS.md b/docs/DECISIONS.md index 2962056..fc40fd9 100644 --- a/docs/DECISIONS.md +++ b/docs/DECISIONS.md @@ -8210,3 +8210,54 @@ durchweg 0) — geprüft ist deshalb über Ereignisse und **berechnete** Stile, nicht am Bild. Dieselbe Sorte Grenze wie D57 (`focus()` ohne Fensterfokus feuert keine Fokus-Ereignisse): Der Tastaturweg musste synthetisch angestoßen werden. + +**Nachtrag 7 — Status zurückschreiben: niemand gewinnt von selbst +(2026-08-27).** Entschieden, noch nicht gebaut (SPEC §11). Der Ticket-Stand +wird seit Nachtrag 6 gelesen; damit steht die Frage im Raum, die `#trk.write` +blockiert hat: **Was gilt, wenn Ticket und Statusbox Verschiedenes sagen?** + +**Gewählt (Nutzer): keiner automatisch — die Abweichung wird markiert und mit +zwei ausdrücklichen Knöpfen angeboten** (*nach Taiga schreiben* / *aus Taiga +übernehmen*). Die beiden naheliegenden Antworten sind damit verworfen, jede +aus ihrem eigenen Grund: + +- **„Der Text gewinnt"** — das ist, was der Plan-Knoten heute verspricht + („change a status in the plan and the ticket follows"), und es liegt auf + der D14-Linie. Es schreibt aber selbsttätig in ein **fremdes, geteiltes** + System: Ein veralteter Plan zöge Tickets rückwärts, und von allen + Änderungen, die dieses Werkzeug machen kann, ist die in Taiga die am + schwersten zurückzunehmende. +- **„Taiga gewinnt"** — der Tracker ist die operative Wahrheit, dort bewegt + das Team täglich Karten. Dann schriebe das Werkzeug aber fortlaufend im + **Notationstext**, in einem geteilten Dokument (`?live=`) für alle sichtbar, + und die Statusbox wäre keine Autoren-Aussage mehr, sondern gespiegelte + Fremddaten. Genau davor steht seit D14 die Hausregel. +- **„Zeitstempel entscheidet"** war gar nicht baubar: Werkbaum hat keine + Änderungszeit **je Knoten** — der Text ist das ganze Format (D14). Man + müsste dafür Metadaten erfinden, die die Notation bewusst nicht hat. + +Die gewählte Form kostet je Abweichung einen Klick, und wer nie klickt, hat +dauerhaft zwei Wahrheiten nebeneinander — **benannt und in Kauf genommen**: +Sichtbar sind sie dann immerhin, und das ist mehr, als es vor Nachtrag 6 gab. +Sie liegt auf derselben Linie wie die Anlage (D91-Nachtrag 4: ein Knopf im +Knoten-Fenster, nichts geschieht nebenbei) und wie das Zurückschreiben der +Faltung (D38-Nachtrag 2: geschrieben wird nur, was der Zustand wirklich +hergibt). + +**Geschrieben wird nur, was die Abbildung kennt** (Nutzer): die fünf +Zustände aus Nachtrag 6. `[?]` Idee, `[!]` High Risk, `[-]` verworfen und der +neutrale Knoten haben in Taigas Vorgabe-Workflow keine Entsprechung und +lassen das Ticket **unangetastet**; das Fenster sagt, warum. Erwogen und +zurückgestellt: eine eigene Aktion „Ticket schließen" für `[-]` (die einzige +Randlage mit klarer Entsprechung) und das Warten auf die konfigurierbare +Abbildung (`#trk.resolve.map`) — beides kann später dazukommen, ohne diese +Festlegung zu brechen. + +**Was das Bauen zusätzlich braucht** (hier notiert, damit es niemanden +überrascht): Taiga nimmt zum Schreiben die **Status-Id** des Projekts, nicht +den Namen — die Spaltennamen sind je Projekt frei, der Proxy braucht also +`/userstory-statuses` bzw. `/task-statuses` je Projekt und trifft die Spalte +über den Namen aus der Abbildung; findet er sie nicht, wird nicht geschrieben. +Und ein `PATCH` verlangt die `version` des Tickets (optimistisches Sperren): +Hat jemand dazwischen geändert, meldet sich der Konflikt, statt ihn zu +überschreiben — dieselbe Haltung wie beim Live-Editing (D76). diff --git a/docs/SPEC.md b/docs/SPEC.md index 1e93180..00d0896 100644 --- a/docs/SPEC.md +++ b/docs/SPEC.md @@ -1390,6 +1390,29 @@ wird im Knoten-Fenster gezeigt (§9) — gelesen, nie geschrieben; das Freie Schlagworte liegen **nicht** mehr auf `#` — siehe `&tag` unten; damit ist die frühere Dreifach-Rolle von `#` aufgelöst (D34). +### Status zurückschreiben — festgelegt, noch nicht gebaut + +Der Ticket-Stand wird gelesen (§9). Der Abgleich in die andere Richtung ist +entschieden, aber ungebaut; die Regeln stehen hier, bevor sie gebaut werden. + +- **Niemand gewinnt von selbst.** Weicht der gelesene Ticket-Status von der + Statusbox des Knotens ab, wird die Abweichung im Knoten-Fenster + **markiert** und mit **zwei ausdrücklichen Aktionen** angeboten: *nach + Taiga schreiben* (Statusbox → Ticket) und *aus Taiga übernehmen* + (Ticket-Status → Statusbox). Kein Takt, kein stiller Abgleich, keine + Richtung, die die andere überstimmt. +- **Übernehmen ist eine gewöhnliche Textänderung**: Die Statusbox wird + geschrieben wie beim Falten (§9) — undo-fähig, in einem geteilten Dokument + für alle sichtbar. Sonst gilt weiter, dass der Text die Quelle der Wahrheit + ist und kein Werkzeug ihn ungefragt umschreibt. +- **Geschrieben wird nur, was die Abbildung kennt** (§9, die fünf Zustände). + `[?]`, `[!]`, `[-]` und der neutrale Knoten haben keine Entsprechung und + lassen das Ticket **unangetastet**; das Fenster sagt, warum. Erfunden wird + nichts — dieselbe Haltung wie beim Lesen, wo ein unbekannter Spaltenname + unabgebildet bleibt. +- Beide Richtungen betreffen **einen** Knoten. Eine Sammelaktion über einen + Teilbaum ist offen und wird, wenn sie kommt, hier festgelegt. + ### Schlagworte (`&tag`) Die **Schreibweise ist umgesetzt** — Definition jetzt in §1 (Zeichenmenge wie