- Add GetTemplate, UpdateTemplateName, CreateTemplateItem, UpdateTemplateItem, DeleteTemplateItem, ReorderTemplateItems handlers - Add GenerateBudget handler with 409 BudgetExistsError response including budget_id - Handler-level validation: one_off items rejected for template routes, fixed items require budgeted_amount - Month format validated via time.Parse before calling query layer