Status: active Runtime baseline: Docker Compose + PHP 8.3
docker compose up -d
docker compose ps
docker exec core-php-1 php -v
docker exec core-php-1 php src/bin/psfs listExpected markers:
core-php-1isUpphp src/bin/psfs listprints PSFS commands (psfs:migrate,psfs:queue:*,psfs:swoole:*)
docker exec core-php-1 php vendor/bin/phpunit --no-coverage --filter '/(AuthApiTest|RequestResponseSecurityContractTest)/'Expected marker: OK with tests executed.
# Start
docker compose up -d
# Stop
docker compose stop
# Full teardown (containers + networks)
docker compose downdocker exec core-php-1 composer install --no-interaction --prefer-dist
docker exec core-php-1 composer audit --no-interactiondocker exec core-php-1 php scripts/security/hardening_gate.php
docker exec core-php-1 php scripts/security/quality_gate.php# CI workflow emulation
act push --container-architecture linux/amd64Important: queue jobs must be implemented and discoverable by JobRegistry before dispatching.
docker exec core-php-1 php src/bin/psfs psfs:queue:dispatch --code=<job_code> --payload='{"k":"v"}'
docker exec core-php-1 php src/bin/psfs psfs:queue:work --queue=<queue_name> --max-jobs=10 --stop-when-empty=1
docker exec core-php-1 php src/bin/psfs psfs:queue:run-parallel --queue=<queue_name> --workers=2 --stop-when-empty=1docker exec core-php-1 php src/bin/psfs psfs:swoole:checkdocker exec core-php-1 php src/bin/psfs psfs:swoole:start --host=0.0.0.0 --port=8080
docker exec core-php-1 php src/bin/psfs psfs:swoole:status
docker exec core-php-1 php src/bin/psfs psfs:swoole:reload
docker exec core-php-1 php src/bin/psfs psfs:swoole:stop- Keep Docker as execution baseline for consistency with project contracts.
- Use
--no-coveragefor local quick feedback. - Prefer filtered tests during iterative work; run broader suites before merge.
- Priority path is Redis when available.
- File queue is the persistent fallback.
- Sync queue remains test-focused and in-process only.
docker exec core-php-1 php src/bin/psfs psfs:deploy:projectUse deploy command when you need to regenerate document root + route hydration in one path.
| Symptom | Likely cause | Fix command |
|---|---|---|
Queue job "..." is not registered |
No queue job class implementing QueueJobInterface::code() discovered by registry |
Implement/register job, then rerun dispatch (psfs:queue:dispatch) |
Module without DB configuration, skipping process on migrate |
Target module lacks Config/ DB setup |
Ensure module config exists, then rerun psfs:migrate |
psfs:swoole:check reports missing runtime requirement |
Missing extension/config in image | Rebuild/use image variant with required runtime extension |
Security gate status block |
must-pass test failed or blocking finding exists | Run failing test filter + inspect security/contracts/findings.json |
| PHPUnit exits with xdebug coverage warning | Coverage mode expected by config | Run with --no-coverage for local fast run |