To achieve your desired output, you need to group the start_ts values by their parent object in the original array. Your current command flattens all values into a single list. Instead, use map to transform each object's diff array into an array of start_ts values:
bashjq 'map([.diff[] | .meta | select(.) | .start_ts])' test.json
map(...): Applies the expression inside to each element of the top-level array.[.diff[] | ...]: For each object, extracts all start_ts values from its diff array and wraps them in an array.This will produce:
json[ [0, 5, 3], [4, 2, 1] ]