[ ] How and where attrs should be validated so that return struct would look like input? (Ecto.Changeset for all attrs alltogether either before Sage or as one of it's steps, should we add a helper for that?)
[ ] Avoid using names in functions, keeping them pure (eg. instead of run(:foo, &bar/2) use run(:foo, &bar(&1.fiz, &2)) so that transaction functions are pure and do not depend on each other.
I'll keep this list updated for future readme overhaul:
run(:foo, &bar/2)
userun(:foo, &bar(&1.fiz, &2))
so that transaction functions are pure and do not depend on each other.