Generic repository reference for local workspaces and artifact ledgers.
The reference carries repository ownership only. It deliberately avoids higher-layer semantics so it can sit in GroundPlane without pulling domain meaning downward.
@type t() :: %GroundPlane.Contracts.RepoRef{ name: String.t(), owner: String.t(), ref: String.t() }
@spec new(String.t(), String.t()) :: {:ok, t()} | {:error, term()}
@spec new!(String.t(), String.t()) :: t()
@spec parse(String.t()) :: {:ok, t()} | {:error, term()}
@spec valid?(term()) :: boolean()