I am new here so apologies if my comments seem odd...
1) If an implementation doesn't recognize a config option it should blow up immediately. Databases not providing the guarantees one requests are scary, and not just because of the risk of typos.
2) Possibly just a documentation nit: If 'transaction' is a handle to a currently running transaction why is the predicate called okvs-transaction? I'd expect the type to be called okvs-transaction.
3) Why isn't okvs-transaction-begin called just okvs-transaction? In contrast, one gets an okvs from a procedure called okvs.
4) Why isn't okvs-transaction-commit called okvs-transaction-close to match okvs-close? If 'close' is somehow ambiguous then maybe change the name of okvs-close.
5) What happens if the user does not call okvs-close? What must we assume should happen even if it doesn't in practice? Total data corruption?
6) What precisely are the semantics of the hash-table returned from okvs-transaction-metadata? Does this documentation need to refer to a particular RnRs or other SRFI? What happens if I mutate it? :)
7) If okvs-transaction-metadata returns a hash-table why call it metadata?
8) Could okvs-debug simply be made a degenerate case of okvs-range?
9) What does it mean for the 'home' in (okvs home) to be an address?
10) What is an example of a useful 'config' going into okvs-close?
11) What is an example of a useful 'config' going into okvs-transaction-roll-back?
12) Given continuations and the like (super noob here w/ Scheme) why does one need explicit transaction begin/commit/rollback at all? It seems like okvs-in-transaction would cover all use cases. Especially given the everything-must-be-committed-or-rolled-back warning at okvs-transaction-begin.
13) Is start-key/start-include/end-key/end-include some best practice from elsewhere? How far can you go in simplifying the API with a half-open interval [start, end) where end is implied to be okvs-maximum-key when omitted?
14) Is okvs-debug a very small amount of logic atop okvs-prefix where the prefix is trivial?
15) Why don't all the procedures returning an SRFI-158 generator have some common token in the name? Some are called 'range' while okvs-prefix omits it.
16) Absent should/must/etc language around transactions, what happens during commit/rollback is underspecified.
17) What happens to an uncommitted/rollbacked transaction when okvs-close is called?
18) Why might okvs-range and the like take an offset parameter in config? They could simply use start-key = "last seen" and set start-include of #f.
19) Thanks for reading this far.
- Rhys