Context
#142 split the repository contract into find(id) (enumerate the discrete published universe) and at(id, revision) (purely lift an address in the continuous space between published versions). git and xcode implement at; gh deliberately does not — no consumer pins a gh dep at a commit SHA today, and we don't ship dead code.
Ask
When a consumer needs it, add:
GhRepository#at(id, revision): pure SHA lift, mirroring GitRepository#at (the 40-hex SHA is the version and the integrity statement; verified at install).
- DSL spelling:
gh ..., sha: "<40-hex>" sorting into Declaration#revision with the same strict 40-hex validation cmake commit: has (InvalidRevisionError).
- Install-side:
GhIntegration fetching a tarball/checkout at that SHA (no release assets exist for an unpublished commit, so the asset-glob path doesn't apply — decide whether source checkout is the only materialization).
Notes
A SHA revision forgoes resolution by definition (docs/deps-architecture.md, "Discrete and continuous"): no scheme, no selection, conflict rejection compares revisions per (integration, name).
Context
#142 split the repository contract into
find(id)(enumerate the discrete published universe) andat(id, revision)(purely lift an address in the continuous space between published versions). git and xcode implementat; gh deliberately does not — no consumer pins a gh dep at a commit SHA today, and we don't ship dead code.Ask
When a consumer needs it, add:
GhRepository#at(id, revision): pure SHA lift, mirroringGitRepository#at(the 40-hex SHA is the version and the integrity statement; verified at install).gh ..., sha: "<40-hex>"sorting intoDeclaration#revisionwith the same strict 40-hex validationcmake commit:has (InvalidRevisionError).GhIntegrationfetching a tarball/checkout at that SHA (no release assets exist for an unpublished commit, so the asset-glob path doesn't apply — decide whether source checkout is the only materialization).Notes
A SHA revision forgoes resolution by definition (docs/deps-architecture.md, "Discrete and continuous"): no scheme, no selection, conflict rejection compares revisions per (integration, name).