# Proxy Path Contracts: APT/APK ## APT | Downstream Request | Upstream Target | Caching | Notes | |--------------------|-----------------|---------|-------| | `/dists///binary-/Packages[.gz/.xz]` | same path on Upstream | RequireRevalidate=true | Send If-None-Match/If-Modified-Since if cached | | `/dists//Release` | same path | RequireRevalidate=true | Preserve content; may have accompanying `.gpg` | | `/dists//InRelease` | same path | RequireRevalidate=true | Signed inline; no body changes | | `/dists//Release.gpg` | same path | RequireRevalidate=true | Signature only; no rewrite | | `/pool//.deb` | same path | AllowCache/AllowStore=true, RequireRevalidate=false | Treat as immutable | | `/dists//by-hash//` | same path | AllowCache/AllowStore=true, RequireRevalidate=false | Path encodes hash, no extra validation | ## Alpine APK | Downstream Request | Upstream Target | Caching | Notes | |--------------------|-----------------|---------|-------| | `/v3./main//APKINDEX.tar.gz` (and variants) | same path | RequireRevalidate=true | Preserve signature/headers | | `/v3.///APKINDEX.tar.gz` | same path | RequireRevalidate=true | Same handling as above | | `/v3.///packages/.apk` | same path | AllowCache/AllowStore=true, RequireRevalidate=false | Immutable package | | APKINDEX signature files | same path | RequireRevalidate=true | No rewrite | ## Behaviors - No body/URL rewrite; proxy only normalizes cache policy per path shape. - Preserve status codes, headers, and signature files exactly as upstream. - Conditional requests (If-None-Match/If-Modified-Since) applied to all index/signature paths when cached.