CLOSED 2026-09-23 (claude-code, 075ddc4): SAF#0 literals removed, STS#0 default applies; theme from the blueprint (e89e77a).
SiteDefinitionLoader lines 59 and 176 hardcode the literal SAF#0 into every site definition Template. The model class at ISiteDefinitionLoader line 46 already defaults to the REAL name STS#0 and the loader overwrites it with the invented one. Nobody decided to diverge; someone needed a template id and invented a plausible one. Declare WebTemplate on SiteTemplate, populate it with the real ids, and have the loader read it with STS#0 as the fallback. Recon found no behavioural coupling - two pass-through display seams, no stylesheet branches on it - so this is contained. It also fixes a second defect for free: AgencyController line 187 assigns the template into a JSON field literally named theme.