org-html-publish-to-html is defined in ox-html.el and looks like this
(sans doc):
(defun org-html-publish-to-html (plist filename pub-dir)
(org-publish-org-to 'html filename ".html" plist pub-dir))
You could define your own publishing function, e.g.
(defun my-org-html-publish-to-html (plist filename pub-dir)
(org-publish-org-to 'html filename ".yml" plist pub-dir))
and refer to that in your org-publish-project-alist.
org-html-extension is used in org-html-export-to-html which calls
org-export-to-file, which is the same function org-publish-org-to
calls (so org-html-extension is bypassed).
There's also the export option :html-extension but it doesn't look
like it's used to name published files.
Thanks for the clear explanation. Using my own function works, but this
does seem to be a regression. Defining your own extension is useful e.g.
if you want to emit .php files.
Ian.