My thought is it’s because you have template-including-parent:: false
on a template block with no children. That property/setting is for when you want to write a template in which the parent block consists of information that is only useful where the template is being defined and that you don’t want to see when the template is being used.
Bowen’s example is a good one; you can see the parent block exists only to set the template:: name
and the parent exclusion, while the child blocks contain all the content (and would thus appear as top-level blocks because the parent is excluded).
Your template is only one block deep—it is the parent, but childless, so it malfunctions because it doesn’t know how to output itself while also hiding itself.
Only use template-including-parent:: false
when your template content is the child or children of some kind of header block. Removing that property should solve your problem. So would moving To-do::, tags::, etc. to a child block.