Upgrades preauth from Symfony 7.4 → 8.1 and removes the now-redundant runtime/frankenphp-symfony package — symfony/runtime 8.1 handles FrankenPHP worker mode natively via its built-in FrankenPhpWorkerRunner.
Full plan with per-phase results and rollback notes: docs/symfony-8.1-upgrade-plan.md
The removed package restarted the worker after FRANKENPHP_LOOP_MAX requests (default 500). The built-in runner doesn't, so we restore it natively:
Caddyfile: global frankenphp block with max_requests {$MAX_REQUESTS} — per-thread graceful restarts, other threads keep serving
Dockerfile: ARG/ENV MAX_REQUESTS=500 bakes in the same default as the old package, overridable at build time or runtime (-e MAX_REQUESTS=N, 0 = unlimited)
Stock FRANKENPHP_CONFIG env var remains available as a full-configuration escape hatch
docs (commits 3f1778c, af4d2a4, baf976a)
Upgrade plan document with per-phase results recorded
Covers deprecation sweep gate, composer.json constraint bumps to 8.1.*,
and removal of runtime/frankenphp-symfony (FrankenPHP worker mode is
handled natively by symfony/runtime in 8.x). Includes config recipe
re-sync, Docker/CI notes, phased rollout with rollback, and open
questions (kernel-reset audit for worker mode).
- All symfony/* constraints bumped 7.4.* -> 8.1.* (resolved to 8.1.2-8.1.6)
- Removed runtime/frankenphp-symfony: symfony/runtime 8.1 handles
FrankenPHP worker mode natively via FrankenPhpWorkerRunner; deleted
the extra.runtime class override so GenericRuntime auto-detects it
- phpunit 13.3.2, twig 3.28, otphp 11.5 ride along
- Deprecation sweep on 7.4 was clean (failOnDeprecation suite, zero hits)
- Verified: bin/console about boots on 8.1.6; 295 tests / 612 assertions
green after the bump
- Plan doc: mark Phases 0-3 + worker-mode state audit complete with
verified results; resolve open questions (all src/ services are final
readonly - no ResetInterface needed under kernel-reusing runner)
- CHANGELOG: Unreleased entries for the 8.1 bump and the
runtime/frankenphp-symfony removal (incl. FRANKENPHP_LOOP_MAX note)
- ROADMAP: current stack now Symfony 8.1; webauthn research note updated
- bin/dev.sh: correct stale PHP requirement comment
The removed runtime/frankenphp-symfony package force-restarted the
worker after FRANKENPHP_LOOP_MAX requests (default 500) - memory-leak
paranoia the built-in 8.1 runner intentionally doesn't reimplement.
Restore the behavior natively so the upgrade is a no-op operationally:
- Caddyfile: global frankenphp block with max_requests {$MAX_REQUESTS}
- per-thread graceful restarts, other threads keep serving
- Dockerfile: ARG/ENV MAX_REQUESTS=500 bakes the same default the old
package had, overridable at docker build or runtime (-e, 0 disables)
- Stock FRANKENPHP_CONFIG env var remains the full-config escape hatch
- Documented in readme env table, docs/example.env, CHANGELOG, and the
upgrade plan (phase-4 staging note now checks thread recycling)
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Upgrades preauth from Symfony 7.4 → 8.1 and removes the now-redundant
runtime/frankenphp-symfonypackage —symfony/runtime8.1 handles FrankenPHP worker mode natively via its built-inFrankenPhpWorkerRunner.Full plan with per-phase results and rollback notes:
docs/symfony-8.1-upgrade-plan.mdChanges
composer (commit
c743a1b)symfony/*constraints7.4.*→8.1.*(resolved: framework-bundle 8.1.6, twig-bundle 8.1.2, console/cache/mime/rate-limiter/runtime/uid/yaml 8.1.x)runtime/frankenphp-symfony+ theextra.runtimeclass override — the default runtime auto-detects FrankenPHP worker modeextra.symfony.require→8.1.*; ride-alongs: phpunit 13.3.2, twig 3.28, otphp 11.5worker recycle parity (commit
baf976a)FRANKENPHP_LOOP_MAXrequests (default 500). The built-in runner doesn't, so we restore it natively:Caddyfile: globalfrankenphpblock withmax_requests {$MAX_REQUESTS}— per-thread graceful restarts, other threads keep servingDockerfile:ARG/ENV MAX_REQUESTS=500bakes in the same default as the old package, overridable at build time or runtime (-e MAX_REQUESTS=N,0= unlimited)FRANKENPHP_CONFIGenv var remains available as a full-configuration escape hatchdocs (commits
3f1778c,af4d2a4,baf976a)docs/example.envdocumentMAX_REQUESTSVerification
bin/console aboutcache:clear+cache:warmuplint:container/lint:yaml/lint:twigsrc/services arefinal readonly, constructor-injected, no mutable state — safe under kernel reusemax_requests 500default viaMAX_REQUESTS(same default the old package enforced)Remaining (out of scope for this PR)
The removed runtime/frankenphp-symfony package force-restarted the worker after FRANKENPHP_LOOP_MAX requests (default 500) - memory-leak paranoia the built-in 8.1 runner intentionally doesn't reimplement. Restore the behavior natively so the upgrade is a no-op operationally: - Caddyfile: global frankenphp block with max_requests {$MAX_REQUESTS} - per-thread graceful restarts, other threads keep serving - Dockerfile: ARG/ENV MAX_REQUESTS=500 bakes the same default the old package had, overridable at docker build or runtime (-e, 0 disables) - Stock FRANKENPHP_CONFIG env var remains the full-config escape hatch - Documented in readme env table, docs/example.env, CHANGELOG, and the upgrade plan (phase-4 staging note now checks thread recycling)View command line instructions
Checkout
From your project repository, check out a new branch and test the changes.