Rename the top-level lib/ directory to core/ so the project root immediately communicates which code is core platform and which lives in modules/. PHP namespaces (MintyPHP\*) are unchanged — only the Composer PSR-4 path mapping moves from lib/ to core/. Module-internal lib/ directories (modules/*/lib/) are untouched. Updated across the full stack: - composer.json PSR-4 mapping - bootstrap entry points (web/index.php, bin/*, tests/bootstrap.php) - tooling configs (phpstan.neon, phpunit.xml, php-cs-fixer) - 26 architecture contract tests - enforcement-policy, guard-catalog, quality-gates - all documentation (CLAUDE.md, README, 25 docs/, .agents/skills/) - bin/qa-extended.sh search paths - .claude/settings.local.json permission paths Workflow: .agents/runs/CORE-LIB-RENAME-001/ (Analyst → Planner → Executor → Code Review (4 findings fixed) → Security Review → Acceptance Test → Finalizer) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2.2 KiB
2.2 KiB
Code Review Checklist
Use this checklist for the Code Reviewer role.
Guard IDs live in .agents/checks/guard-catalog.json (guards where reviewer = code).
Architecture & Conventions
GR-CORE-003request input via requestInput(); no $_POST/$_GET/$_FILESGR-CORE-007OpenAPI updated when API endpoints changedGR-CORE-010DB schema changes shipped as idempotent scripts in db/updates/GR-CORE-011new settings in DB settings table, not config filesGR-CORE-012successful mutating POSTs use PRG pattern; flash before redirect
Testing
GR-TEST-001new/changed Service/Gateway logic has PHPUnit tests (happy + edge case)GR-TEST-002new code uses constructor injection; no hidden global state
UI (skip if backend-only)
GR-UI-014new views/components handle loading, empty, error, success statesGR-UI-LISTlist/grid standards preserved (row actions, page size, initStandardListPage)GR-UI-DETAILdetail page contracts, shared partials, no inline confirm, layout systemGR-UI-A11Yno a11y regression; new components use semantic HTML, keyboard-operableGR-UI-I18Nall visible text uses t(); keys present in all language filesGR-UI-REUSEexisting JS/CSS checked before adding new functions/rules
Quality Gates
- required always (per
enforcement-policy.json):QG-001,QG-002,QG-003,QG-006,QG-008,QG-009 QG-004structural checks reported when relevantQG-005JS smoke for JS-touching changesQG-007composer-unused is periodic / non-blocking
Security Review Checklist
Use this checklist for the Security Reviewer role.
Guard IDs live in .agents/checks/guard-catalog.json (guards where reviewer = security).
Security
GR-SEC-001CSRF token verified on every POST before processingGR-SEC-002no PII or secrets in logs/audit metadataGR-SEC-003all SQL via Repository with prepared statementsGR-SEC-004no external CDN or remote asset loadingGR-SEC-005encryption only via core/Support/Crypto.phpGR-SEC-006file uploads in storage/ only; authz-gated serving; MIME validatedGR-SEC-007API requests do not start sessionsGR-SEC-008authorization enforced server-sideGR-SEC-009tenant scope enforced server-side; tenant_id filtering on all scoped queries