Two issues with the initial hydration implementation:
1. Text node mismatch: SSR merges adjacent text into one node
("0 / 16") but client renders three separate children. When the
cursor ran out, new nodes were created but dom-append was
unconditionally skipped. Fix: only skip append when the child
already has a parent (existing SSR node). New nodes (nil parent)
get appended even during hydration.
2. Conditional markers: dispatch-render-form for if/when/cond in
island scope was injecting comment markers during hydration,
corrupting the DOM. Fix: skip the reactive conditional machinery
during hydration — just evaluate and render the active branch
normally, walking the cursor. Reactivity for conditionals
activates after the first user-triggered re-render.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>