Skip to content

Releases: XoifaiI/Ledger

v3.1.0

Choose a tag to compare

@XoifaiI XoifaiI released this 30 Jul 18:34
637f954
+ Every read says why it failed, the same way every write already did
+ Behind, a ninth reason, for a record a newer build wrote
+ Erase, RecoverTransfers and ClearDelivered say whether they ran

- Reads that failed by handing back nothing, with no way to ask what went wrong
- A datastore blip and a record this server must not touch looking the same
- A failed DidApply reading as never granted, so a support tool pays twice

! Reads answer (value?, Reason?), and nil always means the read failed
! Store:DidApply can be nil, so compare it against true rather than truthiness
! Reset on a record from a newer build says Behind, it used to say Refused
! Writes dropped by the shutdown say Closed, they used to say Unresolved

v3.0.1

Choose a tag to compare

@XoifaiI XoifaiI released this 30 Jul 15:14
08a3da8
+ Edit and Reset prove their answer against a pending transaction instead of guessing
+ Markers on keys holding a delimiter byte reap like any other
+ OnceAt joins Id and Kind as reserved, overwritten with a warning
+ Warnings rewritten in plain speech, what happened and what to do about it
+ Purchases example answers NotProcessedYet on Unresolved before it reads DidApply

- A marker naming a key with \0 or \1 in it could never be collected by anyone
- A forged OnceAt could wipe the applied id set and pay a delivered transfer twice
- Edit answering true for a verdict a pending leg was about to overturn
- Reserve reporting money set aside without saying on what terms
- Loading and Leaving as two maps that could disagree about one player

! Edit and Reset answer Unresolved when a stuck leg could still flip the verdict
! OnceAt in Fields is overwritten now, CommitOp still honours an op's own stamp
! Mid deploy, a transaction retried across versions can answer Spent once, nothing applies

v3.0.0

Choose a tag to compare

@XoifaiI XoifaiI released this 27 Jul 18:12
8401dbb
+ Reason on every refusal: Refused, Busy, Spent, Unresolved, Closed, Backlog, Full, Invalid
+ Stranded escrow now finishes itself on the background sweep, any key
+ Erase delivers held money before deleting instead of destroying it
+ Entity keys settle their own transaction legs, Ledger.Sweep() to force a pass
+ Studio: warns on a non deterministic reducer, names the field that moved
+ Studio: warns when a migration drops a field Default still declares
+ Transfers and transactions namespaced apart in the applied id set

- Bare false with a dozen meanings
- Calling RecoverTransfers by hand to unstick money
- Retried reserve could spend twice once the op id aged out
- Two servers adopting one leg could fake a quorum
- Compaction measured ops it was about to fold away

! Tx takes its name first and it is required
! boolean returns are now (boolean, Reason?), if ok then still works
! store names capped at 47 chars, the transaction store appends _Tx