Skip to content

[BUG] [v0.0.7] update version comparison misorders prereleases (treats stable 1.0.0 as older than 1.0.0-beta) #14635

Description

@SoftGlow00

Project

cortex

Description

The update version comparator in cortex-update does not implement semver prerelease precedence correctly. It parses versions into (major, minor, patch, prerelease_string) and compares tuples lexicographically. This makes "" < "beta", so 1.0.0 is treated as older than 1.0.0-beta, which is the opposite of semver rules.

Error Message

Debug Logs

System Information

Version: 0.1.0

## Operating System
OS: Ubuntu 24.04.3 LTS
Kernel: 6.6.87.2-microsoft-standard-WSL2
Arch: x86_64

## Hardware
CPU: Intel(R) Core(TM) i9-14900K (32 cores)
RAM: 31 GB
GPU 0: NVIDIA GeForce RTX 4060, 8188 MiB

## Build Environment
Rust: rustc 1.93.1 (01f6ddf75 2026-02-11)
Target: x86_64

Screenshots

No response

Steps to Reproduce

  1. Point update checks to a test release feed where the latest beta is 1.0.0-beta.
  2. Run Cortex from stable 1.0.0 and check updates on beta/prerelease channel.
  3. Observe update logic treats the prerelease as newer than stable and can report an update/downgrade incorrectly.

Expected Behavior

Semver precedence should be respected: 1.0.0 (stable) is newer than 1.0.0-beta* prereleases.

Actual Behavior

Comparator marks stable as older than prerelease when major/minor/patch are equal.

Additional Context

Code path: src/cortex-update/src/version.rs (compare_versions / parse_version).
Tuple comparison currently uses String prerelease ordering directly, which reverses semver behavior for stable vs prerelease.

Metadata

Metadata

Assignees

No one assigned

    Labels

    cortexIssues related to CortexLM/cortex repositoryvalidValid issue

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions