performwp / performwp/perform

Continuously verify Perform's documented PHP 7.4 support floor

Open
#205 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

area: build-ci area: compatibility owner:codex priority: high risk: backward-compatibility status: ready type: maintenance
Dominant language
PHP
Stars
5
Forks
2
PR merge metrics
No merged PRs in 30d

Description

Problem

Perform publicly supports PHP 7.4, but the PHP lint and PHPUnit workflows only run PHP 8.1, 8.2, and 8.3. The source currently avoids obvious PHP 8-only syntax, but the supported minimum is not continuously proven. A future dependency or syntax change can therefore publish a parse/runtime regression for a documented supported environment without CI detecting it.

Evidence

  • readme.txt:5-8 and README.md:20,64 state PHP 7.4+ support.
  • .github/workflows/lint.yml:29 defines a matrix of 8.1, 8.2, and 8.3 only.
  • .github/workflows/phpunit.yml likewise tests only 8.1, 8.2, and 8.3.
  • README.md:69 correctly explains that Composer's 8.1 platform target is for local dependency resolution, not the plugin runtime minimum.

Scope

Make the publicly supported PHP floor continuously verifiable, or make an explicit owner-approved change to the published support contract.

Implementation plan

  1. Confirm the intended public minimum is PHP 7.4 and identify which checks can execute on that version with the current dependency graph.
  2. Add a PHP 7.4 compatibility lane that at minimum parses all shipped PHP and validates production Composer dependencies; add a compatible test lane where PHPUnit/tooling permits it.
  3. Keep the existing 8.1-8.3 test lanes and Composer 8.1 platform policy.
  4. If a required dependency cannot support PHP 7.4, prepare the exact options: compatible dependency/tooling adjustment, runtime shim, or an owner-gated public minimum-PHP change.
  5. Document the split between runtime support and development-tooling resolution in TESTING.md/maintainer guidance and add a regression check that prevents accidental matrix removal.

Acceptance criteria

  • Every supported PHP minimum has a reproducible CI validation path.
  • The PHP 7.4 lane validates every shipped PHP file and production dependency installation without changing plugin runtime behavior.
  • Existing 8.1-8.3 lint, PHPUnit, and static-analysis coverage remains intact.
  • Any change to Requires PHP is made only after explicit owner approval and synchronized across public metadata.

Validation

  • Review CI logs for the new lowest-supported-PHP lane.
  • Run the documented local equivalent where available.
  • Validate a production package install and activation smoke in an isolated WordPress runtime using the declared floor.

Non-goals and risk

  • Do not lower support below PHP 7.4 or change release/tag/publication state.
  • Raising the public minimum PHP requirement is a backward-compatibility owner gate, not an implementation default.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with .github/workflows/lint.yml and .github/workflows/phpunit.yml to compare the existing PHP 8.1–8.3 matrices, then inspect the dependency constraints and TESTING.md guidance. Confirm which checks run on PHP 7.4, add the lowest-version validation without removing existing lanes, and verify CI logs, production installation, and the documented WordPress activation smoke path.

Written by the indexing model from the issue text.

Assessment

Tech stack
github-actions, php
Domain
ci-cd, devops, tooling
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
48/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.