Skip to content

CI: SESSIONS_WEB_AOT_SMOKE_GATE opt-in in ci-local after #1891 lands #1921

@PurHur

Description

@PurHur

Problem

#1891 ✅ landed PHPUnit + script/examples-aot-smoke.sh coverage for 005-SessionsWeb two-request AOT execute (cookie jar + $_SESSION flash). Today there is no ci-local hook — contributors only discover regressions via manual SESSIONS_WEB_AOT_SMOKE_GATE=1 runs.

VM session curls are default-on (#1887 ✅, #1894 ✅). AOT session persistence needs the same staged gate pattern as MiniWebApp execute (#676) and M3 strict (#1866).

Status (May 2026): Blocker #1891 is closed — this issue is ready to implement (wire opt-in gate only).

Goal

  1. Add SESSIONS_WEB_AOT_SMOKE_GATE="${SESSIONS_WEB_AOT_SMOKE_GATE:-0}" to script/ci-defaults.env
  2. ci_run_sessions_web_aot_smoke() in script/ci-common.sh — runs after examples-aot-smoke.sh in llvm tail only
  3. Wire into script/ci-local.sh (skip when LLVM missing — exit 0 like other aot smokes)
  4. Document in docs/local-ci-matrix.md; cross-link CI: Default SESSIONS_WEB_AOT_SMOKE_GATE=1 in ci-local after #1921 green #1923 for default-on flip

Implementation hints

Piece Path Notes
Env script/ci-defaults.env Default 0 until harness stable on all hosts
Hook script/ci-common.sh Mirror ci_run_examples_aot_smoke()
Smoke script/examples-aot-smoke.sh EXAMPLES_AOT_SMOKE_ONLY=005 slice (see #2013 pattern for 006)
Test test/aot/SessionsWebAotExecuteTest.php From #1891@group llvm
Cookie test/support/ or inline in smoke Reuse jar helper from #1891
Session dir PHP_COMPILER_SESSION_DIR Isolate per run under /tmp
Doctor lib/Doctor.php (#1903) List gate; remove “blocked by #1891” when wired
Matrix test test/unit/CiScriptsTest.php Assert env default + hook name

Wire order in ci-local.sh

examples-aot-smoke (000–004, 006…) → SESSIONS_WEB_AOT_SMOKE_GATE=1 block → deploy smokes

Verify (host)

SESSIONS_WEB_AOT_SMOKE_GATE=1 ./script/ci-local.sh --filter SessionsWebAot
EXAMPLES_AOT_SMOKE_ONLY=005 ./script/examples-aot-smoke.sh

Verify (harness — required)

./script/docker-exec.sh -- bash -lc 'source script/php-env.sh && SESSIONS_WEB_AOT_SMOKE_GATE=1 ./script/ci-local.sh --filter SessionsWebAot'
make test-harness   # full gate before merge

Do not use raw docker run -v "$(pwd):/compiler" on Runforge (#272 ✅).

Acceptance criteria

Dependencies

Links

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions