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>
58 lines
2.1 KiB
Markdown
58 lines
2.1 KiB
Markdown
# Extension-Readiness (Module-System V1.1)
|
|
|
|
Letzte Aktualisierung: 2026-03-18
|
|
|
|
## Ziel
|
|
|
|
Verbindliche Vorbedingungen für weitere eigenstaendige Module auf dem bestehenden Modul-System festhalten.
|
|
|
|
## Kanonische Quelle
|
|
|
|
Normativer Manifest- und Runtime-Contract: `/docs/reference-module-manifest-contract.md`.
|
|
|
|
Diese Readiness-Doku ist bewusst kurz und verweist für Felddefinitionen/Guards immer auf den Manifest-Contract.
|
|
|
|
## Readiness-Checkliste vor Modul 2+
|
|
|
|
1. **Modulgrenzen klarziehen**
|
|
- Betroffene Schichten benoennen (`pages -> Service -> Repository`).
|
|
- Keine Modul-spezifischen Hardcodings im Core-Layout/Core-Routing.
|
|
2. **Manifest-Contract einhalten**
|
|
- `module.php` validiert gegen den kanonischen Contract (`permissions`, `scheduler_jobs`, `ui_slots`, `routes`).
|
|
- Route-/Slot-/Layout-Guards laufen fail-fast.
|
|
3. **Security + Scope absichern**
|
|
- AuthZ/RBAC serverseitig prüfen.
|
|
- Tenant-Scope serverseitig prüfen.
|
|
- POST-Mutationen mit CSRF absichern.
|
|
4. **Runtime-Hygiene absichern**
|
|
- `php bin/console module:sync` laeuft reproduzierbar mit standardisierter Step-Summary.
|
|
- Keine First-party CLI-Warnings/Notices/Deprecations; Vendor-Rauschen wird nur gezaehlt/reportet.
|
|
5. **Testbarkeit und Gates**
|
|
- Architektur- und Domain-Tests für neue Logik ergaenzen.
|
|
- `phpunit` und `phpstan` als Pflicht-Gates gruen.
|
|
6. **Daten- und Betriebsfaehigkeit**
|
|
- Schema-/Datenänderungen für Bestandsinstallationen idempotent in `db/updates/*.sql`.
|
|
- Logs/Audit ohne unredacted PII/Secrets.
|
|
|
|
## Derzeit Out of Scope
|
|
|
|
- Eigener DB-Server oder Netzwerk-Microservice je Modul.
|
|
- Externe Drittanbieter-Module mit Legacy-Kompatibilitaet.
|
|
|
|
## Verfügbare Core-Services für Module
|
|
|
|
JS-seitig:
|
|
|
|
- Confirm-Dialog (`confirmDialog`)
|
|
- Async-Flash (`showAsyncFlash`)
|
|
- DOM-Utilities (`app-dom.js`)
|
|
- CSRF-Metadaten über `data-csrf-key` / `data-csrf-token`
|
|
|
|
PHP-seitig:
|
|
|
|
- Guard (`MintyPHP\\Support\\Guard`)
|
|
- SessionStore (`MintyPHP\\Http\\SessionStoreInterface`)
|
|
- Flash (`MintyPHP\\Support\\Flash`)
|
|
- DI-Container (`MintyPHP\\App\\AppContainer`)
|
|
- Modul-Contracts (`LayoutContextProvider`, `SessionProvider`, `SearchResourceProvider`)
|