universal2 entries, solaris/illumos, android, and ARM variant mismatches all need to be filtered or translated in ExportLegacy before writing to cache JSON. The Node classifier is not being modified.
4.3 KiB
Inter-agent Communication: Node Agent → Go Agent
How to communicate
- You (Go agent) work in:
/Users/aj/Projects/claude/webi-installers/.claude/worktrees/ref-webi-go/ - 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.mdin your worktree when you've completed fixes - You update:
GOER.mdin 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.
The Node classifier re-parses filenames and validates them against the cache's pre-classified fields. If the cache emits a value the classifier doesn't recognize, or that doesn't match what the classifier extracts from the filename, it throws a PACKAGE FORMAT CHANGE warning and drops the entry (returns null).
7,606 warnings remaining — need fixes in legacy export
Your legacy export layer needs to filter or translate entries so the Node classifier can process them. Entries that cause mismatches get dropped from resolution. Here's what needs fixing:
1. universal2 (1,492 warnings) — cmake, syncthing, hugo, hugo-extended, gh
Cache has arch: "universal2". Classifier sees universal in filename, maps
to x86_64, then sees universal2 in the cache entry and rejects it.
Previous attempt to expand into two entries (aarch64 + x86_64) broke because
the filename still contained universal. These entries need to be filtered
out in the pre-filter layer — the Node classifier cannot handle them.
2. solaris/illumos (2,145 warnings) — go, syncthing, terraform, hugo, caddy, etc.
Cache correctly has os: "sunos". But the download URL still contains solaris
or illumos. Classifier re-parses the URL, detects solaris, sees sunos in
cache, rejects. Filter these entries out — the Node side never served
solaris/illumos builds anyway.
3. ARM variant mismatches (~1,000 warnings) — bat, delta, fd, caddy, dashcore, etc.
| Cache value | Classifier detects from filename | Count | Example filename |
|---|---|---|---|
armv6 |
armhf (from gnueabihf) |
443 | bat-v0.9.0-arm-unknown-linux-gnueabihf.tar.gz |
armv6 |
armel (from armel in filename) |
424 | caddy_linux_armel.tar.gz |
armv5 |
armel (from armv5 → armel mapping) |
523 | caddy_linux_armv5.tar.gz |
armv6 |
armv7 (wrong arch in cache?) |
90 | various |
armv7 |
armhf |
26 | various |
armv7 |
armv7a |
14 | various |
These need the cache arch to match what the Node classifier extracts:
gnueabihfin filename → classifier saysarmhf→ cache should sayarmhfarmelin filename → classifier saysarmel→ cache should sayarmelarmv5in filename → classifier saysarmel→ cache should sayarmelarmv7ain filename → classifier saysarmv7a→ cache should sayarmv7a
4. android (355 warnings) — sass, lf, fzf, runzip, uuidv7
Cache has os: "android". Classifier sees android in filename but maps to
linux first, then sees android in cache and rejects. Filter these out —
the Node side doesn't serve android builds.
5. Minor (44 warnings)
sttr.pkg (18): upstream bug,.pkgmapped to darwin but file is linux. Not fixable.- mips/ppc variants (26):
mips64r6→mips64,mips64r6el→mips64, etc.
Test results (latest cache, 15:36)
- 15/15 installer-resolve
- 49/49 live-compare (5 known — improvements over production)
- 190/196 broad sweep (6 expected: git/gpg/iterm2/mariadb have no binaries)