Skip to content

Maintain dependencies, CI, tests, and repository hygiene - #199

Draft
ashfame wants to merge 59 commits into
trunkfrom
agent/maintenance-security-and-hygiene
Draft

Maintain dependencies, CI, tests, and repository hygiene#199
ashfame wants to merge 59 commits into
trunkfrom
agent/maintenance-security-and-hygiene

Conversation

@ashfame

@ashfame ashfame commented Jul 27, 2026

Copy link
Copy Markdown
Member

Summary

This draft integration PR implements the approved maintenance program recorded in plan.md through merged child PRs #200 through #218. It upgrades causal dependencies where safe, makes Node/PHP CI reproducible, validates both browser packages and Firefox metadata, aligns local and hosted test environments, removes abandoned Jest scaffolding, adds dependency upkeep and package metadata, and completes the authorized stale-branch cleanup.

This PR remains draft and unmerged for owner testing and explicit residual-security decisions.

Security outcome

Range-, scope-, and path-aware reconciliation resolves 84 of the 124 baseline Dependabot rows on the integration lock, including all five critical rows and the Composer alert. Forty baseline npm rows remain: 26 WPS, five React Router, three Concurrently plus WPS, two block-library, two Babel plus WPS, one web-ext, and one web-ext plus WPS.

The final npm audit reports 111 affected package/effect keys across 60 GHSAs: 87 high, 15 moderate, nine low, and zero critical. Seven applicable npm-audit GHSAs are not represented in the unchanged default-branch 124-alert set and are mapped in plan.md. The published Playground client also hides an upstream bundled body-parser@1.20.5 source risk even though alert 171 is resolved under the repository lock-path rule.

No override, downgrade, alert dismissal, extra ignored Firefox bundle, or silent broad migration was used. The retained rows are documented blockers where available upgrades retain affected paths, add another applicable advisory or extension-security warning, or require a broad migration.

GitHub continues to show all 124 original alerts because Dependabot evaluates default-branch manifests; recalculation cannot occur until this draft reaches trunk.

Developer-facing changes

  • Node 24 is selected by .nvmrc and enforced as >=24 <25; CI uses lockfile caching and npm ci.
  • Schema generation precedes TypeScript checking; pull requests run lint, type-check, both production builds, packaged-reference validation, and exact Firefox linting.
  • Aggregate npm build commands now build both Firefox and Chrome targets, and obsolete Jest scaffolding/documentation is removed.
  • Firefox declares the provisional Gecko ID, truthful data categories, corrected icon path, and minimum version 142.0; changing the ID after first publication would create a distinct identity.
  • Local wp-env uses latest-stable WordPress and PHP 8.4; hosted PHP matrices cover 8.3/8.4 with MySQL 8.0 and deterministic WordPress fixtures.
  • PHPUnit is 9.6.33 with the matching schema; Composer audit, PHPCS, and the complete PHPUnit suite are gated.
  • Monthly grouped npm/Composer version upkeep, private npm identity/version metadata, an accurate Composer description, and root-only SQL backup ignores are added.
  • Ten recoverable stale branches were deleted after documentation; attempt-twitter, fix-test-wix, and npm_package_updates remain preserved at their exact recorded SHAs.

No application public API, stored-data schema, application behavior, license file, or license metadata change is intended.

Automated validation

The final child and current integration head run Node 24 clean install, JavaScript/style lint, schema-aware type-check, Firefox and Chrome production builds, nine-reference validation for each package, and Firefox lint with zero errors/notices and only the exact allowed side-panel API warning while ignoring only generated app.js.

PHP 8.3 and 8.4 jobs run clean locked Composer installation/audit, deterministic schema and WordPress test setup against MySQL 8.0, complete PHPCS, and the full PHPUnit suite. The final child PR #218 passed all five hosted checks; this integration head is running the same gates.

