chore(agents): implement v2 hardening and enforcement-ready QA

This commit is contained in:
2026-04-01 19:41:56 +02:00
parent 7121732fcf
commit dba589b495
31 changed files with 1349 additions and 78 deletions

View File

@@ -0,0 +1,43 @@
# Gitea Required Checks (Phase 1: enforcement-ready)
Letzte Aktualisierung: 2026-04-01
## Ziel
QA-Pflichtchecks fuer CoreCore in Gitea vorbereiten, ohne sie sofort als Merge-Blocker zu aktivieren.
## Enthaltene Basis
- Beispiel-Workflow: `/.gitea/workflows/qa-required.yaml`
- Pflicht-Gate-Einstieg: `/bin/qa-required.sh`
- Policy-Quelle: `/.agents/checks/enforcement-policy.json`
## Was `qa-required` abdeckt
`bin/qa-required.sh` fuehrt die aktuell blockenden Gates aus:
- `QG-001` PHPUnit
- `QG-002` PHPStan
- `QG-003` Architecture Core Contract
- `QG-006` PHP Style Check
- `QG-008` Docs link integrity
- `QG-009` Codex skills sync
## Phase-1 Setup (noch nicht blockend)
1. Sicherstellen, dass der Gitea-Runner Docker + Docker Compose ausfuehren darf.
2. Workflow-Datei nach `.gitea/workflows/qa-required.yaml` uebernehmen.
3. PR gegen `main` oeffnen und pruefen, dass Job `qa-required` gruen laeuft.
4. Branch Protection noch **nicht** auf "required" setzen.
## Phase-2 Aktivierung (blockend)
1. Branch-Protection fuer `main` aktivieren.
2. Statuscheck `qa-required` als required markieren.
3. Optional: weitere Jobs ergaenzen (z. B. nightly/extended Checks), aber nur `qa-required` blockend setzen.
## Hinweise
- `QG-005` (Browser-Smoke) bleibt manuell/non-blocking.
- `QG-007` (composer-unused) bleibt periodisch/non-blocking.
- Fuer lokale Ausfuehrung: `bin/dev qa-required` bzw. `bin/dev qa-extended`.

View File

@@ -1,6 +1,6 @@
# Dokumentation
Letzte Aktualisierung: 2026-03-19
Letzte Aktualisierung: 2026-04-01
Diese Dokumentation ist nach dem Diataxis-Modell in vier Quadranten gegliedert: Tutorials zum Lernen, How-to Guides zum Nachschlagen von Aufgaben, Explanation zum Verstehen und Reference zum Nachschlagen von Fakten.
@@ -57,6 +57,8 @@ Diese Dokumentation ist nach dem Diataxis-Modell in vier Quadranten gegliedert:
- Tages-Workflow fuer Entwicklung und Checks.
- `/docs/howto-modul-erstellen.md`
- Neues Modul erstellen: Scaffold, Manifest, Route, Permission, UI-Slot, Test.
- `/docs/howto-gitea-required-checks.md`
- Gitea-Workflow fuer `qa-required` vorbereiten (Phase 1 enforcement-ready).
- `/docs/howto-dokumentation-erweitern.md`
- Regeln fuer konsistente, wachsende Doku.

View File

@@ -97,14 +97,14 @@ Der Docker-Scheduler-Service ruft dieses Kommando automatisch alle 60 Sekunden a
### module:validate
Validiert Manifest, Klassen und Struktur eines Moduls. Prueft Namespace-Konventionen, Interface-Implementierungen, Permission-Key-Formate und Verzeichnisstruktur.
Validiert Manifest, Klassen und Struktur eines Moduls. Prueft JSON-Schema-Compliance des `module.php`, Namespace-Konventionen, Interface-Implementierungen, Permission-Key-Formate und Verzeichnisstruktur.
```bash
docker compose exec php php bin/console module:validate <module-id>
docker compose exec php php bin/console module:validate --all
```
`--all` validiert alle aktiven Module auf einmal.
`--all` validiert alle Module auf Disk (`modules/*/module.php`) auf einmal.
### make:module
@@ -143,9 +143,12 @@ bin/dev down
bin/dev logs [service]
bin/dev console module:sync
bin/dev qa
bin/dev qa-required
bin/dev qa-extended
```
`bin/dev console ...` delegiert intern auf `docker compose exec -T php php bin/console ...`.
`bin/dev qa` ist ein Alias fuer `bin/dev qa-required`.
## Neue Kommandos anlegen

View File

@@ -68,6 +68,8 @@ Kurze Definition of Done vor Merge.
## Qualitätschecks
- [ ] `bin/qa-required.sh` (QG-001/002/003/006/008/009, blocking)
- [ ] optional: `bin/qa-extended.sh` (inkl. QG-004/005/007 als non-blocking Signale)
- [ ] `docker compose exec php vendor/bin/phpunit` zweimal hintereinander in identischer Umgebung (beide Runs gruen)
- [ ] `docker compose exec php vendor/bin/phpstan analyse -c phpstan.neon --no-progress`
- [ ] `docker compose exec php vendor/bin/phpunit tests/Architecture/CoreStarterkitContractTest.php`
@@ -76,8 +78,8 @@ Kurze Definition of Done vor Merge.
- [ ] Runtime-Sync erzeugt Step-Summary (`migrate`, `permissions-sync`, `build`, `assets-sync`) und `vendor_warnings_ignored=<n>`
- [ ] Keine First-party CLI-Warnings/Notices/Deprecations im Runtime-Sync (Vendor-Warnings sind nur temporaer toleriert und muessen gezaehlt sichtbar sein)
- [ ] bei Docs-/Skills-Aenderungen: `docker compose exec php vendor/bin/phpunit tests/Architecture/CodexSkillReferenceContractTest.php`
- [ ] bei Docs-/Skills-Aenderungen: `bin/docs-link-check.sh` (scannt standardmaessig ohne `.agents/runs/**`)
- [ ] bei Docs-/Skills-Aenderungen: `bin/codex-skills-sync.sh --check`
- [ ] `bin/docs-link-check.sh` (QG-008, scannt standardmaessig ohne `.agents/runs/**`)
- [ ] `bin/codex-skills-sync.sh --check` (QG-009)
- [ ] bei JS-Änderungen: Browser-Smoke mit DevTools-Console (keine JS-Errors)
- [ ] bei API-Änderungen: `docs/openapi.yaml` aktualisiert
- [ ] Struktur-Gates geprüft (`rg` für Instanziierungsregeln)

View File

@@ -11,6 +11,18 @@ Verbindlicher Contract fuer `modules/*/module.php`, damit Module zur Runtime det
Dieses Dokument ist die kanonische (normative) Quelle fuer Manifest-, Runtime- und Guard-Regeln des Modul-Systems.
`/docs/reference-extension-readiness.md` referenziert diesen Contract und dupliziert keine Felddefinitionen.
## JSON-Schema-Enforcement
Zusatz zur Laufzeitvalidierung:
- JSON-Schema-Datei: `/.agents/contracts/module-manifest.schema.json`
- Laufzeit-Check bei Modul-Laden: `ModuleManifestSchemaValidator`
- CLI-Check: `php bin/console module:validate <module-id|--all>`
Ein Manifest muss sowohl:
1. das JSON-Schema erfuellen als auch
2. die Laufzeit-Contracts (Klassen/Interfaces/Namespace) bestehen.
## Namespace-Konvention
Alle PHP-Klassen eines Moduls muessen den Namespace `MintyPHP\Module\<Name>\*` verwenden.