42 Commits
Author SHA1 Message Date
Daniel 892e92ce55 Merge pull request 'Erkenntnisse aus dem PICTURE-Import festhalten' (#34) from doku/picture-import-erkenntnisse into main
Reviewed-on: #34
2026-09-28 20:07:09 +00:00
DanielandClaude Opus 5.5 6a163cc4fd Erkenntnisse aus dem PICTURE-Import festhalten
Nach dem Import in PICTURE: Die Lage der ungebundenen Datenobjekte ist
ein Designfehler der Ausgangsmodelle, kein Konverterfehler; gelöst wird
das über die Arbeitsschritt-Datenbank. Engpass sind die Ausgangsdaten,
nicht der Konverter. Bessere Eingaben und eine Interviewmethode (#28)
stehen deshalb in STATUS.md oben. Import unter „Erledigt“ eingetragen.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-28 22:03:55 +02:00
Daniel 73901b4788 Merge pull request 'Status „Import“ für Modelle aus PICTURE-Exporten (#31)' (#33) from feature/31-status-import into main
Reviewed-on: #33
2026-09-28 19:52:06 +00:00
Daniel c605379830 Merge branch 'main' into feature/31-status-import 2026-09-28 19:51:56 +00:00
Daniel fd3e5b5735 Merge pull request 'Befunde aus dem Stresstest mit dem PICTURE-Bestand festhalten' (#32) from doku/picture-import-befunde into main
Reviewed-on: #32
2026-09-28 19:51:27 +00:00
DanielandClaude Opus 5.5 650904eff3 Status „Import“ für Modelle aus PICTURE-Exporten (#31)
pruefe_prozesse.py akzeptiert im Steckbrief neben Entwurf und abgenommen
den Status Import: maschinell aus einem PICTURE-Export übernommen,
fachlich nicht geprüft. Leitfaden 08 und die Steckbrief-Vorlage nennen
die drei Werte. Neuer Test für Import; der Test für unbekannte Werte
prüft zusätzlich, dass Import unter den erlaubten Werten genannt wird.

Änderung am Ablageformat der Prozessbibliothek.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-28 21:42:48 +02:00
DanielandClaude Opus 5.5 74825291cf Befunde aus dem Stresstest mit dem PICTURE-Bestand festhalten
Neues Wissensdokument docs/wissen/picture_import.md: Aufbau eines
PICTURE-BPMN-Exports, Abbildung auf die Markdown-Syntax von sn-bpmn und
die Befunde aus der Rückwandlung von 23 Diagrammen des AG-Bestands
(Konverter, Syntax, Modelle). Kurzeinträge in fallstricke.md, Verweis im
Wegweiser docs/README.md.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-28 21:35:37 +02:00
Daniel 7eab9fb055 Merge pull request 'Bootstrap lokal einbetten und Stil der AG anlegen (#27)' (#30) from feature/27-bootstrap-stil into main
Reviewed-on: #30
2026-09-25 18:17:52 +00:00
Daniel 31cc52d1e9 Merge branch 'main' into feature/27-bootstrap-stil 2026-09-25 18:17:40 +00:00
Daniel 7f9b2831c8 Merge pull request 'Wissen zu VLN_SN festhalten: HTML-Vorbild und Workflow-Kandidat' (#29) from doku/vln-sn-quellen into main
Reviewed-on: #29
2026-09-25 18:16:26 +00:00
DanielandClaude Opus 5.5 b341a658bc Bootstrap lokal einbetten und Stil der AG anlegen (#27)
- werkzeuge/bootstrap/: Bootstrap 5.3.8 (CSS, JS-Bundle) und Bootstrap
  Icons 1.13.1 (CSS, woff2/woff) byte-gleich aus den npm-Paketen,
  Integrität geprüft; README mit Version, Quelle, Integrität, Lizenz
  und Aktualisierung; Lizenzen (MIT) daneben; .gitattributes: binary,
  die README bleibt Text mit Diff.
- werkzeuge/stil/ag_prozesse.css: eigene kleine Stilschicht (ag-*):
  Seite in voller Höhe, dunkle Navigationsleiste, hellgrauer
  Hintergrund, Karten mit farbigem Rand, Tabellenziffern, Druck.
  Vorbild VLN_SN/EA-Bilanz, nichts übernommen.
- Vorschau: Kopfzeile als dunkle Navigationsleiste mit Icon-Knöpfen;
  JavaScript, IDs und Zeichenfläche (Wasserzeichen) unverändert.
- scripts/vorschau.py bettet Bootstrap, Icons und Stil ein und setzt die
  Icon-Schrift als data:-URI ein (_schriften_einbetten); ein nicht
  einbettbarer Schriftverweis bricht laut ab.
- Tests: drei neue in test_vorschau.py; der Aufbau von
  test_bibliothek_mit_script_ende_wird_abgelehnt kopiert jetzt ganz
  werkzeuge/ (Erwartung unverändert).
- AGENTS.md: eingebettete Fremdbibliotheken sind bpmn-js und Bootstrap.
- Tests: python -m pytest -q -> 256 bestanden, 1 übersprungen.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-25 20:11:29 +02:00
DanielandClaude Opus 5.5 99c7e70338 Wissen zu VLN_SN festhalten: HTML-Vorbild und Workflow-Kandidat
- docs/wissen/vln_sn.md (neu): Bestand der Organisation VLN_SN (Stand
  25.09.2026), Nutzungsbedingungen (nur lesen, nichts übernehmen,
  Workflow nur nach Rücksprache, MCP-Server nicht nutzen), Beschreibung
  des HTML-Stils von EA-Bilanz und der Workflow-Aufgabentypen als
  Kandidat für das Fernziel.
- docs/README.md: Eintrag in der Übersicht.
- STATUS.md: Baustelle 6 – Lesezugriff und Workflow-Nutzung absprechen.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-25 19:53:54 +02:00
Daniel 73a7f41492 Merge pull request 'Vorwärtskanten weichen Elementen über freie Linien aus (#22)' (#26) from bugfix/22-vorwaertskanten-querverbindung into main
Reviewed-on: #26
2026-09-25 17:40:41 +00:00
DanielandClaude Opus 5.5 f3b291c6fc Vorwärtskanten weichen Elementen über freie Linien aus (#22)
- 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>
2026-09-25 19:36:52 +02:00
Daniel 12152eb3b0 Merge pull request 'Kanten an Aufgaben rechtwinklig ansetzen (#23)' (#25) from bugfix/23-rechtwinklige-anschluesse into main
Reviewed-on: #25
2026-09-25 16:42:52 +00:00
DanielandClaude Opus 5.5 b53828374e Kanten an Aufgaben rechtwinklig ansetzen (#23)
- orthogonal_points(): Ist nur ein Ende eine Raute, bekommt auch das
  Aufgaben-Ende einen geraden Stub senkrecht zu seiner Seite
  (RECHTECK_STUB = 20); danach wie zwischen zwei Rauten von Stub zu
  Stub. Die beiden Sonderzweige für "nur Quelle/nur Ziel ist Gateway"
  entfallen.
- Beispiele neu erzeugt: 17 Kantenenden (2 + 2 + 13), die parallel zur
  Aufgabenkante ansetzten, sind korrigiert.
- Strukturtest test_kanten_setzen_an_aufgaben_rechtwinklig_an über alle
  Beispiele und Einzeltest für vier Achsen-Kombinationen.
- Belastungstest (126 Fälle): schräge Anschlüsse 378 -> 0; Kreuzungen
  22 -> 24, alle in Fällen mit Querverbindung zwischen Zweigen (#22).
- Tests: python -m pytest -q -> 124 bestanden, 1 übersprungen.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-25 18:39:22 +02:00
Daniel c9b794a123 Merge pull request 'Beschriftungen und Anmerkungen ohne Überlappung setzen (#14)' (#24) from bugfix/14-beschriftungen into main
Reviewed-on: #24
2026-09-25 14:22:13 +00:00
DanielandClaude Opus 5.5 993b6de50c Beschriftungen und Anmerkungen ohne Überlappung setzen (#14)
- Gateway-Beschriftungen bekommen eine feste Position (BPMNLabel), weil
  PICTURE sie aus der Datei übernimmt: 45° wie im PICTURE-Editor, sonst
  45° rechts vom Ost-Stub, 315°, 135°, 225° – die erste Stelle ohne
  Kante, Kantenbeschriftung oder Element. Gesetzt nach allen Kanten.
- Kantenbeschriftungen waagrecht aus einem Gateway stehen unter der Linie
  (darüber steht die Gateway-Beschriftung).
- Anmerkungen rechts neben dem Pool untereinander, Höhe passend zum Text
  (text_zeilen(), anmerkung_groesse()); Pool ohne Anmerkungen bemessen.
- Beispiele neu erzeugt. Alle 17 Gateway-Beschriftungen auf 45° bzw. 45°
  rechts vom Stub, keine im Lane-Kopf oder in einer Nachbar-Lane.
- Strukturtests für alle Beispiele (Beschriftung ungeschnitten, in der
  eigenen Lane; Anmerkungen ohne Überlappung, neben dem Pool, groß genug)
  und drei Einzeltests.
- Tests: python -m pytest -q -> 117 bestanden, 1 übersprungen (leere
  Parameterliste der bekannten Kreuzungen).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-25 16:10:19 +02:00
Daniel d40d49b002 Merge pull request 'Nachrichtenflüsse senkrecht und an Elementen vorbei führen (#13)' (#21) from bugfix/13-nachrichtenfluss into main
Reviewed-on: #21
2026-09-25 13:37:56 +00:00
DanielandClaude Opus 5.5 558099771b Nachrichtenflüsse senkrecht und an Elementen vorbei führen (#13)
- Nachrichtenflüsse enden senkrecht unter ihrem Startpunkt an der
  Oberkante des externen Pools statt an einem verteilten Punkt (keine
  schrägen Linien mehr); die Anschlussverteilung am externen Pool entfällt.
- Steht unter dem Schritt ein Element: kurz nach unten (NACHRICHT_STUB),
  dann in einen freien Gang – mit Lanes neben der Spalte, versetzt zu den
  Rücksprungkanten (NACHRICHT_VERSATZ); ohne Lanes rechts neben allen
  Elementen, der Pool wird dafür breiter.
- beispiel_lanes und Referenzmodell neu erzeugt: die beiden bekannten
  Kreuzungen (S5, S24) sind behoben, BEKANNTE_KREUZUNGEN ist leer.
- Vier neue Tests (rechtwinklig, keine Kreuzung; je mit und ohne Lanes).
- Belastungstest (342 Varianten): Kreuzungen durch Nachrichtenflüsse
  vorher 182, jetzt 0; schräge Nachrichtenflüsse vorher 600, jetzt 0.
- Tests: python -m pytest -q -> 106 bestanden, 1 übersprungen (leere
  Parameterliste von test_bekannte_kreuzung_ist_behoben).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-25 15:29:53 +02:00
Daniel d42c4fb06e Merge pull request 'Rücksprungkanten an allen Elementen vorbeiführen (#12)' (#20) from bugfix/12-ruecksprungkanten into main
Reviewed-on: #20
2026-09-25 13:24:41 +00:00
DanielandClaude Opus 5.5 96225b5e02 Rücksprungkanten an allen Elementen vorbeiführen (#12)
- 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>
2026-09-25 13:13:37 +02:00
Daniel b403036203 Merge pull request 'Strukturtests auf alle Kanten und alle Elemente ausweiten (#16)' (#19) from feature/16-strukturtests-alle-kanten into main
Reviewed-on: #19
2026-09-25 11:03:26 +00:00
DanielandClaude Opus 5.5 97413265f2 Strukturtests auf alle Kanten und alle Elemente ausweiten (#16)
- test_referenzmodelle.py: kreuzungen() prüft alle Sequenz- und
  Nachrichtenflüsse gegen Aufgaben, Ereignisse (Kreis), Gateways (Raute)
  und Datenelemente und liefert alle Funde. Neuer Test je Modell unter
  beispiele/ (auch Syntaxbeispiele): keine unbekannte Kreuzung.
- Bekannte Fälle je Kreuzung in BEKANNTE_KREUZUNGEN, jeder mit eigenem
  xfail(strict=True)-Test: #12 (Rücksprung durch S5 in beispiel_lanes),
  #13 (Nachrichtenfluss durch S5 in beispiel_lanes und durch S24 im
  Referenzmodell).
- test_keine_kante_fuehrt_durchs_innere_eines_gateways entfällt: Die neue
  Prüfung deckt Gateways mit derselben Rautengeometrie ab und meldet mehr.
  Gegenprobe am Stand vor #8: alle sieben Kreuzungen auf einmal gefunden.
- Selbsttest der Prüfung und test_ausweichabstand_liegt_in_beiden_layouts
  _im_freien_gang (bindet AUSWEICHABSTAND an DEFAULT_SIZE und Abstände).
- AGENTS.md: xfail-Ausnahme gilt für alle Modelle unter beispiele/, je
  Fehler einzeln. Anleitung, Fallstricke, STATUS nachgezogen.
- Tests: python -m pytest -q -> 97 bestanden, 3 xfail (#12, #13).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-25 13:01:23 +02:00
Daniel 45baa3d4a2 Merge pull request 'Feature/15 xor marker' (#18) from feature/15-xor-marker into main
Reviewed-on: #18
2026-09-25 10:43:34 +00:00
DanielandClaude Opus 5.5 4025f314d1 Fallstrick: Vorschau und PICTURE unterscheiden sich beim XOR-X (#15)
PICTURE 2026.4.1 zeichnet das X auch ohne isMarkerVisible, die Vorschau
(bpmn-js) nur mit. Hinweis, erst in PICTURE gegenzuprüfen, bevor der
Konverter wegen der Vorschau geändert wird.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-25 12:41:59 +02:00
DanielandClaude Opus 5.5 25231d94e5 XOR-Gateways mit sichtbarem X ausgeben (#15)
- build_bpmn(): Die BPMNShape jedes exklusiven Gateways bekommt
  isMarkerVisible="true". BPMN lässt das X optional; ohne das Attribut
  zeichnet bpmn-js eine leere Raute. OR-, AND- und ereignisbasierte
  Gateways haben ihr Symbol immer und bleiben unverändert.
- Alle Beispiele neu erzeugt: je XOR-Gateway nur das Attribut ergänzt
  (beispiel_lanes 1, beispiel_prozess 2, Referenzmodell 14), sonst
  byte-gleich.
- Neuer Test test_nur_xor_gateways_zeigen_ihr_x.
- Tests: python -m pytest -q -> 93 bestanden.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-25 12:35:15 +02:00
Daniel 2de2e9ffda Merge pull request 'Kanten zwischen Gateways umgehen die Ziel-Raute (#8)' (#17) from bugfix/8-kante-durch-gateway into main
Reviewed-on: #17
2026-09-25 10:30:18 +00:00
DanielandClaude Opus 5.5 30b47a0fd1 Kanten zwischen Gateways umgehen die Ziel-Raute (#8)
- orthogonal_points(): Liegt bei Gateway -> Gateway der Stub des Starts
  schon jenseits des Ziel-Anschlusspunkts (z. B. Südpunkt unten, Ziel
  höher mit Nordpunkt), führt die Kante seitlich an der Ziel-Raute vorbei.
  Gleiches für den waagrechten Spiegelfall (Ost -> West).
- _ausweichachse(): Die Ausweichachse liegt im freien Gang direkt vor der
  Ziel-Spalte (AUSWEICHABSTAND 85), nicht in der Mitte zwischen Quelle und
  Ziel – dort stand im Referenzmodell die Aufgabe S43.
- Referenzmodell neu erzeugt: fünf Kanten korrigiert (vorher liefen alle
  fünf durch ein Gateway, gemeldet war nur S12->S13), dabei verschwindet
  auch die Kreuzung Flow_13/S40. Syntaxbeispiele unverändert.
- xfail für referenz_gewannenfestlegung entfernt; drei neue Tests in
  test_md_to_bpmn.py.
- Fallstricke: Ausweichachse; Strukturtests melden nur die erste Kreuzung.
- Tests: python -m pytest -q -> 92 bestanden.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-25 11:09:43 +02:00
Daniel 6050ce3296 Merge pull request 'Prozessbibliothek als eigenes Repository auslagern (#9)' (#11) from feature/9-prozessbibliothek into main
Reviewed-on: #11
2026-09-25 08:51:12 +00:00
DanielandClaude Opus 5.5 31131cc5c3 Prozessbibliothek als eigenes Repository auslagern (#9)
- ADR 0004 ersetzt ADR 0003: Die Prozessmodelle liegen im Repository
  AG_Prozesse/Prozessbibliothek, geklont nach Prozessbibliothek/ (neuer
  Eintrag in workspace.toml, .gitignore). prozesse/ ist entfernt; das
  Ablageformat (Ordner je Prozess, drei Dateien, Status) bleibt.
- pruefe_prozesse.py prüft den Klon (Ort über setup_workspace.repos_root),
  lässt Punkt-Ordner wie .git aus und erlaubt in der Wurzel nur die
  Repo-Dateien. Fehlt der Klon, gibt es einen Hinweis statt eines Befunds;
  pytest warnt dann.
- einlesen.py sucht den Bestand in der Bibliothek und nennt Treffer als
  Prozessbibliothek/<name>/, auch wenn der Klon woanders liegt.
- Regeln aus prozesse/README.md nach docs/leitfaden/08_prozessbibliothek.md,
  inklusive Ablauf bei Konverteränderungen (zwei Pull Requests).
- Verweise in AGENTS.md, README, Skills, Leitfäden, Vorlagen, Fallstricken
  und STATUS nachgezogen.
- Tests: python -m pytest -q -> 88 bestanden, 1 xfail (#8), 1 Warnung
  (Bibliothek noch nicht geklont).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-25 09:40:52 +02:00
Daniel 23a39fd929 Merge pull request 'Referenzmodell Gewannenfestlegung für Konvertertests (#7)' (#10) from feature/7-referenzmodell-gewannenfestlegung into main
Reviewed-on: #10
2026-09-25 05:06:34 +00:00
DanielandClaude Opus 5.5 e62bc10b7b Referenzmodell Gewannenfestlegung für Konvertertests (#7)
- beispiele/referenz_gewannenfestlegung.md/.bpmn: aus dem ersten echten
  Einlese-Durchgang (input/Gewannenvermessung.md), als „Test“ markiert,
  fachlich nicht abgenommen. 4 Lanes, externer Pool, 14 Gateways,
  verschachtelte Varianten; Byte-Vergleich über pruefe_prozesse.py.
- tests/test_referenzmodelle.py: je Referenzmodell keine Lane „Nicht
  zugeordnet“, höchstens vier Kanten je Gateway, keine Kante durch eine
  Raute (Geometrie aus test_md_to_bpmn.py übernommen).
- Gefunden: Kante S12→S13 läuft durch die Raute von S13 – als
  xfail(strict=True) mit Verweis auf #8. AGENTS.md regelt, dass xfail nur
  für so erfasste Konverterfehler an Referenzmodellen zulässig ist.
- Anleitung, Fallstricke (zwei Einträge), STATUS.
- Tests: python -m pytest -q -> 82 bestanden, 1 xfail (#8).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-23 15:18:07 +02:00
Daniel b64c38f71b Merge pull request 'Eingangsordner input/ und Skill sn-einlesen (#5)' (#6) from feature/5-einlesen into main
Reviewed-on: #6
2026-09-23 12:45:20 +00:00
DanielandClaude Opus 5.5 27589749ff Eingangsordner input/ und Skill sn-einlesen (#5)
- input/ ist lokal und nicht versioniert (.gitignore); scripts/einlesen.py
  legt ihn bei Bedarf an.
- scripts/einlesen.py ordnet jede Datei ein: abgelehnt (kein .md, nicht
  UTF-8, leer, Unterordner), neu, geändert, eingelesen. Für neue und
  geänderte Dateien: Prozessname, Ordnernamen-Vorschlag, ob schon eine
  Arbeitsschritt-.md, und ähnliche Prozesse aus prozesse/ und entwuerfe/.
  „vermerk“ schreibt nach Erfolg eine erste Zeile
  <!-- eingelesen: <Zeitstempel> | neu|aktualisiert | <Ziel> | inhalt: <sha> -->;
  die Prüfsumme erkennt spätere Änderungen. Zeilenenden bleiben erhalten.
- Skill sn-einlesen: Übersicht, Bestandsvergleich, Entscheidung des
  Nutzers, neue Prozesse durch sn-bpmn, Vermerk nur bei Erfolg.
- docs/leitfaden/07_prozesse_einlesen.md: Ablauf für neue Nutzer.
- AGENTS.md, README, Leitfaden 03, Skill sn-bpmn, Fallstricke, STATUS.
- Tests: python -m pytest -q -> 79 bestanden (18 neu in
  tests/test_einlesen.py).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-23 14:09:48 +02:00
Daniel 47b59e2d83 Merge pull request 'Regeln für PR- und Issue-Texte an AG_QGIS angleichen (#3)' (#4) from bugfix/3-regeln-pr-issue-angleichen into main
Reviewed-on: #4
2026-09-23 11:55:44 +00:00
DanielandClaude Opus 5.5 fd58d75502 Regeln für PR- und Issue-Texte an AG_QGIS angleichen (#3)
Beim Übernehmen aus AG_QGIS/Projektwissen (main @ a0bb40a) waren Regeln
verloren gegangen oder eingeengt worden:

- PR-Vorlage: Abschnitt „Änderungen an Syntax und Ablageformat“ (dort
  „Änderungen an Verträgen“), Checklistenpunkt „keine Debug-print“.
- Issue-Vorlage: Frage nach Syntax/Ablageformat, Testpflicht nicht nur
  für den Konverter.
- AGENTS.md: Testpflicht wieder für jede neue Funktionalität; Syntax und
  Ablageformat als Verträge; kein Arbeitsbranch ohne Issue; PR-Text
  vollständig mit Checkliste. Skill sn-aufgabe-bearbeiten und Checkliste
  in Leitfaden 03 entsprechend.
- ADR 0001 und STATUS: Quell-Commit war a0bb40a, nicht decd2a0.

gitea.py prüft vor jeder Abfrage, ob die Repos ohne Anmeldung lesbar
sind, und bricht sonst mit klarer Meldung ab – bisher meldete die
Sammelsuche bei einem privaten Repo „Keine passenden Tickets“. Die
Ausgabe läuft jetzt über UTF-8 (cp1252-Konsolen stürzten bei „→“ ab).

Tests: python -m pytest -q -> 61 bestanden (6 neu in tests/test_gitea.py).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-23 13:50:24 +02:00
Daniel 87cb9b76ac Merge pull request 'BPMN-Vorschau im Browser, offline, auf Basis von bpmn-js' (#2) from feature/bpmn-vorschau into main
Reviewed-on: #2
2026-09-23 11:34:06 +00:00
DanielandClaude Opus 5.5 19947a845f BPMN-Vorschau im Browser, offline, auf Basis von bpmn-js
- werkzeuge/vorschau/vorschau.html: Anzeige per Drag & Drop oder
  Dateiauswahl, Zoom, Einpassen, Fehlermeldungen; funktioniert ohne
  Python direkt aus dem Dateisystem.
- scripts/vorschau.py: erzeugt aus .bpmn oder Arbeitsschritt-.md eine
  in sich geschlossene Seite und öffnet sie; --stdin als Filter, etwa
  für einen Gitea-Renderer. Diagramm wird mit maskiertem '<' eingebettet,
  die Bibliothek unverändert und nur auf <script/</script geprüft.
- bpmn-js 18.29.1 (navigated viewer + CSS + LICENSE) lokal eingebettet,
  npm-Integrität geprüft; lädt nichts aus dem Netz. Wasserzeichen bleibt
  laut Lizenzauflage sichtbar.
- tests/test_vorschau.py: 11 Tests; Skill sn-bpmn, Anleitung, AGENTS.md,
  README, Leitfäden, Fallstricke und STATUS ergänzt.
- Tests: python -m pytest -q -> 55 bestanden. Darstellung mit Edge
  headless geprüft (beide Beispiele, leere Seite, kaputte Datei).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-23 13:32:14 +02:00
Daniel f582effe16 Merge pull request 'Prozessmodelle versioniert unter prozesse/<name>/ ablegen' (#1) from feature/prozessablage into main
Reviewed-on: #1
2026-09-23 11:22:38 +00:00
DanielandClaude Opus 5.5 55c024dbc9 Prozessmodelle versioniert unter prozesse/<name>/ ablegen
Jedes Modell bekommt einen eigenen Ordner mit Steckbrief (README.md,
Status Entwurf|abgenommen), der maßgeblichen Arbeitsschritt-.md und der
daraus erzeugten .bpmn (ADR 0003).

- scripts/pruefe_prozesse.py prüft Ordnername, Dateien, Status und ob
  jede .bpmn byte-gleich mit der Umwandlung ihrer .md ist; --erzeugen
  erzeugt alle .bpmn neu. md_to_bpmn.py arbeitet deterministisch.
- tests/test_pruefe_prozesse.py: Bestandsprüfung plus 11 Fälle für die
  Prüflogik; pytest.ini sammelt .agents/skills und tests.
- Die in Anleitung.md genannten, nie committeten Beispiele liegen jetzt
  unter .agents/skills/sn-bpmn/beispiele/ und werden mitgeprüft.
- Skill sn-bpmn: Entwürfe nach entwuerfe/, neuer Schritt 5 „Ablegen“.
- Vorlage docs/vorlagen/prozess_readme.md, Doku und Fallstricke ergänzt.
- Tests: python -m pytest -q -> 44 bestanden.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-23 13:02:48 +02:00
DanielandClaude Opus 5.5 012509b6d1 Projektwissen der AG Prozesse aus AG_QGIS/Projektwissen abgeleitet
Übernommen ohne Historie aus AG_QGIS/Projektwissen (main @ decd2a0),
Skill sn-bpmn vom Branch BPMN-Skill @ 6efcac4 (ADR 0001).

- Skripte hallo.py, gitea.py, setup_workspace.py auf die Organisation
  AG_Prozesse umgestellt; das Workspace-Repo zählt über [workspace] repo
  als Ticket-Repo, auch ohne weitere [[repos]].
- pruefe_umlaute.py prüft jetzt die .py-Dateien des Workspace selbst.
- Branchmodell main plus Arbeitsbranches (ADR 0002).
- AGENTS.md, README, Leitfäden, Skills, Vorlagen, Fallstricke und Glossar
  auf die Prozessmodellierung zugeschnitten; QGIS- und Plugin-Spezifisches
  entfernt.
- Tests: python -m pytest -q .agents/skills -> 32 bestanden.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-23 12:34:37 +02:00