Quality & Release

QA commands

CommandPurpose
composer qaStandard quality gate: validate, audit, package verify, lint, stan, test
composer qa:maxMaximum quality bar: all of qa + coverage + mutation testing
composer testRun PHPUnit tests
composer test:coverageRun tests with coverage report
composer stanPHPStan static analysis
composer lintPHP syntax lint (src + bin + examples)
composer mutateInfection mutation testing
composer verify:packageVerify package archive is clean

CI pipeline

GitHub Actions CI runs on every push and PR:

qa:max vs CI equivalence

composer qa:max runs locally: validate, audit, package verify, syntax lint, PHPStan, coverage with threshold, mutation testing.

CI runs the same checks split across parallel jobs. The CI quality job includes lint+stan (matching the quality half of qa:max). Coverage and mutation run in separate CI jobs. The commands are identical.

Design principles