Title: a project's public name, the key that names its shard

A title is a project's public name — the one in its GitHub URL and package managers (beagle, libabc, git). The goal is a deterministic, human-meaningful key for referencing projects, naming store shards, naming submodules etdc. The method: derive the title from the public URL basename (libabc.gitlibabc), let an explicit value override it, persist it as reflog/wtlog line 1, use.

Title is the project segment

The ?/<project>/… URI segment and the shard dir ~/.be/<title>/ are both the title; it is a deterministic public name, not an opaque label (see Store).

Derived from the URL, override wins

Title resolves in three steps off the clone URL: a ?/<title> query segment wins; else a /.be/<seg>/ anchor names it; else the URL path basename (.git and trailing / stripped).

Persisted in reflog line 1 and the wtlog

The title is carried by the existing line-1 get row of both <project>/refs and the wtlog — its URI's ?/<title> (or basename) is the title; no separate title row exists.

Same title, different history is an error

Titles identify projects, so a shared title means a shared project; a clash between unrelated histories is refused, never merged.

Submodule retrieval prefers the remote over the titular URL

A submodule's title comes from its .gitmodules URL, but a parent cloned from a beagle remote fetches the sub from that same remote by title — the titular URL is only the fallback (see Submodules).