ArchUnit-Prüfung nachschärfen (Review-Befunde Schritt 0, ADR 0033) #124
Labels
No labels
Kind
Bug
Kind
Enhancement
Kind
Maintenance
Priority
P1
Priority
P2
Priority
P3
Status
In Progress
Status
Need More Info
Status
Zur Abnahme
Änderungen Wettspielreglement
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
sffs-tt-basel/sffs-tt-issues#124
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Aufgeschobene Befunde aus dem Abschluss-Review von
feature/archunit(Schritt 0 aus ADR 0033, #120 Teil 1), 20.10.2026. Behoben ist bereits: Die Tabelle gilt nur noch inshared,competitionundcms(ein viertes oder vertipptes Modul bestand vorher alle Regeln).Offen, gewichtiger
-Darchunit.freeze.refreeze=true, Store neu anlegen, Regel umbenennen), kommt durch; heute fällt das nur im Review auf. Vorschlag:git diff --numstat <merge-base mit origin/main>..HEAD -- backend/src/test/archunit_storeauf hinzugefügte Zeilen prüfen. Ein Schrumpfen erzeugt nur Löschungen (am ArchUnit-Bytecode belegt), Fehlalarme gäbe es also keine. Der Checkout ist--depth 1,mainmüsste nachgeladen werden. CLAUDE.md undarchunit.propertiessagen das Verbot schon ausdrücklich.modules,domainWithoutTechnologyundmailOnlyInNotifierhaben 0 Einträge. Als gewöhnliche Regel könnte sie auch ein refreeze nicht aufweichen. Der Plan wollte sie eingefroren; das ist eine Entscheidung für Olli.Offen, klein (Gegenprobe und Reichweite)
mailOnlyInNotifier(„nurCaptainNotificationServicebenutztNotificationMailer“) hat keine Fixture.Thing::findById) innoActiveRecord; Mengenzählung im Freeze (zwei gleichlautende Verstösse, einer eingefroren → rot); Zeilenverschiebung an einem Methodenaufruf mit echter Zeilennummer statt nur:0.onlyRepositoriesUseEntityManagerprüft nurjakarta.persistence.EntityManager.org.hibernate.Session/StatelessSession,EntityManagerFactoryundPanache.getEntityManager()gingen vorbei; heute kommt nichts davon vor.domainWithoutTechnologykenntorg.jboss.resteasy..,org.eclipse.microprofile..,io.smallrye..undio.vertx..nicht.jakarta.annotation..bewusst nicht dazu (#120 Teil 3, Nullability).layers()undeveryClassHasARow(); ein Tippfehler in nur einer Liste bliebe wegenwithOptionalLayers(true)still.Abnahme
Entscheidung zu Punkt 2 (Olli, 20.10.2026): gewöhnliche Regeln statt eingefrorener.
modules,domainWithoutTechnologyundmailOnlyInNotifierhaben keinen Altbestand. Als gewöhnliche Regel kann sie auch einrefreeze, ein neu angelegter Store oder eine Umbenennung nicht aufweichen. Findet eine davon später doch alte Fälle (etwa nach einer Verschärfung), wird sie dann eingefroren.Alle sieben Punkte sind in
main(b1d9b28, READMEf477cc4; noch nicht gepusht).Technische Abnahme:
mvn -B clean verifygrün (6359 Tests). CI-Lauf 1205 grün; der neue Schritt hat dort gegen den Abzweigpunkt9f3387everglichen. E2E auf Staging 214/214 (feature-archunit-nachschaerfen-b1d9b28, Lauf 409).metrics.py diff0/0/0. Ein Review (Opus) ist eingearbeitet.Was sich geändert hat
Der CI-Schritt „Architektur-Store waechst nicht“ (
scripts/archunit-store-check.sh) wird rot, wenn der Store gegenüber dem Abzweigpunkt vonmainwächst; aufmaingilt der Stand vor dem Push. Verglichen wird je Regel, ohne Reihenfolge und mit Vielfachheit, denn ArchUnit verbraucht jede Store-Zeile einmal. Im Store stehen heute schon 110 doppelte Zeilen.Modulgrenzen, Fachkern und Mail sind gewöhnliche Regeln (Entscheidung oben), ihre leeren Store-Dateien sind weg.
bis 6. Neue Fixtures:
Die EntityManager-Regel kennt jetzt auch
Session,SessionFactory,StatelessSession,EntityManagerFactoryundPanache. Die Fachkern-Regel kennt auch resteasy, microprofile, smallrye und vertx. Gegen die alten Regeln sind beide neuen Fixtures rot.Die Pakete der Tabelle stehen nur noch an einer Stelle (
rows()).Bewusst offen
cancel-in-progressaufmainden Lauf eines Pushes ab, prüft der nächste nur seinen eigenen Abschnitt. Ein Zuwachs fällt dann nur im vorherigen Lauf auf dem Branch auf. Das steht als Kommentar im CI-Schritt.main“ (Vergleich mitgithub.event.before) zeigt sich zum ersten Mal mit dem Push dieses Merges.Prüfschritte (Olli)
main: Im CI-Lauf zuf477cc4meldet der Schritt „Architektur-Store waechst nicht“ArchUnit-Store gegenueber 9f3387e nicht gewachsen.(Vergleich mit dem Stand vor dem Push).scripts/archunit-store-check.sh main~2meldet „nicht gewachsen“. Mit einer zusätzlichen Zeile inbackend/src/test/archunit_store/b599773f-…(committet, danach zurücksetzen) meldet es „gewachsen, neue Eintraege: 1“ und Exit 1.backend/src/test/java/ch/sffs/tt/architecture/ArchitectureTest.java: Nur noch vier Regeln stehen inFreezingArchRule.freeze(...).