1
0

Umsetzung von M1

This commit is contained in:
2026-04-20 10:11:19 +02:00
parent cd6e5221aa
commit b5044f62a9
59 changed files with 5891 additions and 884 deletions
+74 -59
View File
@@ -1,92 +1,107 @@
---
model: sonnet
---
# AP11 M1-Abnahme
> **Meilenstein:** M1
> **Vorgänger:** AP01AP10 alle ✅ erforderlich
> **Nachfolger:** M2
> **Grundlage:** `docs/specs/meilensteine.md` v3, M1-Abnahmekriterien
## Ziel
Der letzte Schritt in M1: Alles wird gegen die Meilenstein-Abnahmekriterien aus `docs/specs/meilensteine.md` v3 **geprüft**, ein **End-to-End-Lauf** mit einer Minimal-Eingabedatei wird durchgeführt, und alle AP-Berichte werden in einem **konsolidierten M1-Abschlussbericht** zusammengeführt.
M1 wird formal abgenommen. Alle Abnahmekriterien aus `meilensteine.md` sind erfüllt und nachweisbar. Das Projekt ist bereit für M2.
## Voraussetzungen
- AP01 bis AP10 abgeschlossen und grün
- alle AP-Berichte liegen in `docs/arbeitspakete/m1/berichte/` vor
- AP01AP10 abgeschlossen und grün
- Alle AP-Berichte liegen in `docs/arbeitspakete/m1/berichte/` vor
## Scope IN
### End-to-End-Lauf
1. **Minimaldatei erstellen**: eine einfache Dummy-Textdatei im ISO-8859-15-Encoding, z.B. `test-artefakte/m1/minimal.txt` mit ein paar Zeilen Inhalt. Keine echten ASV-Daten, kein gültiges EDIFACT — dies ist nur ein Lauftest, kein Fachtest.
2. **JAR bauen**: `mvn clean package`
3. **Lauf 1**: `java -jar target/asv-format-validator-0.0.1-SNAPSHOT.jar test-artefakte/m1/minimal.txt`
- **Erwartung:** Exit-Code `0` (Dummy-Pfad, leerer Report), Berichtdatei `minimal.txt.txt` und Log-Datei `minimal.txt.log` entstehen, Konsolenausgabe vorhanden
4. **Lauf 2**: identischer Aufruf
- **Erwartung:** `minimal.txt_v1.txt` und `minimal.txt_v1.log` entstehen
5. **Lauf 3**: `java -jar ... nicht-vorhanden.txt`
- **Erwartung:** Exit-Code `2`, Minimalbericht auf Konsole, gegebenenfalls Berichtdatei im übergeordneten Verzeichnis wenn schreibbar
6. **Lauf 4**: `java -jar ...` (ohne Argument)
- **Erwartung:** Exit-Code `2`, Minimalbericht **nur** auf Konsole
7. **Lauf 5**: `java -jar ... datei1.txt datei2.txt`
- **Erwartung:** Exit-Code `2`, Minimalbericht auf Konsole
### 1. Test-Artefakt anlegen
Alle fünf Läufe werden im M1-Abschlussbericht dokumentiert (Befehl, Exit-Code, relevante Ausgabe).
`test-artefakte/m1/minimal.txt` anlegen — eine einfache ISO-8859-15-kompatible Textdatei mit 35 Zeilen Dummy-Inhalt. Keine echten ASV-Daten, kein gültiges EDIFACT — reiner Lauftest.
### Meilenstein-Abnahmeprüfung
Jeder Abnahmepunkt aus `docs/specs/meilensteine.md` v3 Abschnitt „Abnahme von M1" wird mit einem konkreten Nachweis verknüpft:
### 2. End-to-End-Läufe durchführen
| M1-Abnahmekriterium | Nachweis | Status |
`mvn clean package` ausführen, dann alle fünf Läufe:
| Lauf | Befehl | Erwarteter Exit-Code | Erwartetes Verhalten |
|---|---|---|---|
| 1 | `java -jar target/asv-format-validator-*.jar test-artefakte/m1/minimal.txt` | `0` | `.txt` und `.log` entstehen im Verzeichnis |
| 2 | identischer Aufruf wie Lauf 1 | `0` | `_v1.txt` und `_v1.log` entstehen |
| 3 | `java -jar ... nicht-vorhanden.txt` | `2` | Minimalbericht auf Konsole |
| 4 | `java -jar ...` (ohne Argument) | `2` | Minimalbericht nur auf Konsole |
| 5 | `java -jar ... datei1.txt datei2.txt` | `2` | Minimalbericht nur auf Konsole |
Alle fünf Läufe werden im M1-Abschlussbericht dokumentiert (Befehl, tatsächlicher Exit-Code, relevante Ausgabe).
### 3. Meilenstein-Abnahmeprüfung
Jeden Punkt aus `docs/specs/meilensteine.md` v3 §„Abnahme von M1" mit konkretem Nachweis verknüpfen:
| Kriterium | Nachweis | Status |
|---|---|---|
| Anwendung ist als JAR unter Windows mit Java 21 startbar | Lauf 1, JAR-Pfad | ✅ |
| falsches oder fehlendes Argument → Exit-Code `2` mit Minimalbericht | Lauf 3, 4, 5 | |
| Bericht- und Log-Datei werden im Eingabeverzeichnis mit korrekter Suffix-Logik erzeugt | Lauf 1 + Lauf 2 | |
| Log4j2-Bindung ist außerhalb von Bootstrap und Logging-Adapter nicht sichtbar | Architekturtest AP10, Test 1 | ✅ |
| Befundmodell unterscheidet Spec-Urteil und diagnostische Weiteranalyse | Unit-Test AP05 | |
| Build und Tests sind grün | `mvn clean verify` | |
| Anwendung als JAR unter Windows mit Java 21 startbar | Lauf 1 | |
| Fehlendes/falsches Argument → Exit-Code `2` mit Minimalbericht | Lauf 3, 4, 5 | |
| Bericht- und Log-Datei im Eingabeverzeichnis mit korrekter Suffix-Logik | Lauf 1 + 2 | |
| Log4j2-Bindung außerhalb Bootstrap/Logging-Adapter nicht sichtbar | Architekturtest AP10 Regel A | |
| Befundmodell trennt Spec-Urteil und diagnostische Weiteranalyse | Unit-Test AP05 | |
| Build und Tests grün | `mvn clean verify` | |
### M1-Abschlussbericht
- Datei: `docs/arbeitspakete/m1/berichte/M1-abschlussbericht.md`
- Inhalt:
- **Zusammenfassung**: Was ist M1 geworden, in zwei Absätzen
- **AP-Übersicht**: Tabelle mit allen 11 APs, Status, Commit-Hashes, Abschlussdatum
- **Meilenstein-Abnahmetabelle** (siehe oben)
- **End-to-End-Protokoll**: die fünf Läufe mit Befehl, Exit-Code, Zusammenfassung der Ausgabe
- **Quality-Metriken** (Coverage, Testanzahl — **keine harten Gates in M1**, nur Informationswert)
- **Rest-Risiken und übertragene Punkte** aus allen AP-Berichten konsolidiert
- **Empfehlungen für M2**: Was sollte M2 beachten? Was ist aus M1-Sicht offen geblieben?
- **Commit-Graph-Snapshot**: `git log --oneline --graph main` für den M1-Zeitraum
- Freigabe-Vermerk am Ende: „M1 ist abnahmebereit" oder „M1 ist mit folgenden Einschränkungen abnahmebereit: ..."
### 4. Konsolidierter M1-Abschlussbericht
### Tagging
- Git-Tag `m1-done` auf dem letzten AP11-Commit setzen
- Tag-Message: „Meilenstein 1 abgeschlossen, siehe docs/arbeitspakete/m1/berichte/M1-abschlussbericht.md"
Datei: `docs/arbeitspakete/m1/berichte/M1-abschlussbericht.md`
Pflichtabschnitte:
- **Zusammenfassung** — Was ist M1 geworden (max. zwei Absätze)
- **AP-Übersicht** — Tabelle mit allen 11 APs, Status, letzter Commit
- **Meilenstein-Abnahmetabelle** (siehe oben, vollständig ausgefüllt)
- **End-to-End-Protokoll** — alle fünf Läufe mit Befehl, Exit-Code, Ausgabe-Zusammenfassung
- **Quality-Metriken** — Testanzahl, Coverage-Wert (informativ, keine Gate-Prüfung in M1)
- **Rest-Risiken** — konsolidiert aus allen AP-Berichten
- **Empfehlungen für M2** — was M2 beachten sollte
- **Freigabe-Vermerk** — „M1 ist abnahmebereit" oder „M1 ist mit folgenden Einschränkungen abnahmebereit: ..."
### 5. Git-Tag setzen
```bash
git tag -a m1-done -m "Meilenstein 1 abgeschlossen, siehe docs/arbeitspakete/m1/berichte/M1-abschlussbericht.md"
```
## Scope OUT
- Vorgriffe auf M2-Themen (Dateinamensschemata, globale Rahmenregeln, ISO-8859-15 über Dateinamen hinaus — außer dem Einlese-Encoding aus AP06, das bleibt)
- Vorgriffe auf M2-Themen
- Release-Builds, Signierung, Publizierung
- Externe Reviews (die kommen vom Rezensenten der Arbeitspakete, nicht aus diesem AP)
- Inhaltliche Berichtsvertiefung über M1-Minimum hinaus
## Schritte
1. Branch `m1/ap11-abnahme`
2. Test-Artefakt `test-artefakte/m1/minimal.txt` anlegen (ISO-8859-15, 35 Zeilen Dummy-Inhalt)
3. `mvn clean package` ausführen
4. Die fünf Läufe durchführen und protokollieren
1. `test-artefakte/m1/minimal.txt` anlegen
2. `mvn clean package`
3. Alle fünf Läufe durchführen und protokollieren
4. `mvn clean verify` ein letztes Mal
5. Konsolidierten M1-Abschlussbericht schreiben
6. `mvn clean verify` ein letztes Mal laufen lassen
7. Commit `M1-AP11: M1-Abnahme, End-to-End-Protokoll, konsolidierter Abschlussbericht`
8. Git-Tag `m1-done` setzen: `git tag -a m1-done -m "Meilenstein 1 abgeschlossen"`
6. Git-Tag `m1-done` setzen
## Abnahmekriterien
- `test-artefakte/m1/minimal.txt` existiert
- alle fünf Läufe sind protokolliert
- M1-Abschlussbericht existiert und enthält alle oben genannten Abschnitte
- Meilenstein-Abnahmetabelle ist vollständig und jede Zeile hat einen konkreten Nachweis
- `mvn clean verify` ist grün
- Git-Tag `m1-done` ist gesetzt
- der Freigabe-Vermerk am Ende des Abschlussberichts ist explizit
- [ ] `test-artefakte/m1/minimal.txt` existiert
- [ ] Alle fünf Läufe sind protokolliert
- [ ] `M1-abschlussbericht.md` existiert mit allen Pflichtabschnitten
- [ ] Meilenstein-Abnahmetabelle vollständig, jede Zeile mit konkretem Nachweis
- [ ] Kein Exit-Code `3` mehr erreichbar
- [ ] `mvn clean verify` grün
- [ ] Git-Tag `m1-done` gesetzt
- [ ] Freigabe-Vermerk ist explizit
- [ ] Abschlussbericht unter `docs/arbeitspakete/m1/berichte/AP11-bericht.md`
## Rest-Risiken und offene Punkte
- Dieser AP ist ein reines Zusammenfassungs-AP. Wenn hier Abnahmekriterien nicht erfüllt sind, zeigt das, dass ein früheres AP unvollständig war. In dem Fall: **zurück zum betroffenen AP**, nachbessern, dann AP11 wiederholen. Keine Abkürzungen.
- Wenn hier Abnahmekriterien nicht erfüllt sind, zeigt das, dass ein früheres AP unvollständig war. In dem Fall: **zurück zum betroffenen AP**, nachbessern, dann AP11 wiederholen. Keine Abkürzungen.
## Bericht
`docs/arbeitspakete/m1/berichte/AP11-bericht.md` nach `templates/ap-bericht.md` **zusätzlich** zum konsolidierten `M1-abschlussbericht.md`.
`docs/arbeitspakete/m1/berichte/AP11-bericht.md` nach `docs/arbeitspakete/m1/templates/ap-bericht.md`.
**Zusätzlich** konsolidierter `docs/arbeitspakete/m1/berichte/M1-abschlussbericht.md`.