As discussed @expede, I've collected some changes I made in the implementation compared to the spec.
In general, there's a lot more in the spec than the implementation. E.g. the spec assumes keeping a lot of session state. The implementation is almost completely stateless. (The only state being the client keeping the most recent response it got from the server in the case of pushes, and otherwise only relying on the current "root CID" to sync and the state of the blockstore).
Another thing the implementation doesn't do is for example everything in section 3.5. Similarity.
I'll add comments to the sections I changed to explain the changes better.
As discussed @expede, I've collected some changes I made in the implementation compared to the spec.
In general, there's a lot more in the spec than the implementation. E.g. the spec assumes keeping a lot of session state. The implementation is almost completely stateless. (The only state being the client keeping the most recent response it got from the server in the case of pushes, and otherwise only relying on the current "root CID" to sync and the state of the blockstore). Another thing the implementation doesn't do is for example everything in section
3.5. Similarity
.I'll add comments to the sections I changed to explain the changes better.