Skip to content

Support stable-only latest package policy #179

Description

@stiwicourage

Summary

Support policy-based handling of the floating latest package alias so preview releases do not replace the production-safe stable alias.

Problem

Some consumers always deploy latest in production. That alias should continue to point to the newest stable release.

Preview users should opt in explicitly by using a versioned preview package name instead of consuming latest.

Proposed configuration

Allow Package.Latest to accept these values:

  • "never" — never create or update a floating alias
  • "stable" — only stable releases update latest
  • "always" — both stable and preview releases update latest

Recommended configuration:

"Package": {
  "Latest": "stable"
}

Backward compatibility

Temporarily support the existing boolean values:

  • true => "always"
  • false => "never"

The string values should be the preferred configuration going forward.

Documentation and deprecation approach

  • Docs and examples should show only the string-based policy values.
  • CHANGELOG.md should mark boolean Package.Latest values as deprecated.
  • Add clear TODO: markers where legacy boolean handling exists so it is easy to remove in the next major version.

Acceptance criteria

  • Package.Latest = "stable" publishes the versioned package for all releases, but only updates latest for stable releases.
  • Package.Latest = "always" updates latest for both stable and preview releases.
  • Package.Latest = "never" disables the floating alias entirely.
  • Legacy booleans still work for now, with true mapped to "always" and false mapped to "never".
  • Docs and examples present only the string-based values as the supported configuration style.
  • CHANGELOG.md records boolean deprecation.
  • Code contains TODO markers for removing legacy boolean support in the next major version.

Why this helps

  • latest stays trustworthy for production.
  • Preview consumers must opt in explicitly.
  • Nova gets a clearer and more extensible configuration model without an immediate breaking change.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions