Quality & Release

QA commands

CommandPurpose
composer qaStandard quality gate: validate, audit, package verify, lint, stan, test
composer qa:maxExtended local bar: qa + coverage threshold check + mutation testing (requires a local coverage driver)
composer testRun PHPUnit tests
composer test:coverageRun tests with coverage report (Xdebug coverage mode or PCOV)
composer stanPHPStan static analysis
composer lintPHP syntax lint (src + bin + examples)
composer mutateInfection mutation testing (same coverage-driver requirement)
composer verify:packageVerify package archive is clean

Package verification checks both the declared export-ignore rules and the contents of a real git archive build.

CI pipeline

GitHub Actions CI runs on every push and PR:

Local qa:max and CI scope

composer qa:max extends composer qa with coverage threshold checks and mutation testing. Coverage and mutation still require a local coverage driver.

CI covers the same release areas across parallel jobs, but it is not a byte-for-byte mirror of local qa:max: PHPUnit runs on PHP 8.2, 8.3, and 8.4, while the quality, coverage, and mutation jobs run on PHP 8.3.

Use XDEBUG_MODE=coverage, enable xdebug.mode=coverage, or install PCOV.

Design principles