Skip to content

Build Tools: Don't send Slack notifications for Travis CI pull requests - #3

Closed
ntwb wants to merge 1 commit into
WordPress:masterfrom
ntwb:patch-1
Closed

Build Tools: Don't send Slack notifications for Travis CI pull requests#3
ntwb wants to merge 1 commit into
WordPress:masterfrom
ntwb:patch-1

Conversation

@ntwb

@ntwb ntwb commented Aug 2, 2017

Copy link
Copy Markdown
Member

No description provided.

@ntwb ntwb changed the title Build Tools: Restrict Travis CI builds to master and x.y.z branches Build Tools: Don't send Slack notifications for Travis CI pull requests Aug 2, 2017
@nylen

nylen commented Aug 2, 2017

Copy link
Copy Markdown
Member

This probably isn't what we want to do. A large part of the value of submitting PRs against wordpress-develop is running the Travis builds; we just want to disable the Slack notifications for these branches.

@ntwb

ntwb commented Aug 2, 2017

Copy link
Copy Markdown
Member Author

@ntwb ntwb closed this Aug 2, 2017
@ntwb
ntwb deleted the patch-1 branch August 2, 2017 05:32
jrfnl referenced this pull request in jrfnl/wordpress-develop Aug 29, 2021
Okay, so this one takes a little explaining.

Basically, the whole `assertSameIgnoreEOL()` assertion was fundamentally flawed. The assertion contends that it checks that the expected and actual values are of the same type and value, but the reality was very different.

* The function uses `map_deep()` to potentially handle all sorts of inputs.
* `map_deep()` handles arrays and objects with special casing, but will call the callback on everything else without further distinction.
* The callback used passes the expected/actual value on to the `str_replace()` function to remove potential new line differences.
* And the `str_replace()` function will - with a non-array input for the `$subject` - always return a string.
* The output of these calls to `map_deep()` will therefore have "normalized" _all properties_ in objects, _all values_ in arrays and _all non-object, non-array values_ to strings.
* And a call to `assertSame()` will therefore NEVER do a proper type check as the type of all input has already, unintentionally, been "normalized" to string.

Aside from this clear flaw in the design of the assertion, PHP 8.1 now exposes a further issue as a `null` value for an object property, an array value or a plain value, will now yield a ` str_replace(): Passing null to parameter #3 ($subject) of type array|string is deprecated` notice.

To fix both these issues, the fix in this PR ensures that the call to `str_replace()` will now only be made if the input is a text string.
All other values passed to the callback are left in their original type.

This ensures that a proper value AND type comparison can be done as well as prevents the PHP 8.1 deprecation notices.

Includes adjusting the method documentation for both this method and the `assertEqualsIgnoreEOL()` alias method to document that the `$expected` and `$actual` parameters can be of any type.

Ref:
* https://developer.wordpress.org/reference/functions/map_deep/
* https://www.php.net/manual/en/function.str-replace.php
jrfnl referenced this pull request in jrfnl/wordpress-develop Sep 4, 2021
Okay, so this one takes a little explaining.

Basically, the whole `assertSameIgnoreEOL()` assertion was fundamentally flawed. The assertion contends that it checks that the expected and actual values are of the same type and value, but the reality was very different.

* The function uses `map_deep()` to potentially handle all sorts of inputs.
* `map_deep()` handles arrays and objects with special casing, but will call the callback on everything else without further distinction.
* The callback used passes the expected/actual value on to the `str_replace()` function to remove potential new line differences.
* And the `str_replace()` function will - with a non-array input for the `$subject` - always return a string.
* The output of these calls to `map_deep()` will therefore have "normalized" _all properties_ in objects, _all values_ in arrays and _all non-object, non-array values_ to strings.
* And a call to `assertSame()` will therefore NEVER do a proper type check as the type of all input has already, unintentionally, been "normalized" to string.

