docs/solutions/logic-errors/2026-04-04-void-like-zero-width-ime-proofs-need-the-real-void-spacer-structure.md
After the slate-v2 line-break and inline-edge proofs turned green, the next
behavior seam was the FEFF-backed void-like zero-width path.
The first proof said the path was dead in Chromium IME.
That conclusion was wrong.
The proof surface was not mirroring real void rendering.
The first v2 void proof put everything inside one non-editable wrapper:
That is not how real Slate voids render.
With that fake structure, Chromium never committed text and the root stayed at
"\uFEFFvoid".
Treating that as a real policy conclusion would have been bullshit.
The proof surface had to match the real void seam from legacy Slate:
data-slate-void="true" elementdata-slate-spacer sibling containing the
zero-width text leafOnce the v2 proof surface matched that structure, the FEFF-backed void-like path passed in Chromium:
すし0.0:2|0.0:2Void behavior is not just “zero-width leaf next to some UI.”
The spacer is part of the contract. Legacy Slate routes selection and DOM behavior through a separate invisible spacer leaf, not through the visible non-editable void content.
If the proof collapses those roles into one wrapper, it is measuring a fake DOM shape and will happily invent fake policy limits.
For void-like browser proofs:
The current honest slate-v2 zero-width split is:
interior