Problem
#2101 will wire opt-in THROWSWEB_AOT_LINK_GATE / THROWSWEB_AOT_SMOKE_GATE for examples/007-ThrowsWeb (pattern from 006 #2011 / #2012).
Without a follow-up flip, throw/catch AOT regressions stay manual until someone runs phpc build by hand — unlike 006 execute smoke which is default-on on master.
Goal
When #2101 PHPUnit + harness curls are green:
script/ci-defaults.env — THROWSWEB_AOT_LINK_GATE=1, THROWSWEB_AOT_SMOKE_GATE=1 (default-on)
script/ci-local.sh llvm group runs link + native execute without extra env
docs/local-ci-matrix.md + phpc doctor --gates document opt-out (=0 for LLVM-less hosts)
Implementation hints
| Piece |
Path |
Notes |
| Defaults |
script/ci-defaults.env |
Mirror FILE_UPLOAD_WEB_AOT_SMOKE_GATE flip |
| CI wire |
script/ci-local.sh, script/ci-common.sh |
After ThrowsWebAot* tests green |
| Doctor |
lib/Doctor.php |
Row exists via #2102 — update default column |
| Docs |
examples/007-ThrowsWeb/README.md |
Gate table default 1 |
Verify before flip
THROWSWEB_AOT_LINK_GATE=1 THROWSWEB_AOT_SMOKE_GATE=1 ./script/ci-local.sh \
--filter 'ThrowsWebAot'
docker run --rm -v "$(pwd):/compiler" -w /compiler php-compiler:22.04-dev \
env THROWSWEB_AOT_LINK_GATE=1 THROWSWEB_AOT_SMOKE_GATE=1 ./script/ci-local.sh \
--filter ThrowsWebAot
Acceptance criteria
Dependencies
- #2101 — opt-in gates + tests land first
- #195 / #57 / #2084 — language + PHPTs
- #2093 — VM smoke before AOT default-on
Links
- #2104 —
examples-aot-smoke.sh 007 slice
- #2124 — deploy smoke (later)
- ROADMAP #78
Problem
#2101 will wire opt-in
THROWSWEB_AOT_LINK_GATE/THROWSWEB_AOT_SMOKE_GATEforexamples/007-ThrowsWeb(pattern from 006 #2011 / #2012).Without a follow-up flip,
throw/catchAOT regressions stay manual until someone runsphpc buildby hand — unlike 006 execute smoke which is default-on onmaster.Goal
When #2101 PHPUnit + harness curls are green:
script/ci-defaults.env—THROWSWEB_AOT_LINK_GATE=1,THROWSWEB_AOT_SMOKE_GATE=1(default-on)script/ci-local.shllvm group runs link + native execute without extra envdocs/local-ci-matrix.md+phpc doctor --gatesdocument opt-out (=0for LLVM-less hosts)Implementation hints
script/ci-defaults.envFILE_UPLOAD_WEB_AOT_SMOKE_GATEflipscript/ci-local.sh,script/ci-common.shThrowsWebAot*tests greenlib/Doctor.phpexamples/007-ThrowsWeb/README.md1Verify before flip
Acceptance criteria
./script/ci-local.shruns 007 AOT link+execute when LLVM present (or skips with clear message)THROWSWEB_AOT_*_GATE=0documented for fast iteration.github/workflows/*changesDependencies
Links
examples-aot-smoke.sh007 slice