   @moduledoc """
   Defines a Gullintanni build pipeline.
 
-  A pipeline is uniquely identified by repository and encapsulates the state
+  A pipeline is uniquely identified by a repository and encapsulates the state
   necessary to coordinate builds and merges.
   """
 

  defp identify(%Pipeline{} = pipeline), do: identify(pipeline.repo)
  defp identify(%Repo{} = repo), do: identify("#{repo}")
  defp identify(name) when is_binary(name), do: name

  @doc """
  Returns the `pid` of a pipeline agent, or `:undefined` if no process is
  associated with the given `identifier`.
  """
  @spec whereis(pid | atom | t | Repo.t | String.t) :: pid | :undefined
  def whereis(identifier) when is_pid(identifier), do: identifier
  def whereis(identifier) when is_atom(identifier), do: :undefined
  def whereis(identifier) do
    case Registry.lookup(Gullintanni.Registry, identify(identifier)) do
      [{pid, _value}] -> pid
      _ -> :undefined
    end
  end

  # Creates a new pipeline with the given `config` settings.
  #

  """
  @spec put(pipeline, any, any) :: :ok
  def put(pipeline, key, value) do
    Agent.update(via_tuple(pipeline), &Map.put(&1, key, value))
  end

  @doc """
