chore(agents): implement v2 hardening and enforcement-ready QA
This commit is contained in:
43
docs/howto-gitea-required-checks.md
Normal file
43
docs/howto-gitea-required-checks.md
Normal 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`.
|
||||
@@ -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.
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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.
|
||||
|
||||
Reference in New Issue
Block a user