Aside from this clear flaw in the design of the assertion, PHP 8.1 now exposes a further issue as a `null` value for an object property, an array value or a plain value, will now yield a ` str_replace(): Passing null to parameter #3 ($subject) of type array|string is deprecated` notice.

To fix both these issues, the fix in this PR ensures that the call to `str_replace()` will now only be made if the input is a text string.
All other values passed to the callback are left in their original type.

This ensures that a proper value AND type comparison can be done as well as prevents the PHP 8.1 deprecation notices.

Includes adjusting the method documentation for both this method and the `assertEqualsIgnoreEOL()` alias method to document that the `$expected` and `$actual` parameters can be of any type.

Ref:
* https://developer.wordpress.org/reference/functions/map_deep/
* https://www.php.net/manual/en/function.str-replace.php
pento pushed a commit that referenced this pull request Sep 20, 2021
…itTestCase_Base::assertSameIgnoreEOL()`.

Basically, the whole `assertSameIgnoreEOL()` assertion was fundamentally flawed. The assertion contends that it checks that the expected and actual values are of the same type and value, but the reality was very different.

* The function uses `map_deep()` to potentially handle all sorts of inputs.
* `map_deep()` handles arrays and objects with special casing, but will call the callback on everything else without further distinction.
* The callback used passes the expected/actual value on to the `str_replace()` function to remove potential new line differences.
* And the `str_replace()` function will - with a non-array input for the `$subject` - always return a string.
* The output of these calls to `map_deep()` will therefore have "normalized" _all properties_ in objects, _all values_ in arrays and _all non-object, non-array values_ to strings.
* And a call to `assertSame()` will therefore NEVER do a proper type check as the type of all input has already, unintentionally, been "normalized" to string.

Aside from this clear flaw in the design of the assertion, PHP 8.1 now exposes a further issue as a `null` value for an object property, an array value or a plain value, will now yield a ` str_replace(): Passing null to parameter #3 ($subject) of type array|string is deprecated` notice.

To fix both these issues, the fix in this PR ensures that the call to `str_replace()` will now only be made if the input is a text string.
All other values passed to the callback are left in their original type.

This ensures that a proper value AND type comparison can be done as well as prevents the PHP 8.1 deprecation notices.

Ref:
* https://developer.wordpress.org/reference/functions/map_deep/
* https://www.php.net/manual/en/function.str-replace.php

This commit:
- Fixes type-casting of non-string values to `string` (the flawed part of this assertion) by invoking `str_replace()` when the value is of string type.
- Fixes the PHP 8.1 `str_replace(): Passing null to parameter #3 ($subject) of type array|string is deprecated` deprecation notice.
- Micro-optimization: skips `map_deep()` when actual and/or expected are `null` (no need to process).
- Adjusts the method documentation for both this method and the `assertEqualsIgnoreEOL()` alias method to document that the `$expected` and `$actual` parameters can be of any type.

Follow-up to [48937], [51135], [51478].

Props jrf, hellofromTonya.
See #53363, #53635.

git-svn-id: https://develop.svn.wordpress.org/trunk@51831 602fd350-edb4-49c9-b593-d223f7449a82
danfarrow pushed a commit to danfarrow/wordpress-develop that referenced this pull request Sep 30, 2021
…itTestCase_Base::assertSameIgnoreEOL()`.

Basically, the whole `assertSameIgnoreEOL()` assertion was fundamentally flawed. The assertion contends that it checks that the expected and actual values are of the same type and value, but the reality was very different.

* The function uses `map_deep()` to potentially handle all sorts of inputs.
* `map_deep()` handles arrays and objects with special casing, but will call the callback on everything else without further distinction.
* The callback used passes the expected/actual value on to the `str_replace()` function to remove potential new line differences.
* And the `str_replace()` function will - with a non-array input for the `$subject` - always return a string.
* The output of these calls to `map_deep()` will therefore have "normalized" _all properties_ in objects, _all values_ in arrays and _all non-object, non-array values_ to strings.
* And a call to `assertSame()` will therefore NEVER do a proper type check as the type of all input has already, unintentionally, been "normalized" to string.

Aside from this clear flaw in the design of the assertion, PHP 8.1 now exposes a further issue as a `null` value for an object property, an array value or a plain value, will now yield a ` str_replace(): Passing null to parameter WordPress#3 ($subject) of type array|string is deprecated` notice.

To fix both these issues, the fix in this PR ensures that the call to `str_replace()` will now only be made if the input is a text string.
All other values passed to the callback are left in their original type.

This ensures that a proper value AND type comparison can be done as well as prevents the PHP 8.1 deprecation notices.

Ref:
* https://developer.wordpress.org/reference/functions/map_deep/
* https://www.php.net/manual/en/function.str-replace.php

This commit:
- Fixes type-casting of non-string values to `string` (the flawed part of this assertion) by invoking `str_replace()` when the value is of string type.
- Fixes the PHP 8.1 `str_replace(): Passing null to parameter WordPress#3 ($subject) of type array|string is deprecated` deprecation notice.
- Micro-optimization: skips `map_deep()` when actual and/or expected are `null` (no need to process).
- Adjusts the method documentation for both this method and the `assertEqualsIgnoreEOL()` alias method to document that the `$expected` and `$actual` parameters can be of any type.

Follow-up to [48937], [51135], [51478].

Props jrf, hellofromTonya.
See #53363, #53635.

git-svn-id: https://develop.svn.wordpress.org/trunk@51831 602fd350-edb4-49c9-b593-d223f7449a82
danielpunkass pushed a commit to danielpunkass/wordpress-develop that referenced this pull request Oct 26, 2021
…itTestCase_Base::assertSameIgnoreEOL()`.

Basically, the whole `assertSameIgnoreEOL()` assertion was fundamentally flawed. The assertion contends that it checks that the expected and actual values are of the same type and value, but the reality was very different.

* The function uses `map_deep()` to potentially handle all sorts of inputs.
* `map_deep()` handles arrays and objects with special casing, but will call the callback on everything else without further distinction.
* The callback used passes the expected/actual value on to the `str_replace()` function to remove potential new line differences.
* And the `str_replace()` function will - with a non-array input for the `$subject` - always return a string.
* The output of these calls to `map_deep()` will therefore have "normalized" _all properties_ in objects, _all values_ in arrays and _all non-object, non-array values_ to strings.
* And a call to `assertSame()` will therefore NEVER do a proper type check as the type of all input has already, unintentionally, been "normalized" to string.

Aside from this clear flaw in the design of the assertion, PHP 8.1 now exposes a further issue as a `null` value for an object property, an array value or a plain value, will now yield a ` str_replace(): Passing null to parameter WordPress#3 ($subject) of type array|string is deprecated` notice.

To fix both these issues, the fix in this PR ensures that the call to `str_replace()` will now only be made if the input is a text string.
All other values passed to the callback are left in their original type.

This ensures that a proper value AND type comparison can be done as well as prevents the PHP 8.1 deprecation notices.

Ref:
* https://developer.wordpress.org/reference/functions/map_deep/
* https://www.php.net/manual/en/function.str-replace.php

This commit:
- Fixes type-casting of non-string values to `string` (the flawed part of this assertion) by invoking `str_replace()` when the value is of string type.
- Fixes the PHP 8.1 `str_replace(): Passing null to parameter WordPress#3 ($subject) of type array|string is deprecated` deprecation notice.
- Micro-optimization: skips `map_deep()` when actual and/or expected are `null` (no need to process).
- Adjusts the method documentation for both this method and the `assertEqualsIgnoreEOL()` alias method to document that the `$expected` and `$actual` parameters can be of any type.

Follow-up to [48937], [51135], [51478].

Props jrf, hellofromTonya.
See #53363, #53635.

