fn merged_wire_layout(product: &Product) -> SmallVec<[(u8, bool); 8]>Expand description
Merge product.fields and product.reserved into a single
tag-ascending list of (tag, is_active) pairs.
The Array-strategy encoder emits wire positions in tag-ascending order
across both active and reserved tags (a V1 writer that still carries a
value at a now-retired tag sorts that tag in alongside the live ones).
So decoding by wire position requires the same merged ordering: position
i on the wire corresponds to the i-th tag in the merged list, and the
is_active flag tells the decoder whether to push the value bytes into
the buffered entries (active) or drain them silently (reserved).
Inline capacity 8 fits the typical ACIR product without spilling; larger products transparently fall back to the heap.