Rücksprungkanten laufen nicht mehr durch Elemente und bleiben im eigenen Pool. Mit Lanes fahren sie in den Gängen
zwischen den Spalten und in einem Kanal am Poolboden. Ohne Lanes führen sie seitlich an allen Elementen vorbei. Closes#12
Wie geprüft
python -m pytest -q: 102 passed, 2 xfailed. Das xfail für #12 ist entfernt, die übrigen zwei sind #13
python scripts/pruefe_umlaute.py: GRÜN: 0 Fund/e in 12 Datei(en).
python scripts/pruefe_prozesse.py --erzeugen: Es ändern sich beispiel_lanes und beispiel_prozess, das
Referenzmodell nicht (es hat keine Rücksprünge). Prozessbibliothek: noch keine Modelle
Belastungstest (einmalig, nicht im Repo):
jede mögliche zusätzliche Rückwärtsverbindung in zwei Testmodellen, je ohne Lanes, mit einer und mit zwei Lanes
(126 Fälle), alle Kanten gegen alle Elemente
Rücksprungkanten durch Elemente: auf main in 31 Fällen, jetzt in keinem
Vorwärtskanten durch Elemente: 21 Fälle, auf main wie jetzt identisch, also vorbestehend und nicht Teil
dieses Issues (Issue-Entwurf, siehe Offen)
Vorschau (geänderte Beispiele nach AGENTS.md):
beispiel_lanes: Die Kante S4→S2 geht unter S4 in den Gang (x 825), im Pool hinunter bis y 735, zurück zum Gang
links von S2 (x 255) und von unten in S2. Vorher lief sie senkrecht durch S5 und unter dem Pool entlang
(y 770, Pool endet bei 720)
Der Pool ist um das Kanalband höher (720 → 750), der externe Pool und die Enden der Nachrichtenflüsse liegen
30 tiefer. Die Elemente sind unverändert
beispiel_prozess: Der Kanal des Rücksprungs liegt 30 statt 60 neben dem äußersten Element (x 50 statt 20)
PICTURE-Import: PICTURE 2026.4.1, beispiel_lanes.bpmn: Import ohne Fehler, die Rücksprungkante bleibt im Pool
und schneidet keine Elemente
Änderungen an Syntax und Ablageformat
keine. Die Ausgabe ändert sich bei Modellen mit Rücksprung. Modelle der Prozessbibliothek: keine vorhanden.
Übergabenotiz
Aufgabe:#12: Rücksprungkanten führen um alle Elemente herum und bleiben im eigenen Pool. Stand: fertig Geändert:
.agents/skills/sn-bpmn/md_to_bpmn.py:
neu ruecksprung_points() für das Lanes-Layout
Kanalband am Boden der letzten Lane, nach der Platzierung angehängt
ohne Lanes: Kanal seitlich an allen Elementen zwischen Quelle und Ziel. Die Hilfen zeile() und zeile_frei() wählen „unten hinaus / oben hinein“, wenn ein Nachbar in der Zeile im Weg steht
neue Konstanten RUECKSPRUNG_ABSTAND, RUECKSPRUNG_STUB, RUECKSPRUNG_SEITE, GROESSTE_BREITE
.agents/skills/sn-bpmn/test_md_to_bpmn.py: fünf neue Tests
Rücksprung bleibt im Pool
eigene Kanalhöhe je Rücksprung
versetzte parallele Zweige ohne Lanes
Nachbar in der Zeile an der Quelle bzw. am Ziel (2 Fälle)
tests/test_referenzmodelle.py: xfail-Eintrag für #12 entfernt
beispiele/beispiel_lanes.bpmn, beispiele/beispiel_prozess.bpmn: neu erzeugt
Das Issue nannte nur das Lanes-Layout (Test an beispiel_lanes). Das Layout ohne Lanes ist mitbehandelt, weil
das Ziel „um alle Elemente herum“ lautet und dort dieselbe Kante (Rücksprung) betroffen war
Das Kanalband wird erst nach der Platzierung angehängt. Die Elemente bleiben deshalb unverändert, nur Pool,
externer Pool und Nachrichtenfluss-Enden verschieben sich
Teilen sich zwei Rücksprünge dieselbe Quell- oder Ziel-Spalte, liegen ihre senkrechten Stücke im selben Gang
übereinander. Die waagrechten Kanalhöhen unterscheiden sich. Das kam in keinem Test vor und ist bewusst nicht
weiter behandelt
Offen / nächste Schritte:
Issue-Entwurf „Vorwärtskanten laufen durch Elemente, wenn eine Querverbindung das Layout verschiebt“ in entwuerfe/20260925-131338-issue-Projektwissen.md (vorbestehend, im Belastungstest gefunden)
Wissensbasis:fallstricke.md: neuer Eintrag „Rücksprungkanten brauchen je Layout eine eigene Führung“. Anleitung.md: Satz zu Rücksprüngen präzisiert. STATUS.md: Erledigt Kontext für die nächste Sitzung:md_to_bpmn.py Schleife über msg_flow_records in build_bpmn() (#13), tests/test_referenzmodelle.py (BEKANNTE_KREUZUNGEN)
Checkliste
Nur Änderungen zum Issue
Keine Debug-print, kein auskommentierter Code
Keine personenbezogenen Daten, keine internen Originalunterlagen
## Was
Rücksprungkanten laufen nicht mehr durch Elemente und bleiben im eigenen Pool. Mit Lanes fahren sie in den Gängen
zwischen den Spalten und in einem Kanal am Poolboden. Ohne Lanes führen sie seitlich an allen Elementen vorbei.
Closes #12
## Wie geprüft
- `python -m pytest -q`: `102 passed, 2 xfailed`. Das xfail für #12 ist entfernt, die übrigen zwei sind #13
- `python scripts/pruefe_umlaute.py`: `GRÜN: 0 Fund/e in 12 Datei(en).`
- `python scripts/pruefe_prozesse.py --erzeugen`: Es ändern sich `beispiel_lanes` und `beispiel_prozess`, das
Referenzmodell nicht (es hat keine Rücksprünge). Prozessbibliothek: noch keine Modelle
- Belastungstest (einmalig, nicht im Repo):
- jede mögliche zusätzliche Rückwärtsverbindung in zwei Testmodellen, je ohne Lanes, mit einer und mit zwei Lanes
(126 Fälle), alle Kanten gegen alle Elemente
- Rücksprungkanten durch Elemente: auf `main` in 31 Fällen, jetzt in keinem
- Vorwärtskanten durch Elemente: 21 Fälle, auf `main` wie jetzt identisch, also vorbestehend und nicht Teil
dieses Issues (Issue-Entwurf, siehe Offen)
- Vorschau (geänderte Beispiele nach `AGENTS.md`):
- `beispiel_lanes`: Die Kante S4→S2 geht unter S4 in den Gang (x 825), im Pool hinunter bis y 735, zurück zum Gang
links von S2 (x 255) und von unten in S2. Vorher lief sie senkrecht durch S5 und unter dem Pool entlang
(y 770, Pool endet bei 720)
- Der Pool ist um das Kanalband höher (720 → 750), der externe Pool und die Enden der Nachrichtenflüsse liegen
30 tiefer. Die Elemente sind unverändert
- `beispiel_prozess`: Der Kanal des Rücksprungs liegt 30 statt 60 neben dem äußersten Element (x 50 statt 20)
- PICTURE-Import: PICTURE 2026.4.1, `beispiel_lanes.bpmn`: Import ohne Fehler, die Rücksprungkante bleibt im Pool
und schneidet keine Elemente
## Änderungen an Syntax und Ablageformat
keine. Die Ausgabe ändert sich bei Modellen mit Rücksprung. Modelle der Prozessbibliothek: keine vorhanden.
## Übergabenotiz
**Aufgabe:** #12: Rücksprungkanten führen um alle Elemente herum und bleiben im eigenen Pool.
**Stand:** fertig
**Geändert:**
- `.agents/skills/sn-bpmn/md_to_bpmn.py`:
- neu `ruecksprung_points()` für das Lanes-Layout
- Kanalband am Boden der letzten Lane, nach der Platzierung angehängt
- ohne Lanes: Kanal seitlich an allen Elementen zwischen Quelle und Ziel. Die Hilfen `zeile()` und
`zeile_frei()` wählen „unten hinaus / oben hinein“, wenn ein Nachbar in der Zeile im Weg steht
- neue Konstanten `RUECKSPRUNG_ABSTAND`, `RUECKSPRUNG_STUB`, `RUECKSPRUNG_SEITE`, `GROESSTE_BREITE`
- `.agents/skills/sn-bpmn/test_md_to_bpmn.py`: fünf neue Tests
- Rücksprung bleibt im Pool
- eigene Kanalhöhe je Rücksprung
- versetzte parallele Zweige ohne Lanes
- Nachbar in der Zeile an der Quelle bzw. am Ziel (2 Fälle)
- `tests/test_referenzmodelle.py`: xfail-Eintrag für #12 entfernt
- `beispiele/beispiel_lanes.bpmn`, `beispiele/beispiel_prozess.bpmn`: neu erzeugt
- `Anleitung.md`, `docs/wissen/fallstricke.md`, `docs/status/STATUS.md`
**Nachweis:** `pytest`: `102 passed, 2 xfailed`. PICTURE-Import: PICTURE 2026.4.1, `beispiel_lanes`, in Ordnung
**Entscheidungen/Annahmen:**
- Das Issue nannte nur das Lanes-Layout (Test an `beispiel_lanes`). Das Layout ohne Lanes ist mitbehandelt, weil
das Ziel „um alle Elemente herum“ lautet und dort dieselbe Kante (Rücksprung) betroffen war
- Das Kanalband wird erst nach der Platzierung angehängt. Die Elemente bleiben deshalb unverändert, nur Pool,
externer Pool und Nachrichtenfluss-Enden verschieben sich
- Teilen sich zwei Rücksprünge dieselbe Quell- oder Ziel-Spalte, liegen ihre senkrechten Stücke im selben Gang
übereinander. Die waagrechten Kanalhöhen unterscheiden sich. Das kam in keinem Test vor und ist bewusst nicht
weiter behandelt
**Offen / nächste Schritte:**
1. Issue-Entwurf „Vorwärtskanten laufen durch Elemente, wenn eine Querverbindung das Layout verschiebt“ in
`entwuerfe/20260925-131338-issue-Projektwissen.md` (vorbestehend, im Belastungstest gefunden)
2. Weiter mit #13 (Nachrichtenfluss)
**Wissensbasis:** `fallstricke.md`: neuer Eintrag „Rücksprungkanten brauchen je Layout eine eigene Führung“.
`Anleitung.md`: Satz zu Rücksprüngen präzisiert. `STATUS.md`: Erledigt
**Kontext für die nächste Sitzung:** `md_to_bpmn.py` Schleife über `msg_flow_records` in `build_bpmn()` (#13),
`tests/test_referenzmodelle.py` (`BEKANNTE_KREUZUNGEN`)
## 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 (`Anleitung.md`)
- [x] Wissensbasis nachgezogen (`fallstricke.md`, `STATUS.md`)
🤖 Generated with [Claude Code](https://claude.com/claude-code)
- Mit Lanes: ruecksprung_points() fährt senkrecht nur in den Gängen
zwischen den Spalten (rechts der Quelle, links des Ziels) und waagrecht
knapp unter Quelle bzw. Ziel und in einem Kanal am Poolboden. Das
Kanalband wird nach der Platzierung an die letzte Lane angehängt: Die
Elemente bleiben, wo sie sind, die Kante bleibt im eigenen Pool, jede
Rücksprungkante hat eine eigene Kanalhöhe.
- Ohne Lanes: Kanal seitlich an allen Elementen zwischen Quelle und Ziel
vorbei (parallele Zweige stehen versetzt). Steht ein Nachbar in der
Zeile im Weg, unten hinaus bzw. oben hinein über die Lücke zwischen den
Zeilen (zeile(), zeile_frei()).
- beispiel_lanes: Kante S4->S2 läuft nicht mehr durch S5, Pool um das
Kanalband höher, externer Pool entsprechend tiefer. beispiel_prozess:
Kanal bei x 50 statt 20. Referenzmodell unverändert.
- xfail für #12 entfernt; fünf neue Tests in test_md_to_bpmn.py.
- Belastungstest (126 Rücksprung-Varianten, mit/ohne Lanes): Kreuzungen
durch Rücksprungkanten vorher in 31 Fällen, jetzt in keinem.
- Tests: python -m pytest -q -> 102 bestanden, 2 xfail (#13).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Daniel
merged commit d42c4fb06e into main2026-09-25 13:24:42 +00:00
Daniel
deleted branch bugfix/12-ruecksprungkanten2026-09-25 13:24:43 +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
Rücksprungkanten laufen nicht mehr durch Elemente und bleiben im eigenen Pool. Mit Lanes fahren sie in den Gängen
zwischen den Spalten und in einem Kanal am Poolboden. Ohne Lanes führen sie seitlich an allen Elementen vorbei.
Closes #12
Wie geprüft
python -m pytest -q:102 passed, 2 xfailed. Das xfail für #12 ist entfernt, die übrigen zwei sind #13python scripts/pruefe_umlaute.py:GRÜN: 0 Fund/e in 12 Datei(en).python scripts/pruefe_prozesse.py --erzeugen: Es ändern sichbeispiel_lanesundbeispiel_prozess, dasReferenzmodell nicht (es hat keine Rücksprünge). Prozessbibliothek: noch keine Modelle
(126 Fälle), alle Kanten gegen alle Elemente
mainin 31 Fällen, jetzt in keinemmainwie jetzt identisch, also vorbestehend und nicht Teildieses Issues (Issue-Entwurf, siehe Offen)
AGENTS.md):beispiel_lanes: Die Kante S4→S2 geht unter S4 in den Gang (x 825), im Pool hinunter bis y 735, zurück zum Ganglinks von S2 (x 255) und von unten in S2. Vorher lief sie senkrecht durch S5 und unter dem Pool entlang
(y 770, Pool endet bei 720)
30 tiefer. Die Elemente sind unverändert
beispiel_prozess: Der Kanal des Rücksprungs liegt 30 statt 60 neben dem äußersten Element (x 50 statt 20)beispiel_lanes.bpmn: Import ohne Fehler, die Rücksprungkante bleibt im Poolund schneidet keine Elemente
Änderungen an Syntax und Ablageformat
keine. Die Ausgabe ändert sich bei Modellen mit Rücksprung. Modelle der Prozessbibliothek: keine vorhanden.
Übergabenotiz
Aufgabe: #12: Rücksprungkanten führen um alle Elemente herum und bleiben im eigenen Pool.
Stand: fertig
Geändert:
.agents/skills/sn-bpmn/md_to_bpmn.py:ruecksprung_points()für das Lanes-Layoutzeile()undzeile_frei()wählen „unten hinaus / oben hinein“, wenn ein Nachbar in der Zeile im Weg stehtRUECKSPRUNG_ABSTAND,RUECKSPRUNG_STUB,RUECKSPRUNG_SEITE,GROESSTE_BREITE.agents/skills/sn-bpmn/test_md_to_bpmn.py: fünf neue Teststests/test_referenzmodelle.py: xfail-Eintrag für #12 entferntbeispiele/beispiel_lanes.bpmn,beispiele/beispiel_prozess.bpmn: neu erzeugtAnleitung.md,docs/wissen/fallstricke.md,docs/status/STATUS.mdNachweis:
pytest:102 passed, 2 xfailed. PICTURE-Import: PICTURE 2026.4.1,beispiel_lanes, in OrdnungEntscheidungen/Annahmen:
beispiel_lanes). Das Layout ohne Lanes ist mitbehandelt, weildas Ziel „um alle Elemente herum“ lautet und dort dieselbe Kante (Rücksprung) betroffen war
externer Pool und Nachrichtenfluss-Enden verschieben sich
übereinander. Die waagrechten Kanalhöhen unterscheiden sich. Das kam in keinem Test vor und ist bewusst nicht
weiter behandelt
Offen / nächste Schritte:
entwuerfe/20260925-131338-issue-Projektwissen.md(vorbestehend, im Belastungstest gefunden)Wissensbasis:
fallstricke.md: neuer Eintrag „Rücksprungkanten brauchen je Layout eine eigene Führung“.Anleitung.md: Satz zu Rücksprüngen präzisiert.STATUS.md: ErledigtKontext für die nächste Sitzung:
md_to_bpmn.pySchleife übermsg_flow_recordsinbuild_bpmn()(#13),tests/test_referenzmodelle.py(BEKANNTE_KREUZUNGEN)Checkliste
print, kein auskommentierter CodeAnleitung.md)fallstricke.md,STATUS.md)🤖 Generated with Claude Code