Ein Abschnitt oder ein einzelner Schritt erscheint nur, wenn seine Bedingung
zutrifft — abhaengig von einer Variable des Laufs oder vom Zustand eines
anderen Schritts. Der echte Fall steht im Seed: "Mitarbeiter-Onboarding" traegt
beide Konto-Abschnitte, fuenf AD-Schritte und vier fuer Entra ID, und
`konto_typ` sagt beim Start, welcher gilt. Bisher klickte ein Techniker die
anderen neun bei jedem Onboarding weg.
Entscheidungen, alle im Issue begruendet:
- Laufend ausgewertet, nicht beim Start festgeschrieben. Fuer die
Abteilungsabschnitte (#031) ist Festschreiben richtig; fuer Bedingungen nicht
— die Antwort auf "ist Pruefen fehlgeschlagen?" entsteht erst waehrend der
Arbeit. Ein struktureller Test prueft, dass alle drei Schichten
(Abschlussregel, Abarbeitung, Druck) die Auswertung rufen.
- Nicht entscheidbar heisst: gilt. Ein Lauf ohne konto_typ zeigt beide
Abschnitte — genau wie vorher. Ein Abschnitt zu viel ist sichtbar und
korrigierbar, ein fehlender faellt niemandem auf.
- OFFEN ist eine Antwort, keine Luecke: waere es unentscheidbar, waere ein
bedingter Abschnitt von Anfang an sichtbar.
- Eine Bedingung, kein Ausdrucksbaum. Kein und, kein oder.
- Verwiesen wird ueber Titel-Pfade, nicht ueber Kennungen: vier Wege schreiben
eine Struktur neu und geben neue Kennungen.
Zwei stille Datenverluste gefunden, der zweite aelter als dieser Meilenstein:
- Der Import verwarf `nurFuerAbteilungen`. Der Export schreibt es seit #031, das
Schema nimmt es an, der Import setzte es nicht — eine exportierte Vorlage
verlor ihre Abteilungsabschnitte und galt dort fuer alle.
- Die tiefe Kopie verwarf es ebenfalls, womit jedes "Bearbeiten" einer Vorlage
alle Einschraenkungen verlor. Ursache war ein von Hand getippter Zwischentyp,
der weniger Felder nannte als die Abfrage liefert; jetzt aus Prisma
abgeleitet, beide Kopierwege teilen eine Stelle, und ein Test vergleicht Kopie
und Original Feld fuer Feld.
Gefunden hat beides die Klickprobe am gebauten Stand, nicht die Suite: im Editor
stand "Bedingung gesetzt", nach "Bearbeiten" war sie weg. Dreizehn Gegenproben
liefen, alle wurden rot — und der teuerste Befund lag ausserhalb von allen.
1499 Vitest-Tests (vorher 1457), 115 E2E-Ablaeufe gruen.
Closes#39
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Vier Meilensteine fuer v0.3.0, 34 h geschaetzt: bedingte Schritte und
Abschnitte (M23), Vier-Augen-Freigabe (M24), PDF-Uebergabeprotokoll (M25),
weitere Schritt-Typen (M26). Die Reihenfolge ist begruendet: M23 zuerst, weil
es als einziges am Datenmodell und an der Abschlussregel arbeitet; M26 zuletzt,
weil UNTERSCHRIFT erst im PDF einen Zweck hat.
Jedes Issue nennt die Entscheidungen, die zu treffen sind, mit Empfehlung und
Begruendung. Bei M23 ist die entscheidende: eine Bedingung auf einer Variable
liesse sich beim Start festschreiben wie bei #031, eine auf einem
Schrittergebnis nicht — die Antwort entsteht erst waehrend der Arbeit.
Beim Nummernvergeben einen Fund: vier Codestellen, sechs Changelog-Zeilen und
der Doku-Pruefer nannten dreistellig die Tracker-Nummern 39 und 40 — gemeint
waren die Issue-Dateien 025 und 026. Solange es diese Dateien nicht gab, fiel es
niemandem auf; mit Phase 3 waere es eine falsche Spur geworden, und zwar in
Kommentaren, die eine Codestelle begruenden.
Behoben, und pruefe:doku prueft es ab jetzt: jeder dreistellige Verweis muss auf
eine Issue-Datei zeigen. Gegenprobe mit einer erfundenen Nummer schlaegt an.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>