Skip to content

DevEx: MiniWebApp CI gate ladder (lint → serve → AOT → web-smoke) #472

@PurHur

Description

@PurHur

Problem

examples/003-MiniWebApp/ needs a progressive gate ladder so contributors know which env vars are on by default vs opt-in. Stages 0–3 are default-on in full CI.

Batch 50 (2026-05-23): Stage 4b link is green on Docker harness. Stage 4b2 execute is the active blocker (#764). Stages 4c–4d remain blocked on execute + HTTP.

Gate ladder

Stage Env / target Default on master Tracking
0 Skeleton MINIWEBAPP_LINT_GATE=0 opt-out only #621
1 Lint MINIWEBAPP_LINT_GATE=1 web-smoke.sh #539, #621
1b VM CLI MINIWEBAPP_VM_CLI_GATE=1 ci-fast.sh #597, #595
2 Serve PHPUnit MINIWEBAPP_SERVE_GATE=1 ci-local.sh / ci-fast.sh #641
3 Shell web-smoke MINIWEBAPP_WEB_SMOKE_GATE=1 ci-local.sh #664
4a AOT dry-run phpc build --project --dry-run @group aot-lint #624, #675
4b AOT link phpc build --project exit 0 #752 #754 policy
4b2 AOT execute CLI env → non-empty HTML #764, #747, #485
4c AOT shell smoke examples-aot-smoke 003 slice #738
4d AOT HTTP ServeAotTest + phpc serve --aot #478, #610
4e Deploy smoke make deploy-smoke 003 #745, #612

Scope

Implementation hints

Piece File Change
Gates script script/miniwebapp-gates.sh Add stage 4b2: run .phpc/bin/app with QUERY_STRING=route=home, fail if stdout empty
Doctor lib/Doctor.php Print 4b ✅ / 4b2 ❌ with issue links
CI env script/ci-defaults.env MINIWEBAPP_AOT_EXECUTE_GATE=0 until #747 green (mirror #754 link gate)
Docs examples/003-MiniWebApp/README.md Replace “blocked #568” with #764
# Manual 4b2 probe (batch 50):
composer install && ./script/apply-patches.sh
php bin/phpc.php build --project examples/003-MiniWebApp
cd examples/003-MiniWebApp && QUERY_STRING=route=home REQUEST_METHOD=GET ./.phpc/bin/app | wc -c
# expect >0; currently 0 → #764

Acceptance criteria

./script/miniwebapp-gates.sh      # stages 0–4b pass; 4b2 fails until #764 fixed
./phpc doctor --gates

Docker:

docker run --rm -v "$(pwd):/compiler" -w /compiler php-compiler:22.04-dev ./script/miniwebapp-gates.sh

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