common-doc / commondoc
Multi-repository Markdown documentation site builder for PHP.
Requires
- php: ~8.4.1 || ~8.5.0
- ext-mbstring: *
- laminas/laminas-config-aggregator: ^1.20
- laminas/laminas-servicemanager: ^4.5
- laminas/laminas-view: ^3.1
- league/commonmark: ^2.10
- psr/container: ^2.0
- symfony/console: ^7.4 || ^8.0
- webware/message-bus: ^2.0.0-beta.7
- webware/messagebus-event: ^2.0.0-beta.6
- webware/query-param-router: ^1.0.0-alpha.4
- webware/webware-console: ^1.0.0-alpha.8
Requires (Dev)
- infection/infection: ^0.35.0
- phpbench/phpbench: ^1.7
- phpunit/phpunit: ^13.4.4
- roave/backward-compatibility-check: ^8.21.0
- roave/security-advisories: dev-master
- webware/webware-tools: ^1.0.0-rc.8
Suggests
None
Provides
None
Conflicts
None
Replaces
None
This package is not auto-updated.
Last update: 2026-11-09 09:14:17 UTC
README
Multi-repository Markdown documentation site builder for PHP: it assembles documentation
held in several repositories into one site. It is vendor neutral and deliberately does not
live under the webware vendor, so it can be used by anyone.
The badges are fenced deliberately. Nothing should advertise a workflow, a package or a report that does not exist yet: this repository has no installed workflow and no Packagist release. Un-fence the block below once those exist, and add a CI badge for whichever workflow actually runs here.
[](https://packagist.org/packages/common-doc/commondoc) [](https://packagist.org/packages/common-doc/commondoc) [](LICENSE) [](https://codecov.io/gh/common-doc/commondoc) [](https://dashboard.stryker-mutator.io/reports/github.com/common-doc/commondoc/1.0.x)
What ships here
Everything in this repository is either a package of record consumed from
webware/webware-tools, or the thin per-repo wiring that cannot live in a shared
config:
| Path | Role |
|---|---|
mago.toml |
Extends the centre (vendor/webware/webware-tools/mago.toml) and overrides php-version only. Never re-add general rules locally. |
mago.bat |
Windows shim Infection needs to run the native Mago binary. Tracked, not ignored. No effect on Linux or CI. See webinertia/webware-tools issue 59. |
webware-ci.json |
The house CI workflow's parameter contract, read from the repository root. See Continuous integration below. |
phpunit.xml.dist |
PHPUnit 13 strict mode: requireCoverageMetadata, failOnNotice, failOnWarning, failOnDeprecation. |
compose.yml / Dockerfile / .devcontainer/ |
The containerized toolchain (Composer, PHPUnit, Mago, Infection, PHPBench, roave BC-check). |
src/ConfigProvider.php |
The package wiring entry point, declared under extra.laminas.config-provider. |
.specify/ / .github/skills/ |
Spec Kit project files and the Copilot agent skills, on PowerShell scripts. |
.specify/presets/common-doc-standard/ |
The vendored Spec Kit preset carrying this repository's constitution template, registered in .specify/presets/.registry. |
mago.toml, mago.bat, phpunit.xml.dist, .gitattributes, .gitignore, codecov.yml, Dockerfile,
.dockerignore, infection.json5.dist, phpbench.json.dist and devcontainer config are
byte-identical to the canonical artifacts in
webware-tools/presets/webware-alignment/artifacts/ - copy updates from there rather than
editing them here.
Continuous integration
This repository has no .github/workflows directory. webware-ci.json is the parameter
contract for the required workflow hosted in webinertia/.github, which applies to
repositories in that organization only, so nothing reads it here today. A workflow of this
repository's own has to be added, or webware-ci.json removed, when that decision is taken.
No workflow file is provided by this repository today.
Quality gates
Both MSI gates are set to 95: the ecosystem standard, not a starting point. Lower them only with a deliberate decision, and never silently:
"min_msi": "95", "min_covered_msi": "95"
Four Mago gates must be clean: format --check, lint, analyze, guard. Run mago fmt
first when making changes, and fix findings at source rather than adding @mago-expect - a
suppression needs to be a decision, not a reflex.
Development
The toolchain runs in a container, so the host needs no PHP install. With VS Code, reopen in the container; without it:
docker compose up -d docker compose exec tooling composer install docker compose exec tooling composer test docker compose exec tooling composer test-integration docker compose exec tooling mago lint docker compose down
Packages whose tests need MySQL uncomment the mysql service in compose.yml, mirroring the
db_image / db_env_json / db_port values they declare in webware-ci.json.