# 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`)
