Files
schalli 551d25075f docs(quick-260921-9ie): Biome lauffaehig, Lint-Tor scharf (WINDOWS #35)
Plan, Zusammenfassung und Verifikation zum Quick-Vorgang 260921-9ie,
Registereintrag #35 geschlossen, STATE.md nachgezogen.

Nachgewiesen: pnpm lint fuehrt 5 von 5 Workspace-Aufgaben aus (vorher
"No tasks were executed") und endet auf dem Bestand mit Exit 0; eine
Wegwerfdatei mit debugger laesst denselben Aufruf mit Exit 1 und
noDebugger-Befund scheitern. Repo-weit 0 parse-Fehler, 0 Fehler.
Die Regelgruppe security bleibt unangetastet auf error.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TPPB4ApQxzSU1rwV2Ffj9J
2026-09-21 07:13:20 +02:00

178 lines
10 KiB
Markdown

---
phase: quick-260921-9ie
plan: 01
subsystem: infra
tags: [biome, turbo, lint, ci, tooling]
# Dependency graph
requires: []
provides:
- "biome.json migriert auf Biome 2.5.0 (assist.actions.source.organizeImports, linter.rules.preset)"
- "javascript.parser.unsafeParameterDecoratorsEnabled behebt 238 parse-Fehler in 19 Dateien (apps/api)"
- "lint-Skript (biome lint .) in allen fuenf Workspaces"
- "turbo.json globalDependencies bezieht biome.json ein, damit Regelaenderungen den Lint-Cache verwerfen"
- "pnpm lint fuehrt echte Pruefung aus (5/5 Aufgaben), Exit 0 auf Bestand, Exit 1 auf echten Regelverstoss"
- "docs/anleitung-entwicklung.md beschreibt echten Lint-Umfang und offenen Warnungs-Rueckstand"
- "Registereintrag #35 in .planning/WINDOWS.md geschlossen (fixed)"
affects: [ci, apps/api, apps/web, apps/desktop, packages/shared, packages/module-sdk]
actuals:
tokens: 1301
tasks: 3
commits: 3
tech-stack:
added: []
patterns:
- "biome lint statt biome check als CI-Tor: Formatierung bleibt Handarbeit (biome format --write), nur echte Regelverstoesse blockieren"
- "turbo.json globalDependencies auf biome.json, damit eine Config-Aenderung den Lint-Cache in jedem Workspace verwirft"
key-files:
created: []
modified:
- biome.json
- apps/api/package.json
- apps/web/package.json
- apps/desktop/package.json
- packages/shared/package.json
- packages/module-sdk/package.json
- turbo.json
- docs/anleitung-entwicklung.md
- .planning/WINDOWS.md
key-decisions:
- "Zweig (b) gewaehlt: lint statt check, zwei Dateien ausgenommen (__fixtures__, globals.css), gezielte Herabstufungen auf warn statt projektweitem Umbau — belegt durch gemessene Exit-Codes (check=1/760 Fehler, lint=1/275 Fehler, format=1/319 Befunde)"
- "Regelgruppe security bleibt unangetastet auf error; die 6 gemessenen noScriptUrl-Treffer verschwinden nur, weil die ausgenommene Fremdseite (__fixtures__/cosinex-search.html) nicht mehr geprueft wird, nicht weil die Regel entschaerft wurde"
- "Zahlen im Registereintrag #35 korrigiert: Pfad ist apps/api/src/user/user.controller.ts (nicht users/...), und der Parser-Schalter behebt 238 parse-Fehler in 19 Dateien (nicht 17 in einer Datei)"
patterns-established:
- "Gegenprobe-Pflicht fuer Lint-Tore: eine Wegwerfdatei mit absichtlichem Verstoss muss das Tor auf Exit 1 zwingen, bevor ein Tor als funktionsfaehig gilt"
requirements-completed: [WINDOWS-35]
coverage:
- id: D1
description: "biome.json ist fuer Biome 2.5.0 gueltig; biome migrate meldet keinen Bedarf mehr; repo-weit 0 parse-Fehler (vorher 238 in apps/api allein)"
requirement: "WINDOWS-35"
verification:
- kind: other
ref: "pnpm exec biome migrate (kein 'configuration needs migration'); pnpm exec biome lint . --reporter=json -> parse:0 errors:0"
status: pass
human_judgment: false
- id: D2
description: "pnpm lint (turbo lint --force) fuehrt in allen fuenf Workspaces eine echte Pruefung aus und ist auf dem unveraenderten Bestand gruen (Exit 0, 5 successful/5 total)"
requirement: "WINDOWS-35"
verification:
- kind: other
ref: "pnpm exec turbo lint --force -> '5 successful, 5 total', Exit 0"
status: pass
human_judgment: false
- id: D3
description: "Das Tor beisst: eine Wegwerfdatei mit debugger/loser Gleichheit unter apps/api/src laesst turbo lint --filter=@tessera/api mit Exit 1 und noDebugger-Befund scheitern; Datei danach entfernt, Lauf wieder gruen"
requirement: "WINDOWS-35"
verification:
- kind: other
ref: "printf ... > apps/api/src/__gate_probe__.ts; pnpm exec turbo lint --force --filter=@tessera/api -> Exit 1, grep -c noDebugger = 1; rm datei; erneuter Lauf -> Exit 0"
status: pass
human_judgment: false
- id: D4
description: "Regelgruppe security bleibt auf error, keine Sicherheitsregel wurde stummgeschaltet"
requirement: "WINDOWS-35"
verification:
- kind: other
ref: "node -e Pruefung: c.linter.rules.security === undefined"
status: pass
human_judgment: false
- id: D5
description: "Registereintrag #35 im Maengelregister ist geschlossen (fixed) und die Entwickler-Anleitung beschreibt den echten Lint-Umfang samt offenem Warnungs-Rueckstand"
requirement: "WINDOWS-35"
verification:
- kind: other
ref: "gsd-tools windows fixed 35; .planning/WINDOWS.md Zeile 35 status=fixed, resolved_at gesetzt; docs/anleitung-entwicklung.md enthaelt pnpm lint + Warnung"
status: pass
human_judgment: false
duration: 21min
completed: 2026-09-21
status: complete
---
# Quick Task 260921-9ie: Biome-Lint-Tor repariert
**biome.json auf Biome 2.5.0 migriert, echtes `biome lint .` in allen fuenf Workspaces verdrahtet, turbo-Cache an biome.json gebunden — Tor prueft jetzt tatsaechlich statt nur gruen zu melden.**
## Performance
- **Duration:** 21 min
- **Started:** 2026-09-21T05:07:15Z (Zeitpunkt der ersten Ausfuehrungsschritte; Sitzungsstart siehe STATE.md)
- **Completed:** 2026-09-21T05:07:15Z + ~21 min
- **Tasks:** 3/3
- **Files modified:** 9 (davon 8 committet, `.planning/WINDOWS.md` bleibt fuer den Orchestrator ungestaged laut Auftrag)
## Accomplishments
- `biome.json` ist fuer Biome 2.5.0 gueltig: `organizeImports` von oberster Ebene entfernt, `assist.actions.source.organizeImports: "on"` und `linter.rules.preset: "recommended"` ergaenzt — wortgleich mit der Ausgabe von `biome migrate --write`, gegengeprueft in dieser Sitzung an einer Kopie.
- `javascript.parser.unsafeParameterDecoratorsEnabled: true` senkt die parse-Fehler repo-weit auf 0 (vorher 238 in 19 Dateien allein in `apps/api`, gemessen ueber `biome lint . --reporter=json`).
- `vcs.useIgnoreFile` aktiv, `files.includes` schliesst `__fixtures__/**` und `apps/web/src/app/globals.css` aus.
- Alle fuenf Workspaces (`apps/api`, `apps/web`, `apps/desktop`, `packages/shared`, `packages/module-sdk`) haben ein `lint`-Skript (`biome lint .`).
- `turbo.json` bezieht `biome.json` als `globalDependencies` ein, damit eine Regelaenderung den Lint-Cache verwirft.
- `pnpm lint` (`turbo lint --force`) meldet „5 successful, 5 total", Exit 0 — vorher „No tasks were executed".
- Gegenprobe bestanden: eine Wegwerfdatei mit `debugger` und `== null` unter `apps/api/src` laesst denselben Aufruf mit Exit 1 und einem `noDebugger`-Befund scheitern; Datei danach entfernt, Lauf wieder gruen.
- `docs/anleitung-entwicklung.md` beschreibt den echten Pruefumfang, die Trennung von Pruefen und Formatieren und den offenen Warnungs-Rueckstand.
- Registereintrag #35 in `.planning/WINDOWS.md` per `gsd-tools windows fixed 35` auf `fixed` gesetzt (bleibt fuer den Orchestrator ungestaged).
## Task Commits
Each task was committed atomically:
1. **Task 1: biome.json reparieren und die Kette bis pnpm lint an apps/api nachweisen** - `6a727e9` (fix)
2. **Task 2: lint-Skript in den restlichen vier Workspaces und Cache-Bezug in turbo.json** - `00d769b` (feat)
3. **Task 3: Entwickler-Anleitung nachziehen und Registereintrag #35 schliessen** - `6f0f05a` (docs)
_Kein separater TDD-Zyklus: die Verify-Schritte sind Shell-Messungen, keine Test-Suite._
## Files Created/Modified
- `biome.json` - fuer Biome 2.5.0 migriert (assist, preset, javascript-Block, vcs, files.includes, gezielte warn-Herabstufungen)
- `apps/api/package.json` - `lint`-Skript ergaenzt
- `apps/web/package.json` - `lint`-Skript ergaenzt
- `apps/desktop/package.json` - `lint`-Skript ergaenzt
- `packages/shared/package.json` - `lint`-Skript ergaenzt
- `packages/module-sdk/package.json` - `lint`-Skript ergaenzt
- `turbo.json` - `globalDependencies: ["biome.json"]` ergaenzt
- `docs/anleitung-entwicklung.md` - Absatz zu Biome um echten Pruefumfang und Warnungs-Rueckstand ergaenzt
- `.planning/WINDOWS.md` - Eintrag #35 per Tool auf `fixed` gesetzt (bewusst ungestaged, siehe Auftrag)
## Decisions Made
- **Zweig (b)** gewaehlt statt eines projektweiten Umbaus: `biome lint` statt `biome check` im Skript, zwei Dateien ausgenommen, gezielte Herabstufungen auf `warn`. Begruendung ueber gemessene Exit-Codes: `biome check .` -> Exit 1, 760 Fehler, 2594 Warnungen; `biome lint .` -> Exit 1, 275 Fehler, 2594 Warnungen; `biome format .` -> Exit 1, 319 Befunde. Zweig (a) — blosse Warnungen — schied damit aus, weil auch reines `lint` durchgefallen waere.
- **Regelgruppe `security` unangetastet.** Sie ist in `linter.rules` nicht aufgefuehrt und behaelt damit den voreingestellten Schweregrad `error`. Alle 6 gemessenen `lint/security/noScriptUrl`-Treffer lagen ausnahmslos in der jetzt ausgenommenen Fremdseite `apps/api/src/tenders/__fixtures__/cosinex-search.html`, in keiner einzigen echten Quelldatei. Die Treffer verschwinden also, weil die Fremdseite nicht mehr geprueft wird — nicht weil die Regel entschaerft wurde. Task-1-Verify prueft das maschinell (`c.linter.rules.security === undefined`).
- **Zwei Zahlenangaben aus dem Registereintrag #35 korrigiert.** Der Eintrag nannte „17 Fehler in `users/user.controller.ts`". Gemessen: der Pfad lautet `apps/api/src/user/user.controller.ts` (Einzahl `user`), und die tatsaechliche Wirkung des Parser-Schalters betraegt 238 parse-Fehler in 19 Dateien — nicht 17 in einer einzigen Datei. Beide Abweichungen sind in der Zusammenfassung und im geschlossenen Registereintrag dokumentiert.
- **Verbleibender Warnungs-Rueckstand bewusst offen gelassen.** Rund 2800 Warnungen (ueberwiegend `any`-Familie und Barrierefreiheits-Hinweise in `apps/web`) bleiben als eigener, spaeter Durchlauf stehen und sind in `docs/anleitung-entwicklung.md` als offener Punkt benannt — nicht Teil dieses Vorgangs.
## Deviations from Plan
None - plan executed exactly as written. Alle drei Tasks liefen wie geplant, keine Rule-1/2/3-Auto-Fixes noetig, keine architektonische Frage aufgetaucht.
## Issues Encountered
None.
## User Setup Required
None - keine externe Dienstkonfiguration erforderlich.
## Next Phase Readiness
- `pnpm lint` ist ab sofort ein echtes CI-Tor; der Schritt „Lint" in `.gitea/workflows/ci.yml` kann jetzt tatsaechlich rot werden.
- Der offene Warnungs-Rueckstand (~2800, ueberwiegend `any`-Familie und Barrierefreiheit in `apps/web`) ist als eigener, spaeter Durchlauf dokumentiert — kein Blocker fuer diesen Vorgang, aber ein benannter Folgepunkt.
- `.planning/WINDOWS.md` bleibt laut Auftrag ungestaged; der Orchestrator uebernimmt den Docs-Commit.
---
*Phase: quick-260921-9ie*
*Completed: 2026-09-21*
## Self-Check: PASSED
Alle 8 geaenderten Zieldateien plus diese SUMMARY.md auf der Platte gefunden; alle drei Task-Commit-Hashes (`6a727e9`, `00d769b`, `6f0f05a`) in `git log --oneline --all` bestaetigt.