Behavior contract for workspace snapshot backends.
Summary
Callbacks
@callback diff( ASM.Extensions.Workspace.Snapshot.t(), ASM.Extensions.Workspace.Snapshot.t(), keyword() ) :: {:ok, ASM.Extensions.Workspace.Diff.t()} | {:error, ASM.Error.t()}
@callback rollback(ASM.Extensions.Workspace.Snapshot.t(), keyword()) :: :ok | {:error, ASM.Error.t()}
@callback snapshot(String.t(), keyword()) :: {:ok, ASM.Extensions.Workspace.Snapshot.t()} | {:error, ASM.Error.t()}