Aus #52 („Zwei Grenzen bleiben bewusst offen“, dort: „Beides gehört in je ein eigenes Issue, wenn du es willst“). Die erste Grenze steht in #162.
Befund
Ein Übergang von einem Zustand auf sich selbst ist gesperrt: ConnectCommand wirft A node cannot connect to itself (src/core/commands/graphCommands.ts:190).
Gebraucht wird das für „Zustand neu betreten“, z. B. Angriff --nochmal--> Angriff, damit On state entered erneut feuert.
Zu bauen (Vorschlag)
In Maschinen-Graphen erlaubt: Kante von einem Zustand auf sich selbst, gezeichnet als Schleife am Rand des Nodes.
State transition über eine Self-Transition feuert exited und danach entered desselben Zustands.
Tests: Ereignisreihenfolge, lokale und globale Maschine, Undo.
Offen (mit Vorschlag)
Feuert exit/enter wirklich? Vorschlag: ja, das ist der Sinn des Übergangs. Wer nur „bleiben“ will, braucht keinen Übergang.
Aus #52 („Zwei Grenzen bleiben bewusst offen“, dort: „Beides gehört in je ein eigenes Issue, wenn du es willst“). Die erste Grenze steht in #162.
## Befund
- Ein Übergang von einem Zustand auf sich selbst ist gesperrt: `ConnectCommand` wirft *A node cannot connect to itself* (`src/core/commands/graphCommands.ts:190`).
- Gebraucht wird das für „Zustand neu betreten“, z. B. `Angriff --nochmal--> Angriff`, damit `On state entered` erneut feuert.
## Zu bauen (Vorschlag)
- In Maschinen-Graphen erlaubt: Kante von einem Zustand auf sich selbst, gezeichnet als Schleife am Rand des Nodes.
- `State transition` über eine Self-Transition feuert `exited` und danach `entered` desselben Zustands.
- Tests: Ereignisreihenfolge, lokale und globale Maschine, Undo.
## Offen (mit Vorschlag)
1. **Feuert exit/enter wirklich?** Vorschlag: ja, das ist der Sinn des Übergangs. Wer nur „bleiben“ will, braucht keinen Übergang.
meleki
added the new label 2026-09-19 11:41:51 +02:00
Anlegen: Rechtsklick auf einen Zustand → Make transition → noch einmal auf denselben Zustand klicken. Die Vorschau zeigt schon beim Zielen die Schleife.
Laufzeit: Wird die Self-Transition genommen, feuert On state exited und danach On state entered, jedes Mal. Gilt für lokale und globale Maschinen.
Set state in den aktuellen Zustand bleibt still wie bisher; neu betreten wird nur über State transition.
Nur Zustände dürfen sich selbst verbinden, jeder andere Node wird weiter mit A node cannot connect to itself abgelehnt. Pro Zustand eine Selbstkante (mehrere pro Paar sind #162).
Zeichnung: Schleife über der Mitte der Oberkante, Pfeil nach unten, Name am Scheitel.
Inspector: Die Schleife steht einmal unter Transitions out, nicht zusätzlich unter in (selbst entschieden, damit ein Übergang nicht wie zwei aussieht).
10 neue Unit-Tests in tests/core/self-transition.test.ts (Verbinden/Speichern/Undo, Sperren, Ereignisreihenfolge lokal und global, Geometrie der Schleife).
Gegenprobe mit 8 eingebauten Fehlern: 7 gefangen, 1 war gleichwertig zum Original und hat eine Lücke gezeigt, die mit einem zusätzlichen Test geschlossen ist.
e2e 26e5 (3 Checks, neuer Hook transitionLabelAt): echter Klick auf den eigenen Zustand, Schleife und Name über dem Node, Undo.
Wiki: State machines ergänzt (3676ad0). Die Check-Summe 1088 ist gerechnet; CI zu 010b6a7 läuft noch und ist nicht abgewartet.
## Umgesetzt in `010b6a7`
Dein Vorschlag ist so gebaut, wie er oben steht.
- **Anlegen:** Rechtsklick auf einen Zustand → *Make transition* → noch einmal auf denselben Zustand klicken. Die Vorschau zeigt schon beim Zielen die Schleife.
- **Laufzeit:** Wird die Self-Transition genommen, feuert `On state exited` und danach `On state entered`, jedes Mal. Gilt für lokale und globale Maschinen.
- **`Set state` in den aktuellen Zustand bleibt still** wie bisher; neu betreten wird nur über `State transition`.
- **Nur Zustände** dürfen sich selbst verbinden, jeder andere Node wird weiter mit *A node cannot connect to itself* abgelehnt. Pro Zustand eine Selbstkante (mehrere pro Paar sind #162).
- **Zeichnung:** Schleife über der Mitte der Oberkante, Pfeil nach unten, Name am Scheitel.
- **Inspector:** Die Schleife steht einmal unter *Transitions out*, nicht zusätzlich unter *in* (selbst entschieden, damit ein Übergang nicht wie zwei aussieht).
### Tests
```
npm run check → 113 Files, 1617 Tests (vorher 1607), CHECK EXIT 0
GM_STEPS=26 (frisch geseedet) → ALL PASSED – 66 checks (vorher 63), zweimal gelaufen
```
- 10 neue Unit-Tests in `tests/core/self-transition.test.ts` (Verbinden/Speichern/Undo, Sperren, Ereignisreihenfolge lokal und global, Geometrie der Schleife).
- Gegenprobe mit 8 eingebauten Fehlern: 7 gefangen, 1 war gleichwertig zum Original und hat eine Lücke gezeigt, die mit einem zusätzlichen Test geschlossen ist.
- e2e 26e5 (3 Checks, neuer Hook `transitionLabelAt`): echter Klick auf den eigenen Zustand, Schleife und Name über dem Node, Undo.
Wiki: *State machines* ergänzt (`3676ad0`). Die Check-Summe **1088** ist gerechnet; CI zu `010b6a7` läuft noch und ist nicht abgewartet.
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 erste Grenze steht in #162.
Befund
ConnectCommandwirft A node cannot connect to itself (src/core/commands/graphCommands.ts:190).Angriff --nochmal--> Angriff, damitOn state enterederneut feuert.Zu bauen (Vorschlag)
State transitionüber eine Self-Transition feuertexitedund danachentereddesselben Zustands.Offen (mit Vorschlag)
vorschlag passt
Umgesetzt in
010b6a7Dein Vorschlag ist so gebaut, wie er oben steht.
On state exitedund danachOn state entered, jedes Mal. Gilt für lokale und globale Maschinen.Set statein den aktuellen Zustand bleibt still wie bisher; neu betreten wird nur überState transition.Tests
tests/core/self-transition.test.ts(Verbinden/Speichern/Undo, Sperren, Ereignisreihenfolge lokal und global, Geometrie der Schleife).transitionLabelAt): echter Klick auf den eigenen Zustand, Schleife und Name über dem Node, Undo.Wiki: State machines ergänzt (
3676ad0). Die Check-Summe 1088 ist gerechnet; CI zu010b6a7läuft noch und ist nicht abgewartet.CI-Nachtrag zu
010b6a7Beide Jobs grün, Logs selbst gelesen:
CHECK EXIT 0ALL PASSED – 1088 checks, Smokes 24 / 19 / 21Die Check-Summe 1088 ist damit bestätigt.