Skip to content

Adopt Go-style module version selection #58

Description

@itsfuad

Goal

Adopt deterministic Go-style Minimal Version Selection and semantic import versioning.

Current boundary

Current resolver supports a narrow stable-semver constraint set for exact versions, comparisons, tilde, caret, latest, and wildcard requests. Recursive installation selects compatible versions but does not implement graph-wide MVS or semantic import versioning.

Required design

  • Define module identity and major-version import-path rules.
  • Replace recursive best-match resolution with deterministic graph-wide MVS.
  • Specify upgrade, downgrade, exclusion, and retraction behavior.
  • Preserve lockfile determinism, offline behavior, integrity checks, and mock registry support.
  • Define manifest and lockfile migration before removing tactical constraint semantics.
  • Add compatibility, conflict, diamond-dependency, replacement, and repeatability fixtures before migration.

Constraints

  • Do not extend current compatibility resolver piecemeal.
  • Design canonical graph algorithm and import-version model first.
  • One resolved module version must serve whole build graph unless semantic import versioning gives major versions distinct identities.
  • Diagnostics must explain selected version and forcing dependency path.

Relationships

Validation

  • Resolver unit tests for MVS, upgrades, downgrades, exclusions, retractions, and major-version paths.
  • End-to-end local and mock-registry fixtures.
  • Stable lockfile output across dependency traversal order.
  • Offline and integrity-failure diagnostics.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions