Skip to content

Search 3.0: Filter by Meta Field variation routes through jetpack-search-metaN slots (RSM-2819)#48688

Closed
kangzj wants to merge 4 commits into
atlas/rsm-2108-custom-taxonomy-whitelistfrom
atlas/rsm-2819-meta-mapping
Closed

Search 3.0: Filter by Meta Field variation routes through jetpack-search-metaN slots (RSM-2819)#48688
kangzj wants to merge 4 commits into
atlas/rsm-2108-custom-taxonomy-whitelistfrom
atlas/rsm-2819-meta-mapping

Conversation

@kangzj
Copy link
Copy Markdown
Contributor

@kangzj kangzj commented May 11, 2026

Fixes RSM-2819. Stacked on top of #48684 (RSM-2108) — base will swap to trunk once that lands.

Why

Site owners who want to filter Jetpack Search results by an arbitrary postmeta value (e.g. author_role, priority) have no way to do it today: the Search Blocks inserter only offers taxonomy / post-type / author filters, and Jetpack Search itself only indexes a curated set of meta keys. This PR adds a "Filter by Meta Field" block variation that uses the existing jetpack-search-meta0jetpack-search-meta9 reserved index slots — the same mechanism RSM-2108 (#48684) added for taxonomies — so the site owner declares a single mapping in PHP and the block then routes its aggregation against the right indexed field.

Proposed changes

  • New filter jetpack_search_custom_meta_map: assoc [ 'user_key' => 'jetpack-search-metaN' ]. Validation mirrors the taxonomy map (slot regex ^jetpack-search-meta[0-9]$, duplicate-slot rejection, _doing_it_wrong() on misconfiguration / non-array return).
  • Search_Blocks::resolve_meta_slot(): returns the slot for mapped keys, the key verbatim for unmapped ones. Resolution happens once at server-side Filter_Checkbox::build_config() and travels with the filterConfig as effectiveSlug — JS query builders stay pure (no global map argument).
  • New "Filter by Meta Field" variation on jetpack-search/filter-checkbox. Reuses the existing taxonomy block attribute as the facet-key carrier (the disk shape stays a single attribute; filterType: 'meta' disambiguates at query time). Inspector picker is sourced from JetpackSearchBlocksConfig.supportedCustomMetaKeys with a (mapped) label suffix.
  • JS resolveFilterFields gains a case 'meta' that targets meta.<slot>.value.raw — the keyword sub-field the v1.3 Search API exposes for terms aggregations against the slot pool. Bucket format is 'plain' (no slug/Name split like taxonomies have on slug_slash_name).

Field path verification

The ES field path was determined empirically by probing the live v1.3 Search API with aggregations against each candidate sub-field on a known-indexed site (en.blog.wordpress.com):

Field Result
meta.jetpack-search-meta0.value.raw ✅ OK (empty buckets)
meta.jetpack-search-meta0.long ✅ OK (numeric agg)
meta.jetpack-search-meta0.double ✅ OK (numeric agg)
meta.jetpack-search-meta0.value [aggs:…] unsupported field.
meta.jetpack-search-meta0.keyword unsupported field
meta.jetpack-search-meta0.raw unsupported field
meta.jetpack-search-meta0 (bare) unsupported field
meta.<nonsense>.value.raw (control) unsupported field

For terms aggregations (the string-facet path this PR exposes), meta.<slot>.value.raw is the right answer. Numeric histogram / range against .long / .double is available but not used here — that's a follow-up if/when there's demand for numeric meta facets.

Related product discussion/links

Does this pull request change what data or activity we track or use?

No.

Testing instructions

Drop this into wp-content/mu-plugins/rsm-2819-test.php on a Jetpack-Search-connected site:

<?php
add_filter( 'jetpack_search_custom_meta_map', function ( $map ) {
    $map['author_role'] = 'jetpack-search-meta1';
    $map['priority']    = 'jetpack-search-meta2';
    return $map;
} );

// Mirror your existing `author_role` postmeta into the slot so wp.com
// indexes it under the right key. (This is the site-owner's responsibility
// per RSM-2108's design — the PR wires up the query side only.)
add_action( 'save_post', function ( $post_id ) {
    $role = get_post_meta( $post_id, 'author_role', true );
    if ( $role ) {
        update_post_meta( $post_id, 'jetpack-search-meta1', $role );
    }
} );

Then:

  1. Add Post, insert a Filter (Checkbox) block.
  2. In the inspector, set Filter type to Meta field. The Meta key dropdown should list author_role (mapped) and priority (mapped).
  3. Pick a key, set a label, save.
  4. View the search page. The block renders; selecting a value drives an ES query against meta.jetpack-search-meta1.value.raw (verify in DevTools network tab — the URL contains the slot field, not meta.author_role.*).
  5. URL keeps user-facing ?author_role[]=foo; the aggregation response key stays aggregations[author_role] so no response-side normalization runs.

Verified end-to-end in atlas docker env: state.filterConfigs.author_role.effectiveSlug === 'jetpack-search-meta1', fetch URL targets meta.jetpack-search-meta1.value.raw and never leaks meta.author_role.*.

Unit tests:

# JS (in projects/packages/search/)
pnpm exec jest tests/js/search-blocks/api.test.js tests/js/search-blocks/filter-checkbox-edit.test.js

# PHP (in projects/packages/search/)
composer phpunit -- --filter='Search_Blocks_Test|Filter_Checkbox_Test'

…rch-metaN slots (RSM-2819)

Sibling of RSM-2108's Custom Taxonomy slot mapping — same architecture
on the postmeta side of Jetpack Search's reserved slot mechanism.

* Search_Blocks::custom_meta_map() reads a new jetpack_search_custom_meta_map
  filter that returns assoc [ 'user_key' => 'jetpack-search-metaN' ]; validation
  mirrors the taxonomy map (slot regex, dup detection, _doing_it_wrong notices).
* Search_Blocks::resolve_meta_slot() returns the slot for mapped keys and the
  key verbatim for unmapped ones — called once at filterConfig build time
  so JS query builders stay pure.
* Filter_Checkbox::build_config() now emits effectiveSlug for either filterType,
  routed through Search_Blocks::resolve_effective_slug(). filter-checkbox now
  also accepts filterType='meta', reusing the existing 'taxonomy' attribute as
  the facet-key carrier (saved-block disk shape stays single-attribute).
* New 'Filter by Meta Field' variation in the inserter + matching inspector
  picker (sourced from JetpackSearchBlocksConfig.supportedCustomMetaKeys with
  '(mapped)' label suffix).
* JS resolveFilterFields gains a 'meta' case targeting meta.<slot>.value.raw —
  the keyword sub-field the v1.3 Search API exposes for terms aggregations
  against the slot pool (verified empirically: meta.<slot>.value, .keyword,
  .raw, and the bare meta.<slot> all return 'unsupported field').

Verified end-to-end in atlas docker env:
- Editor offers 'Filter by Meta Field' variation; picker shows mapped keys
  with '(mapped)' suffix.
- A page with filter-checkbox(filterType=meta, taxonomy=author_role) saves
  with effectiveSlug=jetpack-search-meta1 on its filterConfig.
- Front-end fetch URL hits meta.jetpack-search-meta1.value.raw, never
  meta.author_role.*; aggregation key stays user-facing as author_role.
@kangzj

This comment has been minimized.

@claude
Copy link
Copy Markdown
Contributor

claude Bot commented May 11, 2026

Claude finished @kangzj's task in 2m 36s —— View job


PR Review: RSM-2819 Meta Field Filter

  • Gather diff (meta-side delta vs RSM-2108 base)
  • Review PHP changes (class-search-blocks.php, class-filter-checkbox.php)
  • Review JS changes (edit.js, store/api.js)
  • Review tests (Search_Blocks_Test.php, api.test.js, filter-checkbox-edit.test.js)
  • Review changelog entry
  • Post review findings

Overall this is a high-quality PR. The design cleanly mirrors the taxonomy slot-mapping from RSM-2108, the validation is thorough, and the empirical ES field-path work is well documented. A few minor issues and test gaps worth addressing before merge.


Issues

1. Dummy third arg to __() is a code smell

edit.js line ~505:

__(
    'Pick which mapped meta key…',
    'jetpack-search-pkg',
    /* dummy arg to avoid bad minification */ 0
)

__() only accepts two arguments; the 0 is silently dropped at runtime, but it trips up wp-scripts' i18n extraction and would be flagged in any WP i18n lint pass. If the minifier is mis-joining adjacent string arguments, a cleaner fix is to assign the string to a const before passing it, or use a helper variable — not a phantom argument. Fix this →

2. Dead code in metaKeyOptions label ternary

edit.js in the metaKeyOptions memo:

label: map[ key ]
    ? sprintf( __( '%s (mapped)', ... ), key )
    : key,      // ← this branch can never be reached

supportedCustomMetaKeys() returns array_keys( custom_meta_map() ), and customMetaMap() is that same map — so every key in the list is guaranteed to have a truthy slot value. The else branch is unreachable by construction. Either simplify to always use the (mapped) label, or add a comment explaining the intent (e.g., defensive future-proofing if the two arrays are ever decoupled). Fix this →

3. reset_custom_taxonomy_map_cache() name is now misleading

class-search-blocks.php — the method now also resets $custom_meta_map_cache, but the name only mentions taxonomy. Anyone grepping for "meta cache reset" won't find it, and the docblock only got a brief addendum. Consider renaming to reset_custom_map_caches() (with a @deprecated alias for the old name if callers exist outside the package) or at minimum updating the PHPDoc to explicitly list both caches. Fix this →


Test Gaps

4. No PHP test for the meta path through Filter_Checkbox::build_config()

The diff shows no changes to Filter_Checkbox_Test.php, but the build_config() switch now has a case 'meta': fall-through. The meta path exercises:

  • $key = sanitize_key(...) on the taxonomy attribute
  • Rejection against RESERVED_QUERY_PARAMS (e.g. taxonomy: 's' should render nothing)
  • resolve_effective_slug('meta', $key) returning the mapped slot
  • effectiveSlug appearing in the returned config

A test like test_build_config_meta_filter_uses_effective_slug() covering at least the happy path and the reserved-param guard would close this gap.

5. variationToAttributes(VARIATION_FILTER_META) clears taxonomy — untested

edit.js deliberately clears the taxonomy attribute when switching into the Meta variation (to avoid surfacing a taxonomy slug as a default meta key). This is load-bearing UI behaviour but has no unit test in filter-checkbox-edit.test.js. The existing tests for variationToAttributes in the file make this straightforward to add.


Observations (not blocking)

customMetaMap + supportedCustomMetaKeys are redundant in JS config. Since supportedCustomMetaKeys is always Object.keys(customMetaMap), the editor could derive one from the other. The PR description explains the separation ("so the editor can flag every entry as (mapped) without an extra lookup"), but given point 2 above (ternary is dead code), the argument weakens. Not worth a re-architecture, but worth a // TODO: unify into one config entry comment or a follow-up note in the Linear ticket.

filterField === aggField for meta (meta.<slot>.value.raw for both) differs from taxonomy where they diverge (slug_slash_name vs slug). This is correct given that the keyword sub-field serves both query and aggregation purposes for plain string values — just noting it's an intentional deviation from the taxonomy pattern.

Cache invalidation in new PHP tests relies on the test class's tearDown calling reset_custom_taxonomy_map_cache() (which now also clears the meta cache). This is correct given the extension to that method — but test_custom_meta_map_empty_by_default would silently pick up a stale cache if it runs after test_custom_meta_map_accepts_valid_entries_and_rejects_garbage with no reset between them. Since existing taxonomy tests have the same dependency on tearDown, it's consistent — just something to be aware of if tests are ever run in isolation.


Verdict: No blockers. Items 1–3 are straightforward fixes; items 4–5 are genuinely missing test coverage for new behaviour. Happy to approve after those are addressed.

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented May 11, 2026

Are you an Automattician? Please test your changes on all WordPress.com environments to help mitigate accidental explosions.

  • To test on WoA, go to the Plugins menu on a WoA dev site. Click on the "Upload" button and follow the upgrade flow to be able to upload, install, and activate the Jetpack Beta plugin. Once the plugin is active, go to Jetpack > Jetpack Beta, select your plugin (Jetpack), and enable the atlas/rsm-2819-meta-mapping branch.
  • To test on Simple, run the following command on your sandbox:
bin/jetpack-downloader test jetpack atlas/rsm-2819-meta-mapping

Interested in more tips and information?

  • In your local development environment, use the jetpack rsync command to sync your changes to a WoA dev blog.
  • Read more about our development workflow here: PCYsg-eg0-p2
  • Figure out when your changes will be shipped to customers here: PCYsg-eg5-p2

@github-actions github-actions Bot added [Package] Search Contains core Search functionality for Jetpack and Search plugins [Tests] Includes Tests labels May 11, 2026
@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented May 11, 2026

Thank you for your PR!

When contributing to Jetpack, we have a few suggestions that can help us test and review your patch:

  • ✅ Include a description of your PR changes.
  • ✅ Add a "[Status]" label (In Progress, Needs Review, ...).
  • ✅ Add testing instructions.
  • ✅ Specify whether this PR includes any changes to data or privacy.
  • ✅ Add changelog entries to affected projects

This comment will be updated as you work on your PR and make changes. If you think that some of those checks are not needed for your PR, please explain why you think so. Thanks for cooperation 🤖


Follow this PR Review Process:

  1. Ensure all required checks appearing at the bottom of this PR are passing.
  2. Make sure to test your changes on all platforms that it applies to. You're responsible for the quality of the code you ship.
  3. You can use GitHub's Reviewers functionality to request a review.
  4. When it's reviewed and merged, you will be pinged in Slack to deploy the changes to WordPress.com simple once the build is done.

If you have questions about anything, reach out in #jetpack-developers for guidance!

@github-actions github-actions Bot added the [Status] Needs Author Reply We need more details from you. This label will be auto-added until the PR meets all requirements. label May 11, 2026
…strings, add tests

- Search_Blocks::reset_custom_taxonomy_map_cache() → reset_custom_map_caches()
  (the method now also clears the meta-map cache; old name was misleading).
- metaKeyOptions: the ternary's else branch was unreachable
  (supportedCustomMetaKeys === array_keys(customMetaMap)); simplified to
  always apply the (mapped) suffix and dropped the now-unused
  customMetaMap() helper from edit.js.
- Replaced the dummy `0` third arg to __() in the meta-key help text
  with named const variables (metaKeyEmptyHelp / metaKeyPickHelp) so
  the i18n extraction stays clean.
- New PHP test: Filter_Checkbox::build_config() with filterType='meta'
  pins effectiveSlug for mapped + unmapped keys and the reserved-param
  guard.
- New JS test: variationToAttributes(VARIATION_FILTER_META) clears the
  carried taxonomy attribute regardless of the previous slug.
@kangzj

This comment has been minimized.

@kangzj

This comment has been minimized.

@claude
Copy link
Copy Markdown
Contributor

claude Bot commented May 11, 2026

Claude finished @kangzj's task in 1m 36s —— View job


Follow-up Review: RSM-2819 (4ad663a)


All five items from the previous review are addressed correctly. No new issues introduced.

Fix verification

#1 — i18n consts (edit.js:391-400): metaKeyEmptyHelp and metaKeyPickHelp are properly hoisted as two-argument __() calls before the inspector JSX. Clean and extraction-safe. ✅

#2 — dead ternary removed (edit.js:371-378): metaKeyOptions now always applies sprintf( __('%s (mapped)'), key ). No conditional, no dead branch. The now-unused customMetaMap() reader was also correctly dropped from edit.js. ✅

#3 — method renamed (class-search-blocks.php:457): reset_custom_map_caches() now nulls all three statics — $custom_taxonomy_map_cache, $supported_custom_taxonomies_cache, and $custom_meta_map_cache. Docblock explicitly lists both caches. tearDown in Search_Blocks_Test.php updated to call the new name. ✅

#4 — PHP build_config() test (Filter_Checkbox_Test.php:216-265): test_build_config_meta_filter_uses_effective_slug() covers:

  • Mapped key → effectiveSlug === 'jetpack-search-meta1'
  • Unmapped key → effectiveSlug === 'priority' (verbatim fallthrough) ✅
  • Reserved-param guard via derive_filter_key() with taxonomy: 's' → empty string ✅
  • Proper try/finally cleanup with both remove_filter and reset_custom_map_caches()

#5 — JS variation-switch test (filter-checkbox-edit.test.js:295-309): Covers the VARIATION_FILTER_META case in variationToAttributes() for both a carried slug ('genre') and empty string — both should produce { filterType: 'meta', taxonomy: '' }. Correctly pins the deliberate clear behavior. The variationOptions tests were also updated to include VARIATION_FILTER_META in both the WooCommerce and non-WooCommerce lists. ✅

One observation (non-blocking)

customMetaMap is still seeded into JetpackSearchBlocksConfig in class-search-blocks.php:718 but edit.js no longer reads it (the dead branch that consumed it was correctly removed). The author flagged this with a comment noting the asymmetry is intentional for symmetry with customTaxonomyMap and a potential future meta-whitelist concept. That rationale is fine — the extra bytes in the localized config are negligible. The @TODO comment on the PHP side is a good pointer for follow-up.


LGTM. All blocking items resolved, tests are solid, and the code is cleaner than before the review round. Happy to see this land.

@claude
Copy link
Copy Markdown
Contributor

claude Bot commented May 11, 2026

Claude finished @kangzj's task in 1m 21s —— View job


Re-review: RSM-2819 Meta Field Filter (4ad663a)


All five items from the previous review are addressed cleanly.

✅ Fix #1 — Dummy __() arg

metaKeyEmptyHelp / metaKeyPickHelp are hoisted as named consts above the inspector JSX (edit.js:385-398). The comment on the constants explains why (the minifier issue), which is the right place for it. i18n extraction will now pick these up cleanly.

✅ Fix #2 — Dead ternary in metaKeyOptions

The memo now always applies the (mapped) suffix, no ternary. The customMetaMap() reader that was the only other consumer of the dead branch has been dropped from edit.js entirely. The customMetaMap config entry stays on the PHP/localization side (acknowledged in the response as intentional/symmetric, with a future TODO) — that's a fine call.

✅ Fix #3 — Misleading method name

reset_custom_taxonomy_map_cache()reset_custom_map_caches(). Docblock updated to explicitly list both caches; single caller in Search_Blocks_Test.php::tearDown updated. Clean.

✅ Fix #4 — PHP test for build_config() meta path

test_build_config_meta_filter_uses_effective_slug() in Filter_Checkbox_Test.php covers:

  • Mapped key → effectiveSlug: 'jetpack-search-meta1'
  • Unmapped key → verbatim passthrough ✔
  • Reserved-param guard via derive_filter_key()''

try/finally ensures the filter and cache are always cleaned up regardless of assertion failure. Solid.

✅ Fix #5 — JS test for meta variation switch

Two-case test in filter-checkbox-edit.test.js:

  • variationToAttributes(VARIATION_FILTER_META, 'genre'){ filterType: 'meta', taxonomy: '' }
  • variationToAttributes(VARIATION_FILTER_META, '') → same ✔

The test comment explains the deliberate clear, matching the comment in the implementation. Good.


No new issues

The new Search_Blocks_Test.php tests (test_custom_meta_map_*, test_resolve_meta_slot_*, test_supported_custom_meta_keys_*) are thorough, well-structured, and match the exact pattern used for taxonomy tests. The api.test.js tests cover the happy path (with effectiveSlug), the backwards-compat fallback (without effectiveSlug), and the no-key guard. Nothing looks off.


Verdict: LGTM. All review items resolved, no regressions spotted, test coverage is solid. Ready to merge once #48684 (RSM-2108) lands and the base is swapped to trunk.

@kangzj
Copy link
Copy Markdown
Contributor Author

kangzj commented May 11, 2026

🤖 Review-cycle summary — e4150b815e44ad663af140644f4d52109eba502145e3d7824ba

2 rounds; CI pending; 1 round of @claude review addressed; @claude approved (LGTM 🟢).

What changed during the cycle

Commits added on top of the initial implementation:

  • `4ad663af140` — Address review: rename cache resetter, drop dead ternary, hoist help strings, add tests

Diff vs round 1: 5 files changed, 100 insertions(+), 31 deletions(-)

Review threads addressed:

Source Item Resolution
@claude (round 1) Dummy 0 third arg to __() in meta-key help Hoisted to metaKeyEmptyHelp / metaKeyPickHelp consts (4ad663af140)
@claude (round 1) Dead ternary in metaKeyOptions Simplified to always apply (mapped) suffix; dropped unused customMetaMap() reader (4ad663af140)
@claude (round 1) reset_custom_taxonomy_map_cache() name misleading Renamed to reset_custom_map_caches() with updated docblock + tearDown caller (4ad663af140)
@claude (round 1) Missing PHP test for meta build_config() path Added test_build_config_meta_filter_uses_effective_slug() (4ad663af140)
@claude (round 1) Missing JS test for meta variation switch Added variationToAttributes(VARIATION_FILTER_META) clear test (4ad663af140)

Unaddressed (flagged for owner): none.

Stacked-PR note: this PR is based on atlas/rsm-2108-custom-taxonomy-whitelist (PR #48684). The base will swap to trunk once that lands; the diff against trunk at that point will be just the meta-mapping commits.

@claude
Copy link
Copy Markdown
Contributor

claude Bot commented May 11, 2026

Claude finished @kangzj's task in 24s —— View job


Review-Cycle Acknowledged

Thanks for the clean cycle summary, @kangzj.

All five review items were resolved in 4ad663af140 — the cache-resetter rename, dead ternary removal, i18n const hoisting, and both missing test cases. The second review confirmed everything was addressed correctly with no new issues introduced.

Status: LGTM 🟢 — ready to merge once PR #48684 (RSM-2108) lands and the base is swapped to trunk.


@kangzj kangzj added the [Status] Needs Team Review Obsolete. Use Needs Review instead. label May 11, 2026
@jp-launch-control
Copy link
Copy Markdown

jp-launch-control Bot commented May 11, 2026

Code Coverage Summary

No summary data is available for parent commit 440089e, so cannot calculate coverage changes. 😴

If that commit is a feature branch rather than a trunk commit, this is expected. Otherwise, this should be updated once coverage for 440089e is available.

Full summary · PHP report · JS report

@kangzj
Copy link
Copy Markdown
Contributor Author

kangzj commented May 11, 2026

@copilot resolve the merge conflicts in this pull request and fix linting error

Copilot AI added 2 commits May 11, 2026 07:47
…hitelist' into atlas/rsm-2819-meta-mapping

# Conflicts:
#	projects/packages/search/src/search-blocks/blocks/filter-checkbox/edit.js
Copy link
Copy Markdown
Contributor

Copilot AI commented May 11, 2026

@copilot resolve the merge conflicts in this pull request and fix linting error

Done — I merged the latest stacked base into this branch to resolve the conflict and fixed the lint/static-analysis failure (PhanRedundantArrayValuesCall in supported_custom_meta_keys). Addressed in commits f2b5ec4 and e6d0bbb. I also re-ran the targeted Search JS and PHP tests and they pass.

Warning

Firewall rules blocked me from connecting to one or more addresses (expand for details)

I tried to connect to the following addresses, but was blocked by firewall rules:

  • downloads.w.org
    • Triggering command: /usr/bin/php8.3 /usr/bin/php8.3 -n -c /tmp/M7ugKM /usr/bin/composer install --no-interaction --no-progress verage.git --quiet --alternate-refs--hard git remo�� add composer /home/REDACTED/.cargo/bin/git mann/lines-of-cogit git t git (dns block)
  • https://api.github.com/repos/Automattic/wordbless/zipball/7db3385da450e6568627894fa1a431d68dea1440
    • Triggering command: /usr/bin/php8.3 /usr/bin/php8.3 -n -c /tmp/M7ugKM /usr/bin/composer install --no-interaction --no-progress verage.git --quiet --alternate-refs--hard git remo�� add composer /home/REDACTED/.cargo/bin/git mann/lines-of-cogit git t git (http block)
  • https://api.github.com/repos/Yoast/PHPUnit-Polyfills/zipball/134921bfca9b02d8f374c48381451da1d98402f9
    • Triggering command: REDACTED, pid is -1 (http block)
  • https://api.github.com/repos/myclabs/DeepCopy/zipball/07d290f0c47959fd5eed98c95ee5602db07e0b6a
    • Triggering command: REDACTED, pid is -1 (http block)
    • Triggering command: /usr/bin/php8.3 /usr/bin/php8.3 -n -c /tmp/M7ugKM /usr/bin/composer install --no-interaction --no-progress verage.git --quiet --alternate-refs--hard git remo�� add composer /home/REDACTED/.cargo/bin/git mann/lines-of-cogit git t git (http block)
  • https://api.github.com/repos/nikic/PHP-Parser/zipball/dca41cd15c2ac9d055ad70dbfd011130757d1f82
    • Triggering command: REDACTED, pid is -1 (http block)
    • Triggering command: /usr/bin/php8.3 /usr/bin/php8.3 -n -c /tmp/M7ugKM /usr/bin/composer install --no-interaction --no-progress verage.git --quiet --alternate-refs--hard git remo�� add composer /home/REDACTED/.cargo/bin/git mann/lines-of-cogit git t git (http block)
  • https://api.github.com/repos/phar-io/manifest/zipball/54750ef60c58e43759730615a392c31c80e23176
    • Triggering command: REDACTED, pid is -1 (http block)
    • Triggering command: /usr/bin/php8.3 /usr/bin/php8.3 -n -c /tmp/M7ugKM /usr/bin/composer install --no-interaction --no-progress verage.git --quiet --alternate-refs--hard git remo�� add composer /home/REDACTED/.cargo/bin/git mann/lines-of-cogit git t git (http block)
  • https://api.github.com/repos/phar-io/version/zipball/4f7fd7836c6f332bb2933569e566a0d6c4cbed74
    • Triggering command: REDACTED, pid is -1 (http block)
    • Triggering command: /usr/bin/php8.3 /usr/bin/php8.3 -n -c /tmp/M7ugKM /usr/bin/composer install --no-interaction --no-progress verage.git --quiet --alternate-refs--hard git remo�� add composer /home/REDACTED/.cargo/bin/git mann/lines-of-cogit git t git (http block)
  • https://api.github.com/repos/roots/wordpress-core-installer/zipball/714d2e2a9e523f6e7bde4810d5a04aedf0ec217f
    • Triggering command: /usr/bin/php8.3 /usr/bin/php8.3 -n -c /tmp/M7ugKM /usr/bin/composer install --no-interaction --no-progress verage.git --quiet --alternate-refs--hard git remo�� add composer /home/REDACTED/.cargo/bin/git mann/lines-of-cogit git t git (http block)
  • https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/90f41072d220e5c40df6e8635f5dafba2d9d4d04
    • Triggering command: REDACTED, pid is -1 (http block)
  • https://api.github.com/repos/sebastianbergmann/comparator/zipball/c769009dee98f494e0edc3fd4f4087501688f11e
    • Triggering command: REDACTED, pid is -1 (http block)
  • https://api.github.com/repos/sebastianbergmann/complexity/zipball/bad4316aba5303d0221f43f8cee37eb58d384bbb
    • Triggering command: REDACTED, pid is -1 (http block)
  • https://api.github.com/repos/sebastianbergmann/diff/zipball/7ab1ea946c012266ca32390913653d844ecd085f
    • Triggering command: REDACTED, pid is -1 (http block)
  • https://api.github.com/repos/sebastianbergmann/environment/zipball/b121608b28a13f721e76ffbbd386d08eff58f3f6
    • Triggering command: REDACTED, pid is -1 (http block)
  • https://api.github.com/repos/sebastianbergmann/exporter/zipball/016951ae10980765e4e7aee491eb288c64e505b7
    • Triggering command: /usr/bin/php8.3 /usr/bin/php8.3 -n -c /tmp/7i1l19 /usr/bin/composer install --no-interaction --no-progress (http block)
    • Triggering command: REDACTED, pid is -1 (http block)
  • https://api.github.com/repos/sebastianbergmann/global-state/zipball/ef1377171613d09edd25b7816f05be8313f9115d
    • Triggering command: /usr/bin/php8.3 /usr/bin/php8.3 -n -c /tmp/7i1l19 /usr/bin/composer install --no-interaction --no-progress (http block)
    • Triggering command: REDACTED, pid is -1 (http block)
  • https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/97ffee3bcfb5805568d6af7f0f893678fc076d2f
    • Triggering command: REDACTED, pid is -1 (http block)
  • https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/1effe8e9b8e068e9ae228e542d5d11b5d16db894
    • Triggering command: /usr/bin/php8.3 /usr/bin/php8.3 -n -c /tmp/7i1l19 /usr/bin/composer install --no-interaction --no-progress (http block)
    • Triggering command: REDACTED, pid is -1 (http block)
  • https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/4bfa827c969c98be1e527abd576533293c634f6a
    • Triggering command: /usr/bin/php8.3 /usr/bin/php8.3 -n -c /tmp/7i1l19 /usr/bin/composer install --no-interaction --no-progress (http block)
    • Triggering command: REDACTED, pid is -1 (http block)
  • https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/876099a072646c7745f673d7aeab5382c4439691
    • Triggering command: REDACTED, pid is -1 (http block)
  • https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/3d1cd096ef6bea4bf2762ba586e35dbd317cbfd5
    • Triggering command: REDACTED, pid is -1 (http block)
  • https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/12b54e689b07a25a9b41e57736dfab6ec9ae5406
    • Triggering command: REDACTED, pid is -1 (http block)
  • https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/e1367a453f0eda562eedb4f659e13aa900d66c53
    • Triggering command: REDACTED, pid is -1 (http block)
  • https://api.github.com/repos/sebastianbergmann/php-timer/zipball/f258ce36aa457f3aa3339f9ed4c81fc66dc8c2cc
    • Triggering command: REDACTED, pid is -1 (http block)
  • https://api.github.com/repos/sebastianbergmann/phpunit/zipball/d75dd30597caa80e72fad2ef7904601a30ef1046
    • Triggering command: REDACTED, pid is -1 (http block)
  • https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/0b01998a7d5b1f122911a66bebcb8d46f0c82d8c
    • Triggering command: /usr/bin/php8.3 /usr/bin/php8.3 -n -c /tmp/7i1l19 /usr/bin/composer install --no-interaction --no-progress (http block)
    • Triggering command: REDACTED, pid is -1 (http block)
  • https://api.github.com/repos/sebastianbergmann/type/zipball/e549163b9760b8f71f191651d22acf32d56d6d4d
    • Triggering command: /usr/bin/php8.3 /usr/bin/php8.3 -n -c /tmp/7i1l19 /usr/bin/composer install --no-interaction --no-progress (http block)
    • Triggering command: REDACTED, pid is -1 (http block)
  • https://api.github.com/repos/sebastianbergmann/version/zipball/3e6ccf7657d4f0a59200564b08cead899313b53c
    • Triggering command: /usr/bin/php8.3 /usr/bin/php8.3 -n -c /tmp/7i1l19 /usr/bin/composer install --no-interaction --no-progress (http block)
    • Triggering command: /usr/bin/php8.3 /usr/bin/php8.3 -n -c /tmp/M7ugKM /usr/bin/composer install --no-interaction --no-progress verage.git --quiet --alternate-refs--hard git remo�� add composer /home/REDACTED/.cargo/bin/git mann/lines-of-cogit git t git (http block)
  • https://api.github.com/repos/staabm/side-effects-detector/zipball/d8334211a140ce329c13726d4a715adbddd0a163
    • Triggering command: /usr/bin/php8.3 /usr/bin/php8.3 -n -c /tmp/7i1l19 /usr/bin/composer install --no-interaction --no-progress (http block)
    • Triggering command: REDACTED, pid is -1 (http block)
  • https://api.github.com/repos/theseer/tokenizer/zipball/7989e43bf381af0eac72e4f0ca5bcbfa81658be4
    • Triggering command: REDACTED, pid is -1 (http block)
    • Triggering command: /usr/bin/php8.3 /usr/bin/php8.3 -n -c /tmp/M7ugKM /usr/bin/composer install --no-interaction --no-progress verage.git --quiet --alternate-refs--hard git remo�� add composer /home/REDACTED/.cargo/bin/git mann/lines-of-cogit git t git (http block)

If you need me to access, download, or install something from one of these locations, you can either:

Copilot finished work on behalf of kangzj May 11, 2026 07:51
@kangzj kangzj marked this pull request as draft May 11, 2026 21:02
@kangzj
Copy link
Copy Markdown
Contributor Author

kangzj commented May 11, 2026

Parking this as we don't even have a meta filter yet.

@kangzj kangzj closed this May 11, 2026
@github-actions github-actions Bot removed [Status] Needs Author Reply We need more details from you. This label will be auto-added until the PR meets all requirements. [Status] Needs Team Review Obsolete. Use Needs Review instead. labels May 11, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

[Package] Search Contains core Search functionality for Jetpack and Search plugins [Tests] Includes Tests

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants