Repository navigation
π Correct "activation is not a boot" β the receipt was a WP-CLI artifact - #14
Merged
Merged
Conversation
Silverstein retracted the eps-301-redirects finding. Installed by hand the plugin is healthy: front page 200, wp-login 200, /wp-admin/ 302, no debug.log. Only the WP-CLI boot failed. WP-CLI requires wp-settings.php from inside WP_CLI\Runner->load_wordpress(), and PHP runs an included file in the including scope, so a plugin's file-scope $Var = new Thing() becomes a local of that method instead of a global. Code reading it back with `global $Var` gets null and calls a method on it. Fires only when permalink_structure is empty, which is what a fresh wp core install leaves β so CI hits it and real sites don't. Verified here in plain PHP with no WordPress: included at global scope, the global is visible; included inside a method, missing. The rule survives, sharper: activation is still not a boot, but the boot must be an HTTP request, not wp eval, and a CLI-only fatal is a note rather than a failure. Corrected in the learning loop, the ecosystem lane, both prompt fences, the plugin-author drop-in and fleet-operators Β§4. And it lands on us. scripts/core-preflight-probe.sh, merged to main this morning, boots through wp eval and has no HTTP check β so its exit 3 means "fataled under WP-CLI", a strictly larger set than "this release breaks this site". Documented in the header and in the probe output. Both controls still pass, but only because the fixture plugins don't happen to use file-scope globals. Adding the HTTP half is now the priority on that page rather than a nicety. Also narrows what the 200-plugin run showed: its one failure wasn't real, so zero confirmed core-related fatals out of 200, instagram-feed the only candidate left. Refuted claims are assets β the original is kept beside the correction rather than rewritten away. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.


Adam Silverstein retracted the
eps-301-redirectsfinding on PR #13198. Installed by hand through wp-admin the plugin is healthy β front page 200,wp-login.php200,/wp-admin/302, nodebug.log. Only the WP-CLI boot failed.The mechanism is WP-CLI's, not WordPress's. WP-CLI requires
wp-settings.phpfrom insideWP_CLI\\Runner->load_wordpress(), and PHP executes an included file in the including scope. A plugin's file-scope$Var = new Thing()becomes a local of that method rather than a global; code reading it back withglobal $Varoninitgets null and calls a method on it. It only fires whenpermalink_structureis empty β exactly what a freshwp core installleaves behind, so CI hits it and real sites don't.Verified independently here, in plain PHP with no WordPress involved:
The rule survives, sharper. Activation is still not a boot β but the boot must be an HTTP request, not
wp eval, and a CLI-only fatal is a note, not a failure. Corrected in the learning loop's accepted controls, the ecosystem lane, both prompt fences, the plugin-author CI drop-in, andfleet-operatorsΒ§4.And it lands on us.
scripts/core-preflight-probe.shβ merged to main this morning β boots the target throughwp evaland has no HTTP check, so itsexit 3means "fataled under WP-CLI", a strictly larger set than "this release breaks this site." Documented in the script header and emitted in its output. Both controls still pass, but only because the fixture plugins happen not to use file-scope globals. Adding the HTTP half is now the priority on that page rather than a nicety.What the 200-plugin run demonstrated is smaller than reported: its one failure wasn't real, so zero confirmed core-related plugin fatals out of 200, with
instagram-feedthe only remaining candidate and unverified here.Original kept beside the correction rather than rewritten away, per refuted claims are assets. Draft comment revised again, still unfiled.
python3 scripts/check-repo.pypasses clean.