Context
gh/git dependencies are currently self-contained by contract: GhRepository/GitRepository claim Declarations::Resolved([]), meaning a source checkout's needs are declared by the consuming project's own dependencies.rb rows.
The Cargo comparison sharpened what changes when that contract ends: in Cargo, a git universe's version facts come from the manifest inside the checkout — the ref merely locates which checkout to read. When dev supports dev-manifest subprojects, the same shape applies here:
Acceptance
- gh/git versions whose repo carries a dependencies.rb report a real
Resolved claim
- The self-contained contract remains for repos without a dev manifest
- Documented in the transitive regimes table
Context
gh/git dependencies are currently self-contained by contract:
GhRepository/GitRepositoryclaimDeclarations::Resolved([]), meaning a source checkout's needs are declared by the consuming project's own dependencies.rb rows.The Cargo comparison sharpened what changes when that contract ends: in Cargo, a git universe's version facts come from the manifest inside the checkout — the ref merely locates which checkout to read. When dev supports dev-manifest subprojects, the same shape applies here:
find(id, probe: ref)reads thedependencies.rbat that ref (viagh apicontent fetch or a shallow clone) and reports its declarations as the version'sResolvedclaim — requirements, not the subproject's deps.lock (lock files are never availability facts; the sub-lock is at most a solver preference, Feature: prefer sub-lock pins as solver preferences (conservative resolution) #148).ScopedDeclarations; scope propagation semantics must be settled first (see the scope propagation issue).Acceptance
Resolvedclaim