JA3 and JA4 observation of exact, naked ClientHello handshake bytes.
Transport is explicitly :tcp or :quic; it is never inferred from ALPN.
Unknown IDs and original ordering are retained in observation. Only the
analytical projections omit GREASE and sort JA4 fields. Observation does not
validate a profile's negotiability or authenticate a peer. ECH bytes, if
present, describe the visible outer hello only, never an encrypted inner hello.
new/1 and feed/2 observe one fragmented ClientHello, bounded to 65,535
body bytes. Completion emits one result; trailing input is rejected. Empty
input and terminal empty feeds emit nothing. Errors discard the observer;
start a new observer for another ClientHello.