8.9 KiB
Go vs Node.js Cache Comparison
Systematic comparison of Go pipeline output (_cache/) vs Node.js production
cache (LIVE_cache/). Generated by cmd/comparecache.
Key Observations
1. Classification Timing
The Node.js cache stores assets with empty os/arch/ext fields — normalize.js
fills those at serve time. The Go pipeline classifies at write time. This means
the Go cache has richer data per-asset, but the comparison must be done at the
filename level, not the classified fields.
2. Meta-Asset Filtering
Go's isMetaAsset() filters out checksums, signatures, SBOMs, etc. Node.js
includes them. This accounts for 43 packages showing live-has-meta differences.
This is correct behavior — Go is more aggressive about filtering non-installable
files.
3. Source Tarballs
Go includes GitHub source tarballs (tarball_url/zipball_url) for releases with no binary assets. Node.js does not. Affects 18 packages. Decision needed: should these be included?
4. Previously Unsupported Sources (NOW FIXED)
All custom source types are now wired into webicached. The only remaining go-missing packages are: dashd (alias), macos (no releases.conf), pg-essentials (meta-package), zig.vim (gittag with no raw data).
5. Version Depth
Go has deeper version history for most GitHub-sourced packages because it fetches all pages. Node.js limits to 30 releases per API call. This is a feature — Go provides complete histories.
Categories
| Category | Count | Meaning |
|---|---|---|
| match | 9 | Identical asset filenames |
| go-missing | 4 | Go produces no output (alias, meta-package, or no config) |
| live-missing | 16 | Package exists in Go but not in live cache |
| go-extra-versions | 52 | Go has more version history (deeper fetch) |
| live-extra-versions | 15 | Live has newer data or uses a different source |
| go-extra-assets | 64 | Go includes assets that Node.js filters out |
| live-extra-assets | 20 | Node.js includes assets that Go filters out |
| live-has-meta | 43 | Node.js includes meta-assets (checksums, sigs) |
| go-has-source-tarballs | 18 | Go includes source tarballs for no-binary releases |
Per-Package Checklist
Status: [x] reviewed, [-] known difference (acceptable), [ ] needs review
Exact Matches (8)
- atomicparsley — match
- awless — match
- dotenv-linter — match
- hexyl — match
- koji — match
- lf — match
- sd — match
- zoxide — match
Go Missing — Unsupported Source (4)
- [-] dashd — alias_of=dashcore, skipped (correct)
- [-] macos — no releases.conf
- [-] pg-essentials — meta-package
- [-] zig.vim — gittag source, 0 raw data?
Live Missing — Go-Only Packages (16)
- [-] node-official — Go split, not in live cache
- [-] node-unofficial — Go split, not in live cache
- [-] pg — Go name, live uses postgres
- [-] ripgrep — Go name, live uses rg
- [-] rust.vim — symlink to vim-rust
- [-] vim-airline — gittag packages not in live cache
- [-] vim-airline-themes — gittag packages not in live cache
- [-] vim-ale — gittag packages not in live cache
- [-] vim-devicons — gittag packages not in live cache
- [-] vim-go — gittag packages not in live cache
- [-] vim-nerdtree — gittag packages not in live cache
- [-] vim-prettier — gittag packages not in live cache
- [-] vim-rust — gittag packages not in live cache
- [-] vim-sensible — gittag packages not in live cache
- [-] vim-shfmt — gittag packages not in live cache
- [-] vim-syntastic — gittag packages not in live cache
Meta-Asset Only Differences (Go filters, Node.js keeps)
These packages differ only because Go strips checksums/sigs/SBOMs:
- [-] curlie — live-has-meta(21)
- [-] dashmsg — live-has-meta(1)
- [-] dotenv — live-has-meta(1)
- [-] ffuf — live-has-meta(50)
- [-] gitdeploy — live-has-meta(1)
- [-] gprox — live-has-meta(7)
- [-] keypairs — live-has-meta(1)
- [-] monorel — live-has-meta(3)
- [-] ots — live-has-meta(28)
- [-] runzip — live-has-meta(1)
- [-] sclient — live-has-meta(1)
- [-] sqlpkg — live-has-meta(7)
- [-] xz — live-has-meta(1)
Custom Source Types (now wired, needs detailed review)
- chromedriver — chromedist, live-extra-versions(1), go-extra-assets(5)
- flutter — flutterdist, live-extra-assets(1), go-extra-assets(2082)
- go — golang, version overlap differences
- [-] gpg — gpgdist, match
- iterm2 — iterm2dist, live-extra-versions(20), go-extra-assets(262)
- julia — juliadist, live-extra-assets(1), go-extra-assets(1783)
- mariadb — mariadbdist, go-extra-assets(11)
- terraform — hashicorp, live-extra-assets(1), go-extra-assets(5550)
- zig — zigdist, version differences
Version Depth + Extra Assets (needs detailed review)
These have real asset selection differences beyond version depth and meta filtering.
- aliasman — go-has-source-tarballs(8), live-extra-assets(8), go-extra-assets(8)
- arc — go-extra-versions(9), go-has-source-tarballs(18), go-extra-assets(18)
- bat — go-extra-versions(13), go-extra-assets(85)
- bun — go-extra-versions(210), live-extra-versions(30), go-extra-assets(85)
- caddy — go-extra-versions(104), live-has-meta(3415), live-extra-assets(30), go-extra-assets(1180)
- cilium — go-extra-versions(97), go-extra-assets(5)
- cmake — go-extra-versions(280), go-extra-assets(4352)
- comrak — go-extra-versions(60), live-extra-versions(1), live-extra-assets(6), go-extra-assets(194)
- crabz — go-extra-assets(4)
- dashcore — go-extra-versions(101), live-has-meta(327), go-extra-assets(896)
- delta — go-extra-versions(29), go-extra-assets(304)
- deno — go-extra-versions(338), live-extra-assets(1), go-extra-assets(4)
- duckdns.sh — go-has-source-tarballs(6), live-extra-assets(6), go-extra-assets(6)
- fd — go-extra-versions(15), live-extra-versions(1), live-extra-assets(21), go-extra-assets(66)
- ffmpeg — go-extra-versions(11), live-extra-versions(2), go-extra-assets(68)
- fish — go-extra-versions(35), go-extra-assets(182)
- fzf — go-extra-versions(46), go-extra-assets(669)
- gh — go-extra-versions(159), go-extra-assets(2644)
- git — go-extra-versions(339), go-extra-assets(3724)
- gitea — go-extra-versions(194), live-has-meta(1968), go-extra-assets(4600)
- goreleaser — go-extra-versions(556), go-extra-assets(1657)
- grype — go-extra-versions(161), live-has-meta(90), go-extra-assets(1840)
- hugo — go-extra-versions(335), live-has-meta(30), go-extra-assets(8176)
- hugo-extended — go-extra-versions(335), go-extra-assets(8206)
- jq — go-extra-versions(15), live-extra-versions(12), go-extra-assets(7)
- k9s — go-extra-versions(227), go-extra-assets(749)
- kind — go-extra-versions(7), live-has-meta(7)
- kubectx — go-extra-versions(15), go-has-source-tarballs(30), go-extra-assets(78)
- kubens — go-extra-versions(15), go-has-source-tarballs(30), go-extra-assets(78)
- lsd — go-extra-versions(2), go-extra-assets(188)
- mutagen — go-extra-versions(82), go-has-source-tarballs(4), go-extra-assets(2478)
- node — go-extra-versions(713), live-extra-assets(431), go-extra-assets(15208)
- ollama — go-extra-versions(160), live-extra-assets(8), go-extra-assets(15)
- pandoc — go-extra-versions(123), go-extra-assets(698)
- pathman — go-extra-assets(1)
- postgres — go-extra-versions(4), live-extra-versions(8), live-extra-assets(6), go-extra-assets(24)
- psql — go-extra-versions(4), live-extra-versions(4), go-extra-assets(28)
- pwsh — go-extra-versions(163), go-extra-assets(3407)
- rclone — go-extra-versions(92), go-extra-assets(2548)
- rg — go-extra-versions(44), live-has-meta(100), go-extra-assets(282)
- sass — go-extra-versions(283), go-extra-assets(2194)
- serviceman — live-extra-versions(1), live-extra-assets(18), go-extra-assets(12)
- shellcheck — go-extra-versions(17), go-has-source-tarballs(34), go-extra-assets(34)
- shfmt — go-extra-versions(22), go-extra-assets(360)
- sqlc — go-extra-versions(7), go-has-source-tarballs(2), go-extra-assets(19)
- sttr — go-extra-versions(4), live-has-meta(42), go-extra-assets(20)
- syncthing — go-extra-versions(431), live-extra-assets(1), go-extra-assets(11983)
- terramate — go-extra-versions(193), live-has-meta(421), go-extra-assets(1744)
- tinygo — go-extra-versions(19), go-extra-assets(84)
- trip — go-extra-versions(6), go-extra-assets(12)
- uuidv7 — go-extra-assets(16)
- vim-commentary — go-extra-versions(5), live-extra-versions(5), live-extra-assets(5), go-extra-assets(5)
- vim-zig — go-extra-versions(1), live-extra-versions(1), live-extra-assets(1), go-extra-assets(1)
- watchexec — go-extra-versions(83), live-extra-versions(2), live-has-meta(1407), go-extra-assets(671)
- xcaddy — go-extra-assets(123)
- xsv — go-extra-versions(35), go-extra-assets(36)
- yq — go-extra-versions(134), go-extra-assets(17)