TODO
1- is the pack Lamport clock really useful vs only topological sort?
2 - topological order is enforced on the clocks, so what's the point?
3 - is EditTime equivalent to PackTime? no, avoid the gaps. Is it better?
4 --> PackTime is contained within a bug and might avoid extreme reordering?
5- how to do commit signature?
6- how to avoid id collision between Operations?
7- write tests for actions
8- migrate Bug to the new structure
9- migrate Identity to the new structure?