Skip to content

Version ordering is inconsistent across provider formats and application flows #306

Description

@bobtista

Problem

GenHub compares content versions in multiple update, download, profile, and reconciliation paths. These paths can apply different rules to the same provider version.

Providers also use different formats:

  • Community Outpost uses ISO dates.
  • Generals Online uses MMDDYY_QFE# with optional build tags.
  • TheSuperHackers uses numeric, date-stamp, and prefixed versions.

A concrete Generals Online failure occurs across year boundaries:

  • Installed: 121525_QFE1 — December 15, 2025
  • Available: 060526_QFE1 — June 5, 2026

June 2026 is newer, but integer or raw-string ordering can treat it as older. Build tags can also incorrectly affect release precedence, and separate call sites can disagree about the newest installed version.

Expected behavior

  • Each provider declares the version scheme used for ordering.
  • Update, download, profile, and reconciliation flows use one shared provider-aware comparison path.
  • Generals Online releases order chronologically by year, month, day, then QFE.
  • Build tags do not affect release precedence.
  • Malformed versions are handled deterministically and culture-invariantly.
  • Persistent manifest identity remains separate from release ordering.

Acceptance criteria

  • Provider definitions select the applicable numeric, ISO-date, or MMDDYY-QFE scheme.
  • Relevant application flows use the shared comparer.
  • Cross-year Generals Online versions and QFE revisions order correctly.
  • Equivalent releases with different build tags have equal precedence.
  • Valid versions sort consistently relative to malformed versions.
  • The newest installed version is selected when multiple manifests exist.
  • Existing manifest-ID encoding is preserved without migration.
  • Regression tests cover supported formats and edge cases.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions