Rücksprungkanten an allen Elementen vorbeiführen (#12) #20

Merged
Daniel merged 1 commits from bugfix/12-ruecksprungkanten into main 2026-09-25 13:24:42 +00:00
Owner

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

  • Nur Änderungen zum Issue
  • Keine Debug-print, kein auskommentierter Code
  • Keine personenbezogenen Daten, keine internen Originalunterlagen
  • Doku des Skills nachgezogen (Anleitung.md)
  • Wissensbasis nachgezogen (fallstricke.md, STATUS.md)

🤖 Generated with Claude Code

## 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)
Daniel added 1 commit 2026-09-25 13:24:34 +00:00
- 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 main 2026-09-25 13:24:42 +00:00
Daniel deleted branch bugfix/12-ruecksprungkanten 2026-09-25 13:24:43 +00:00
Sign in to join this conversation.
No Reviewers
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: AG_Prozesse/Projektwissen#20