551d25075f
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
178 lines
10 KiB
Markdown
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.
|