diff --git a/QUESTIONS.md b/QUESTIONS.md index cbb4ea2..add46da 100644 --- a/QUESTIONS.md +++ b/QUESTIONS.md @@ -16,82 +16,68 @@ behavior is preserved as-is. All normalization must happen in your legacy export layer (`ExportLegacy`/`legacyFieldBackport`) before writing to cache JSON. -The Node classifier re-parses download filenames and validates them against the -cache's pre-classified fields. If the cache value doesn't match what the classifier -extracts from the filename, it **drops the entry** (returns null). Dropped entries -cannot be resolved for any user. +## REGRESSION: amd64_v2 regex matches version numbers (257 new warnings) -## Progress: 3,746 warnings remain (was 6,149) +Your `amd64[_-]?v2/v3/v4` regex fix in `4f09649` is matching version numbers +in filenames. Example: -### FIXED: universal2 → x86_64 ✓ -### FIXED: solaris/illumos → kept as-is ✓ +``` +syncthing-freebsd-amd64-v2.0.5.tar.gz +``` -Both are confirmed working! Cache validation passes 6/6. Great work! +The classifier detects `x86_64` from `amd64`, but the cache now says `x86_64_v2` +because the regex matched `amd64-v2` (where `v2` is the start of the version `v2.0.5`). -- cmake resolves to v4.2.3 (was v3.19.1), universal2 entries all have arch=x86_64 -- hugo resolves to v0.157.0 (was v0.101.0) -- terraform solaris entries correctly have os=solaris (393 entries) -- syncthing solaris entries correctly have os=solaris (401 entries) -- syncthing illumos entries correctly have os=illumos (261 entries) +**This affects 257 syncthing entries.** The regex needs to be anchored so it only +matches `amd64_v2` / `amd64-v2` when NOT followed by a dot/digit (i.e., not a +version number). Or better: only match when the `v2`/`v3`/`v4` is at a word +boundary or end of the arch segment. -## Still needs fixing: +## Progress: 3,977 warnings (was 3,746, regression from syncthing) -### 1. cmake source tarballs (2,478 E_MISSING_OS) +### FIXED ✓ +- universal2 → x86_64 (cmake, hugo) +- solaris/illumos kept as-is +- mipsle → mipsel, mips64le → mips64el +- ARM variant mismatches (most) +- android dropped from legacy export -These are source archives with no OS in filename, e.g.: -`cmake-3.22.0-rc1.tar.gz`, `cmake-3.22.0-rc1.zip` +### Still needs fixing: -The classifier can't detect an OS → drops them. These should be excluded -from the legacy export entirely — they're source bundles, not installable binaries. +#### 1. syncthing amd64_v2 regression (257 new — priority!) +See above. The `v2` in `v2.0.5` is being captured as an arch micro-version. -### 2. git entries (500 E_MISSING_OS) +#### 2. cmake source tarballs (2,478 E_MISSING_OS) +Source archives with no OS: `cmake-3.22.0-rc1.tar.gz`. Should be excluded. -Same issue — source tarballs or entries without OS in filename. +#### 3. git entries (500 E_MISSING_OS) +Source tarballs / no-OS filenames. -### 3. iterm2 entries (475 E_MISSING_OS) +#### 4. iterm2 entries (475 E_MISSING_OS) +macOS-only .zip files but filename has no darwin/macos. -No OS in filename. These are macOS-only .zip files but the filename doesn't say -darwin/macos. Consider excluding from legacy export or setting os=darwin. +#### 5. dashcore entries (127 E_MISSING_OS) +No OS indicator in filename. -### 4. dashcore entries (127 E_MISSING_OS) +#### 6. Minor (~62 remaining) +gitea 54, jq 24, bun 20, sttr 18, etc. -Same pattern — no OS indicator in filename. - -### 5. ARM variant mismatches (~100+ dropped) - -Remaining mismatches in smaller packages (gitea 54, jq 24, bun 20, sttr 18, etc.): - -| Cache value | Classifier detects | Fix | -|---|---|---| -| `armv6` | `armel` | emit `armel` | -| `armv6` | `armv7` | emit `armv7` | -| `armhf` | `armv7` | emit `armv7` | - -### 6. Minor - -- `sttr` .pkg (18): macOS .pkg files, upstream quirk -- Various small packages with arch mismatches - -### Test results (latest cache, 17:19) +### Test results (cache 17:27) - **19/19** installer-resolve ✓ - **49/49** live-compare (5 known) ✓ - **190/196** broad sweep (6 expected) ✓ - **31/31** live-installer-diff (1 known) ✓ - **6/6** cache validation ✓ -- **3,746** PACKAGE FORMAT CHANGE warnings (was 6,149, down 39%) - -The biggest remaining items are source tarballs being included (cmake 2,478 + -git 500 + iterm2 475 + dashcore 127 = 3,580). Excluding source-only entries -would bring warnings down to ~166. +- **3,977** PACKAGE FORMAT CHANGE warnings (was 3,746 — regression from syncthing) ## Previously resolved - [x] universal2 → x86_64 (cmake, hugo universal entries) - [x] solaris/illumos kept as-is (not translated to sunos) +- [x] mipsle → mipsel, mips64le → mips64el +- [x] ARM variant fixes (armhf→armv7, armel, arm-5, arm-7, armv6hf) - [x] Hugo macOS arm64 — resolves v0.157.0 .pkg - [x] go armv6l — cache emits `armv6` -- [x] armel → armv6, winx64 → windows -- [x] Issues 1-3, 5: WATERFALL, .git shadowing, man pages, musl libc -- [x] ANYOS question: Specific-OS-first is correct - [x] android entries dropped from legacy export +- [x] ANYOS question: Specific-OS-first is correct