122 lines
5.1 KiB
Markdown
122 lines
5.1 KiB
Markdown
---
|
||
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`.
|