There are a few use cases I can think of where it might be useful.
Read your own mutations (from the special key space)? Then you could do your own change data capture layer by reading all your mutations right before you commit, and then writing them back with a versionstamped key. It could also be useful for logging/debugging.
Inspect backup files in preparation for a point-in-time restore. E.g. I accidentally issued a clearrange “” \xff, but I had an incremental backup running. Now I’d like to restore the database to the point right before that mutation. You would need a way to identify the accidental mutation.
The format is (type, param1, param2) where type is an int, and param1 and param2 are strings. Type is even already exposed to clients here: https://github.com/apple/foundationdb/blob/master/fdbclient/vexillographer/fdb.options#L292. (It’s missing set and clear but we could add those).
As far as I can tell, this has never been changed in a backwards-incompatible way, only new types have been added.
What do people think of exposing “mutation = (type, param1, param2)” in the api?