DfCM engine behaviour: implementations are candidates, not ambient authority.
@callback available?(keyword()) :: boolean()
@callback execute(atom(), term(), keyword()) :: {:ok, Ex4pm.Engine.Result.t()} | {:error, term()}
@callback id() :: atom()
@callback supports?(atom(), keyword()) :: boolean()