Scope
Port the remaining Bun/WHATWG TextEncoderStream behavior at corpus position 4103 (js/web/encoding/text-encoder-stream.test.ts).
Current failure
a character split between chunks should be correctly encoded expects one reassembled UTF-8 output chunk, but Home’s corpus stream shim emits two replacement-character chunks.
Acceptance
- preserve incremental encoder state across split UTF-16 surrogate chunks
- emit the correct chunk boundaries and UTF-8 bytes
- retain structured stream errors with operation/cause/stack context
- pin positions 4102 and 4103 in the permanent HTTP/web tail queue
- focused corpus, permanent queue, and clean build pass
Tracking from #66.