Context
PR #77 lands a PR-time compat-diff gate against a pinned v2 baseline. The canonical cell (noble/x86_64/8.4) currently goes red because our phpup install returns empty for ~12 ini keys per fixture that v2 emits via stock upstream defaults. See the sticky compat-report comment on #77 for the exact per-fixture list.
These are pre-existing gaps in internal/compose, not regressions in #77. PR #77 deliberately did NOT add blanket allowlist kind: ignore entries to mask them.
Gaps surfaced by the gate
Stock PHP defaults (v2 ships these via Ondrej's php.ini-production):
expose_php = 1log_errors = 1max_input_time = -1session.save_handler = filessession.gc_maxlifetime = 1440
OPcache defaults (v2's configs/ini/jit.ini fragment — see compat-matrix.md §2.3):
opcache.enable = 1opcache.enable_cli = 0opcache.memory_consumption = 128opcache.revalidate_freq = 2opcache.validate_timestamps = 1opcache.jit = 1235opcache.jit_buffer_size = 256M (x86_64) / 128M (aarch64, per compat-matrix §2.4)
Xdebug defaults under coverage: xdebug (v2's configs/ini/xdebug.ini, §2.2):
xdebug.mode = coveragexdebug.start_with_request = default
Scope suggestion
Likely a compose-layer change in internal/compose to ship the stock php.ini-production as the base SAPI ini, plus an opcache-loaded gate that overlays the jit.ini fragment and an xdebug-loaded gate that overlays xdebug.ini.
Acceptance
- Canonical cell
noble/x86_64/8.4 in ci.yml::pipeline goes green without any allowlist suppression compat-golden-refresh.yml weekly run continues to show zero drift- Documented in
docs/compat-matrix.md if any subset is intentionally NOT replicated (with reason:)
Context
PR #77 lands a PR-time compat-diff gate against a pinned v2 baseline. The canonical cell (noble/x86_64/8.4) currently goes red because our
phpup installreturns empty for ~12 ini keys per fixture that v2 emits via stock upstream defaults. See the sticky compat-report comment on #77 for the exact per-fixture list.These are pre-existing gaps in
internal/compose, not regressions in #77. PR #77 deliberately did NOT add blanket allowlistkind: ignoreentries to mask them.Gaps surfaced by the gate
Stock PHP defaults (v2 ships these via Ondrej's
php.ini-production):expose_php=1log_errors=1max_input_time=-1session.save_handler=filessession.gc_maxlifetime=1440OPcache defaults (v2's
configs/ini/jit.inifragment — see compat-matrix.md §2.3):opcache.enable=1opcache.enable_cli=0opcache.memory_consumption=128opcache.revalidate_freq=2opcache.validate_timestamps=1opcache.jit=1235opcache.jit_buffer_size=256M(x86_64) /128M(aarch64, per compat-matrix §2.4)Xdebug defaults under
coverage: xdebug(v2'sconfigs/ini/xdebug.ini, §2.2):xdebug.mode=coveragexdebug.start_with_request=defaultScope suggestion
Likely a compose-layer change in
internal/composeto ship the stockphp.ini-productionas the base SAPI ini, plus an opcache-loaded gate that overlays thejit.inifragment and an xdebug-loaded gate that overlaysxdebug.ini.Acceptance
noble/x86_64/8.4inci.yml::pipelinegoes green without any allowlist suppressioncompat-golden-refresh.ymlweekly run continues to show zero driftdocs/compat-matrix.mdif any subset is intentionally NOT replicated (withreason:)