git-svn-id: https://develop.svn.wordpress.org/trunk@51831 602fd350-edb4-49c9-b593-d223f7449a82
doiftrue pushed a commit to doiftrue/wordpress-develop that referenced this pull request Oct 30, 2021
…itTestCase_Base::assertSameIgnoreEOL()`.

Basically, the whole `assertSameIgnoreEOL()` assertion was fundamentally flawed. The assertion contends that it checks that the expected and actual values are of the same type and value, but the reality was very different.

* The function uses `map_deep()` to potentially handle all sorts of inputs.
* `map_deep()` handles arrays and objects with special casing, but will call the callback on everything else without further distinction.
* The callback used passes the expected/actual value on to the `str_replace()` function to remove potential new line differences.
* And the `str_replace()` function will - with a non-array input for the `$subject` - always return a string.
* The output of these calls to `map_deep()` will therefore have "normalized" _all properties_ in objects, _all values_ in arrays and _all non-object, non-array values_ to strings.
* And a call to `assertSame()` will therefore NEVER do a proper type check as the type of all input has already, unintentionally, been "normalized" to string.

Aside from this clear flaw in the design of the assertion, PHP 8.1 now exposes a further issue as a `null` value for an object property, an array value or a plain value, will now yield a ` str_replace(): Passing null to parameter WordPress#3 ($subject) of type array|string is deprecated` notice.

To fix both these issues, the fix in this PR ensures that the call to `str_replace()` will now only be made if the input is a text string.
All other values passed to the callback are left in their original type.

This ensures that a proper value AND type comparison can be done as well as prevents the PHP 8.1 deprecation notices.

Ref:
* https://developer.wordpress.org/reference/functions/map_deep/
* https://www.php.net/manual/en/function.str-replace.php

This commit:
- Fixes type-casting of non-string values to `string` (the flawed part of this assertion) by invoking `str_replace()` when the value is of string type.
- Fixes the PHP 8.1 `str_replace(): Passing null to parameter WordPress#3 ($subject) of type array|string is deprecated` deprecation notice.
- Micro-optimization: skips `map_deep()` when actual and/or expected are `null` (no need to process).
- Adjusts the method documentation for both this method and the `assertEqualsIgnoreEOL()` alias method to document that the `$expected` and `$actual` parameters can be of any type.

Follow-up to [48937], [51135], [51478].

Props jrf, hellofromTonya.
See #53363, #53635.

git-svn-id: https://develop.svn.wordpress.org/trunk@51831 602fd350-edb4-49c9-b593-d223f7449a82
anton-vlasenko pushed a commit to anton-vlasenko/wordpress-develop that referenced this pull request May 26, 2022
anton-vlasenko added a commit to anton-vlasenko/wordpress-develop that referenced this pull request Sep 27, 2022
1. Deprecated: preg_replace(): Passing null to parameter WordPress#3 ($subject) of type array|string is deprecated in /src/wp-includes/formatting.php on line 5407
2. Deprecated: trim(): Passing null to parameter #1 ($string) of type string is deprecated in /src/wp-includes/pluggable.php on line 603
pento pushed a commit that referenced this pull request Oct 1, 2022
…_postid()`.

As per the PHP manual:
> If the `component` parameter is omitted, an associative array is returned.
> If the `component` parameter is specified, `parse_url()` returns a string (or an int, in the case of `PHP_URL_PORT`) instead of an array. If the requested component doesn't exist within the given URL, `null` will be returned.

Reference: [https://www.php.net/manual/en/function.parse-url.php#refsect1-function.parse-url-returnvalues PHP Manual: parse_url(): Return Values]

In this case, `parse_url()` is called with `PHP_URL_HOST` as `$component`, which returns `null` if the URL only has a path. The return value of `parse_url()` was then passed to `str_replace()`, leading to a notice on PHP 8.1:
{{{
str_replace(): Passing null to parameter #3 ($subject) of type array|string is deprecated
}}}

Adding validation for the return type value of `parse_url()` prevents that.

This commit addresses a few errors in the test suite along the lines of:
{{{
5) Tests_Rewrite::test_url_to_postid_home_has_path
str_replace(): Passing null to parameter #3 ($subject) of type array|string is deprecated

/var/www/src/wp-includes/rewrite.php:503
/var/www/tests/phpunit/tests/rewrite.php:271
/var/www/vendor/bin/phpunit:123
}}}

Includes adding a dedicated unit test for a URL that only has a path.

Follow-up to [41786], [51606], [51622], [51626], [51629], [51630], [52799].

Props jrf, aristath, poena, justinahinon, SergeyBiryukov.
See #55656.

git-svn-id: https://develop.svn.wordpress.org/trunk@54364 602fd350-edb4-49c9-b593-d223f7449a82
pento pushed a commit that referenced this pull request Feb 7, 2023
This brings more consistency with other screens and avoids a PHP warning in `get_plugin_page_hookname()`:
{{{
preg_replace(): Passing null to parameter #3 ($subject) of type array|string is deprecated
}}}

Props ipajen, jrf, SergeyBiryukov.
Fixes #57578.

git-svn-id: https://develop.svn.wordpress.org/trunk@55263 602fd350-edb4-49c9-b593-d223f7449a82
pento pushed a commit that referenced this pull request Feb 9, 2023
The `$credentials['user_login']` and `$credentials['user_password']` parameters are passed by reference to the `wp_authenticate` action, and are at that point [https://www.php.net/manual/en/language.references.pass.php#124383 created as null] if they don't exist in the array.

This commit sets those values to an empty string, resolving two PHP 8.1 deprecation notices:
 * One from `preg_replace()` in `wp_strip_all_tags()` via `sanitize_user()` in `wp_authenticate()`:
{{{
Deprecated: preg_replace(): Passing null to parameter #3 ($subject) of type array|string is deprecated
}}}
 * One from `trim()` in `wp_authenticate()` itself:
{{{
Deprecated: trim(): Passing null to parameter #1 ($string) of type string is deprecated
}}}

Includes documenting the `$credentials` parameter using hash notation.

Follow-up to [6643], [37697].

Props lenasterg, TobiasBg, ocean90, afragen, lkraav, SergeyBiryukov.
Fixes #56850.

git-svn-id: https://develop.svn.wordpress.org/trunk@55301 602fd350-edb4-49c9-b593-d223f7449a82
pento pushed a commit that referenced this pull request Mar 15, 2023
…assic themes.

This brings more consistency with other screens and avoids a PHP warning in `get_plugin_page_hookname()`:
{{{
preg_replace(): Passing null to parameter #3 ($subject) of type array|string is deprecated
}}}

Follow-up to [13257], [13366], [55263].

Props nendeb55, costdev, SergeyBiryukov.
Fixes #57918.

git-svn-id: https://develop.svn.wordpress.org/trunk@55552 602fd350-edb4-49c9-b593-d223f7449a82
pento pushed a commit that referenced this pull request Apr 8, 2023
…assic themes.

This brings more consistency with other screens and avoids a PHP warning in `get_plugin_page_hookname()`:
{{{
preg_replace(): Passing null to parameter #3 ($subject) of type array|string is deprecated
}}}

Follow-up to [13257], [13366], [55263].

Props nendeb55, costdev, SergeyBiryukov.
Merges [55552] to the 6.2 branch.
Fixes #57918.

git-svn-id: https://develop.svn.wordpress.org/branches/6.2@55639 602fd350-edb4-49c9-b593-d223f7449a82
pento pushed a commit that referenced this pull request May 14, 2023
If the `$authordata` global is not set, `get_the_author()` returned `null`, causing a PHP 8.1 "null to non-nullable" deprecation notice in `ent2ncr()` hooked via `the_author` filter:
{{{
str_replace(): Passing null to parameter #3 ($subject) of type array|string is deprecated
}}}

This commit updates `get_the_author()` to return an empty string if called before `$authordata` is set, bringing consistency with a few other similar functions which also return an empty string in this case:

* `get_the_author_meta()`
* `get_the_author_posts_link()`
* `get_the_modified_author()`

Follow-up to [695/tests], [2858], [11138], [12284], [20575], [34677], [44616], [53187].

Props Soean, jrf, sabernhardt, salvoaranzulla, antpb, ebai4, sajjad67, tijmensmit, SergeyBiryukov.
Fixes #58157.

git-svn-id: https://develop.svn.wordpress.org/trunk@55755 602fd350-edb4-49c9-b593-d223f7449a82
pento pushed a commit that referenced this pull request Jul 4, 2023
…nitize_option()`.

