Problem
Adding AI/ML templates and extensions will break CPA CI unless the registry validation
scripts and curated profiles know the new template types and compatibility rules.
CPA's CI is layered: L0 validates registry/profiles, L1 scaffolds templates alone, L2
tests one extension on its canonical template, and L3 tests curated profiles. New
AI/ML types must fit that flow.
Solution
Create a registry and CI support issue for the AI/ML catalog.
Deliverables:
- Add new categories to
templates.json only after taxonomy is accepted.
- Add new template type mappings in:
scripts/ci/registry.py::CANONICAL_TEMPLATE_BY_TYPE
scripts/ci/validate-registry.py::STACK_PREFIX_BY_TYPE
- Add CI profiles under
ci/profiles/ for realistic stacks, for example:
fastapi-ai-chat-default
mlops-sklearn-default
mlops-sklearn-github-actions
- Keep L3 profiles small and representative; do not test every compatible extension
combination.
- Ensure new categories do not cause duplicate-category conflicts in curated profiles.
- Add or update tests for registry validation if current scripts support it.
Constraints:
- No generated project should require network/API credentials to pass CI.
- Heavy GPU/distributed paths must be out of default CI unless explicitly mocked or
reduced to CPU fallback.
- Every new template/extension issue must specify its expected CI profile.
Acceptance criteria:
- L0/L1/L2/L3 can validate the first AI/ML vertical slice.
- Future AI/ML issues know exactly which registry/CI files must change.
Problem
Adding AI/ML templates and extensions will break CPA CI unless the registry validation
scripts and curated profiles know the new template types and compatibility rules.
CPA's CI is layered: L0 validates registry/profiles, L1 scaffolds templates alone, L2
tests one extension on its canonical template, and L3 tests curated profiles. New
AI/ML types must fit that flow.
Solution
Create a registry and CI support issue for the AI/ML catalog.
Deliverables:
templates.jsononly after taxonomy is accepted.scripts/ci/registry.py::CANONICAL_TEMPLATE_BY_TYPEscripts/ci/validate-registry.py::STACK_PREFIX_BY_TYPEci/profiles/for realistic stacks, for example:fastapi-ai-chat-defaultmlops-sklearn-defaultmlops-sklearn-github-actionscombination.
Constraints:
reduced to CPU fallback.
Acceptance criteria: