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.
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:
MMDDYY_QFE#with optional build tags.A concrete Generals Online failure occurs across year boundaries:
121525_QFE1— December 15, 2025060526_QFE1— June 5, 2026June 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
Acceptance criteria