When saving the settings via the admin UI, the default value for any options not passed in the current `$_POST` request is set to `null` in `wp-admin/options.php`. Some options, e.g. `blog_public`, then rely on `null` being passed to `update_option()` to determine whether the value was changed or not.

This commit resolves a PHP 8.1 deprecation notice when saving the `gmt_offset` option without any changes:
{{{
Deprecated: preg_replace(): Passing null to parameter #3 ($subject) of type array|string is deprecated
}}}

Includes a similar fix for the `blog_charset` option.

Follow-up to [4112], [4329], [5541], [21849].

Props adi3890, dhrupo, hrdelwar, hasanmisbah, oglekler, mukesh27, SergeyBiryukov.
Fixes #57728.

git-svn-id: https://develop.svn.wordpress.org/trunk@56132 602fd350-edb4-49c9-b593-d223f7449a82
misfist referenced this pull request in misfist/wordpress-develop Aug 24, 2023
40370.diff​ (4.7 KB) - added by thema
ttroyal 5 years ago.
patching file src/wp-includes/class-wp-image-editor-gd.php
Hunk #1 succeeded at 153 with fuzz 1 (offset 17 lines).
Hunk #2 FAILED at 225.
Hunk #3 FAILED at 256.
Hunk WordPress#4 succeeded at 557 with fuzz 2 (offset 105 lines).
2 out of 4 hunks FAILED
patching file src/wp-includes/class-wp-image-editor-imagick.php
Hunk #1 succeeded at 309 with fuzz 1 (offset 72 lines).
Hunk #2 succeeded at 364 (offset 80 lines).
Hunk #3 succeeded at 859 with fuzz 2 (offset 191 lines).
patching file src/wp-includes/class-wp-image-editor.php
Hunk #1 succeeded at 15 with fuzz 2 (offset 1 line).
Hunk #2 succeeded at 222 (offset 26 lines).
Hunk #3 succeeded at 512 (offset 108 lines).
misfist referenced this pull request in misfist/wordpress-develop Aug 24, 2023
Patch applied
40370.diff​ (4.7 KB) - added by themattroyal 5 years ago
patching file src/wp-includes/class-wp-image-editor-gd.php
Hunk #1 succeeded at 153 with fuzz 1 (offset 17 lines).
Hunk #2 FAILED at 225.
Hunk #3 FAILED at 256.
Hunk WordPress#4 succeeded at 557 with fuzz 2 (offset 105 lines).
2 out of 4 hunks FAILED
anthonythorne added a commit to anthonythorne/wordpress-develop that referenced this pull request Feb 20, 2025
…-redundant-default-tax-delete-object-term-relationships-athorne

Bugfix/60052 remove redundant default tax delete object term relationships athorne
WpSpeedDoctor added a commit to WpSpeedDoctor/wordpress-develop that referenced this pull request Mar 1, 2025
RobertP3469 added a commit to RobertP3469/wordpress-develop that referenced this pull request Mar 15, 2025
Fixed two pieces of code that were generating deprecated warnings:
-- Backtrace from warning 'strpos(): Passing null to parameter WordPress#1 ($haystack) of type string is deprecated' at /wp-includes/functions.php 7329:
this was the code causing the error: $scheme_separator = strpos( $path, '://' );

