docs: REGRESSION — amd64_v2 regex matches version numbers (257 syncthing warnings)

This commit is contained in:
AJ ONeal
2026-03-11 17:31:31 -06:00
parent 1dbcd312b8
commit 9e7cca45f0

View File

@@ -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