Provider seam (plans/0005): the TUI talks to source-control backends
through this trait — never to a concrete API. github is the
in-tree reference implementation; external providers are child
processes speaking NDJSON-RPC over stdio (stdio.rs), so any
internal system can be wrapped with a small script.
Contract rules that matter:
- Repos are opaque "group/project" strings; the UI never parses them.
shais an opaque content id: it MUST change when content changes (the cache design is content-keyed and immutable).- URL building (yank) and cloning use provider-supplied fields — no GitHub URL grammar outside the GitHub impl.