State machine: Set state beim Kanten-Drop ins Leere anbieten #56

Closed
opened 2026-09-12 18:02:39 +02:00 by meleki · 1 comment
Owner

Bekannte Lücke aus #51: Zieht man im Behavior-Tab eine Exec-Kante ins Leere, bietet die Palette Nodes mit passendem Eingang an. Set state hat keinen festen Exec-Eingang – seine Exec-Eingänge sind pro Zustand abgeleitet (derivePorts), und dropTarget prüft nur def.inputs. Der Node erscheint deshalb in dieser Palette nicht; er lässt sich nur aus der normalen Palette platzieren und dann verdrahten.

Optionen:

  • dropTarget fragt für Nodes mit derivePorts einmal die abgeleiteten Ports ab (ohne Maschine gibt es aber noch keine) – oder ein Node darf ankündigen „nimmt Exec-Eingänge an“ (Flag am NodeDef), dann wird er angeboten und die Kante hängt, bis eine Maschine gewählt ist.
  • Alternativ ein fester Exec-Eingang exec ohne Wirkung – widerspricht dem Spiegelbild-Design aus #51.

Nachweis im e2e-Schritt 26: Exec-Kante von OnStart ins Leere ziehen, Set state muss in der Liste stehen.


Folge-Issue zu #51 (State machine, Commit e7d82bd, 2026-09-12).

Bekannte Lücke aus #51: Zieht man im Behavior-Tab eine Exec-Kante ins Leere, bietet die Palette Nodes mit passendem Eingang an. `Set state` hat **keinen festen Exec-Eingang** – seine Exec-Eingänge sind pro Zustand abgeleitet (`derivePorts`), und `dropTarget` prüft nur `def.inputs`. Der Node erscheint deshalb in dieser Palette nicht; er lässt sich nur aus der normalen Palette platzieren und dann verdrahten. **Optionen:** - `dropTarget` fragt für Nodes mit `derivePorts` einmal die abgeleiteten Ports ab (ohne Maschine gibt es aber noch keine) – oder ein Node darf ankündigen „nimmt Exec-Eingänge an“ (Flag am `NodeDef`), dann wird er angeboten und die Kante hängt, bis eine Maschine gewählt ist. - Alternativ ein fester Exec-Eingang `exec` **ohne** Wirkung – widerspricht dem Spiegelbild-Design aus #51. Nachweis im e2e-Schritt 26: Exec-Kante von `OnStart` ins Leere ziehen, `Set state` muss in der Liste stehen. --- Folge-Issue zu #51 (State machine, Commit `e7d82bd`, 2026-09-12).
meleki added the state-machine label 2026-09-12 18:02:39 +02:00
admin added the low-priority label 2026-09-12 18:12:42 +02:00
admin added this to the Development project 2026-09-13 13:29:59 +02:00
admin removed this from the Development project 2026-09-13 13:30:59 +02:00
admin added this to the Development project 2026-09-13 13:45:43 +02:00
admin moved this to Next in Development on 2026-09-14 21:44:18 +02:00
admin moved this to Queue in Development on 2026-09-14 21:49:30 +02:00
admin moved this to Next in Development on 2026-09-15 13:35:13 +02:00
Author
Owner

Geschlossen als wontfix — nach Nachmessen im Code steht der Aufwand nicht im Verhaeltnis zum Gewinn.

Was heute wirklich passiert: defAcceptsFrom (src/core/graph/dropTarget.ts:57) prueft def.inputs des rohen Defs. Set state (src/core/graph/nodes/flow/SetState.ts:18) hat dort nur den machine-Eingang; seine Exec-Eingaenge entstehen erst in derivePorts, sobald eine Maschine gewaehlt ist. Der Node fehlt deshalb in der Palette, die beim Kanten-Drop ins Leere aufgeht — mehr nicht. Es kracht nichts, es haengt keine halbe Kante, es entsteht kein kaputter Node. Der normale Weg (Node aus der regulaeren Palette, Maschine waehlen, Kante ziehen) funktioniert unveraendert, weil die Zustands-Eingaenge dann echt existieren.

Der Preis fuer den Fix waere eine der drei Varianten, und alle drei kosten mehr, als sie einbringen:

  • Eine Palettenzeile pro State-machine-Asset (analog zu Run behavior, das genau so aufgeloeste Defs mit echten Ports liefert). Sauber, aber: gilt das dann auch fuer das Spiegelbild State branch? Auf welchen Zustand haengt sich die Kante — den ersten in Knotenreihenfolge oder den Startzustand? Und bei drei Maschinen wachsen zwei Node-Arten auf je vier Palettenzeilen.
  • Flag am NodeDef ("nimmt Exec-Eingaenge an") — platziert einen Node, dessen Kante unverbunden haengen bleibt, bis man eine Maschine waehlt. Das ist ein Drop, der die Geste nicht zu Ende bringt.
  • Fester Exec-Eingang exec ohne Wirkung — widerspricht dem Spiegelbild-Design aus #51, wie im Issue schon vermerkt.

Kosten fuer "lassen wir": ein Handgriff mehr in einem Spezialfall.

Falls es im Gebrauch doch stoert, ist der Weg hier dokumentiert: Variante 1 mit Startzustand als Ziel-Port, symmetrisch fuer State branch.

Geschlossen als **wontfix** — nach Nachmessen im Code steht der Aufwand nicht im Verhaeltnis zum Gewinn. **Was heute wirklich passiert:** `defAcceptsFrom` (`src/core/graph/dropTarget.ts:57`) prueft `def.inputs` des rohen Defs. `Set state` (`src/core/graph/nodes/flow/SetState.ts:18`) hat dort nur den `machine`-Eingang; seine Exec-Eingaenge entstehen erst in `derivePorts`, sobald eine Maschine gewaehlt ist. Der Node fehlt deshalb in der Palette, die beim Kanten-Drop ins Leere aufgeht — mehr nicht. Es kracht nichts, es haengt keine halbe Kante, es entsteht kein kaputter Node. Der normale Weg (Node aus der regulaeren Palette, Maschine waehlen, Kante ziehen) funktioniert unveraendert, weil die Zustands-Eingaenge dann echt existieren. **Der Preis fuer den Fix** waere eine der drei Varianten, und alle drei kosten mehr, als sie einbringen: - *Eine Palettenzeile pro State-machine-Asset* (analog zu `Run behavior`, das genau so aufgeloeste Defs mit echten Ports liefert). Sauber, aber: gilt das dann auch fuer das Spiegelbild `State branch`? Auf welchen Zustand haengt sich die Kante — den ersten in Knotenreihenfolge oder den Startzustand? Und bei drei Maschinen wachsen zwei Node-Arten auf je vier Palettenzeilen. - *Flag am `NodeDef` ("nimmt Exec-Eingaenge an")* — platziert einen Node, dessen Kante unverbunden haengen bleibt, bis man eine Maschine waehlt. Das ist ein Drop, der die Geste nicht zu Ende bringt. - *Fester Exec-Eingang `exec` ohne Wirkung* — widerspricht dem Spiegelbild-Design aus #51, wie im Issue schon vermerkt. **Kosten fuer "lassen wir":** ein Handgriff mehr in einem Spezialfall. Falls es im Gebrauch doch stoert, ist der Weg hier dokumentiert: Variante 1 mit Startzustand als Ziel-Port, symmetrisch fuer `State branch`.
admin moved this to Done in Development on 2026-09-15 18:15:22 +02:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: meleki/feuerwerk#56