Skip to content

Feature: prefer sub-lock pins as solver preferences (conservative resolution) #148

Description

@JPDuchesne

Feature idea, follow-on to #147 and to future subproject (dev-as-an-ecosystem) resolution.

Principle already decided: lock files are never availability facts — a subproject's deps.lock is that project's solve snapshot, not what it requires. Transitive edges must come from declared constraints (dependencies.rb ranges), or diamonds turn into manufactured exact-vs-exact conflicts.

The one legitimate use of a sub-lock: as a preference, not a constraint. When the resolver picks a version for a transitively-reached package, prefer the version the subproject's own lock pinned iff it satisfies all accumulated constraints; otherwise move to the highest satisfying version as usual. This is bundler's conservative-resolution behavior: it minimizes churn and keeps the parent's solve close to what the subproject actually tested against, without ever letting the snapshot over-constrain the solve.

Scope notes:

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or requesttransitivityTransitive dependency resolution

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions