Two bugs in template seed/instantiate:
1. ${JSON.stringify(content)}::jsonb made Postgres store the content as
a jsonb scalar string (jsonb_typeof = 'string'), not an object. The
instantiate read it back as a JSON-encoded string, which ProseMirror
tried to parse as a node tree and crashed with 'Unknown node type:
undefined' on the outer string. Pass the object directly with
${content as unknown as string}::jsonb so postgres-js binds it as
a JSONB value.
2. Built-in template seed used { type: 'paragraph', content: [{ type:
'text', text: '' }] } for empty paragraphs / list items / task
items. ProseMirror schema rejects empty text nodes ('Empty text
nodes are not allowed'). Replaced with content: [].
Verified via curl: POST /api/acadenice/templates/{id}/instantiate now
returns 201 with the new pageId/slugId.
Patch 028.