Aus #52 („Zwei Grenzen bleiben bewusst offen“, dort: „Beides gehört in je ein eigenes Issue, wenn du es willst“). Die zweite Grenze steht in #163.
Befund
Übergänge haben seit #52 Namen, und State transition wählt nach Namen. Trotzdem lehnt ConnectCommand eine zweite Kante zwischen demselben Paar mit Already connected ab (src/core/commands/graphCommands.ts:197), weil alle Übergänge auf denselben zwei Ports hängen.
A --alarm--> B neben A --gesehen--> B ist damit nicht möglich; man muss über einen Zwischenzustand ausweichen.
Zu bauen (Vorschlag)
Für Maschinen-Graphen erlaubt ConnectCommand mehrere Kanten zwischen demselben Paar, solange sie verschiedene Namen haben (in Behavior-Graphen bleibt die Sperre).
Die Pfeile zwischen demselben Paar werden nebeneinander gezeichnet (wie heute Hin- und Rückweg).
Tests: zwei benannte Übergänge A→B, State transition nimmt den richtigen; Undo.
Offen (mit Vorschlag)
Zwei unbenannte Kanten zwischen demselben Paar? Vorschlag: nein, die zweite muss einen Namen bekommen, sonst wären sie ununterscheidbar.
Aus #52 („Zwei Grenzen bleiben bewusst offen“, dort: „Beides gehört in je ein eigenes Issue, wenn du es willst“). Die zweite Grenze steht in #163.
## Befund
- Übergänge haben seit #52 Namen, und `State transition` wählt nach Namen. Trotzdem lehnt `ConnectCommand` eine **zweite Kante zwischen demselben Paar** mit *Already connected* ab (`src/core/commands/graphCommands.ts:197`), weil alle Übergänge auf denselben zwei Ports hängen.
- `A --alarm--> B` neben `A --gesehen--> B` ist damit nicht möglich; man muss über einen Zwischenzustand ausweichen.
## Zu bauen (Vorschlag)
- Für Maschinen-Graphen erlaubt `ConnectCommand` mehrere Kanten zwischen demselben Paar, solange sie verschiedene Namen haben (in Behavior-Graphen bleibt die Sperre).
- Die Pfeile zwischen demselben Paar werden nebeneinander gezeichnet (wie heute Hin- und Rückweg).
- Tests: zwei benannte Übergänge A→B, `State transition` nimmt den richtigen; Undo.
## Offen (mit Vorschlag)
1. **Zwei unbenannte Kanten zwischen demselben Paar?** Vorschlag: nein, die zweite muss einen Namen bekommen, sonst wären sie ununterscheidbar.
meleki
added the new label 2026-09-19 11:41:51 +02:00
Mehrere Übergänge in dieselbe Richtung zwischen zwei Zuständen gehen jetzt, angelegt wie gewohnt: Rechtsklick → Make transition → Ziel anklicken.
Ein weiterer Übergang bekommt sofort einen eigenen Namen:Transition 2, Transition 3 usw.; ein Name, der den Zustand schon verlässt, wird übersprungen. Zwei unbenannte Übergänge zwischen demselben Paar gibt es damit nie.
Umbenennen wird abgelehnt, wenn ein anderer Übergang zwischen demselben Paar in derselben Richtung den Namen schon trägt, auch der leere Name. Hinweis: Another transition between these states is already called "alarm". Gleiche Namen zu anderen Zielen werden wie bisher nur gewarnt.
Behavior-Graph: bleibt bei Already connected.
Über das Issue hinaus, selbst entschieden:
Schleifen gehen auch mehrfach. Jede weitere liegt als Ring außen um die vorige, die Vorschau zeigt schon den nächsten Ring.
Namensschilder weichen sich aus. Parallele Pfeile liegen nur 14 px auseinander, die Namen lagen im Screenshot genau übereinander. Ein Schild, das ein anderes verdecken würde, rutscht jetzt entlang seines eigenen Pfeils, bis es frei ist (reine Funktion freeLabelSpot). Das hilft auch bei benannten Hin-und-zurück-Paaren.
14 neue Unit-Tests in tests/core/parallel-transitions.test.ts; Gegenprobe mit 11 eingebauten Fehlern, alle gefangen.
e2e 26e6 (4 Checks): zweiter Übergang mit eigenem Namen, Schilder überlappen nicht, Umbenennen über das echte Feld wird abgelehnt, Undo.
Doku: Wiki State-machines und Development (c436bfc). Die Check-Summe 1092 ist gerechnet; CI zu 25ec787 läuft noch (Gate Task 158, Suite Task 159).
Nebenfund, nicht angefasst: Beim Tab State machine State machine liegt das x über dem Textende (aus #171).
## Umgesetzt in `25ec787`
Dein Vorschlag ist so gebaut, wie er oben steht.
- **Mehrere Übergänge in dieselbe Richtung** zwischen zwei Zuständen gehen jetzt, angelegt wie gewohnt: Rechtsklick → *Make transition* → Ziel anklicken.
- **Ein weiterer Übergang bekommt sofort einen eigenen Namen:** `Transition 2`, `Transition 3` usw.; ein Name, der den Zustand schon verlässt, wird übersprungen. Zwei unbenannte Übergänge zwischen demselben Paar gibt es damit nie.
- **Umbenennen wird abgelehnt**, wenn ein anderer Übergang zwischen demselben Paar in derselben Richtung den Namen schon trägt, auch der leere Name. Hinweis: *Another transition between these states is already called "alarm"*. Gleiche Namen zu anderen Zielen werden wie bisher nur gewarnt.
- **Behavior-Graph:** bleibt bei *Already connected*.
**Über das Issue hinaus, selbst entschieden:**
- **Schleifen gehen auch mehrfach.** Jede weitere liegt als Ring außen um die vorige, die Vorschau zeigt schon den nächsten Ring.
- **Namensschilder weichen sich aus.** Parallele Pfeile liegen nur 14 px auseinander, die Namen lagen im Screenshot genau übereinander. Ein Schild, das ein anderes verdecken würde, rutscht jetzt entlang seines eigenen Pfeils, bis es frei ist (reine Funktion `freeLabelSpot`). Das hilft auch bei benannten Hin-und-zurück-Paaren.
**Tests (lokal):**
```
npm run check → 114 Files, 1631 Tests (vorher 1617), CHECK EXIT 0
GM_STEPS=26 (frisch geseedet) → ALL PASSED – 70 checks (vorher 66)
```
- 14 neue Unit-Tests in `tests/core/parallel-transitions.test.ts`; Gegenprobe mit 11 eingebauten Fehlern, alle gefangen.
- e2e 26e6 (4 Checks): zweiter Übergang mit eigenem Namen, Schilder überlappen nicht, Umbenennen über das echte Feld wird abgelehnt, Undo.
**Doku:** Wiki *State-machines* und *Development* (`c436bfc`). Die Check-Summe **1092** ist gerechnet; CI zu `25ec787` läuft noch (Gate Task 158, Suite Task 159).
**Nebenfund, nicht angefasst:** Beim Tab `State machine State machine` liegt das x über dem Textende (aus #171).
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Aus #52 („Zwei Grenzen bleiben bewusst offen“, dort: „Beides gehört in je ein eigenes Issue, wenn du es willst“). Die zweite Grenze steht in #163.
Befund
State transitionwählt nach Namen. Trotzdem lehntConnectCommandeine zweite Kante zwischen demselben Paar mit Already connected ab (src/core/commands/graphCommands.ts:197), weil alle Übergänge auf denselben zwei Ports hängen.A --alarm--> BnebenA --gesehen--> Bist damit nicht möglich; man muss über einen Zwischenzustand ausweichen.Zu bauen (Vorschlag)
ConnectCommandmehrere Kanten zwischen demselben Paar, solange sie verschiedene Namen haben (in Behavior-Graphen bleibt die Sperre).State transitionnimmt den richtigen; Undo.Offen (mit Vorschlag)
vorschlag passt
Umgesetzt in
25ec787Dein Vorschlag ist so gebaut, wie er oben steht.
Transition 2,Transition 3usw.; ein Name, der den Zustand schon verlässt, wird übersprungen. Zwei unbenannte Übergänge zwischen demselben Paar gibt es damit nie.Über das Issue hinaus, selbst entschieden:
freeLabelSpot). Das hilft auch bei benannten Hin-und-zurück-Paaren.Tests (lokal):
tests/core/parallel-transitions.test.ts; Gegenprobe mit 11 eingebauten Fehlern, alle gefangen.Doku: Wiki State-machines und Development (
c436bfc). Die Check-Summe 1092 ist gerechnet; CI zu25ec787läuft noch (Gate Task 158, Suite Task 159).Nebenfund, nicht angefasst: Beim Tab
State machine State machineliegt das x über dem Textende (aus #171).Nachtrag: CI zu
25ec787Grün, Job-Logs selbst gelesen:
CHECK EXIT 0,Job succeededALL PASSED – 1092 checks, Smokes 24 / 19 / 21,Job succeededDie Check-Summe 1092 ist damit von CI bestätigt.