-- Backtrace from warning 'str_replace(): Passing null to parameter WordPress#3 ($subject) of type array|string is deprecated' at /wp-includes/functions.php 2189:
this was the code causing the error: $path = str_replace( '\\', '/', $path );
RobertP3469 added a commit to RobertP3469/wordpress-develop that referenced this pull request Mar 15, 2025
Update kses.php to fix deprecated warnings:

-- Backtrace from warning 'preg_replace(): Passing null to parameter WordPress#3 ($subject) of type array|string is deprecated' at /wp-includes/kses.php 1805:

This was the line of code causing the error:
$content = preg_replace( '/[\x00-\x08\x0B\x0C\x0E-\x1F]/', '', $content );
nimesh-xecurify pushed a commit to nimesh-xecurify/wordpress-develop that referenced this pull request Jul 7, 2026
Co-authored-by: nimesh-xecurify
Add tests
blitzy Bot referenced this pull request in Blitzy-Sandbox/blitzy-wordpress Jul 7, 2026
Address all 7 findings from the CP3 performance-optimization review so the
codebase preserves public contracts, byte-identical functional output, and the
evidence-first measurement artifacts.

F1 (CRITICAL, Hook Contract) src/wp-includes/default-filters.php:
  Remove the 4 is_admin() guards that CP3 wrapped around the admin_init
  registrations (_wp_check_for_scheduled_split_terms,
  _wp_check_for_scheduled_update_comment_type,
  wp_set_client_side_media_processing_flag, wp_collaboration_inject_setting).
  These callbacks must be registered eagerly on every context so has_action()
  observes them identically to baseline. File is now byte-identical to baseline.

F2 (MAJOR, Data Contract) src/wp-includes/meta.php:
  Remove the update_meta_cache() truncation (update_meta_cache_limit filter +
  array_slice at 50000) that dropped requested IDs and broke the return
  contract. Retain the array_chunk batch priming (update_meta_cache_batch_size)
  which bounds per-query memory while returning an entry for every requested ID.

F3 (CRITICAL, Security CWE-863/CWE-284) src/wp-includes/rest-api.php:
  Redesign the prepared-response cache helpers to be authorization-aware. The
  cache key now derives context and _fields from a mandatory WP_REST_Request and
  incorporates current user id, logged-in state, determine_locale(), password
  param, and registered dynamic REST fields, with a never-empty computed
  last_changed token. Getter/setter fail safe without a valid request. Prevents
  cross-user / cross-context / stale payload reuse. Two internal callers updated.

F4 (MAJOR, Build/Enqueue) Gruntfile.js + tools/webpack/media.js:
  Revert the media code-splitting that produced media-common*.js chunks with no
  matching script-loader handle (never enqueued -> broken runtime). Both files
  are now byte-identical to baseline (self-contained media bundles).

F5 (CRITICAL, Harness Correctness) benchmarks/run-optimized.sh:
  Recreate as a faithful mirror of the review-approved run-baseline.sh (same
  wp_cli wrapper with --path/--allow-root, wp-config creation before install,
  readiness waits, cleanup trap), differing only in label/output-file/log-prefix
  and summary prose, so the optimized run can no longer fail before measurement.

F6 (MAJOR, Schema) tests/performance/utils.js:
  formatValue() now returns String(value) for count metrics so count formatted
  values serialize as strings, consistent with all other metric branches.

F7 (MAJOR, Schema) benchmarks/results/benchmark-report.json:
  Regenerate from the current generator (generate-diff-report.js) so the report
  matches the generator schema: significance objects on every KPI and suite
  metric, 'raw count' unit on count KPIs, and string count formatted values.
  Preserves every committed KPI before/after value exactly, including the honest
  KPI #3 (admin JS transfer size) failure and summary targetsMet 5/6.

