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.1 KiB
2.1 KiB
Quality Gates
Pflicht-Gates
docker compose exec php vendor/bin/phpunitdocker compose exec php vendor/bin/phpstan analyse -c phpstan.neon --no-progressdocker compose exec php vendor/bin/phpunit tests/Architecture/CoreStarterkitContractTest.phpdocker compose exec php vendor/bin/php-cs-fixer fix --config=tools/php-cs-fixer/.php-cs-fixer.dist.php --dry-run --diff --verbosebin/docs-link-check.shbin/codex-skills-sync.sh --check
Policy-Hinweis:
- Verbindliche Enforcement-Einteilung (
required,manual_non_blocking,periodic_non_blocking) wird zentral in/.agents/checks/enforcement-policy.jsongepflegt.
Struktur-Gates (schnell)
(rg 'new\s+[^\s(]+Factory\(' core/Service || true) | wc -l
(rg --glob '!**/*Factory.php' 'new\s+[^\s(]+(Service|Gateway|Repository)\(' core/Service || true) | wc -l
(rg "\b(accessServicesFactory|directoryServicesFactory|userServicesFactory|authServicesFactory|tenantServicesFactory|settingServicesFactory|userRepositoryFactory|authRepositoryFactory|authGatewayFactory)\(" pages core templates web || true) | wc -l
(rg -n 'new\s+[^\s(]+(Service|Gateway|Repository)\(' pages -g '*.php' || true) | wc -l
(rg -n '\bDB::' pages -g '*.php' || true) | wc -l
(rg -n 'app\([^\n]*Factory::class\)->create' pages/admin -g '*.php' || true) | wc -l
(rg -n 'Factory::class' pages/admin -g '*.php' || true) | wc -l
(rg -n 'ApiResponse::readJsonBody\(' pages/api/v1 -g '*.php' || true) | wc -l
Erwartung: jeweils 0.
JS-Scope
- Bei JS-Änderungen Browser-Smoke mit DevTools-Console durchführen.
- Erwartung: keine neuen JS-Errors.
Docs-/Skills-Gates (schnell)
bin/docs-link-check.sh- prüft Doku-Links in
README.md,docs/**,.agents/skills/**und.agents/** .agents/runs/**ist standardmäßig ausgeschlossen (historische Artefakte)
- prüft Doku-Links in
bin/docs-drift-check.sh- prüft bekannte Legacy-Drifts (entfernte Config-Pfade/Constants, obsolete Search-Marker)
bin/codex-skills-sync.sh --check- prüft Drift zwischen Repo-Skills und
~/.codex/skills
- prüft Drift zwischen Repo-Skills und
Berichtspflicht
- Bei jedem Gate klar angeben:
passed/failed/not run. - Bei
failedden blocker explizit benennen.