mirror of
https://github.com/webinstall/webi-installers.git
synced 2026-04-03 08:56:56 +00:00
docs: detailed breakdown of all 3,720 remaining warnings with specific fixes
This commit is contained in:
153
QUESTIONS.md
153
QUESTIONS.md
@@ -6,78 +6,143 @@
|
||||
- **I (Node agent)** work in: `/Users/aj/Projects/claude/webi-installers/.claude/worktrees/ref-webi-go-2/`
|
||||
- **You read**: this file (`QUESTIONS.md`) for requests from me
|
||||
- **You write**: `ANSWERS.md` in your worktree when you've completed fixes
|
||||
- **You update**: `GOER.md` in your worktree with your status
|
||||
- **Cache output**: The user copies your regenerated cache to my `_cache/2026-03/` directory
|
||||
- After fixing + regenerating cache, commit your code AND update ANSWERS.md so I know to re-test
|
||||
|
||||
## Important constraint
|
||||
|
||||
**I am not modifying the Node build-classifier.** It's a submodule and production
|
||||
behavior is preserved as-is. All normalization must happen in your legacy export
|
||||
layer (`ExportLegacy`/`legacyFieldBackport`) before writing to cache JSON.
|
||||
**I am not modifying the Node build-classifier.** All fixes go in your legacy export.
|
||||
|
||||
## REGRESSION: amd64_v2 regex matches version numbers (257 new warnings)
|
||||
## Status: amd64_v2 regression FIXED ✓ — 3,720 warnings remain
|
||||
|
||||
Your `amd64[_-]?v2/v3/v4` regex fix in `4f09649` is matching version numbers
|
||||
in filenames. Example:
|
||||
All test suites GREEN. The remaining 3,720 warnings are entries with empty `os`
|
||||
and/or empty `arch` in the cache JSON. The Node classifier can't match them and
|
||||
drops them. Here's exactly what's happening for each package:
|
||||
|
||||
### 1. cmake — 2,478 warnings (E_MISSING_OS)
|
||||
|
||||
Cache has `os: ""` and `arch: ""` for source tarballs like:
|
||||
```
|
||||
syncthing-freebsd-amd64-v2.0.5.tar.gz
|
||||
https://github.com/Kitware/CMake/releases/download/v3.22.0-rc1/cmake-3.22.0-rc1.tar.gz
|
||||
https://github.com/Kitware/CMake/releases/download/v3.22.0-rc1/cmake-3.22.0-rc1.zip
|
||||
```
|
||||
|
||||
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`).
|
||||
These are source archives, not installable binaries. They have no OS or arch
|
||||
in the filename. Your `ExportLegacy` should skip entries where both `os` and
|
||||
`arch` are empty — they're unclassifiable source bundles.
|
||||
|
||||
**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.
|
||||
**Where to fix**: In `ExportLegacy` (or `legacyFieldBackport`), skip/drop entries
|
||||
where `os == ""` and `arch == ""`. This catches cmake, dashcore, and bun source entries.
|
||||
|
||||
## Progress: 3,977 warnings (was 3,746, regression from syncthing)
|
||||
### 2. git — 500 warnings (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
|
||||
Cache has `os: "windows"` but the classifier can't detect it from filenames like:
|
||||
```
|
||||
MinGit-2.33.0.2-64-bit.zip
|
||||
MinGit-2.36.0-64-bit.zip
|
||||
```
|
||||
|
||||
### Still needs fixing:
|
||||
The filename says "MinGit" with no OS indicator. The cache correctly says
|
||||
`os: "windows"` but the classifier re-parses the filename and finds no OS → drops.
|
||||
|
||||
#### 1. syncthing amd64_v2 regression (257 new — priority!)
|
||||
See above. The `v2` in `v2.0.5` is being captured as an arch micro-version.
|
||||
**Where to fix**: This is a classifier limitation. The filename genuinely has no
|
||||
OS. Options: (a) exclude MinGit entries from legacy export, or (b) accept these
|
||||
warnings. MinGit is a Windows-only subset of git — if webi doesn't serve MinGit,
|
||||
just filter them out in `ExportLegacy` by checking if the download URL contains
|
||||
"MinGit" for the `git` package.
|
||||
|
||||
#### 2. cmake source tarballs (2,478 E_MISSING_OS)
|
||||
Source archives with no OS: `cmake-3.22.0-rc1.tar.gz`. Should be excluded.
|
||||
### 3. iterm2 — 475 warnings (E_MISSING_ARCH)
|
||||
|
||||
#### 3. git entries (500 E_MISSING_OS)
|
||||
Source tarballs / no-OS filenames.
|
||||
Cache has `os: "darwin"` but `arch: ""` for entries like:
|
||||
```
|
||||
https://iterm2.com/downloads/beta/iTerm2-3_5_4beta1.zip
|
||||
https://iterm2.com/downloads/stable/iTerm2-3_0_8.zip
|
||||
```
|
||||
|
||||
#### 4. iterm2 entries (475 E_MISSING_OS)
|
||||
macOS-only .zip files but filename has no darwin/macos.
|
||||
iterm2 is macOS-only and universal (no arch in filename). The classifier detects
|
||||
no arch → drops. The cache needs `arch` set to something the classifier will match.
|
||||
|
||||
#### 5. dashcore entries (127 E_MISSING_OS)
|
||||
No OS indicator in filename.
|
||||
**Where to fix**: In `ExportLegacy`, for iterm2 entries with `os: "darwin"` and
|
||||
`arch: ""`, set `arch: "x86_64"`. The darwin WATERFALL (`aarch64: ['aarch64', 'x86_64']`)
|
||||
will ensure aarch64 users still resolve these. Same pattern as universal2.
|
||||
|
||||
#### 6. Minor (~62 remaining)
|
||||
gitea 54, jq 24, bun 20, sttr 18, etc.
|
||||
### 4. dashcore — 127 warnings (E_MISSING_OS)
|
||||
|
||||
### Test results (cache 17:27)
|
||||
Cache has `os: ""` and `arch: ""` for source tarballs:
|
||||
```
|
||||
dashcore-19.0.0-beta.4.tar.gz
|
||||
dashcore-20.0.0-rc.2.tar.gz
|
||||
```
|
||||
|
||||
Same as cmake — source archives with no OS/arch. Drop entries where both are empty.
|
||||
|
||||
### 5. gitea — 54 warnings (E_MISSING_OS)
|
||||
|
||||
Cache has `os: ""` for `freebsd13` entries:
|
||||
```
|
||||
gitea-1.23.2-freebsd13-amd64
|
||||
gitea-1.23.5-freebsd13-amd64
|
||||
```
|
||||
|
||||
The filename says `freebsd13` but your classifier doesn't recognize `freebsd13`
|
||||
as `freebsd`. The cache emits empty `os`.
|
||||
|
||||
**Where to fix**: In classify.go, the FreeBSD OS pattern should match `freebsd\d*`
|
||||
(with optional version suffix). Or in `legacyFieldBackport`, map `freebsd13` → `freebsd`.
|
||||
|
||||
### 6. bun — 20 warnings (E_MISSING_OS)
|
||||
|
||||
Cache has `os: ""` and `arch: ""` for old npm tarballs:
|
||||
```
|
||||
bun-cli-0.0.15.tgz
|
||||
bun-cli-0.0.18.tgz
|
||||
```
|
||||
|
||||
These are npm packages, not platform binaries. Drop entries where both `os` and
|
||||
`arch` are empty.
|
||||
|
||||
### 7. Minor packages (~66 total)
|
||||
|
||||
| Package | Count | Issue |
|
||||
|---|---|---|
|
||||
| sttr | 18 | macOS .pkg files — `arch: ""`, no arch in filename |
|
||||
| uuidv7 | 8 | `arch: ""`, no arch in filename |
|
||||
| fd | 8 | `arch: ""`, no arch in filename |
|
||||
| watchexec | 6 | `arch: ""`, no arch in filename |
|
||||
| kubens | 6 | `arch: ""`, no arch in filename |
|
||||
| kubectx | 6 | `arch: ""`, no arch in filename |
|
||||
| atomicparsley | 5 | `AtomicParsleyAlpine.zip` — no arch |
|
||||
| postgres | 4 | various |
|
||||
| pandoc | 3 | various |
|
||||
| pathman | 2 | various |
|
||||
|
||||
Most are entries with empty `arch`. Some are platform-specific but the filename
|
||||
doesn't include arch info. Could set `arch: "x86_64"` as default when only `os`
|
||||
is known, or exclude them.
|
||||
|
||||
### Summary of suggested fixes:
|
||||
|
||||
1. **Drop entries where `os == ""` AND `arch == ""`** — catches cmake source tarballs (2,478), dashcore (127), bun (20) = **2,625 eliminated**
|
||||
2. **Drop MinGit entries for `git`** — 500 eliminated
|
||||
3. **Set `arch: "x86_64"` for iterm2** where `arch == ""` — 475 eliminated
|
||||
4. **Map `freebsd13` → `freebsd`** in classify.go — 54 eliminated
|
||||
5. **Set `arch: "x86_64"` as default** for entries with `os` but empty `arch` — catches sttr, fd, watchexec, kubens, kubectx, etc. (~66 eliminated)
|
||||
|
||||
Total: ~3,720 → ~0
|
||||
|
||||
### Test results (cache 17:59)
|
||||
|
||||
- **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,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] universal2 → x86_64
|
||||
- [x] solaris/illumos kept as-is
|
||||
- [x] amd64_v2 regression fixed
|
||||
- [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] android entries dropped from legacy export
|
||||
- [x] ANYOS question: Specific-OS-first is correct
|
||||
- [x] ARM variant fixes
|
||||
- [x] android dropped
|
||||
- [x] go armv6l, winx64, ANYOS ordering
|
||||
|
||||
Reference in New Issue
Block a user