1
0
Files
asv-format-validator/docs/arbeitspakete/m1/AP09-altlogik-einfrieren.md
T
2026-04-20 10:11:19 +02:00

122 lines
5.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
model: sonnet
---
# AP09 Altlogik einfrieren (Preview-Code deaktivieren)
> **Meilenstein:** M1
> **Vorgänger:** AP03, AP05, AP06 ✅ erforderlich
> **Nachfolger:** AP10, AP11
> **Grundlage:** AP00-ist-analyse.md §§ 7, 8
> **Entscheidungsprotokoll:** `docs/arbeitspakete/m1/E00-entscheidungsprotokoll.md` (E-01 Option b, E-03 leere Testklasse)
## Ziel
Die bestehende Preview-Parser- und Validator-Logik (`DefaultStructureValidator`, `DefaultFieldValidator`, `DefaultInputFileValidator`) wird **nicht gelöscht und nicht verschoben**, sondern im Bootstrap **nicht mehr verdrahtet**. Ein M1-Lauf erzeugt keine fachlichen ASVREC-/ASVFEH-Befunde mehr. Die Klassen bleiben physisch an ihrem Ort als M3-Vorbau.
## Hintergrund und Entscheidung
Laut AP00-Ist-Analyse läuft `DefaultStructureValidator` (19 ASVREC/ASVFEH-Regeln) aktiv im produktiven Lauf mit — was dem M1-Ziel „noch keine ASV-Fachvalidierung" widerspricht.
**Entscheidung E-01: Option (b)** — Klassen bleiben in ihren Paketen, werden aber im Bootstrap nicht mehr verdrahtet. Für M3 kann die Verdrahtung direkt wieder aktiviert werden.
Kein Paketumzug, keine Umbenennung, kein `@Deprecated`.
## Voraussetzungen
- AP03 (Paketstruktur)
- AP05 (neues Befundmodell)
- AP06 (neuer Bootstrap/CLI)
## Scope IN
### 1. Bootstrap-Verdrahtung anpassen
In `bootstrap.Main`: `DefaultInputFileValidator` erhält statt `DefaultStructureValidator` und `DefaultFieldValidator` jeweils eine **Null-Implementation** — eine leere Implementierung der jeweiligen Interfaces, die keine Befunde produziert.
Die Null-Implementierungen können als benannte Klassen in `bootstrap` oder `application` angelegt werden:
```java
/** M1-Platzhalter. Ab M3 durch DefaultStructureValidator ersetzen. */
public final class NoOpStructureValidator implements StructureValidator {
@Override
public List<Finding> validate(ValidationContext ctx) {
return List.of(); // bewusst leer in M1
}
}
```
Analog für `NoOpFieldValidator`.
### 2. Einfriermarker als JavaDoc-Kommentar
`DefaultStructureValidator` und `DefaultFieldValidator` erhalten folgenden JavaDoc-Kommentar — keine andere Änderung:
```java
/**
* M3-Vorbau. In M1 bewusst nicht im produktiven Lauf verdrahtet.
* Wird ab M3 wieder aktiviert und gegen die finalen Regelklassifikationen
* (V1-V/T/N/K) aus fachliche-anforderungen.md bewertet.
*
* @see docs/arbeitspakete/m1/E00-entscheidungsprotokoll.md E-01
*/
```
### 3. Abnahmetest
Ein Integrationstest prüft, dass ein Lauf mit einer beliebigen Testdatei **keine** fachlichen Findings mit Bezug auf ASVREC-/ASVFEH-Segmentregeln erzeugt.
### 4. Aufräumen
- `DefaultStructureValidatorTestAdditional` (leere Testklasse ohne `@Test`-Methoden) löschen (gemäß E-03)
- Sicherstellen dass `logs/` in `.gitignore` steht (falls AP06 das noch nicht erledigt hat)
- Aktive Tests von `DefaultStructureValidator` und `DefaultFieldValidator` bleiben **erhalten und grün** — sie testen den M3-Vorbau
### 5. Grep-Nachweis im Bericht
```bash
grep -rn "DefaultStructureValidator\|DefaultFieldValidator" \
src/main/java/de/gecheckt/asv/adapter \
src/main/java/de/gecheckt/asv/bootstrap
```
Muss **leer** sein — der aktive Code darf diese Klassen nicht mehr referenzieren.
## Scope OUT
- Paketumzug der Preview-Klassen (explizit **nicht** — Entscheidung E-01 Option b)
- Inhaltliche Änderung an `DefaultStructureValidator` oder `DefaultFieldValidator`
- Fachliche Neubewertung der 19 Preview-Regeln (das ist M3)
- Löschen von Preview-Klassen
## Schritte
1. `NoOpStructureValidator` und `NoOpFieldValidator` anlegen
2. `bootstrap.Main` umverdrahten: Preview-Validatoren durch NoOp-Implementierungen ersetzen
3. JavaDoc-Einfriermarker in `DefaultStructureValidator` und `DefaultFieldValidator` ergänzen
4. `DefaultStructureValidatorTestAdditional` löschen
5. Grep-Nachweis ausführen und im Bericht dokumentieren
6. Integrationstest: Lauf erzeugt keine ASVREC-/ASVFEH-Segmentbefunde
7. `mvn clean verify` grün — alle bisherigen Tests der Preview-Klassen müssen weiterhin grün sein
8. Abschlussbericht schreiben
## Abnahmekriterien
- [ ] `NoOpStructureValidator` und `NoOpFieldValidator` existieren
- [ ] `bootstrap.Main` verdrahtet keine Preview-Validatoren mehr
- [ ] Grep auf `DefaultStructureValidator`/`DefaultFieldValidator` in `adapter` und `bootstrap` ist leer (Nachweis im Bericht)
- [ ] Einfriermarker-JavaDoc in beiden Preview-Klassen vorhanden
- [ ] `DefaultStructureValidatorTestAdditional` ist gelöscht
- [ ] Bestehende Tests der Preview-Klassen laufen weiterhin grün
- [ ] Integrationstest: Lauf mit Testdatei erzeugt keine ASVREC-/ASVFEH-Segmentbefunde
- [ ] `mvn clean verify` grün
- [ ] Abschlussbericht unter `docs/arbeitspakete/m1/berichte/AP09-bericht.md`
## Rest-Risiken und offene Punkte
- Bei Wiederaufnahme in M3: jede der 19 Preview-Regeln ist neu gegen V1-V/T/N/K-Klassifikation zu bewerten. Explizit M3-Aufgabe.
- Falls Preview-Tests beim Einfrieren brechen (z.B. wegen Interface-Änderungen durch AP05): einmalige Anpassung der Testimports ist kein Scope-Verstoß, sondern Teil der Konsolidierung.
## Bericht
`docs/arbeitspakete/m1/berichte/AP09-bericht.md` nach `docs/arbeitspakete/m1/templates/ap-bericht.md`.