Template packs
Independently versioned, validated template adapters for deterministic generation.
A template pack declares its identity, version, generation contract, renderer requirement, reusable output recipes, definition scopes, confined path patterns, and pinned templates.
TemplatePackLoader.Load validates a supplied manifest and template set without
planning, rendering, discovery side effects, or filesystem writes. Reordering
manifest properties or artifact declarations produces the same normalized
descriptor digest. Missing templates, path traversal, duplicate output paths,
and incompatible generation or renderer contracts fail before planning.
The reference csharp/domain-project pack declares context, Entity,
Enumeration, Rule, and Behaviour recipes. Applying it to Child Care discovers
the matching canonical definitions and creates concrete artifact descriptors.
No recipe or template names Booking, Determine ACCS eligibility, or
Submit application.
Validated descriptors feed generation planning, and pinned template bytes feed template rendering.
Manifest identity
Every manifest declares id, packVersion, generationContractVersion,
rendererId, rendererVersion, and language. rendererId/rendererVersion
are the compatibility seam: TemplatePackLoader.Load rejects any pack whose
pair isn't in the caller's supplied allow-list, before planning. language is
descriptive metadata that selects which registered renderer capability applies
among renderers sharing the same rendererId/rendererVersion — it never
gates compatibility by itself; a supported rendererId/rendererVersion
paired with an unrecognized language fails with a distinct
template-pack.renderer-unsupported diagnostic one layer up, when the caller
resolves a capability. See
renderer capability resolution.