Problem
North Star 1 has a single presenter entry point (#1845 make north-star1-verify, phpc doctor --gates). North Star 2 (#1492) still requires contributors to remember a scattered ladder:
php script/bootstrap-inventory.php --check
make bootstrap-wave-check / BOOTSTRAP_LIB_SPINE_SMOKE=1 make bootstrap-selfhost-lib-spine-smoke
BOOTSTRAP_LIB_SPINE_VM_SMOKE=1 make bootstrap-selfhost-lib-spine-vm-smoke (#1846)
BOOTSTRAP_M3_HELLOWORLD_STRICT=1 ./script/bootstrap-selfhost-helloworld-probe.sh (#1493)
BOOTSTRAP_LOOP_PROBE_GATE=1 ./script/bootstrap-loop-probe.sh --dry-run (#1498)
Before M3/M4 milestones close, there is no one command for demos or pre-merge self-host sanity.
Scope
- Add
script/north-star2-verify.sh + make north-star2-verify mirroring #1845 structure:
- Step 1:
phpc doctor --gates (or dedicated --selfhost flag) — list self-host env vars
- Step 2: inventory
--check (#765)
- Step 3:
bootstrap-wave-check (M0–M2 probes)
- Step 4 (LLVM): spine native link + VM
-r smoke (#1846)
- Step 5 (LLVM, opt-in tail): M3 strict probe + M4 loop
--dry-run
- Flags:
--require-llvm, --skip-llvm-tail (same UX as north-star1)
test/unit/NorthStar2VerifyScriptTest.php asserts script + Makefile wiring
- Document in
docs/bootstrap-selfhost.md, docs/GETTING-STARTED.md, README North Star 2 section
Out of scope: flipping BOOTSTRAP_M3_HELLOWORLD_STRICT_GATE default-on — tracked in #1866.
Acceptance criteria
Dependencies
Verify (local / Docker only)
make docker-build-22
docker run --rm -v "$(pwd):/compiler" -w /compiler php-compiler:22.04-dev make north-star2-verify
# Without LLVM on host:
make north-star2-verify # expects skip message for LLVM tail
Do not require GitHub Actions. Optional cloud mirror only per #394 policy.
Links
Problem
North Star 1 has a single presenter entry point (#1845
make north-star1-verify,phpc doctor --gates). North Star 2 (#1492) still requires contributors to remember a scattered ladder:php script/bootstrap-inventory.php --checkmake bootstrap-wave-check/BOOTSTRAP_LIB_SPINE_SMOKE=1 make bootstrap-selfhost-lib-spine-smokeBOOTSTRAP_LIB_SPINE_VM_SMOKE=1 make bootstrap-selfhost-lib-spine-vm-smoke(#1846)BOOTSTRAP_M3_HELLOWORLD_STRICT=1 ./script/bootstrap-selfhost-helloworld-probe.sh(#1493)BOOTSTRAP_LOOP_PROBE_GATE=1 ./script/bootstrap-loop-probe.sh --dry-run(#1498)Before M3/M4 milestones close, there is no one command for demos or pre-merge self-host sanity.
Scope
script/north-star2-verify.sh+make north-star2-verifymirroring #1845 structure:phpc doctor --gates(or dedicated--selfhostflag) — list self-host env vars--check(#765)bootstrap-wave-check(M0–M2 probes)-rsmoke (#1846)--dry-run--require-llvm,--skip-llvm-tail(same UX as north-star1)test/unit/NorthStar2VerifyScriptTest.phpasserts script + Makefile wiringdocs/bootstrap-selfhost.md,docs/GETTING-STARTED.md, README North Star 2 sectionOut of scope: flipping
BOOTSTRAP_M3_HELLOWORLD_STRICT_GATEdefault-on — tracked in #1866.Acceptance criteria
make north-star2-verifyexits 0 on harness with LLVM 9 (Dockerphp-compiler:22.04-dev)phpc doctor --gatesmentionsmake north-star2-verify(extend DevEx: phpc doctor --gates lists north-star1-verify presenter steps (#1845 phase 2) #1857](DevEx: phpc doctor --gates lists north-star1-verify presenter steps (#1845 phase 2) #1857) pattern for NS2)Dependencies
Verify (local / Docker only)
Do not require GitHub Actions. Optional cloud mirror only per #394 policy.
Links
docs/self-host-target.md