--- phase: quick-260921-bi2 plan: 01 subsystem: tooling tags: [biome, lint, a11y, nestjs, decorator-metadata, i18n] requires: [] provides: - "biome.json mit genau zwei zielgenauen overrides (Testdateien / apps/api) statt eines unueberschaubaren 2923er-Rueckstands" - "45 maschinell erzeugte, von Hand gelesene Korrekturen ueber vier sichere und fuenf unsichere Biome-Regeln" - "15 untersuchte Fundstellen toten Codes: 10 folgenlos entfernt, 1 umbenannt (NestJS- Parameterposition), 4 als benannte Folgeaufgaben gemeldet statt repariert" - "155 von Hand erledigte Barrierefreiheits-Fundstellen ueber sechs Regeln (Symbole, Schaltflaechentyp, Beschriftungsbindung, Rollen/ARIA-Merkmale, Tab-Reihenfolge)" - "Entwickleranleitung auf Endstand 465/386/79 gebracht, beide Ausnahmen begruendet, Folgeaufgaben benannt" affects: [ci-lint-gate, apps/web-a11y, apps/api-di] actuals: tokens: 37573 tasks: 3 commits: 13 tech-stack: added: [] patterns: - "biome.json overrides sind pfadgebunden (apps/api/**), nie repo-weit mit --only= angewendet -- --only schaltet eine per Konfiguration abgeschaltete Regel wieder an." - "Bei einer Regel ohne gesicherten Fix zuerst den Diff lesen (--write ohne --unsafe testen), danach --unsafe pruefen, danach den ganzen Diff lesen -- nie ungeprueft anwenden." - "a11y-Fixes koennen sich gegenseitig verschieben: eine Regel loesen kann eine ANDERE (zurueckgestellte) Regel neu anschlagen, wenn ein Element seine interaktive Klassifikation verliert (role=button entfernt -> noStaticElementInteractions greift auf die verbliebenen Drag-Handler). Nach jedem Einzel-Fix die komplette Regelmenge (in Scope UND zurueckgestellt) neu messen, nicht nur die Zielregel." key-files: created: [] modified: - biome.json - docs/anleitung-entwicklung.md - "apps/api/src/** (45 maschinelle Korrekturen + toter Code, Aufgabe 2)" - "apps/web/src/** (a11y, Aufgabe 3, beide Teillieferungen)" - apps/desktop/src/setup.html - apps/web/src/messages/de.json - apps/web/src/messages/en.json key-decisions: - "useImportType in apps/api/** abgeschaltet statt maschinell angewendet: emitDecoratorMetadata erzeugt __metadata(design:paramtypes,...), das NestJS zur Abhaengigkeitsaufloesung liest; import type entfernt den Wert-Import und ersetzt die erzeugten Typen durch Function- Platzhalter. 61 von 65 Dateien mit Abhaengigkeitsdaten waeren beschaedigt worden, bei gruenem tsc und gruenen 1124 Tests (kein Test ruft createTestingModule auf) -- der Fehler waere durch jedes Tor dieses Projekts unbemerkt hindurchgegangen." - "noUselessSwitchCase (1 Fundstelle, tender-normalizer.service.ts:60) bewusst NICHT angewendet: die Fallmarke dokumentiert, warum der Standardzweig auf diesem Weg bleiben muss; die Regel sieht nur den Code, nicht die Absicht dahinter." - "useSemanticElements (4 Fundstellen) wurde entgegen der urspruenglichen Einordnung in PLAN.md (dort unter D-05 zurueckgestellt) in Teillieferung B doch bearbeitet -- Abweichung von der Vorgabe, siehe Deviations." - "DropZone.tsx: Datei-Entfernen-Schaltflaeche als Geschwister statt verschachtelt in der Drop-Flaeche (kein