Läuft der Standardweg einer Vorwärtskante durch ein fremdes Element, sucht der Konverter einen rechtwinkligen Umweg
über freie Linien. Saubere Kanten bleiben unverändert. Der Belastungstest aus #12 ist jetzt ein dauerhafter Test. Closes#22
Wie geprüft
python -m pytest -q: 253 passed, 1 skipped. Das „skipped“ ist weiterhin die leere Parameterliste der
bekannten Kreuzungen
Neue Tests vor der Umsetzung: 21 rot (20 Belastungsvarianten, dazu das Beispiel aus dem Issue), jetzt grün
python scripts/pruefe_umlaute.py: GRÜN: 0 Fund/e in 12 Datei(en).
python scripts/pruefe_prozesse.py: GRÜN: 0 Befund/e, 0 Prozess(e), 3 Beispiel(e).Die Beispiel-.bpmn sind
unverändert, byte-gleich; der Umweg greift dort nie
Belastungstest (126 Fälle): Kreuzungen 24 → 0, schräge Anschlüsse bleiben bei 0. 23 Kanten werden umgeleitet,
jede mit 3 oder 4 Zwischenpunkten, also Stub plus ein bzw. zwei Knicke. In keinem Fall fehlt ein freier Weg
Beispiel aus dem Issue, Kante S2 → S5: aus dem Westpunkt des Gateways nach links, 15 neben S3 hinunter und von oben
in S5. Vorher lief sie durch S3
Laufzeit der Testsuite: rund 3 s
PICTURE-Import: nicht nötig. Das Abnahmekriterium verlangt ihn nur, wenn sich .bpmn der Beispiele ändern
Änderungen an Syntax und Ablageformat
keine. Die Ausgabe ändert sich nur bei Kanten, die bisher durch ein Element liefen. Modelle der Prozessbibliothek:
keine vorhanden.
Übergabenotiz
Aufgabe:#22: Auch bei Querverbindungen zwischen Zweigen läuft keine Vorwärtskante durch ein Element. Stand: fertig Geändert:
.agents/skills/sn-bpmn/md_to_bpmn.py:
neu umweg_points() mit _freie_linien() und _kehrt_um(), Konstante UMWEG_ABSTAND = 15
build_bpmn() prüft den Standardweg gegen element_boxen (alle Elemente außer Gruppen und Anmerkungen) und
nimmt nur bei einer Kreuzung den Umweg
tests/test_referenzmodelle.py:
BELASTUNGSMODELLE, _belastungsfaelle()
Test über 126 Varianten
Test für das Beispiel aus dem Issue
.agents/skills/sn-bpmn/test_md_to_bpmn.py: zwei Einzeltests für umweg_points() (Hindernis umgehen, None
ohne freien Weg)
docs/wissen/fallstricke.md, docs/status/STATUS.md
Nachweis:pytest: 253 passed, 1 skipped. PICTURE-Import nicht nötig, weil sich die Beispiele nicht ändern Entscheidungen/Annahmen:
Der Umweg greift nur im Notfall. Damit bleiben alle heute sauberen Kanten byte-gleich, und kein bestehendes Modell
der Prozessbibliothek müsste neu erzeugt werden
Hindernisse werden als Rechteck geprüft, bei Rauten und Kreisen also mit ihrer Umrandung. Das ist etwas
vorsichtiger als nötig
Die zweite Suchstufe (zwei Zwischenknicke) ist bei vielen Elementen teurer. Sie läuft nur, wenn die erste Stufe
keinen Weg findet. Im Belastungstest reichte in 7 Fällen ein Knick, 16 brauchten zwei
Die vier Fälle aus dem Kommentar zu #23 sind enthalten und behoben
Offen / nächste Schritte: keine offenen Konverter-Issues. Vorschlag: einen ersten echten Prozess in die
Prozessbibliothek aufnehmen, als weiteren Prüfstein für die Regeln Wissensbasis:fallstricke.md: neuer Eintrag „Vorwärtskanten kennen die übrigen Elemente nur im Notfall“. STATUS.md: Erledigt Kontext für die nächste Sitzung:md_to_bpmn.pyumweg_points(), tests/test_referenzmodelle.py
(Belastungstest)
Checkliste
Nur Änderungen zum Issue
Keine Debug-print, kein auskommentierter Code
Keine personenbezogenen Daten, keine internen Originalunterlagen
Doku des Skills nachgezogen: nicht betroffen (Syntax unverändert)
## Was
Läuft der Standardweg einer Vorwärtskante durch ein fremdes Element, sucht der Konverter einen rechtwinkligen Umweg
über freie Linien. Saubere Kanten bleiben unverändert. Der Belastungstest aus #12 ist jetzt ein dauerhafter Test.
Closes #22
## Wie geprüft
- `python -m pytest -q`: `253 passed, 1 skipped`. Das „skipped“ ist weiterhin die leere Parameterliste der
bekannten Kreuzungen
- Neue Tests vor der Umsetzung: 21 rot (20 Belastungsvarianten, dazu das Beispiel aus dem Issue), jetzt grün
- `python scripts/pruefe_umlaute.py`: `GRÜN: 0 Fund/e in 12 Datei(en).`
- `python scripts/pruefe_prozesse.py`: `GRÜN: 0 Befund/e, 0 Prozess(e), 3 Beispiel(e).` **Die Beispiel-`.bpmn` sind
unverändert**, byte-gleich; der Umweg greift dort nie
- Belastungstest (126 Fälle): Kreuzungen 24 → 0, schräge Anschlüsse bleiben bei 0. 23 Kanten werden umgeleitet,
jede mit 3 oder 4 Zwischenpunkten, also Stub plus ein bzw. zwei Knicke. In keinem Fall fehlt ein freier Weg
- Beispiel aus dem Issue, Kante S2 → S5: aus dem Westpunkt des Gateways nach links, 15 neben S3 hinunter und von oben
in S5. Vorher lief sie durch S3
- Laufzeit der Testsuite: rund 3 s
- PICTURE-Import: nicht nötig. Das Abnahmekriterium verlangt ihn nur, wenn sich `.bpmn` der Beispiele ändern
## Änderungen an Syntax und Ablageformat
keine. Die Ausgabe ändert sich nur bei Kanten, die bisher durch ein Element liefen. Modelle der Prozessbibliothek:
keine vorhanden.
## Übergabenotiz
**Aufgabe:** #22: Auch bei Querverbindungen zwischen Zweigen läuft keine Vorwärtskante durch ein Element.
**Stand:** fertig
**Geändert:**
- `.agents/skills/sn-bpmn/md_to_bpmn.py`:
- neu `umweg_points()` mit `_freie_linien()` und `_kehrt_um()`, Konstante `UMWEG_ABSTAND = 15`
- `build_bpmn()` prüft den Standardweg gegen `element_boxen` (alle Elemente außer Gruppen und Anmerkungen) und
nimmt nur bei einer Kreuzung den Umweg
- `tests/test_referenzmodelle.py`:
- `BELASTUNGSMODELLE`, `_belastungsfaelle()`
- Test über 126 Varianten
- Test für das Beispiel aus dem Issue
- `.agents/skills/sn-bpmn/test_md_to_bpmn.py`: zwei Einzeltests für `umweg_points()` (Hindernis umgehen, `None`
ohne freien Weg)
- `docs/wissen/fallstricke.md`, `docs/status/STATUS.md`
**Nachweis:** `pytest`: `253 passed, 1 skipped`. PICTURE-Import nicht nötig, weil sich die Beispiele nicht ändern
**Entscheidungen/Annahmen:**
- Der Umweg greift nur im Notfall. Damit bleiben alle heute sauberen Kanten byte-gleich, und kein bestehendes Modell
der Prozessbibliothek müsste neu erzeugt werden
- Hindernisse werden als Rechteck geprüft, bei Rauten und Kreisen also mit ihrer Umrandung. Das ist etwas
vorsichtiger als nötig
- Die zweite Suchstufe (zwei Zwischenknicke) ist bei vielen Elementen teurer. Sie läuft nur, wenn die erste Stufe
keinen Weg findet. Im Belastungstest reichte in 7 Fällen ein Knick, 16 brauchten zwei
- Die vier Fälle aus dem Kommentar zu #23 sind enthalten und behoben
**Offen / nächste Schritte:** keine offenen Konverter-Issues. Vorschlag: einen ersten echten Prozess in die
Prozessbibliothek aufnehmen, als weiteren Prüfstein für die Regeln
**Wissensbasis:** `fallstricke.md`: neuer Eintrag „Vorwärtskanten kennen die übrigen Elemente nur im Notfall“.
`STATUS.md`: Erledigt
**Kontext für die nächste Sitzung:** `md_to_bpmn.py` `umweg_points()`, `tests/test_referenzmodelle.py`
(Belastungstest)
## Checkliste
- [x] Nur Änderungen zum Issue
- [x] Keine Debug-`print`, kein auskommentierter Code
- [x] Keine personenbezogenen Daten, keine internen Originalunterlagen
- [x] Doku des Skills nachgezogen: nicht betroffen (Syntax unverändert)
- [x] Wissensbasis nachgezogen (`fallstricke.md`, `STATUS.md`)
🤖 Generated with [Claude Code](https://claude.com/claude-code)
- build_bpmn() prüft jeden Standardweg einer Vorwärtskante gegen alle
fremden Elemente. Nur bei einer Kreuzung sucht umweg_points() einen
rechtwinkligen Weg von Stub zu Stub über freie Linien (Lückenmitten
und 15 neben jedem Element), erst mit einem, dann mit zwei
Zwischenknicken; der kürzeste gewinnt. Saubere Kanten bleiben
byte-gleich, die Beispiel-.bpmn ändern sich nicht.
- Belastungstest aus #12 als dauerhafter Test (126 Varianten: keine
Kreuzung, rechtwinklige Anschlüsse), Test für das Beispiel aus dem
Issue und zwei Einzeltests für umweg_points().
- Im Belastungstest werden 23 Kanten umgeleitet (3 bis 4
Zwischenpunkte); Kreuzungen vorher 24, jetzt 0.
- Tests: python -m pytest -q -> 253 bestanden, 1 übersprungen.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Daniel
merged commit 73a7f41492 into main2026-09-25 17:40:41 +00:00
Daniel
deleted branch bugfix/22-vorwaertskanten-querverbindung2026-09-25 17:40:42 +00:00
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.
Was
Läuft der Standardweg einer Vorwärtskante durch ein fremdes Element, sucht der Konverter einen rechtwinkligen Umweg
über freie Linien. Saubere Kanten bleiben unverändert. Der Belastungstest aus #12 ist jetzt ein dauerhafter Test.
Closes #22
Wie geprüft
python -m pytest -q:253 passed, 1 skipped. Das „skipped“ ist weiterhin die leere Parameterliste derbekannten Kreuzungen
python scripts/pruefe_umlaute.py:GRÜN: 0 Fund/e in 12 Datei(en).python scripts/pruefe_prozesse.py:GRÜN: 0 Befund/e, 0 Prozess(e), 3 Beispiel(e).Die Beispiel-.bpmnsindunverändert, byte-gleich; der Umweg greift dort nie
jede mit 3 oder 4 Zwischenpunkten, also Stub plus ein bzw. zwei Knicke. In keinem Fall fehlt ein freier Weg
in S5. Vorher lief sie durch S3
.bpmnder Beispiele ändernÄnderungen an Syntax und Ablageformat
keine. Die Ausgabe ändert sich nur bei Kanten, die bisher durch ein Element liefen. Modelle der Prozessbibliothek:
keine vorhanden.
Übergabenotiz
Aufgabe: #22: Auch bei Querverbindungen zwischen Zweigen läuft keine Vorwärtskante durch ein Element.
Stand: fertig
Geändert:
.agents/skills/sn-bpmn/md_to_bpmn.py:umweg_points()mit_freie_linien()und_kehrt_um(), KonstanteUMWEG_ABSTAND = 15build_bpmn()prüft den Standardweg gegenelement_boxen(alle Elemente außer Gruppen und Anmerkungen) undnimmt nur bei einer Kreuzung den Umweg
tests/test_referenzmodelle.py:BELASTUNGSMODELLE,_belastungsfaelle().agents/skills/sn-bpmn/test_md_to_bpmn.py: zwei Einzeltests fürumweg_points()(Hindernis umgehen,Noneohne freien Weg)
docs/wissen/fallstricke.md,docs/status/STATUS.mdNachweis:
pytest:253 passed, 1 skipped. PICTURE-Import nicht nötig, weil sich die Beispiele nicht ändernEntscheidungen/Annahmen:
der Prozessbibliothek müsste neu erzeugt werden
vorsichtiger als nötig
keinen Weg findet. Im Belastungstest reichte in 7 Fällen ein Knick, 16 brauchten zwei
Offen / nächste Schritte: keine offenen Konverter-Issues. Vorschlag: einen ersten echten Prozess in die
Prozessbibliothek aufnehmen, als weiteren Prüfstein für die Regeln
Wissensbasis:
fallstricke.md: neuer Eintrag „Vorwärtskanten kennen die übrigen Elemente nur im Notfall“.STATUS.md: ErledigtKontext für die nächste Sitzung:
md_to_bpmn.pyumweg_points(),tests/test_referenzmodelle.py(Belastungstest)
Checkliste
print, kein auskommentierter Codefallstricke.md,STATUS.md)🤖 Generated with Claude Code