Skip to content

Release plan: correct the intl/gmp rates for the ignored SKIPIF guards - #24918

Merged
PurHur merged 1 commit into
masterfrom
docs/release-plan-skipif-correction
Jul 29, 2026
Merged

PurHur merged 1 commit into
masterfrom
docs/release-plan-skipif-correction

Conversation

@PurHur

@PurHur PurHur commented Jul 29, 2026

Copy link
Copy Markdown
Owner

The Phase 1 numbers count cases the corpus itself declares inapplicable.

--SKIPIF-- was parsed into $sections['SKIPIF'] by test/BaseTest.php and then never read — and it was not in UNSUPPORTED_SECTIONS either, so it did not throw. Every skip guard in the corpus was dead (#24888, fixed by #24897).

Measured at cc50fbb8f

cases carrying --SKIPIF-- 671
of those, executed 455
of those, failing in the committed baseline 81
of those 81, guard confirmed to evaluate to skip ≥ 19

no MYSQLI_TEST_DSN, no pg_connect (libpq FFI), requires PHP 8.4+, inotify unavailable — not compiler defects.

Effect on the #24697 scoping decision

Of 56 failing intl cases, 46 carry an ignored guard, but only 2 are confirmed skips. The other 44 were inconclusive under a standalone evaluator that runs the block outside the harness env — recorded as inconclusive, not as "would run".

So the honest intl number may fall by anywhere between 2 and 46, and the 88.9 % rate cannot be relied on until a collect is taken with SKIPIF honoured. Scoping intl out, or committing to fix 56 cases, would both be priced off a contaminated figure.

gmp is unaffected: 6 failing, none of them skip cases.

Also sharpens "the pattern worth carrying forward"

Three failures of the same shape landed today, two of them in this plan's own tooling:

The through-line is sharper than the original wording: it is not enough for a check to run. It must be impossible to satisfy by absence. A case vanishing, a guard never evaluated, a set never compared all produce the same clean output as success.

🤖 Generated with Claude Code

The Phase 1 numbers count cases the corpus itself declares inapplicable.

--SKIPIF-- was parsed into $sections['SKIPIF'] by test/BaseTest.php and then
never read, and it was not in UNSUPPORTED_SECTIONS either, so it did not
throw. Every skip guard in the corpus was dead (#24888, fixed by #24897).

Measured at cc50fbb: 671 cases carry a guard, 455 execute, 81 are FAILING
in the committed baseline, and at least 19 of those carry a guard that
evaluates to "skip" — no MYSQLI_TEST_DSN, no pg_connect (libpq FFI),
requires PHP 8.4+, inotify unavailable.

For the scoping decision in #24697 specifically: of 56 failing intl cases,
46 carry an ignored guard, but only 2 are CONFIRMED skips. The other 44 were
inconclusive under a standalone evaluator — recorded as inconclusive, not as
"would run". So the honest intl number may fall by anywhere between 2 and 46,
and the 88.9% rate cannot be relied on until a collect is taken with SKIPIF
honoured. gmp is unaffected: 6 failing, none of them skip cases.

Also generalises "the pattern worth carrying forward" with the three failures
found today, two of them in this plan's own tooling: the dead SKIPIF, the
quarantine that hid 6 real failures by comparing two collects 15 commits
apart, and a baseline of failing names that could not distinguish "fixed"
from "no longer run".

The through-line is sharper than the original wording: it is not enough for a
check to run — it must be impossible to satisfy by ABSENCE. A case vanishing,
a guard never evaluated, a set never compared all produce the same clean
output as success.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@PurHur
PurHur merged commit ffe55be into master Jul 29, 2026
@PurHur
PurHur deleted the docs/release-plan-skipif-correction branch July 30, 2026 00:44
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants