READ BYTES · FRAME EVENTS · CONSUME

SSE client framing: decode before appending

Fragment real encoded bytes, inspect the parser buffer and follow complete events into an ordered text consumer.

60-second inspection · actual local parser

Text source and visible output

Appended output

Unparsed buffer: first 32 bytes in hex

Your experiment

Inject a malformed event and inspect the rejection and subsequent sequence gaps. The client must not render malformed JSON or pretend the full answer completed.

The text is split into six-code-point deltas, numbered from 1. A source fault targets event 3, or the last event when fewer than three exist. Output is appended only after a complete frame is parsed and consumer processing finishes.

In streaming mode a full application queue pauses reads; one additional event may be processing. In buffered mode all body bytes arrive before parsing begins. The same 60-second inspection maps proportionally to each scenario’s modeled duration; it is not a network performance measurement.

Recent parser and consumer events

Original event fixtures

Offline byte-framing lesson. SSE parsing supports only the generated LF-delimited id/data subset; this is not a complete EventSource implementation. The alternative uses a zero compression byte plus four-byte big-endian payload length and UTF-8 JSON, not Protobuf. No HTTP/2 frames, headers, trailers, grpc-status, compression, TLS, provider API, A2A envelope, retries or reconnect/resume are implemented. The queue policy is application backpressure, not transport flow control. Duplicate suppression and strict contiguous event IDs are explicit application policies, not guarantees supplied by SSE/gRPC. Missing IDs are rejected without reordering or replay. Empty source is complete with no output; an incomplete frame remains truncated. SSE specification · gRPC message framing.

Validate before appending a visible delta

This client fixture separates read bytes, parse complete frames, validate records and append output. The generated SSE subset uses LF-delimited id and data lines. Its custom JSON contains a sequence number and a text delta, and the decoder checks that the SSE identifier agrees with the record. A valid text stream here is not proof that a production A2A response envelope is valid. The lesson concerns the consumer boundary; authentication, endpoint discovery and provider-specific event types are outside the model.

Control the byte and application boundaries

Local text supplies the payload, with the browser limiting entry to one hundred twenty UTF-16 code units. The model groups Unicode code points into records of up to six, each with a sequence identifier and delta string. Framing format selects the LF-delimited SSE subset or an uncompressed five-byte gRPC-style prefix around JSON. Application consumption either parses complete events incrementally or waits for the full body. Bytes per read changes fragmentation, Read interval changes scheduled arrival spacing, Processing per event changes consumer time, and Queued events bounds waiting records separately from the one active record. Parameter edits rebuild the scenario and start inspection unless reduced motion is requested.

Make a malformed event leave observable evidence

Choose SSE framing and the malformed-JSON source fault. Inspect the original event list: the intended third event still describes what the source should have sent, while the wire fixture corrupts its serialized payload. At the end inspect rejected-event messages and compare partial output with the original source. Later records are rejected when they arrive beyond the missing expected sequence. No invisible repair, skip-forward operation or replay request completes the answer. Switch the fault to none and repeat with one-byte reads to distinguish valid fragmentation from malformed content.

Inject failures and inspect safely

Source event fault repeats, omits or corrupts the third event, or the last available event for a shorter source; truncation removes the final three wire bytes. Ignore already-applied event IDs affects duplicate records only. Missing or malformed records can leave a sequence gap, and later records are rejected rather than reordered or replayed. Play and Pause inspect sixty seconds of viewing time; Next event advances a recorded scheduler transition; Restart inspection rewinds; Speed adjusts viewing pace; Inspection time scrubs. Visible output, pending-byte hex and recent events reflect the inspected prefix. The complete-run preview and original event list describe the full scenario, not work already consumed.

Keep rendered output separate from executable markup

Enter literal markup such as an angle-bracketed tag in Local text and inspect the final output. It is inserted with textContent, so the fixture shows text rather than creating elements. This narrow rendering property is not a general HTML sanitizer or a defense for every application sink. Full-body buffering provides a second policy comparison: all wire bytes arrive before parsing starts, unlike incremental consumption. The model omits reconnects, Last-Event-ID negotiation, CRLF variants, SSE comments and retry fields, cancellation and real fetch responses. Those require additional client tests before deployment.