Motivation
PackageType.Chain = 0 collides with int default (0), making uninitialized fields silently behave as Chain. Need to migrate Chain→1, Full→2 (unchanged), add Unspecified=0 as safe default.
Changes
- PackageType.cs:
Chain = 0 \→ Chain = 1, add Unspecified = 0
- DownloadPlanBuilder: Remove CVP matching logic; chain total >= 80% full → use full directly; attach FallbackFull* info for chain→full retry
- DownloadAsset: Add PackageType, FallbackFullName/Url/Hash, FallbackFulls
- AbstractStrategy: On chain failure, retry with matching fallback full
- ClientStrategy: Propagate fallback info; download fallback fulls alongside chain
- CompressMiddleware/Platform Strategies: Full packages skip PatchMiddleware, decompress directly to install path
- Cleanup: Remove all CVP concepts (
matchingCvp, IsCrossVersion, FromVersion, SourceArchiveHash, TargetArchiveHash)
Verification
Motivation
PackageType.Chain = 0collides withintdefault (0), making uninitialized fields silently behave as Chain. Need to migrate Chain→1, Full→2 (unchanged), add Unspecified=0 as safe default.Changes
Chain = 0 \→ Chain = 1, addUnspecified = 0matchingCvp,IsCrossVersion,FromVersion,SourceArchiveHash,TargetArchiveHash)Verification