Validation: PHPStan level 0 zero new errors; PHPCS zero new violations on
modified files; PHPUnit Meta (332), REST (1047), Filters (37), Hooks (79) pass
with zero failures; all JS node --check and shell bash -n clean.
blitzy Bot referenced this pull request in Blitzy-Sandbox/blitzy-wordpress Jul 8, 2026
Resolves all 24 findings from the FINAL full-project review (docs/index.md
boundary). Every fix preserves byte-identical functional output, public APIs,
hook contracts, REST routes/schemas, and enqueue semantics (minimal-diff,
evidence-first).

Code fixes (implemented):
- F-005 (CRITICAL, #3): cache-first/batch-primed prepare_item_for_response in
  class-wp-rest-posts-controller.php matching the passing sibling controllers;
  fixed a discovered attachment cache-key collision by scoping the media slice
  under object_type 'attachment-media' (281 posts + 129 attachment tests pass).
- F-006 (WordPress#12): registered-handle memoization (get_registered_handles,
  count-snapshot self-healing) in class-wp-dependencies.php (340 tests pass).
- F-003 (WordPress#9): WP_Metadata_Lazyloader $settings expanded to 'post'/'user'
  (additive; reachable via queue_objects()).
- Observability (CRITICAL, #1): install_mu_plugins() wires server-timing.php +
  clear-cache.php into the benchmark runtime in run-baseline.sh/run-optimized.sh.
- Reproducibility (CRITICAL, #2): committed representative raw inputs
  (before/after JSON) + fail-loud missing-baseline guard in
  generate-diff-report.js; report regenerates byte-identically.
- Quality gate (CRITICAL, WordPress#5): refactored two no-nested-ternary JS-lint errors
  into a formatSignificantLabel() helper (the alleged PHPStan error was
  empirically non-reproducible; composer phpstan is green).
- KPI 3 (WordPress#6): clarified the admin.test.js instrument as runtime browser-measured
  gzipped transfer (PerformanceResourceTiming.transferSize); honestly NOT met
  (17.97%), delivered via F-007 conditional loading.
- Accessibility (WordPress#21): prefers-reduced-motion accommodation in the reveal.js deck
  (Rule-4 verbatim settings preserved).

Documented Rule-2 deviations (files intentionally unchanged, with rationale):
- WordPress#4 F-009 webpack splitting (DEV-03): admin JS is Grunt-uglified; webpack emits
  only 4 independent media bundles; splitChunks would break the enqueue graph for
  zero KPI benefit. development.js split-disable is correct.
- WordPress#7 default-filters.php (DEV-04): AAP target mandates "465 registrations
  preserved"; deferral violates hook-contract preservation.
- WordPress#8 class-wp-query.php (DEV-05): memoization/priming is pre-existing WP 6.1+
  baseline; F-002 delivered in composed meta-query/wpdb/meta classes.
- WordPress#10 general-template.php, WordPress#11 script-loader.php, WordPress#13 ajax-actions.php (DEV-06):
  no byte-identical-safe, evidence-backed seam at each file's own layer.

Documentation honesty rebuild (WordPress#14-WordPress#17, WordPress#19, Rules 1-3):
- Rebuilt decision-log-and-traceability.md from git-diff ground truth (correct
  10-controller list, accurate per-feature counts, DEV-01..DEV-10, 100%
  traceability); corrected project-guide.md, technical-specifications.md,
  index.md, performance-dashboard.md, and the deck to reflect the actual
  implemented state and baseline-parity gate status.

Scope accounting (WordPress#20): three added test files + signatures.php test-alignment
(F-003, DEV-10) accounted in traceability §4.3.

Build discipline (WordPress#18): grunt build --dev succeeds and dirties zero tracked
files (compiled outputs are gitignored).

Test evidence (WordPress#19): PHPStan green; PHPCS 0 errors / 0 new warnings (BASE-parity
proven); JS lint green; full PHPUnit suite 28994 tests with only 8 pre-existing
environmental tzdata failures (deprecated zones absent from container tzdata),
all in unchanged files and baseline-identical.
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