save checkpoint
This commit is contained in:
@@ -0,0 +1,35 @@
|
||||
# RPM EVR Version Comparison
|
||||
|
||||
## Module
|
||||
__Libraries
|
||||
|
||||
## Status
|
||||
VERIFIED
|
||||
|
||||
## Description
|
||||
RPM Epoch:Version-Release parsing and rpmvercmp-equivalent comparison for RHEL/Fedora/SUSE packages. Implements `IVersionComparator` with `ComparatorType.RpmEvr`, including segment-based comparison with numeric-first ordering, alpha segment comparison, tilde pre-release semantics, and `CompareWithProof` generating human-readable proof lines.
|
||||
|
||||
## Implementation Details
|
||||
- **RpmVersionComparer**: `src/__Libraries/StellaOps.VersionComparison/Comparers/RpmVersionComparer.cs` -- singleton (`Instance`); implements `IVersionComparator` with `ComparatorType.RpmEvr`; `Compare(left, right)` returns `VersionComparisonResult` with `ProofLines`; `CompareWithProof(left, right)` generates readable proof; internal methods: `ParseEvr(version)` parses `epoch:version-release` format, `CompareRpmVersion(a, b)` applies rpmvercmp algorithm, `SkipToNextSegment(s, ref pos)` advances past separators, `CompareNumericSegment(a, b, ref posA, ref posB)` compares digit runs (longer numeric wins, then lexicographic), `CompareAlphaSegment(a, b, ref posA, ref posB)` compares alpha character runs
|
||||
- **IVersionComparator**: `src/__Libraries/StellaOps.VersionComparison/IVersionComparator.cs` -- interface defining `ComparatorType` property, `Compare(left, right)` returning `VersionComparisonResult`, `CompareWithProof(left, right)` returning proof lines
|
||||
- **ComparatorType**: `src/__Libraries/StellaOps.VersionComparison/IVersionComparator.cs` -- enum: `RpmEvr`, `Dpkg`, `Apk`, `SemVer`
|
||||
- **VersionComparisonResult**: `src/__Libraries/StellaOps.VersionComparison/IVersionComparator.cs` -- record with `Comparison` (int), `ProofLines` (IReadOnlyList<string>), `Comparator` (ComparatorType)
|
||||
- **Source**: Feature matrix scan
|
||||
|
||||
## E2E Test Plan
|
||||
- [ ] Verify RpmVersionComparer correctly parses epoch:version-release format
|
||||
- [ ] Test rpmvercmp numeric segment comparison (longer digit run wins)
|
||||
- [ ] Verify alpha segment comparison follows RPM ordering rules
|
||||
- [ ] Test tilde pre-release semantics (tilde sorts before everything including empty)
|
||||
- [ ] Verify epoch comparison takes priority over version and release
|
||||
- [ ] Test CompareWithProof generates human-readable proof lines for each comparison step
|
||||
- [ ] Verify singleton pattern (RpmVersionComparer.Instance returns same reference)
|
||||
- [ ] Test edge cases: missing epoch (defaults to 0), missing release, empty segments
|
||||
|
||||
|
||||
## Verification
|
||||
|
||||
- **Verified**: 2026-02-13T20:30:00Z
|
||||
- **Run**: run-001
|
||||
- **Tier**: Tier 2d (Library/Internal)
|
||||
- **Verdict**: PASS
|
||||
Reference in New Issue
Block a user