SymPress Coding Standards follows the SymPress organization defaults for contribution, security, and community behavior. Package-specific trust requirements live here because ruleset changes can alter CI outcomes for downstream projects.
Use semantic versioning for package releases.
| Change | Version level |
|---|---|
| Raise the minimum PHP runtime, remove a public ruleset, rename a sniff code, or make a broad default profile stricter | Major |
| Add a new opt-in ruleset, add a new warning, add a new configurable sniff option, or add PHPCS 4 support without changing default findings | Minor |
| Fix false positives, fix false negatives in an existing rule without broad output churn, update docs, or widen compatible dependency ranges | Patch |
Every release should include a changelog entry with:
- Added, changed, deprecated, removed, fixed, and security sections where relevant.
- Compatibility impact for PHP, WordPress, PHPCS, WPCS, and VIPWPCS.
- Expected finding churn for existing projects.
- Any recommended migration command.
Every release candidate must be verified against the required matrix before tagging:
| Dimension | Required | Experimental |
|---|---|---|
| PHP runtime | Full package QA on 8.4 and 8.5 | next PHP minor when available |
| PHP_CodeSniffer | 3.x supported range | 4.x until promoted |
| WordPress target config | 6.5, 7.0 | latest trunk when useful |
| Standards | WPCS, VIPWPCS, Slevomat, PHPCompatibility | dependency pre-releases |
The repository-level GitHub workflow may live outside this package. The release notes must still report the effective matrix used for the package release, including any skipped axis and the reason it was skipped.
Before promoting a new default rule or changing severity, run the profile against at least:
- A small plugin or package.
- A theme with PHP templates.
- A large legacy WordPress plugin.
- A WordPress VIP-oriented project if available.
Record:
- PHP version and PHPCS version.
- Ruleset profile.
- File count and approximate PHP lines.
- Runtime and peak memory.
- Total errors and warnings.
- Top 20 sniff codes by count.
- Known false positives and intentional suppressions.
Benchmarks are not pass/fail gates by themselves. They are evidence for whether a rule belongs in Error, Warning, or opt-in advisory status.
The SymPress organization .github repository provides default CONTRIBUTING.md, SECURITY.md, CODE_OF_CONDUCT.md, issue templates, pull request template, and CODEOWNERS. Add local overrides only when this package needs behavior that differs from the organization default.