Living ROADMAP (high-signal, phased)
Merge gates are local/Docker only β no GitHub Actions (#394 β
).
Harness-safe: make test-harness, ./script/docker-ci-local.sh, ./script/docker-exec.sh.
North star: #1492 (M3βM5 self-host)
Development focus (Jun 2026): optimize for fast M5 feedback β not north-star5-verify --strict on every PR (~1h). Daily gates: make north-star5-verify-fast (~1β2 min), make bootstrap-selfhost-vm-driver-execute-probe (~20ms). Reserve --strict for pre-merge bootstrap/gen-0/vendor-prelink PRs. Doc: docs/bootstrap-m5-fast-path.md Β· Cursor rule: .cursor/rules/m5-fast-development.mdc.
User release roadmap (next: v1.1.0 )
Meta: #8739 (reopen on tag day) Β· Latest tag: v1.0.0 (2026-05-29)
Field
Value
Target version
v1.1.0
Target window
Jul 2026 (after --full readiness green)
Theme
M5 fast-path stability for users; stdlib/JIT parity batch since v1.0.0 (enum, property hooks, preg_match JIT, spl_autoload, php-in-php helpers, nested JIT compile isolation, docs sync)
Must-ship checklist
Gate checklist
Out of scope (v1.1.0)
Bootstrap honesty tag / v2 self-host release
north-star5-verify --strict (~1h)
Full Zend parity, MCJIT execute (#98 )
Bootstrap release roadmap (future v2 / self-host honesty)
Not a tag candidate until north-star5-verify --strict is green on demand. Track progress only.
Blocker / gap
Gate
Status
Tracker
Honest spine PHP main() runtime
full-spine smoke without native shortcut
π§ partial
#8559
Compile-spine stub retirement
shrink PHP_COMPILER_SELFHOST_AOT on compile spine
π§ in progress
#1402
M3 JIT unit strict
inventory compile_driver
π§ partial
#3038
Bootstrap include_path
spine include resolution
open
#3223
php-cfg asymmetric visibility overlay
apply-patches.sh anchor
π΄ regression
#9729
Strict M5 presenter
north-star5-verify.sh --strict (~1h)
β
green (pre-merge only)
#1492
Must-ship before bootstrap tag: spine N/N honest runtime, stub retirement on compile path, no Zend in cold-boot loop β see #1492 .
Milestone status (Jun 2026 β maintainer probe 2026-06-22 )
Milestone
Gate
Status
Tracker
M0 minimal link
make bootstrap-selfhost-link
β
GREEN
#2894
M2 spine / inventory
bootstrap-inventory.php --check
π΄ stale doc
#10368 (reopened)
M2 spine coverage
check-selfhost-spine-coverage-sync.php
π΄ 1 missing
#10542 (NestedJitCompileScope.php)
M2 VM driver execute
make bootstrap-selfhost-vm-driver-execute-probe
β
GREEN
#2201
M3 HelloWorld strict
make bootstrap-selfhost-helloworld
β
GREEN (emit_path=native)
β
M3 JIT unit strict
inventory compile_driver
π§ partial
#3038
M4 full-revision
make bootstrap-selfhost-full-revision-probe
β
GREEN
#2880
M4 full ladder
make bootstrap-loop-probe
β
GREEN
#1498
M5 vendor (committed)
prelinked/bootstrap-vendor/*.o manifest
β
GREEN
3/3 object_ok
M5 spine w/o vendor/
north-star5 step 4c
β
GREEN
#3052 closed
M5 gen-0 no Zend
BOOTSTRAP_M5_NO_ZEND=1 empty build/
β
GREEN
#3053 closed
M5 vendor native rebuild
rm prelinked/*.o, no Zend fallback
β
GREEN
#3054 closed
M5 presenter (daily)
make north-star5-verify-fast
π΄ RED
#10542
M5 presenter (pre-merge)
north-star5-verify.sh --strict
β
GREEN
~1h β bootstrap PRs only
M5 honest runtime
full-spine PHP main() at runtime
π§ partial
#8559
Spine coverage sync
check-selfhost-spine-coverage-sync.php
π‘ committed doc OK; live regen finds gap
#10542
Daily verify (fast β use during development):
make bootstrap-selfhost-vm-driver-execute-probe # ~20ms
make north-star5-verify-fast # ~1β2 min
./script/ci-fast.sh # NORTH_STAR5_VERIFY_FAST_GATE=1 default
Pre-merge bootstrap verify (strict β sparingly):
./script/docker-exec.sh -- bash -lc ' ./script/north-star5-verify.sh --strict'
Next 5 worker priorities (parallel-safe)
Inventory doc regen β #10368 (release-blocker β quick gate red; regen + commit)
Spine: NestedJitCompileScope β #10542 (release-blocker β north-star5-fast red after Fix AOT smoke: nested JIT helper compile isolation (#10343)Β #10498 )
Compile-spine stub retirement β #1402 / docs/bootstrap-m5-fast-path.md
Honest spine PHP main() runtime β #8559
Full bundle inventory flake β #10531 (secondary β after P0 green)
Parity backlog themes (Jun 2026)
Repro (roadmap health check)
docker info > /dev/null
./script/docker-exec.sh -- bash -lc ' php script/bootstrap-inventory.php --check'
./script/docker-exec.sh -- bash -lc ' make bootstrap-selfhost-vm-driver-execute-probe'
./script/docker-exec.sh -- bash -lc ' make north-star5-verify-fast'
./script/docker-exec.sh -- bash -lc ' make bootstrap-loop-probe'
Done when (living doc)
Verification (local / Docker only)
./script/docker-exec.sh -- bash -lc ' make north-star5-verify-fast'
./script/docker-exec.sh -- bash -lc ' php script/bootstrap-inventory.php --check'
./script/docker-exec.sh -- bash -lc ' make bootstrap-loop-probe'
Living ROADMAP (high-signal, phased)
Merge gates are local/Docker only β no GitHub Actions (#394 β ).
Harness-safe:
make test-harness,./script/docker-ci-local.sh,./script/docker-exec.sh.North star: #1492 (M3βM5 self-host)
Development focus (Jun 2026): optimize for fast M5 feedback β not
north-star5-verify --stricton every PR (~1h). Daily gates:make north-star5-verify-fast(~1β2 min),make bootstrap-selfhost-vm-driver-execute-probe(~20ms). Reserve--strictfor pre-merge bootstrap/gen-0/vendor-prelink PRs. Doc:docs/bootstrap-m5-fast-path.mdΒ· Cursor rule:.cursor/rules/m5-fast-development.mdc.User release roadmap (next: v1.1.0)
Meta: #8739 (reopen on tag day) Β· Latest tag: v1.0.0 (2026-05-29)
--fullreadiness green)Must-ship checklist
release-readiness.shuser-release gate presenterphp-types-never-type.patchon freshvendor/installcheck-selfhost-spine-coverage-syncgate β (regressed β Release v1.1.0: fix spine-coverage regression β GeneratorYieldSourceMarker.php missing from spineΒ #10367 β closed)php-cfg-new-first-class-callable.patchβ (2026-06-20)GeneratorYieldSourceMarker.phpβ (2026-06-20)docs/bootstrap-inventory.md(reopened 2026-06-22 β JIT helper drift after Regenerate docs/bootstrap-inventory.md for v1.1.0 (#10368)Β #10450)NestedJitCompileScope.php(Fix AOT smoke: nested JIT helper compile isolation (#10343)Β #10498 regression)master; refresh before tag)Gate checklist
./script/release-readiness.sh --full --jsonβuser_release_ready: yes(blocked: Release v1.1.0: regenerate stale docs/bootstrap-inventory.mdΒ #10368, Release v1.1.0: add NestedJitCompileScope to self-host spineΒ #10542, Release-readiness: bootstrap-inventory gate flake in full bundleΒ #10531 flake)release-blockerissues (2 open: Release v1.1.0: regenerate stale docs/bootstrap-inventory.mdΒ #10368, Release v1.1.0: add NestedJitCompileScope to self-host spineΒ #10542)Out of scope (v1.1.0)
north-star5-verify --strict(~1h)Bootstrap release roadmap (future v2 / self-host honesty)
Not a tag candidate until
north-star5-verify --strictis green on demand. Track progress only.main()runtimePHP_COMPILER_SELFHOST_AOTon compile spinecompile_driverapply-patches.shanchornorth-star5-verify.sh --strict(~1h)Must-ship before bootstrap tag: spine N/N honest runtime, stub retirement on compile path, no Zend in cold-boot loop β see #1492.
Milestone status (Jun 2026 β maintainer probe 2026-06-22)
make bootstrap-selfhost-linkbootstrap-inventory.php --checkcheck-selfhost-spine-coverage-sync.phpNestedJitCompileScope.php)make bootstrap-selfhost-vm-driver-execute-probemake bootstrap-selfhost-helloworldemit_path=native)compile_drivermake bootstrap-selfhost-full-revision-probemake bootstrap-loop-probeprelinked/bootstrap-vendor/*.omanifestobject_okBOOTSTRAP_M5_NO_ZEND=1emptybuild/rm prelinked/*.o, no Zend fallbackmake north-star5-verify-fastnorth-star5-verify.sh --strictmain()at runtimecheck-selfhost-spine-coverage-sync.phpDaily verify (fast β use during development):
Pre-merge bootstrap verify (strict β sparingly):
./script/docker-exec.sh -- bash -lc './script/north-star5-verify.sh --strict'Next 5 worker priorities (parallel-safe)
release-blockerβ quick gate red; regen + commit)release-blockerβ north-star5-fast red after Fix AOT smoke: nested JIT helper compile isolation (#10343)Β #10498)docs/bootstrap-m5-fast-path.mdmain()runtime β #8559Parity backlog themes (Jun 2026)
is_callable#3132,createLazyProxy#7387, ext/zip #3337superglobals_refresh.c#5330,phpc_stream.c#5343Repro (roadmap health check)
Done when (living doc)
implementation-readyissues workers can claim without overlapnorth-star5-verify --fast) default in docs, CI, and Cursor rulesVerification (local / Docker only)