Manual testing required

  • Load build/production/firefox and build/production/chrome unpacked; verify the Firefox sidebar and Chrome side panel open without console errors.
  • Start WordPress Playground in both targets; verify the asynchronous Playground/vendor bundle loads and assess startup, parse, and memory behavior around the approximately 21.2 MiB application bundle.
  • Import representative navigation and multiple pages, preview them, and verify content, links, media, and layout.
  • Reload and close/reopen both browsers; verify session persistence and inspect browser-extension plus WordPress/PHP logs.
  • Exercise Firefox and Chrome development watch/start commands; change a copied manifest/icon/plugin/schema input and verify one correct recopy without an output-triggered loop.
  • Reconfirm the provisional Firefox Gecko ID and data categories before first publication, the single allowed unsupported-API warning, and absence of any additional manifest or generated-bundle diagnostic.

After manual testing, explicitly decide how to handle the documented 40 baseline residual rows, seven audit-only advisories, and hidden Playground source risk before marking this PR ready or merging it.

ashfame and others added 30 commits July 27, 2026 23:26
- preserve the approved maintenance and remediation scope verbatim
- establish the integration branch before child work begins
- map 124 Dependabot alerts to locked causal dependency families
- inventory fourteen stale branches with recovery evidence
- preserve the approved plan text and record validation
…n-baseline

Document the maintenance execution baseline
- upgrade @wp-playground/client to the first source-secure 3.1.38 release
- remove vulnerable Playground lockfile paths without unrelated version changes
- document resolved, partial, and upstream-blocked alerts
…nd-client

Remediate Playground client dependency paths
- upgrade @wordpress/scripts to the first clean 30.7.0 boundary
- refresh three compatible security transitives without overrides
- document 32 resolved alerts and remaining upstream constraints
…s-scripts

Remediate WordPress scripts critical dependency paths
…s-blocks

Upgrade WordPress Blocks security boundary
…uter

Document React Router remediation blocker
…pack-plugin

Update copy-webpack-plugin security path
- document why every newer stable release retains the affected archive path

- record candidate audits and the new applicable brace-expansion advisory

- preserve the approved plan prefix and retained dependency state
- replace the temporary child branch reference with pull request 208

- preserve the reviewed blocker evidence and approved plan prefix
…ger-webpack-plugin

Document filemanager webpack security blocker
- document the minimum vulnerable-path fix and its new Firefox add-on warning

- retain package and source state after security and bundle review

- record candidate and retained Node 24 validation
- replace temporary branch references with pull request 209

- preserve the reviewed blocker evidence and retained-state results
ashfame and others added 29 commits July 28, 2026 06:09
…s-block-library

Document WordPress block library security blocker
- remove the deprecated DefinitelyTyped root and declare runtime Components explicitly

- select the first patched Components and YAML dependency boundaries

- record audit, build, and rejected-candidate evidence
- replace temporary branch references with pull request 210

- preserve the reviewed causal replacement evidence
…s-block-types

Replace obsolete WordPress block types dependency
- correct packaged icons and add Firefox identity and consent metadata

- validate target-specific references and exact Firefox lint output

- document the provisional identity, data flow, and support floor
- replace the temporary branch record with pull request 211

- preserve the reviewed manifest and validation evidence
…n-manifests

Validate extension manifests and Firefox identity
Standardize local and CI Node execution on Node 24 with lockfile caching and npm ci.

Run schema-aware type checking, linting, both production builds, and extension package validation on pull requests and trunk pushes.
Make aggregate development and production builds emit both browser targets.

Replace abandoned frontend test guidance with the repository's actual validation commands.
…-and-jest

Maintenance: fix build commands and remove Jest scaffolding
Use latest stable WordPress with PHP 8.4 locally and test PHP 8.3 and 8.4 against MySQL 8.0 in CI.

Freeze the resolved WordPress version per job so core and PHPUnit fixtures stay matched.
CI: align WordPress, PHP, and MySQL test targets
…-and-ignores

Complete package metadata and backup ignores
…anch-triage

Document and complete stale branch triage
…conciliation

Reconcile final maintenance security state
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.

1 participant