Skip to content

Release v1.1.0: fix php-cfg-new-first-class-callable.patch blocking release-readiness #9931

Closed

Description

@PurHur

Category

bootstrap · release-blocker · regression from #9767 / #9807

Problem

./script/docker-exec.sh -- bash -lc './script/release-readiness.sh --json' aborts during ci_install_deps because script/apply-patches.sh exits 1 on:

ERROR: failed to apply php-cfg-new-first-class-callable.patch
  Hint: git -C "/compiler" apply --check -p0 "/compiler/patches/php-cfg-new-first-class-callable.patch"

php-cfg-first-class-callable.patch applies (creates FirstClassCallable.php), but the follow-on new FCC patch fails on Parser.php:1625 — likely anchor drift after upstream Parser overlays.

Until this is fixed, maintainers cannot get a reliable quick readiness signal on a clean harness checkout.

Repro (verified 2026-06-19)

./script/docker-exec.sh -- bash -lc '
  composer install -n --prefer-dist --ignore-platform-reqs
  ./script/apply-patches.sh
'
# exit 1 — php-cfg-new-first-class-callable.patch

./script/docker-exec.sh -- bash -lc './script/release-readiness.sh --json'
# never reaches gate JSON — dies in ci_install_deps

Scope (this repo)

Path Work
patches/php-cfg-new-first-class-callable.patch Refresh anchors or convert to overlay helper (match php-cfg-first-class-callable.patch style)
script/apply-patches.sh Ensure KIND_NEW overlay applies after Parser mutations
script/release-readiness.sh Must reach gate presenter without patch hard-fail

Done when

Roadmap

Listed under User release roadmap (v1.1.0) → Gate checklist on #78.

Related

Activity

  1. added
    implementation-readySpec complete: repro, php-src ref, done-when — safe for workers to claim
    releaseUser-facing release tracking
    on Jun 19, 2026
  2. PurHur commented on Jun 19, 2026

    @PurHur
    OwnerAuthor

    claim: cursor-agent-lane-b — starting this run

  3. PurHur commented on Jun 19, 2026

    @PurHur
    OwnerAuthor

    Merged via #9934.

    Fix: Route php-cfg-new-first-class-callable.patch through an anchor-based overlay; apply php-cfg-anonymous-class.patch before new-FCC so parseExpr_New has the expected shape after prior overlays.

    Verification:

    • rm -rf vendor/ircmaxell/php-cfg && composer install --no-scripts && ./script/apply-patches.sh → exit 0, Applied php-cfg-new-first-class-callable.patch (overlay)
    • ./script/docker-exec.sh -- bash -lc 'composer install && ./script/apply-patches.sh' → EXIT:0
    • php bin/vm.php test/repro/new_first_class_callable.php → int(42)
    • ./script/docker-exec.sh -- bash -lc './script/release-readiness.sh --json' → reaches gate JSON (no ci_install_deps patch abort)
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

    IMPORTANTCritical pathimplementation-readySpec complete: repro, php-src ref, done-when — safe for workers to claimreleaseUser-facing release trackingrelease-blockerBlocks tagged user release

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions