# M1 – Arbeitspakete (Übersicht) > **Bezug:** Meilenstein 1 aus `docs/specs/meilensteine.md` v3 > **Ziel:** tragfähiger technischer Sockel mit Logging-Adapter und Befundmodell (Spec-/Diagnose-Trennung); noch keine ASV-Fachvalidierung > **Ist-Zustand:** Repo enthält bereits eine frühere, schichtenbasierte Implementierung mit Parser-, Validator- und Feldlogik (Commit `32d50ec` vom 27.03.2026). Diese muss erhalten, aber ins hexagonale Zielbild überführt werden. > **Vorgehen:** **evolutionär, nicht in einem Wurf.** Jedes Arbeitspaket endet in einem grünen, stabilen Zwischenstand. ## Leitprinzipien für alle M1-Arbeitspakete 1. **So viel wie möglich aus dem Ist-Stand erhalten und refactoren**, nicht wegwerfen. Insbesondere Parser, Tokenizer und Validator-Gerüst sind wertvoll und gehören später in `adapter.out.parsing` bzw. `application`. 2. **Jedes Arbeitspaket endet mit einem Bericht** (`berichte/AP-MX-XX.md`) nach dem Schema in `templates/ap-bericht.md`. 3. **Jedes Arbeitspaket endet grün:** `mvn clean verify` muss durchlaufen. Build, Compile, Tests. 4. **Keine Fachvalidierung in M1.** Wer versucht, schon EDIFACT-Strukturprüfungen o.ä. einzubauen, verletzt den Scope. Bestehende Fachvalidierung darf erhalten bleiben, aber sie wird in M1 **nicht weiterentwickelt**. 5. **Commit-Strategie:** ein Commit pro Arbeitspaket, Commit-Message `M1-APxx: `. 6. **Reviewbarkeit:** Der Bericht pro Arbeitspaket muss so präzise sein, dass ein unabhängiger Rezensent ohne Rückfragen prüfen kann, ob alles korrekt und in-scope umgesetzt wurde. ## Arbeitspaket-Folge | AP | Titel | Hauptnutzen | Abhängigkeit | |---|---|---|---| | **AP01** | Ist-Stand-Inventar und Delta-Analyse | dokumentierter Ausgangspunkt, keine Überraschungen später | — | | **AP02** | Build-Infrastruktur härten: SLF4J, JaCoCo, PIT, maven-jar-plugin, .editorconfig | `pom.xml` ist M1-tauglich, Quality-Gates messbar vorbereitet | AP01 | | **AP03** | Hexagonale Paketstruktur anlegen und Ist-Code migrieren | Soll-Paketstruktur steht, bestehender Code ist eingeordnet, nichts geht kaputt | AP02 | | **AP04** | Logging-Adapter (SLF4J-Fassade + Log4j2-Bindung) | Log4j2-Imports sind nur noch im Logging-Adapter und im Bootstrap sichtbar | AP03 | | **AP05** | Befundmodell mit Spec-/Diagnose-Trennung (Domain) | `Finding`, `Severity`, `Verdict`, Metadata-Felder, strikt getrennt | AP03 | | **AP06** | Bootstrap und CLI-Adapter: ein Positionsargument, Exit-Codes 0/1/2 | Exit-Codes sind spec-konform, Bootstrap verdrahtet manuell | AP05 | | **AP07** | Ausgabeartefakte: Berichtdatei und Log-Datei im Eingabeverzeichnis mit Suffix-Logik | `.txt`/`.log` werden erzeugt, Suffix `_v1/_v2/...` funktioniert, UTF-8 | AP06 | | **AP08** | Minimalbericht bei Exit-Code 2 (Bedienfehler) | auch bei fehlendem/falschem Argument oder nicht lesbarer Datei entsteht ein nachvollziehbarer Bericht | AP07 | | **AP09** | Altlogik aus M1 entkoppeln: Parser/Validator in Adapter-/Application-Schicht eingefroren | bestehende Parser-/Validator-Logik ist erhalten, aber explizit als „Vorbau für M3+" markiert und nicht aktiv in den M1-Lauf verdrahtet | AP06 | | **AP10** | Architekturtest: Log4j2-Sichtbarkeit, Paketabhängigkeiten, M1-Abnahme | ArchUnit-Test oder einfacher Klassenpfad-Scan stellt sicher, dass die Regeln eingehalten werden | AP04, AP09 | | **AP11** | M1-Abnahme: grüner End-to-End-Lauf mit Minimaldatei, alle AP-Berichte konsolidiert | Meilenstein abgeschlossen, Übergabe an M2 möglich | alle vorigen | ## Verzeichnisstruktur (im Repo anzulegen) ``` docs/ arbeitspakete/ m1/ README.md (diese Datei) templates/ ap-bericht.md (Berichtsvorlage) AP01-ist-stand-inventar.md AP02-build-infrastruktur.md AP03-hexagonale-paketstruktur.md AP04-logging-adapter.md AP05-befundmodell.md AP06-bootstrap-cli.md AP07-ausgabeartefakte.md AP08-minimalbericht.md AP09-altlogik-einfrieren.md AP10-architekturtest.md AP11-m1-abnahme.md berichte/ AP01-bericht.md (nach Abschluss) AP02-bericht.md ... ``` ## Grobumfang pro AP Jedes Arbeitspaket hat eine eigene Datei mit: - **Ziel** (was soll erreicht werden) - **Voraussetzungen** (welche APs müssen abgeschlossen sein) - **Scope IN** (was explizit Teil dieses APs ist) - **Scope OUT** (was explizit NICHT Teil dieses APs ist) - **Schritte** (konkrete Handlungsanleitung) - **Abnahmekriterien** (messbar, reviewbar) - **Rest-Risiken und offene Punkte** (was kann schiefgehen, was bleibt offen) - **Berichtsschablone** (Hinweis, den Abschlussbericht nach `templates/ap-bericht.md` anzulegen) ## Definition of Done für den gesamten M1 Ein M1 ist abgenommen, wenn: - alle 11 Arbeitspakete grün abgeschlossen sind - für jedes Arbeitspaket ein Abschlussbericht in `docs/arbeitspakete/m1/berichte/` existiert - die Anwendung als ausführbares JAR vorliegt und mit `java -jar asv-format-validator.jar ` startbar ist - die Exit-Codes 0/1/2 spec-konform sind - Bericht- und Log-Datei im Eingabeverzeichnis erzeugt werden - Log4j2-Typen außerhalb von Bootstrap und Logging-Adapter nicht mehr importiert werden (per Architekturtest nachweisbar) - Befundmodell trennt Spec-Urteil und diagnostische Weiteranalyse - `mvn clean verify` ist grün - M1-Abnahmebericht (`AP11-bericht.md`) fasst alles zusammen