leistungsbilanz-ts/docs/releases/2026-10-30-d5b2285.md
Julian Appel 2807b010e9 Record the 2026-10-30 release
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-30 23:19:37 +01:00

54 lines
3.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Release 2026-10-30 – d5b2285
- **Tag:** `release-2026-10-30` auf `d5b2285`
- **Ziel:** lokaler Compose-Stack (`compose.yaml`) auf dem Entwicklungsrechner
von Julian (`AUTH_DEV_AUTOLOGIN` aktiv, Web auf `0.0.0.0:3001`). Nicht die
Produktivinstanz cj-ki.
- **Delta:** erstes Release mit Gate, kein vorheriger `release-*`-Tag. Inhalt
dieses Stands: Revit-Zuordnungsdialog mit Steckdosen-Höchstwert (R11–R14,
`85cbdbf`..`fd7dcbb`), schlankeres Laufzeit-Image (`be8761a`, `d5b2285`).
- **Urteil:** Go mit Auflagen (nach Regel No-Go wegen rotem Test; Deploy von
Julian am 2026-10-30 ausdrücklich freigegeben).
- **Datenbank:** vor dem Start gesichert,
`data/backups/leistungsbilanz-2026-10-30T22-18-26-932Z.db` (Integrität ok,
0 FK-Verletzungen). Migration `0018` (`projects.max_sockets_per_circuit`)
lief beim API-Start.
## Prüfungen
| Prüfung | Ergebnis | Commit | Hinweise |
|---|---|---|---|
| secrets (gitleaks) | grün | d5b2285 | keine Funde |
| lint | grün | d5b2285 | 0 Fehler, nur bekannte Warnungen |
| test | rot | d5b2285 | 660/664; einziger Fehler `revit-xlsx-scale` Zeitbudget 15 s (gemessen 15,1–15,6 s, dreimal); auf fd7dcbb mit gleichem App-Code grün |
| sast (Semgrep) | grün | d5b2285 | keine Funde |
| audit (npm) | grün | d5b2285 | 6 moderate (drizzle-kit/esbuild, exceljs/uuid), kein High/Critical |
| mutation | grün | d5b2285 | 11/11 erkannt |
| container | grün | d5b2285 | Trivy-Image, Trivy-Config, hadolint; vorher 6 HIGH im mitgelieferten npm, behoben durch `be8761a` |
| security-review | grün | fd7dcbb | frischer Kontext, keine K/H; 2 niedrige behoben (`fd7dcbb`), 1 niedrig offen |
| zap | nicht ausgeführt | – | Instanz mit Autologin ist kein aussagekräftiges Ziel |
| fuzz | nicht ausgeführt | – | keine OpenAPI-Beschreibung |
## K-Punkte (ASVS-light)
| Punkt | Bewertung | Beleg |
|---|---|---|
| A1 Login-Pflicht | belegt | `baseline.test.ts` „jede Route verlangt Login“; Mutationen „Login-Pflicht entfernt“, „ungeschützte Route vor dem Auth-Guard“; neue Route in `tests/external-object-assignment-plan-route.test.ts` |
| A2 Identität | belegt | Baseline „gefälschte Identität wird abgelehnt“ |
| A3 Port nicht am Proxy vorbei | offen für diesen Rechner | Entwicklungsinstanz ohne Proxy, Web auf `0.0.0.0:3001` mit Autologin (THREATMODEL D2/R15: nur ohne echte Projektdaten). Für cj-ki belegt (R6) |
| B1/B2 Objektzugriff | nicht anwendbar | THREATMODEL D1 (Julian, 2026-10-17), `idorGap`; fremde IDs eines anderen Projekts abgewehrt, Route-Test „rejects a circuit list of another project“ |
| C1 SQL | belegt | nur Drizzle/gebundene Parameter, Semgrep grün |
| E1 Secrets | belegt | gitleaks grün |
| E2 CORS | belegt | Baseline „CORS lässt fremde Origins nicht zu“, Mutation |
| F1 High/Critical | belegt | `npm audit` ohne High, Container-Scan grün |
## Auflagen
1. **Zeittest `revit-xlsx-scale`:** schwankt um das 15-s-Budget. Entscheidung
offen: Budget anpassen oder als Ausnahme in `docs/RELEASE-AUSNAHMEN.md`
eintragen (Julian/Christian).
2. **Fehlertexte bei 400 (niedrig, Security-Review):**
`respondWithProjectCommandError` gibt interne englische Meldungen aus.
Ticket: fachliche Fehlerklasse, Rest generisch beantworten.
3. **Instanz mit Autologin:** auf diesem Rechner nur ohne echte Projektdaten
betreiben oder Web an `127.0.0.1` binden.