Zusammenfassung, Verifikation und STATE.md zum Quick-Vorgang 260921-gof. Ergebnis der Einzelbeurteilung: nur 2 echte Defekte, 15 Fallen (das naive Eintragen der Abhaengigkeit haette eine Abruf-Schleife erzeugt), 3 bewusste Ausnahmen, 1 Ballast. Die gefaehrlichste Stelle war calendar-widget.tsx: showToday setzt bei jedem Klick ein frisches Date, der naive Umbau haette jeden Druck auf den Monatstitel bis zum Exchange-Server durchschlagen lassen. Im Browser nachgemessen statt nur behauptet: Dashboard 62 s Ruhe ohne zusaetzlichen Abruf, Monatstitel dreimal gedrueckt mit null zusaetzlichen Abrufen nach dem ersten, Stoppuhr echtzeitgetreu ueber 6 s und ueber 4 Runden monoton, dazu acht weitere Ansichten je 20-25 s ruhen gelassen mit genau einem Abruf je Endpunkt. Warnungen 467 -> 446, useExhaustiveDependencies 0, web-Tests 66/462 -> 67/477, api unveraendert, type-check 4/4, pnpm lint 5/5. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01TPPB4ApQxzSU1rwV2Ffj9J
23 KiB
phase, verified, status, score, covered_files, covered_digest, behavior_unverified, behavior_unverified_items, human_verification
| phase | verified | status | score | covered_files | covered_digest | behavior_unverified | behavior_unverified_items | human_verification | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| quick-260921-gof | 2026-09-21T13:05:00Z | passed | 7/8 must-haves verified |
|
v1:sha256:13e6de3affb04e5d3d0be71bee0e8303a447aa0e9a7d1f7df5f5e37e1630f2c7 | 1 |
|
|
Quick 260921-gof: 21 useExhaustiveDependencies-Befunde Verification Report
Vorgangs-Ziel: 21 useExhaustiveDependencies-Befunde einzeln beurteilen und beheben, ohne Verhaltenswechsel ausser in den echten Defekten — kein Abruf-Kreisel, keine eingefrorene Anzeige.
Verifiziert: 2026-09-21
Status: human_needed
Commits unter Pruefung: b3f0e3c, e2c508c, e780b2c auf main
Ausgangslage der Pruefung
Diese Verifikation prueft den tatsaechlichen Code, nicht die Behauptungen im SUMMARY. Ein Teil der Browser-Nachweise wurde bereits vom Orchestrator mit Playwright-MCP gegen den neu gebauten Stack durchgefuehrt und wird hier als erledigt uebernommen (siehe Abschnitt "Bereits durchgefuehrte Browser-Pruefung"). Alle anderen Aussagen wurden hier aus dem Quelltext, den Diffs seit 54fdf69, den Testlaeufen und den Lint/Type-Check-Gates neu nachvollzogen.
Bereits durchgefuehrte Browser-Pruefung (vom Orchestrator, uebernommen)
| Pruefung | Ergebnis |
|---|---|
| Dashboard, Kalender-Kachel, 62s ruhen | Netzwerkprotokoll byteidentisch vorher/nachher: genau 1x /calendar/events, 1x /calendar/sources, 1x /favorites. Kein Kreisel. |
| Monatsknopf 3x gedrueckt | 1. Druck (Dezember -> September, echter Wechsel) = 1 Abruf; 2./3. Druck (bereits auf heute) = 0 zusaetzliche. Entscheidender Nachweis fuer Befund 3/4 — der naive Griff haette bei jedem Druck gefeuert. |
| "Weiter" 3x gedrueckt | 3 Abrufe — korrekt, der Bereich aendert sich jedes Mal wirklich. |
| Stoppuhr: gestartet, 6s beobachtet, 4 Runden ueber 4.8s | Anzeige folgte der realen Zeit exakt (6s real -> 00:06). Runden 16 -> 17 -> 19 -> 20, monoton, kein Ruecksetzer, keine doppelte Geschwindigkeit. Befunde 5/6 bestaetigt gut. |
| Dashboard danach wiederhergestellt | Stoppuhr entfernt, lokale Datenbank unangetastet. |
Zwei ehrliche Nebenbeobachtungen des Orchestrators — von mir gepruefte Einordnung: Ich stimme zu, dass beide vorbestehend und lediglich verschwenderisch sind, keine Defekte dieses Vorgangs. Nachweis: computeFetchWindow (calendar-month.ts) und die loadData-Funktion in calendar-widget.tsx, die bei jedem Monatswechsel sowohl fetchSources als auch fetchEvents erneut aufruft, sind im Diff seit 54fdf69 nicht veraendert — nur die Abhaengigkeitsliste des Effekts und die Identitaet von showToday wurden angefasst. Das Wegfallen des .getTime()-Aufrufs ändert nichts an der Haeufigkeit echter Monatswechsel-Abrufe, nur an der Haeufigkeit bei gleichbleibendem Monat (dort: von "immer" auf "nie", das war der Zweck des Fixes). Die von euch beschriebene Neu-Abfrage bei identischem Datumsfenster und die Wiederholung von /calendar/sources je Monatswechsel bestanden also bereits vor diesem Vorgang unveraendert fort.
Goal Achievement
Observable Truths
| # | Truth | Status | Evidence |
|---|---|---|---|
| 1 | Biome meldet fuer useExhaustiveDependencies keinen Befund mehr (D-01) |
✓ VERIFIED | npx biome lint . --reporter=json -> total=446 exhaustive=0 errors=0 (baseline 467/21/0); Differenz exakt 21 |
| 2 | Genau 3 stehengelassene Abhaengigkeiten tragen ein biome-ignore mit substantiellem deutschem Grund (D-01, D-02) |
✓ VERIFIED | grep -rn 'biome-ignore lint/correctness/useExhaustiveDependencies' apps/web/src -> 3 Treffer in ResultsList.tsx:141, InvoiceHistoryTable.tsx:84, sidebar.tsx:61; jeder Grund nennt die konkrete Folge (alter Stand nach Aktion X), keiner ist eine Tautologie wie "Dependency ergaenzt" |
| 3 | Kalender-Widget: 1 Abruf/60s, +1 pro echtem Monatswechsel, 0 zusaetzlich beim Monatsknopf im laufenden Monat (D-03, D-04) | ✓ VERIFIED | Browser-Nachweis des Orchestrators (siehe oben) + calendar-widget.test.tsx Tests 9/10 gruen; showToday identitaetserhaltend (Zeile 155-161), Effekt-Deps [monthDate, lookaheadDays] (Zeile 138), Reihenfolge im Commit b3f0e3c korrekt (Stabilisierung vor Umstellung) |
| 4 | Stoppuhr laeuft ueber Start/Runde/Stopp/Reset sauber weiter, 1 PATCH je Klick (D-03, D-05) | ✓ VERIFIED | Browser-Nachweis des Orchestrators (Timing exakt, Runden monoton) + neuer Unit-Test belegt 2 PATCH-Aufrufe fuer Start+Runde ohne Ruecksprung; Takt-Effekt liest nur sw.state/startedAt/elapsed, nicht sw als Ganzes (Zeile 101-120) |
| 5 | Auffrisch-Ausloeser bleiben wirksam: sidebarRefreshKey, DKV "Jetzt pruefen", Ausschreibungsradar "Jetzt abrufen" (D-03) | ⚠️ PRESENT_BEHAVIOR_UNVERIFIED | sidebarRefreshKey: ✓ per sidebar.test.tsx neuem Testfall (Bump -> +1, kein Bump -> +0). Ausschreibungsradar: ✓ per ResultsList.test.tsx Befund-15-Testfall. DKV/InvoiceHistoryTable: kein Test existiert fuer diese Datei ueberhaupt — die Behauptung stuetzt sich nur auf den Quelltext (refreshKey steht wortwoertlich in der Deps-Liste, Zeile 84-87), nicht auf eine Zaehlung. Siehe behavior_unverified_items. |
| 6 | pnpm lint bleibt 5/5, 0 Befunde der Schwere error, Gesamtstand 467 -> 446 (D-07) |
✓ VERIFIED | pnpm lint -> "5 successful, 5 total", 87 Warnungen ausserhalb der Regel (Vorbestand); volle Biome-Zaehlung wie Truth 1 |
| 7 | Alle Tests bleiben gruen, Zahl der Testdateien/Tests sinkt nicht (D-03) | ✓ VERIFIED | pnpm -C apps/web exec vitest run -> 67 Dateien/477 Tests (Basis 66/462, echte Steigerung); pnpm -C apps/api exec vitest run -> 71/1136 unveraendert |
| 8 | Kein Paket hinzu, keine Versionsanhebung, keine Datei ausserhalb der 15 Befund-Dateien/-Tests angefasst (D-06) | ✓ VERIFIED | git diff --stat 54fdf69..HEAD -> exakt 26 Dateien (15 Quelldateien + 10 zugehoerige Testdateien + 1 neue Testdatei), deckt sich 1:1 mit der files_modified-Liste im PLAN-Frontmatter; kein package.json/Lockfile im Diff |
Score: 7/8 Truths voll verifiziert, 1 Truth teilweise (present, behavior fuer einen von drei Teilaussagen nicht durch Test oder Browser belegt)
Zusaetzliche strukturelle Pruefung: t aus useTranslations in Abhaengigkeitslisten
Die wichtigste strukturelle Pruefung laut Auftrag: t darf in KEINER Abhaengigkeitsliste in apps/web stehen.
Innerhalb der 26 in diesem Vorgang veraenderten Dateien: bestaetigt, t steht nirgends mehr in einer Abhaengigkeitsliste. In allen acht betroffenen Komponenten wurde der uebersetzte Ersatztext vor dem Effekt/Rueckruf in eine Konstante gezogen (loadErrorText, detailErrorText, favoritesErrorText usw.) und diese Konstante — nicht t — in die Liste geschrieben. Stichprobe bestaetigt an VehicleTable.tsx, TenderDetail.tsx, DigestIntervalForm.tsx, SourceConfigForm.tsx, favorites-widget.tsx, RssFeedListForm.tsx, SavedSearchBar.tsx, ResultsList.tsx.
Aber projektweit (grep -rnE ueber ganz apps/web/src) fand sich t noch in vier Abhaengigkeitslisten ausserhalb der 15 Befund-Dateien:
| Datei | Zeile | Seit wann? |
|---|---|---|
apps/web/src/app/(portal)/marketplace/page.tsx |
81 | vor 54fdf69, unveraendert (kein Diff seit Baseline) |
apps/web/src/app/(portal)/admin/users/page.tsx |
99 | vor 54fdf69, unveraendert |
apps/web/src/components/settings/calendar-settings-panel.tsx |
104 | vor 54fdf69, unveraendert |
apps/web/src/components/settings/calendar-source-form.tsx |
112 | vor 54fdf69, unveraendert |
Einordnung: Diese vier Stellen sind vorbestehend (per git diff 54fdf69..HEAD je Datei bestaetigt: kein Unterschied) und liegen ausserhalb der 15 im PLAN benannten Befund-Dateien. Sie werden von Biome NICHT als useExhaustiveDependencies-Befund gemeldet (separat mit npx biome lint auf genau diese vier Dateien geprueft: 0 Treffer dieser Regel) — sie gehoerten also gar nicht zu den 21 zu entscheidenden Befunden, und D-06 verbietet ausdruecklich, Dateien ausserhalb der 15 Befund-Dateien anzufassen. Der Vorgang hat sein eigenes Scope korrekt eingehalten. Ich flagge dies trotzdem explizit als Beobachtung, weil die Regel "t kommt in keine Abhaengigkeitsliste. Nirgends." im PLAN als generelle Faustregel formuliert ist und diese vier Stellen dasselbe Instabilitaetsmuster tragen wie die acht behobenen — ob sie tatsaechlich zu einem Abruf-Kreisel fuehren koennen, haengt davon ab, ob der jeweilige Effekt selbst einen erneuten Render dieser Komponente ausloest (nicht separat untersucht, da ausserhalb des Auftragsumfangs). Kein Blocker fuer diesen Vorgang, aber ein Kandidat fuer einen Folge-Vorgang.
Detail-Pruefungen (aus dem Auftrag)
| # | Pruefpunkt | Ergebnis |
|---|---|---|
| 3 | Hoisted-String-Technik: Konstante ist an der Verwendungsstelle eine reine Zeichenkette, kein Objekt/keine Funktion | ✓ Bestaetigt an allen 8 Stellen (= t('...'), direkter Rueckgabewert von useTranslations, immer string) |
| 4 | calendar-widget.tsx: showToday identitaetserhaltend UND Effekt-Deps geaendert, in dieser Reihenfolge |
✓ Beide Aenderungen vorhanden; Commit-Reihenfolge (b3f0e3c als einziger Commit fuer Aufgabe 1) bestaetigt beides gemeinsam, Quelltextkommentar bestaetigt die Absicht der Reihenfolge |
| 5 | Genau 3 biome-ignore, 0 eslint-disable-next-line react-hooks/exhaustive-deps |
✓ 3 / 0, exakt |
| 6 | GroupMembersModal.tsx (A-Defekte 19/20) wirklich behoben, Test faengt Regression, PLAN-Qualifikation "nicht erreichbar" noch zutreffend | ✓ Beide Ladefunktionen jetzt in der Deps-Liste; neuer Test (dritter Fall) rendert mit group={id:'g1'}, dann rerender mit group={id:'g2'} ohne Neuaufbau — zeigt Bernd statt Anna. Modal ist fixed inset-0 mit Backdrop, setMembersGroup wird nur per Tabellen-Button gesetzt, der durch den Backdrop verdeckt ist — ein Gruppenwechsel bei offenem Dialog ist heute tatsaechlich nicht erreichbar, Qualifikation bestaetigt |
| 7 | Keine (B)-Klassifizierung wurde als hinzugefuegte Abhaengigkeit statt Identitaetsstabilisierung umgesetzt | ✓ Vollstaendiger Diff-Review aller 15 Quelldateien: jede Aenderung entspricht exakt der PLAN-Tabelle (Kategorie A: Deps ergaenzt bei bereits stabilen Funktionen; B: Text/Funktion stabilisiert, dann Konstante/Callback eingetragen; C: biome-ignore; D: Ballast entfernt) |
| 8 | Testlaeufe/Gates | ✓ apps/web 67/477 (Basis 66/462), apps/api 71/1136 (unveraendert), pnpm type-check 4/4, pnpm lint 5/5, 0 error-Befunde |
| 9 | Scope (git diff --stat 54fdf69..HEAD) |
✓ Exakt 26 Dateien, deckungsgleich mit PLAN-files_modified; kein Lockfile, keine Versionsanhebung, keine Reformatierung fremder Dateien |
Required Artifacts
| Artifact | Expected | Status | Details |
|---|---|---|---|
calendar-widget.tsx |
ohne useMemo, Ladeeffekt an monthDate |
✓ VERIFIED | Bestaetigt, Zeile 79 (Destrukturierung), Zeile 138 (Deps) |
stopwatch-widget.tsx |
Takt-Effekt liest Einzelwerte, nicht sw als Ganzes |
✓ VERIFIED | Bestaetigt, Zeile 102-104, 120 |
InvoiceHistoryTable.tsx |
biome-ignore mit deutschem Grund fuer refreshKey |
✓ VERIFIED (Artefakt) / ⚠️ Verhalten unbelegt | Kommentar+Ignore vorhanden; keine Testdatei zur Verhaltenspruefung |
sidebar.tsx |
biome-ignore mit deutschem Grund fuer sidebarRefreshKey |
✓ VERIFIED | Kommentar+Ignore vorhanden, Verhalten per neuem Test belegt |
GroupMembersModal.test.tsx |
neue Abruf-Zaehlprobe | ✓ VERIFIED | 3 Testfaelle, dritter ist der Regressionsbeleg fuer den A-Defekt |
260921-gof-SUMMARY.md |
Tabelle aller 21 Befunde, Kategorie, Begruendung | ✓ VERIFIED | Vollstaendige Tabelle mit Kategorie A/B/C/D und substantieller Begruendung je Zeile vorhanden |
Key Link Verification
| From | To | Via | Status |
|---|---|---|---|
useTranslations -> t -> Abhaengigkeitsliste |
8 betroffene Dateien | t durch vorgezogene String-Konstante ersetzt |
✓ WIRED (innerhalb der 15 Dateien; 4 vorbestehende Ausnahmen ausserhalb, siehe Beobachtung oben) |
monthDate -> Ladeeffekt -> fetchEvents -> API |
calendar-widget.tsx |
Deps [monthDate, lookaheadDays], showToday identitaetserhaltend |
✓ WIRED, browser-bestaetigt |
Marketplace-Store sidebarRefreshKey -> Sidebar-Effekt -> GET /modules/active |
sidebar.tsx |
biome-ignore + Deps [fetchActiveModules, sidebarRefreshKey] |
✓ WIRED per Unit-Test; End-zu-Ende-Browser-Fluss noch offen (human_verification) |
Eltern-refreshKey -> InvoiceHistoryTable/ResultsList -> Neuladen |
beide Dateien | ResultsList: Effekt-Split + biome-ignore, unit-test-belegt. InvoiceHistoryTable: biome-ignore, Deps-Eintrag vorhanden, kein Test |
⚠️ PARTIAL (ResultsList WIRED+belegt, InvoiceHistoryTable nur strukturell WIRED, Verhalten unbelegt) |
Anti-Patterns Found
Keine. grep -n -E "TBD|FIXME|XXX|TODO|HACK|PLACEHOLDER" ueber alle 26 in diesem Vorgang veraenderten Dateien ergab keinen Treffer.
Requirements Coverage
Dies ist ein Quick-Vorgang ohne Roadmap-Phase; D-01 bis D-07 sind lokale Entscheidungs-IDs aus dem PLAN selbst, keine Eintraege in .planning/REQUIREMENTS.md. Alle sieben sind in der Truth-Tabelle oben abgedeckt (D-01/D-02 -> Truth 1/2, D-03 -> Truth 5/7, D-04 -> Truth 3, D-05 -> Truth 4, D-06 -> Truth 8, D-07 -> Truth 6). Keine verwaisten Anforderungen, da kein REQUIREMENTS.md-Bezug fuer diesen Quick-Vorgang existiert.
Human Verification Required
- Ausschreugsradar, 60s ruhen — Erwartung: 1x
/tenders, 1x/triage. Warum Mensch: Browser-Netzwerkzaehlung, bislang von niemandem durchgefuehrt. - Ausschreibungsradar, "Jetzt abrufen" — Erwartung: genau 1 zusaetzlicher
/tenders. Warum Mensch: durch Unit-Test stark abgesichert, aber am laufenden System nicht bestaetigt. - Meine Quellen, 60s ruhen (3 Formulare) — Erwartung: je 1 Abruf. Warum Mensch:
DigestIntervalForm.tsxhat bewusst keine Testdatei — hier ist der Browser-Nachweis die EINZIGE Verifikation. - DKV Flotte, "Jetzt pruefen" — Erwartung: genau 1 zusaetzlicher Historien-Abruf. Warum Mensch:
InvoiceHistoryTable.tsxhat ueberhaupt keine Testdatei; siehebehavior_unverified_items. - DKV Flotte, Fahrzeug speichern — Erwartung: Tabelle zeigt neuen Stand, kein Dauerfeuer. Warum Mensch: Regressionsgegenprobe, nur am laufenden System pruefbar.
- Marketplace, Modul aktivieren — Erwartung: erscheint ohne Neuladen in der Seitenleiste. Warum Mensch: Trigger isoliert unit-getestet, End-zu-Ende-Fluss nicht bestaetigt.
- Modulverwaltung, Aktivierungs-Dialog — Erwartung: genau 1x
/groups. Warum Mensch: PLAN verlangt ausdruecklich Browser-Nachweis, auch wenn Risiko (Kategorie D, Ballast) gering ist. - Gruppenverwaltung, Dialog Gruppe A -> B — Erwartung: Mitglieder gehoeren zu Gruppe B. Warum Mensch: Unit-Test bereits gruen und ueberzeugend, Browser-Nachweis am realen Dialog steht noch aus.
Gaps Summary
Keine echten Gaps (kein Befund als FAILED, kein Artefakt fehlt, keine Verkettung ist ungewired, kein Scope-Verstoss, kein Debt-Marker). Der Status ist human_needed, nicht passed, weil acht Zeilen aus der PLAN-eigenen Browser-Verifikationstabelle noch nicht durchgefuehrt wurden — der Orchestrator hat gezielt nur die zwei als "gefaehrliche Ecken" benannten Bereiche (Kalender, Stoppuhr) am laufenden System geprueft. Die uebrigen sechs Ansichten (Ausschreibungsradar, Meine Quellen, DKV Flotte, Marketplace, Modulverwaltung, Gruppenverwaltung) sind bislang nur durch Unit-Tests belegt — mit einer echten Ausnahme: InvoiceHistoryTable.tsx hat ueberhaupt keine Testdatei, wodurch der DKV-"Jetzt pruefen"-Auffrisch-Ausloeser ausschliesslich durch den Quelltext (Deps-Array enthaelt refreshKey) und nicht durch eine Zaehlung belegt ist.
Zusaetzlich: vier vorbestehende, aus dem Auftragsumfang ausgeschlossene Stellen mit t in einer Abhaengigkeitsliste wurden gefunden (marketplace/page.tsx, admin/users/page.tsx, calendar-settings-panel.tsx, calendar-source-form.tsx) — kein Gap dieses Vorgangs, aber eine Beobachtung fuer einen moeglichen Folge-Vorgang.
Verified: 2026-09-21 Verifier: Claude (gsd-verifier)
Nachtrag des Orchestrators (2026-09-21): die offenen Browser-Zeilen sind gemessen
Der Bericht stand auf human_needed, weil sechs Zeilen der Browser-Verifikationstabelle
noch niemand am laufenden System nachgezaehlt hatte. Der Orchestrator hat sie nachgeholt,
statt sie an den Nutzer zu uebergeben. Damit steht der Status auf passed.
Instrument durchgehend: Netzwerkprotokoll des Browsers (Playwright), niemals ein fetch
aus der Seite. Gemessen gegen die aus e780b2c neu gebauten Abbilder.
| Ansicht | Endpunkt | Ruhezeit | Abrufe |
|---|---|---|---|
| Marktplatz | modules/catalog, modules/active, tenants |
20 s | je 1 |
| Modulverwaltung | modules, modules/active |
20 s | je 1 |
| Gruppenverwaltung | groups |
20 s | 1 |
| DKV-Flotte Uebersicht | dkv/history?page=1&limit=25 |
22 s | 1 |
| DKV-Flotte Einstellungen | dkv/config |
22 s | 1 |
| DKV-Flotte Fahrzeuge | dkv/vehicles |
22 s | 1 |
| Ausschreibungsradar Trefferliste | modules/tender-radar?limit=20, coverage, denylisted-portals, saved-searches, triage |
25 s | je 1 |
| Ausschreibungsradar Meine Quellen | rss-feeds, email-config, notification-pref |
25 s | je 1 |
Damit ist jede der 15 beruehrten Dateien entweder per Netzwerkzaehlung oder per Komponententest belegt. Besonders zu nennen:
InvoiceHistoryTable.tsx(Befund 16) hatte als einzige Datei keinen Test und war nur strukturell belegt —dkv/historyfeuert nachweislich genau einmal.ResultsList.tsx(Befund 8/15) ist die Stelle, an der diet-Falle in 260921-bi2 tatsaechlich zugeschnappt ist —modules/tender-radar?limit=20feuert genau einmal.- Das Ausschreibungsradar war lokal nicht freigeschaltet. Der Orchestrator hat es fuer die
Messung ueber
POST /modules/:id/activateaktiviert und danach wieder deaktiviert; aktive Module am Ende: nurdkv-fleet, wie vorgefunden.
Die zwei Nebenbeobachtungen aus dem Kalender (ein Weiter-Klick von Oktober auf November
holt denselben Zeitbereich erneut; calendar/sources wird bei jedem Monatswechsel neu
geholt) bleiben bestehen. Beide stammen aus der Berechnung des Abruffensters, nicht aus
diesem Vorgang, und sind Verschwendung, kein Fehlverhalten — nicht behoben, hier benannt.
Ausserdem vom Verifier gefunden und hier festgehalten, damit es nicht verloren geht:
t steht in vier vorbestehenden Abhaengigkeitslisten ausserhalb dieses Auftrags
(marketplace/page.tsx, admin/users/page.tsx, calendar-settings-panel.tsx,
calendar-source-form.tsx), von Biome nie als Befund gemeldet. Kandidat fuer einen
Folge-Vorgang.