Skip to content

CI: BOOTSTRAP_M3_COMPILE_SMOKE_STRICT_GATE opt-in in ci-local after #1937 #1968

Description

@PurHur

Problem

#1493 ✅ closed strict HelloWorld native emit. The next M3 slice is #1937 — native emit for compiler_compile_smoke (real CompilerJITAOT path beyond one-line echo).

Today BOOTSTRAP_M3_HELLOWORLD_STRICT_GATE exists (#1866 follow-up), but there is no ci-local hook for a compile-smoke strict probe once #1937 lands. Contributors must remember script/bootstrap-selfhost-compile-smoke-probe.sh manually during M3→M4 work.

Goal

After #1937 probe exits 0 on harness:

  1. Add BOOTSTRAP_M3_COMPILE_SMOKE_STRICT_GATE to script/ci-defaults.env (default 0)
  2. In script/ci-common.sh, when gate =1 and LLVM ready, run compile-smoke strict probe (wrap existing script — no duplicate logic)
  3. Document in docs/local-ci-matrix.md and phpc doctor --gates
  4. Follow-up: default =1 in ci-local.sh after stable (sibling to CI: Default BOOTSTRAP_M3_HELLOWORLD_STRICT_GATE=1 in ci-local after #1493 #1866)

Implementation hints

Piece Path Notes
Probe script/bootstrap-selfhost-compile-smoke-probe.sh (new or extend helloworld probe) Env BOOTSTRAP_M3_COMPILE_SMOKE_STRICT=1
Fixture test/selfhost/compiler_compile_smoke/main.php Already in docs/bootstrap-selfhost.md
CI script/ci-common.sh ci_run_bootstrap_m3_compile_smoke_strict() After ci_run_bootstrap_m3_helloworld_strict() block
JIT policy lib/JIT/SelfHostBuiltinPolicy.php May need allowlist entries for compile-smoke symbols

Suggested probe contract

BOOTSTRAP_M3_COMPILE_SMOKE_STRICT=1 ./script/bootstrap-selfhost-compile-smoke-probe.sh
# exit 0: native binary emits compile-smoke without Zend bin/compile.php fallback

Acceptance criteria

Verification (local / Docker only)

make docker-build-22
BOOTSTRAP_M3_COMPILE_SMOKE_STRICT_GATE=1 ./script/ci-local.sh
# Docker:
docker run --rm -v "$(pwd):/compiler" -w /compiler php-compiler:22.04-dev \
  env BOOTSTRAP_M3_COMPILE_SMOKE_STRICT_GATE=1 ./script/ci-local.sh

No GitHub Actions (#394 ✅).

Dependencies

Links

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions