Pretty much, in order to verify the validity of a transaction on IOTA you need a cone from the transaction that occurred connecting all the way to a present day transaction. Chronicle is a simple solution to that: store ALL transactions. If you are running chronicle then the only way to prove immutability is by maintaining your database of all transactions. Currently that's okay, but at scale this is impractical.
A more elegant solution is to store just enough transactions to prove the immutability, which I think is ultimately all we want. This is generally called a 'selective permanode' solution. The previous version on the old network was called AION.
It does not work, currently there are ways to do this but the best solution has not been developed yet. Really, there just has to be some effective way to make big jumps across large chunks of the ledger. This would allow small storage sizes to prove immutability of old data transactions.
We had some discussions on this on Discord. Another idea was using UTXOs directly, which would be awesome if we could do it, since a typical UTXO (so value transaction) lives easily for weeks or months on the tangle, so you can make timewarps that way. Sadly in the end it was decided to not include parent-hashes in the UTXO hash. In other words, you can change the parents of a value transaction without impacting the UTXO hash. So no immutable data there.
The best way that was currently proposed is to make custom value transactions which include the hash of their parent transactions in the data field. This way you can do those timewarps using value transactions. In theory with some smart usage of these, you can proof some data existed with Log(N) complexity, which is quite good. But it is not on the base layer, you need to make specific transactions to actually gain this immutability.