Most German docs were written with `ue`/`ae`/`oe`/`ss` ASCII fallbacks (`fuer`, `aenderung`, `koennen`, `gemaess`) — relic from older toolchain constraints. Replaced 237 occurrences across 38 .md files with proper umlauts and ß so the docs read naturally. Substitutions are constrained to plain prose: fenced code blocks (```...```), inline code spans (`...`), markdown link targets `[..](..)`, and HTML comments are preserved verbatim. Path references like `docs/howto-erste-aenderung.md` keep their original (umlaut-replaced) filenames — only the surrounding prose is normalised. Tool: bin/fix-md-umlauts.py (idempotent — no-op on already-clean files). Re-runnable if ASCII fallbacks creep back in via copy-paste. Doc-link-check + doc-drift-check stay green. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2.3 KiB
2.3 KiB
name, description
| name | description |
|---|---|
| core-guardrails | Verbindliche Guardrails für Architektur-, Refactor-, Zentralisierungs-, Standardisierungs- und Implementierungsaufgaben in diesem Starterkit. Verwenden, wenn Code geändert, neu strukturiert oder gegen bestehende Layer-/UI-/Security-Standards geprüft werden soll. |
Core Guardrails
Ziel
Durchgaengig dieselben technischen Grenzen durchsetzen, damit Core robust, wartbar und vorhersagbar bleibt.
Verbindliche Regeln
- MUST Layering einhalten (
pages->Service->Repository, Templates nur Rendering). - MUST Request/Input/Validation-Contract einhalten (
requestInput(),FormErrors, API-Validation überApiResponse::validationFromFormErrors(...), keinApiResponse::readJsonBody(...)inpages/api/v1/**, keine direkten Superglobals inpages/**). - MUST AuthZ/RBAC serverseitig durchsetzen und im UI nur über
$viewAuthsteuern. - MUST Security-Guards einhalten (CSRF auf POST-Endpunkten, keine unredacted PII/Secrets in Logs/Audit-Meta, SQL nur vorbereitet über Repository).
- MUST UI-Standards und Data-Contracts für Listen/Detailseiten nutzen (Wrapper, Partials, globaler Confirm-Dialog statt
window.confirm, inklusive globaler Grid-Standards für rowInteraction/pageSize). - MUST Frontend-Hardcuts einhalten (keine inline ESM-Module in Templates/Pages, JS-
srcmitassetVersion(...), zentrale Telemetrie für relevante Frontend-Warnings/Fetch-Fehler). - MUST Quality-Gates ausführen und Ergebnis transparent berichten.
- MUST bei Konflikten den regelkonformen Weg wählen oder den Konflikt als Blocker markieren.
- MUST NOT Extension-Architektur erfinden; dieses Thema ist aktuell Out of Scope.
Vorgehen je Aufgabe
- Scope bestimmen (
core,ui,api,mixed). - Vorhandene Contracts zuerst suchen, dann wiederverwenden.
- Änderung minimal halten, keine Seiteneffekte ohne Grund.
- Nach Änderung die relevanten Gates ausführen.
- Rest-Risiken explizit benennen.
Out of Scope
- Extension-Mechanik (Ablageorte, Hooks, Lifecycle) wird hier nicht standardisiert.
- Fuer Extensions nur den Status "nicht definiert" dokumentieren, keine impliziten Regeln erfinden.
Referenzen
- Core-Boundaries:
references/boundaries-core.md - UI-Boundaries:
references/boundaries-ui.md - Quality-Gates:
references/quality-gates.md - Source-Map zu Projekt-Doku:
references/source-map.md