Nested objects recurse into parent.child keys. Arrays are
collapsed by collapse_observed(): arrays of strings to one
newline-joined cell, arrays of objects to a nested tibble. An empty
array carries no observation and emits no key, so a batch can bind
entities with and without the array.