One thing I didn’t understand… if the kernel set grows for every new utxo, then is it possible to match a previous utxo with a newly added utxo by repeatedly trying kernels until you find the one that works for the pair?
every transaction comes with one (or sometimes multiple) kernels.
it also comes with a scalar offset, that gets summed when merging transactions together, making it impossible invert the merging (unless you saw the original txs, e.g. in the mempool).