2.8 KiB
2.8 KiB
Distro-Specific Version Comparators
Module
__Libraries
Status
VERIFIED
Description
All three major distro version comparators implemented: dpkg EVR (Debian/Ubuntu), RPMVERCMP (RHEL/Fedora/SUSE), and APK version models.
Implementation Details
- IVersionComparator:
src/__Libraries/StellaOps.VersionComparison/IVersionComparator.cs-- interface withComparatorTypeproperty,Compare(string?, string?), andCompareWithProof(string?, string?)returningVersionComparisonResult(Comparison int, ImmutableArray ProofLines, ComparatorType);ComparatorTypeenum: RpmEvr, Dpkg, Apk, SemVer; result hasIsLessThan,IsEqual,IsGreaterThan,IsGreaterThanOrEqualhelpers - DebianVersionComparer:
src/__Libraries/StellaOps.VersionComparison/Comparers/DebianVersionComparer.cs-- singleton implementingIVersionComparator,IComparer<DebianVersion>,IComparer<string>; handles epoch:upstream_version-debian_revision with tilde pre-release support;CompareSegmentimplements dpkg semantics: skip non-alphanumeric (except tilde), tilde sorts before everything, digits sort after letters, numeric segments compared by length then lexicographic;CompareWithProofgenerates human-readable proof lines for each comparison step (epoch, upstream version, debian revision) - RpmVersionComparer:
src/__Libraries/StellaOps.VersionComparison/Comparers/RpmVersionComparer.cs-- singleton implementingIVersionComparator,IComparer<RpmVersion>,IComparer<string>; handles epoch, version, release with tilde support;CompareSegmentuses rpmvercmp semantics:SkipToNextSegment(handle tildes),CompareNumericSegment(trim leading zeros, compare by length then lexicographic),CompareAlphaSegment(ordinal comparison);CompareWithProofwith detailed proof lines - StringVersionComparer:
src/__Libraries/StellaOps.VersionComparison/Comparers/StringVersionComparer.cs-- fallback string comparison - Models:
src/__Libraries/StellaOps.VersionComparison/Models/--DebianVersion(Epoch, Version, Revision with TryParse),RpmVersion(Epoch, Version, Release with TryParse),ApkVersion - Source: Feature matrix scan
E2E Test Plan
- Verify Debian version comparison handles epoch correctly (2:1.0 > 1:2.0)
- Test dpkg tilde pre-release: 1.0~beta < 1.0
- Verify RPM EVR comparison follows rpmvercmp semantics (numeric vs alpha segments)
- Test RPM tilde support: 1.0~rc1 < 1.0
- Verify APK version comparison handles APK-specific version schemes
- Test proof line generation provides human-readable comparison steps
- Verify all comparators handle null/empty versions gracefully
- Test
IsGreaterThanOrEqualfor installed >= fixed version checks
Verification
- Verified: 2026-02-13T20:30:00Z
- Run: run-001
- Tier: Tier 2d (Library/Internal)
- Verdict: PASS