Description
As a maintainer of php-service-template, I want a documented and partially automated path for turning the template into a real service, so that downstream teams can rename the src/CompanySubdomain/SomeModule placeholder and scaffold new bounded contexts without guesswork or breaking the locked quality gates.
Today there is no guide for renaming the CompanySubdomain/SomeModule placeholder when bootstrapping a real service (grep of README.md/CONTRIBUTING.md/AGENTS.md finds zero mentions of it). deptrac.yaml hardcodes the placeholder namespaces in enumerated class-suffix regexes while AGENTS.md and the deptrac-fixer skill forbid editing deptrac.yaml — a contradictory rule the very first real customization must break. No scaffolding generates a new bounded context with the Domain/Application/Infrastructure layers, composer.json still carries the template identity with a typo (vilnacrm/php-serice-template), and there is no per-service extension point such as an optional Makefile.local include, so downstream repos must fork-edit synced files that the weekly template-sync will then fight.
Affected quality attributes
- customizability — 3/5, no rename/bootstrap checklist for the placeholder namespace, composer.json name, workspace.dsl and deptrac.yaml — target 5/5
- tailorability — 3/5, locked policy files (scripts/validate-configuration.sh) with no sanctioned override path or Makefile.local seam for downstream services — target 5/5
- extensibility — 4/5, adding a module requires hand-appending brittle deptrac.yaml regexes and there is no bounded-context scaffolder — target 5/5
- adaptability — 4/5, deptrac.yaml collectors hardcode
CompanySubdomain\SomeModule / Internal\HealthCheck instead of structural layer patterns — target 5/5
- evolvability — 4/5, no documented sanctioned edit/divergence path for downstream consumers of template-sync — target 5/5
- intuitiveness — 4/5, placeholder module ships with no accompanying guide on how to replace it — target 5/5
This issue is part of the enterprise quality audit (report: docs/audit/enterprise-quality-audit-2026-07.md on branch claude/enterprise-quality-audit-bc8jch).
Tasks
Acceptance Criteria
Never propose lowering existing quality gates — thresholds may only be added or raised.
Description
As a maintainer of php-service-template, I want a documented and partially automated path for turning the template into a real service, so that downstream teams can rename the
src/CompanySubdomain/SomeModuleplaceholder and scaffold new bounded contexts without guesswork or breaking the locked quality gates.Today there is no guide for renaming the
CompanySubdomain/SomeModuleplaceholder when bootstrapping a real service (grep ofREADME.md/CONTRIBUTING.md/AGENTS.mdfinds zero mentions of it).deptrac.yamlhardcodes the placeholder namespaces in enumerated class-suffix regexes whileAGENTS.mdand thedeptrac-fixerskill forbid editingdeptrac.yaml— a contradictory rule the very first real customization must break. No scaffolding generates a new bounded context with theDomain/Application/Infrastructurelayers,composer.jsonstill carries the template identity with a typo (vilnacrm/php-serice-template), and there is no per-service extension point such as an optionalMakefile.localinclude, so downstream repos must fork-edit synced files that the weekly template-sync will then fight.Affected quality attributes
CompanySubdomain\SomeModule/Internal\HealthCheckinstead of structural layer patterns — target 5/5This issue is part of the enterprise quality audit (report:
docs/audit/enterprise-quality-audit-2026-07.mdon branchclaude/enterprise-quality-audit-bc8jch).Tasks
docs/NEW-SERVICE.md(linked from the README quick start) with a step-by-step bootstrap walkthrough: renamesrc/CompanySubdomain/SomeModule, updatecomposer.jsonname/description,deptrac.yamlcollectors,workspace.dsl,config/api_platform/resources.yaml, and.envsecretsscripts/new-module.shexposed asmake new-module name=...) that generates a new bounded context skeleton with all three layers (Domain/Application/Infrastructure) plus a passing example testdeptrac.yamlnamespace patterns (structural regexes such asApp\\.*\\Domain\\.*covering any module) or document the sanctioned edit path so new modules do not require weakening the ruleset agents are forbidden to editcomposer.jsonpackage name typo (vilnacrm/php-serice-template→vilnacrm/php-service-template)Makefile.localinclude (e.g.-include Makefile.local, gitignored) as a per-service extension point.templatesyncignoreexamples) so customization survives weekly syncsAcceptance Criteria
docs/NEW-SERVICE.mdexists, is linked fromREADME.md, and covers renamingdeptrac.yaml,workspace.dsl, andcomposer.jsonmake deptrac,make psalm, and the unit test suite without editingdeptrac.yamlby hand (or via the documented sanctioned path)composer.jsonname no longer contains the typo andcomposer validatepassesMakefile.localinclude is honored when present and absent-safe when notmake ci)Never propose lowering existing quality gates — thresholds may only be added or raised.