Instead of returning histories from `radicle-cob`, we return an evaluated object which we build during initial graph traversal. We do this so that branches can be correctly pruned when operations are invalid at the application level. This way, new operations are not building on top of invalid ones contained in the history. To achieve this, we introduce a new `Evaluate` trait that is implemented by all COBs, and we make change graph evaluation fallible. Doing this means that we get `apply` errors returned for free when an invalid transaction is applied, and no longer need to check for action validity in multiple places. We also implement a new `Dag::prune` method to avoid having to copy graph nodes during traversal. |
||
|---|---|---|
| .. | ||
| src | ||
| Cargo.toml | ||