I think the crux of the problem is the details of this step
A client that just synced the UTXO set could in theory connect to every known Electrum server and issue blockchain.transaction.get
and blockchain.transaction.get_merkle
for each UTXO to achieve it. (No I don’t think this is a good solution)
Or, since the block height of each UTXO is known, set the appropriate bloom filter and request merkelblock for specific block from nodes with full history. Rinse and repeat for each UTXO.
Or the node gets the data from a side-channel not specified in this spec.
One key point is that those transactions and proofs are not contained within the snapshot and we are still dependent on someone being around and serving it in some way.
To summarize:
For a node to be able to fully validate everything (i.e. being a “full node”) from the point of the UTXO snapshot nothing more is needed. This is the problem solved by this CHIP and a miner validated commitment in a future CHIP could make this fully trust-less.
For a node to able to serve history (transactions and proofs) from the point of the UTXO snapshot additional data needs to fetched and validated. To me this seems like a separate CHIP if we would like a standardized way of doing it.