docs(EYT-142): Staging-Abnahme 25.08.2026 — Evidenz, Runbook-Korrekturen, Staging-Suite - #93
Merged
Merged
Conversation
…igests, Kernreise 14/14, Rollback-Uebung Evidenzpaket docs/evidence/2026-08-25-eyt-142-staging/ (Screenshots, ids.json, README nach Runbook §8), Runbook-Korrekturen aus der Wirklichkeit (VPS-lokale Datengrenze in §1, HTTPS-Pflicht wegen crypto.randomUUID in §3, ausgefuehrter Rollback in §7, Coolify-Onboarding in §9), Deploy-Protokolle 24./25.08. und die Playwright-Staging-Suite apps/web/e2e-staging (kein Pflichtcheck, laeuft nur manuell gegen ein reales Staging). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Reviewer's GuideDer PR enthält ausschließlich Dokumentation, Evidenz und eine bewusst manuelle Staging-Playwright-Suite: Er macht die VPS-/Coolify-Abnahme am exakten Release-Head nachvollziehbar, prüft die reale Admin-Kernreise einschließlich Fail-Closed- und Accessibility-Fällen und synchronisiert das Runbook mit den tatsächlich gemessenen Deploy-, HTTPS-, Daten- und Rollback-Bedingungen. Sequence diagram for the staging admin journey and fail-closed checkssequenceDiagram
actor Admin
participant Web as Staging Web
participant API as API
participant DB as PostgreSQL
Admin->>Web: anmelden
Web->>API: POST /api/v1/auth/login
API-->>Web: 200 userId + session
Admin->>Web: Einsatzformular ausfüllen und speichern
Web->>API: POST /api/v1/planung/einsaetze
API->>DB: persist assignment
DB-->>API: assignmentId
API-->>Web: 201 assignmentId
Admin->>Web: Publish klicken
Web->>API: Publish-Command
API->>DB: create published plan version
DB-->>API: publishedVersionId
API-->>Web: publishedVersionId
Admin->>Web: Snapshot erzeugen
Web->>API: POST /api/v1/kosten/snapshots
API->>DB: create cost snapshot
DB-->>API: snapshotId + totalMinorUnits
API-->>Web: 201 17000 Minor Units
Admin->>Web: zweiter Browserkontext
Web->>API: GET published version and snapshot
API->>DB: authorize and read
DB-->>API: same IDs
API-->>Web: same publishedVersionId + snapshotId
rect rgb(255,235,235)
Admin->>Web: Zugriff ohne Mitgliedschaft oder costs.read
Web->>API: GET /api/v1/kosten/snapshots/{snapshotId}
API-->>Web: 403 ohne Betragsdaten
Admin->>Web: Satz fehlt: Snapshot erzeugen
Web->>API: POST /api/v1/kosten/snapshots
API-->>Web: 409 urn:easytree:costs:rate-not-found
end
Flow diagram for the manual staging acceptance suiteflowchart TD
Start[Run staging.config.ts manually]
Config[EYT_* environment variables and HTTPS staging URL]
Login[anmelden]
Planning["/planung: current week and navigation"]
Assignment[POST /api/v1/planung/einsaetze: create assignment]
Reload[Reload and verify server state]
Publish[Publish plan version]
Costs["/kosten: create snapshot"]
Evidence[Capture screenshots, axe results, reflow checks, and ids.json]
Negative[Verify 403 and 409 fail-closed cases]
CrossContext[Verify IDs in a second browser context]
Start --> Config --> Login --> Planning --> Assignment --> Reload --> Publish --> Costs
Costs --> CrossContext --> Evidence
Costs --> Negative --> Evidence
File-Level Changes
Tips and commandsInteracting with Sourcery
Customizing Your ExperienceAccess your dashboard to:
Getting Help
|
…sleser-Waechter hatte recht Der secret-surface-Waechter meldete die process.env-Zugriffe der neuen Suite als Laufzeitpfad: apps/web/e2e-staging/ stand nicht unter den ausgenommenen Testpfaden. Statt die Ausnahmeliste zu weiten, zieht die Suite unter das bereits ausgenommene apps/web/e2e/ und traegt wie auth-journey die Endung .pwtest.ts, damit weder die Haupt-Playwright-Config noch vitest sie aufsammeln. Dazu ids.json prettier-konform. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Was dieser PR enthaelt
Nur Dokumentation, Evidenz und eine manuelle Staging-Testsuite — kein Laufzeitcode, keine CI-Aenderung, keine Migration.
164f1a1— 19 reale Screenshots (1440/1920, Fokus, Negativfaelle),ids.jsonmit den massgeblichen Server-IDs, README mit allen fuenf Runbook-§8-Angaben (Head+CI-Runs, GHCR-Digests+OCI-Revisionen, Migrationsstand 18/18, Datengrenze, Smokes).crypto.randomUUIDverlangt Secure Context, sonst scheitert jeder Schreibvorgang still), §7 Rollback ausgefuehrt statt beschrieben, §9 Coolify-Onboarding ausgefuehrt mit benannten Abweichungen. Railway (§10) bleibt ausdruecklich „nicht gemessen".pnpm test/auth-journey; laeuft nur manuell mitEYT_*-Umgebungsvariablen gegen ein reales Staging.Abnahme-Kurzfassung (Details im Evidenz-README)
164f1a1via Coolify (Projekt easytree/staging), OCI-Revision aller drei Container = Head, Usernode,/health+/ready200 (config+database), 0 Header-/HTML-Lecks, Logs secretfrei.https://srv1308064.hstgr.cloud: Login → aktuelle Woche ohne weekKey → Wochennavigation → Einsatz per Formular (201, Assignment-ID) → Reload=Serverstand → Publish (Planversion42e052be…) → Kosten-Snapshot (8e05f8c3…, 17000 Minor = 170,00 EUR, 1 Position) → zweiter Browserkontext mit denselben IDs; SQL-Gegenprobe in PostgreSQL.urn:easytree:costs:rate-not-found, kein Snapshot gespeichert, nirgends 0,00; „Satz mehrdeutig" auf Schemaebene unmoeglich (EXCLUDE-Constraint, Einspielversuch gemessen abgewiesen).3b4bbdb(verifiziert, 32 s) → Kandidat (verifiziert, 42 s), Zeitstempel im README.🤖 Generated with Claude Code
Summary by Sourcery
Document and verify the EYT-142 staging acceptance on the VPS/Coolify environment with reproducible evidence and a manual end-to-end test suite.
New Features:
Enhancements:
Deployment:
Documentation:
Tests: