opcache.validate_timestamps=0 caused stale bytecode after code changes —
containers needed a full restart to pick up edits. For dev, OPcache is now
disabled entirely. php.ini is mounted as a volume in all app services so
config changes take effect with a simple `docker compose up -d`, no rebuild.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
PHPUnit config (phpunit.dist.xml, bin/phpunit, bootstrap.php), PHP CS
Fixer config, .editorconfig. Separate .env.dev/.env.test templates.
Ollama tunnel setup script. Architecture and plan docs. Updated
application-layer unit tests to match current service signatures.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Console commands: CreateUser (interactive), BackupCommand, RotateLogsCommand.
Migrations 20260514: initial schema for app/logs schemas.
Config: register new bundles, Doctrine schema filter, Kernel micro-kernel
adjustments, deleted unused api.yaml route file and www.conf override.
Application service and API controller updates for the full article lifecycle.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Unix socket volume was root-owned, FPM running as uid 1000 couldn't
create the socket. TCP app:9000 works without privilege changes and
has negligible performance difference in a local Docker network.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Replaces TCP app:9000 with a shared Unix socket volume, adds domain
with automatic Let's Encrypt TLS, and exposes ports 80/443 on Caddy.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>