Coverage matrix — AHRL v27 against the Debian Hamradio Blend on Parrot¶
Generated by
scripts/gen_coverage_matrix.py. Do not edit by hand. The facts are parsed fromdocs/reference/ahrl-inventory.md, the catalog and a fetched Parrot archive probe; the judgement is the generator'sCURATIONtable, every override of which cites a URL.
Generated: 2026-09-30
What this answers¶
docs/reference/prior-art.md proposes the blend's hamradio-*
metapackages as the base tier. This matrix measures what that leaves
Hammunition to do: for each of the 95 units AHRL v27 executes, whether
a metapackage already lists the package, whether Parrot's archive
carries it outside any metapackage, or whether nothing in the archive
does. One class per unit; a URL for every class but COVERED.
The archive that was measured¶
- Archive:
https://deb.parrot.sh/parrot, suitesecho echo-updates echo-security echo-backports, componentsmain contrib non-free non-free-firmware,amd64; fetched 2026-09-30. Release: Origin=Parrot Suite=parrot Codename=echo Date=Wed, 30 Sep 2026 21:45:15 UTC.- Blend:
debian-hamradio0.10 — 12 task metapackages (hamradio-antenna,hamradio-datamodes,hamradio-digitalvoice,hamradio-logging,hamradio-morse,hamradio-nonamateur,hamradio-packetmodes,hamradio-rigcontrol,hamradio-satellite,hamradio-sdr,hamradio-tools,hamradio-training). - Parrot 7
echois Debian 13 trixie stable plus backports (D-038), not testing or sid. The candidate is the highest version acrossecho,echo-updatesandecho-security;echo-backportsonly when nothing else offers the package, and the suite column says so when that happens. - A unit counts as blend-covered when a metapackage Depends on or
Recommends its package.
Suggestsis not installed by default and is not counted.
Counts¶
| Class | Units | Meaning |
|---|---|---|
COVERED |
29 | a metapackage lists it; Parrot is within a patch level of AHRL |
COVERED_STALE |
8 | a metapackage lists it; AHRL bundles a materially newer upstream |
DELTA_APT |
15 | Parrot's archive carries it; no metapackage lists it |
DELTA_UPSTREAM |
8 | not in the archive; upstream publishes a binary |
DELTA_SOURCE |
17 | not in the archive; built from source or a venv |
DELTA_NONFREE |
0 | not free software; free substitute named |
DEAD |
18 | superseded, sunset, or never software — replacement or drop named |
| total | 95 |
The matrix¶
AHRL's version is what the v27 tarball bundles or, for apt units, blank
(AHRL takes whatever the target offers). Parrot's is the candidate version
and its suite. Task is every metapackage that Depends on or Recommends
the package. Carried as is the catalog manifest and its install method,
or — where none exists.
| # | Unit | AHRL | Parrot | Task | Class | Carried as | Licence | Source / note |
|---|---|---|---|---|---|---|---|---|
| 1 | Firefox (browser) | — | 153.4.0esr (echo) as firefox-esr |
— | DEAD |
— | — | https://deb.parrot.sh/parrot/pool/main/f/firefox-esr/ — drop — a browser is the operating system's, not a ham unit; Parrot ships firefox-esr |
| 2 | libhamlib4 | — | 4.6.2 (echo) as libhamlib4t64 |
rigcontrol |
COVERED |
libhamlib-utils (apt) |
— | https://deb.parrot.sh/parrot/pool/main/h/hamlib/ — the runtime library every rig-control package pulls in; trixie renamed it libhamlib4t64 (Provides libhamlib4) and the catalog carries libhamlib-utils |
| 3 | pipx | — | 1.7.1 (echo) |
— | DELTA_APT |
pipx (apt) |
— | https://deb.parrot.sh/parrot/pool/main/p/python-pipx/ |
| 4 | Source build toolchain | — | 12.12 (echo) as build-essential |
— | DEAD |
— | — | https://deb.parrot.sh/parrot/pool/main/b/build-essential/ — drop — the build toolchain is each manifest's build_depends, resolved per unit (D-016) |
| 5 | Wine | — | 10.0~repack (echo) |
— | DEAD |
— | — | https://deb.parrot.sh/parrot/pool/main/w/wine/ — drop from 1.0 — only Morse Runner needs it; a configured Wine prefix is post-1.0 (SCOPE.md); Parrot carries wine 10.0 |
| 6 | RTL-SDR Blog V4 driver | — | 2.0.2 (echo) as rtl-sdr |
sdr |
COVERED |
rtl-sdr (apt) |
— | https://deb.parrot.sh/parrot/pool/main/r/rtl-sdr/ — AHRL purges Debian's librtlsdr for the Blog fork; Debian's 2.0.x carries V4 support, and D-022 says coexist, never remove silently |
| 7 | SvxLink | — | 24.02 (echo) as svxlink-server |
digitalvoice |
COVERED |
svxlink-server (apt) |
— | https://deb.parrot.sh/parrot/pool/main/s/svxlink/ |
| 8 | Xastir | — | 2.2.0 (echo) |
packetmodes |
COVERED |
xastir (apt) |
— | https://deb.parrot.sh/parrot/pool/main/x/xastir/ |
| 9 | dump1090 | — | 3.14.1630+git20240609.adc080d (echo) as readsb |
— | DEAD |
readsb (apt) |
— | https://github.com/flightaware/dump1090 — replacement: readsb (dispositions S) — FlightAware's dump1090 is maintained (pushed 2026-08-14) but Debian packages readsb, not it, and Parrot has no dump1090-* package |
| 10 | Arduino IDE | — | 1.8.19 (echo) as arduino |
— | DELTA_APT |
arduino-cli (apt) |
— | https://deb.parrot.sh/parrot/pool/main/a/arduino/ |
| 11 | atlc | — | 4.6.1 (echo) |
— | DELTA_APT |
atlc (apt) |
— | https://deb.parrot.sh/parrot/pool/main/a/atlc/ |
| 12 | Claws Mail | — | 4.3.1 (echo) as claws-mail |
— | DELTA_APT |
claws-mail (apt) |
— | https://deb.parrot.sh/parrot/pool/main/c/claws-mail/ |
| 13 | CQRLOG | — | 2.5.2 (echo) |
logging |
COVERED |
cqrlog (apt) |
— | https://deb.parrot.sh/parrot/pool/main/c/cqrlog/ |
| 14 | ebook2cwgui | — | 0.1.2 (echo) |
morse |
COVERED |
ebook2cwgui (apt) |
— | https://deb.parrot.sh/parrot/pool/main/e/ebook2cwgui/ |
| 15 | FLAMP | — | 2.2.14 (echo) |
datamodes |
COVERED |
flamp (apt) |
— | https://deb.parrot.sh/parrot/pool/main/f/flamp/ |
| 16 | FLMSG | — | 4.0.23 (echo) |
datamodes |
COVERED |
flmsg (apt) |
— | https://deb.parrot.sh/parrot/pool/main/f/flmsg/ |
| 17 | FLWRAP | — | 1.3.6 (echo) |
datamodes |
COVERED |
flwrap (apt) |
— | https://deb.parrot.sh/parrot/pool/main/f/flwrap/ |
| 18 | Fritzing | — | 1.0.1 (echo) |
— | DELTA_APT |
— | — | https://deb.parrot.sh/parrot/pool/main/f/fritzing/ |
| 19 | GNU Radio | — | 3.10.12.0 (echo) as gnuradio |
sdr |
COVERED |
gnuradio (apt) |
— | https://deb.parrot.sh/parrot/pool/main/g/gnuradio/ |
| 20 | gpsman | — | 6.4.4.2 (echo) |
— | DELTA_APT |
gpsbabel (apt) |
— | https://deb.parrot.sh/parrot/pool/main/g/gpsman/ — in the archive, in no task; the catalog supersedes it with gpsbabel + gpsd (dispositions S) |
| 21 | grig | — | 0.9.0 (echo) |
rigcontrol |
COVERED |
flrig (apt) |
— | https://deb.parrot.sh/parrot/pool/main/g/grig/ — hamradio-rigcontrol recommends it; the catalog supersedes it with flrig (dispositions S) — grig stays on the machine for the operators who prefer it |
| 22 | JTDX | — | 2.2.159+improved (echo) |
datamodes |
COVERED |
jtdx (apt) |
— | https://deb.parrot.sh/parrot/pool/main/j/jtdx/ |
| 23 | KiCad | — | 9.0.2 (echo) |
— | DELTA_APT |
— | — | https://deb.parrot.sh/parrot/pool/main/k/kicad/ |
| 24 | KLog | — | 2.4.1 (echo) |
logging |
COVERED |
klog (apt) |
— | https://deb.parrot.sh/parrot/pool/main/k/klog/ |
| 25 | LinPac | — | 0.28 (echo) |
packetmodes |
COVERED |
linpac (apt) |
— | https://deb.parrot.sh/parrot/pool/main/l/linpac/ |
| 26 | ngspice | — | 44.2 (echo) |
— | DELTA_APT |
— | — | https://deb.parrot.sh/parrot/pool/main/n/ngspice/ |
| 27 | Notepadqq | — | 2.0.0~beta1 (echo) |
— | DEAD |
— | — | https://deb.parrot.sh/parrot/pool/main/n/notepadqq/ — drop — a text editor, not a ham unit; Parrot carries it for anyone who wants it |
| 28 | PuTTY | — | 0.83 (echo) |
— | DELTA_APT |
putty (apt) |
— | https://deb.parrot.sh/parrot/pool/main/p/putty/ |
| 29 | qrq | — | 0.3.5 (echo) |
morse |
COVERED |
qrq (apt) |
— | https://deb.parrot.sh/parrot/pool/main/q/qrq/ |
| 30 | QSSTV | — | 9.5.8 (echo) |
datamodes |
COVERED |
qsstv (apt) |
— | https://deb.parrot.sh/parrot/pool/main/q/qsstv/ |
| 31 | Qtel | — | 24.02 (echo) |
digitalvoice |
COVERED |
qtel (apt) |
— | https://deb.parrot.sh/parrot/pool/main/s/svxlink/ |
| 32 | SPLAT! | — | 1.4.2 (echo) as splat |
antenna, tools |
COVERED |
splat (apt) |
— | https://deb.parrot.sh/parrot/pool/main/s/splat/ |
| 33 | Sunclock | — | 3.57 (echo) |
— | DELTA_APT |
sunclock (apt) |
— | https://deb.parrot.sh/parrot/pool/main/s/sunclock/ |
| 34 | SvxReflector | — | 24.02 (echo) |
digitalvoice |
COVERED |
svxreflector (apt) |
— | https://deb.parrot.sh/parrot/pool/main/s/svxlink/ |
| 35 | TkCVS | — | 8.2.3 (echo) |
— | DEAD |
— | — | https://deb.parrot.sh/parrot/pool/main/t/tkcvs/ — drop — a CVS front end, not a ham unit; Parrot carries it |
| 36 | wwl | — | 1.3+db (echo) |
tools |
COVERED |
wwl (apt) |
— | https://deb.parrot.sh/parrot/pool/main/w/wwl/ |
| 37 | xcwcp | — | 3.6.1 (echo) |
morse, training |
COVERED |
xcwcp (apt) |
— | https://deb.parrot.sh/parrot/pool/main/u/unixcw/ |
| 38 | Xdx | — | 2.91 (echo) |
tools |
COVERED |
xdx (apt) |
— | https://deb.parrot.sh/parrot/pool/main/x/xdx/ |
| 39 | xosview | — | 1.24 (echo) |
— | DEAD |
— | — | https://deb.parrot.sh/parrot/pool/main/x/xosview/ — drop — a system monitor, not a ham unit; Parrot carries it |
| 40 | aa-analyzer | 0.09 | — | — | DEAD |
flaa (source) |
— | https://sourceforge.net/projects/aa-analyzer/ — replacement: flaa (dispositions S) — the same RigExpert AA-series analyzers from a maintained W1HKJ GUI, where aa-analyzer is a Perl CLI on a CPAN module unmaintained for a decade; it was the only CPAN consumer (D-014 amendment) |
| 41 | Coil64 | 2.4.39 | — | — | DELTA_SOURCE |
coil64 (git) |
GPL-3.0 | https://github.com/radioacoustick/Coil64 |
| 42 | cwwav | — | — | — | DELTA_SOURCE |
cwwav (git) |
GPL-3.0 | https://github.com/oyvholm/cwwav — upstream last pushed 2018-06-06 |
| 43 | Dire Wolf | 1.8.1 | 1.7 (echo) as direwolf |
packetmodes |
COVERED_STALE |
direwolf (apt) |
— | https://deb.parrot.sh/parrot/pool/main/d/direwolf/ |
| 44 | ESPHamClock | 4.23 | — | — | DEAD |
openhamclock (node) |
— | https://github.com/openhamclock/hamclock/ — replacement: openhamclock (Q-006, dispositions S) — ESPHamClock is frozen at its author's death and points at a backend that no longer answers; the community mirror is what AHRL now builds |
| 45 | flaa | 1.0.2 | — | — | DELTA_SOURCE |
flaa (source) |
GPL-3.0-or-later | https://w1hkj.org/ |
| 46 | flcluster | 1.1.01 | — | — | DELTA_SOURCE |
flcluster (source) |
GPL-3.0-or-later | https://w1hkj.org/ |
| 47 | fldigi | 4.2.11 | 4.2.06 (echo) |
datamodes |
COVERED |
fldigi (source) |
GPL-3.0-or-later | https://deb.parrot.sh/parrot/pool/main/f/fldigi/ — the catalog builds AHRL's 4.2.11 from source and displaces the archive's 4.2.06 — a patch level, which this matrix does not count as stale |
| 48 | fllog | 1.2.9 | — | — | DELTA_SOURCE |
fllog (source) |
GPL-3.0-or-later | https://w1hkj.org/ |
| 49 | Fl_MoxGen | 1.01 | — | — | DELTA_SOURCE |
fl-moxgen (source) |
GPL-3.0-or-later | https://sourceforge.net/projects/flmoxgen/ |
| 50 | flnet | 7.5.0 | — | — | DELTA_SOURCE |
flnet (source) |
GPL-3.0-or-later | https://w1hkj.org/ |
| 51 | flrig | 2.0.10 | 2.0.05 (echo) |
rigcontrol |
COVERED |
flrig (apt) |
— | https://deb.parrot.sh/parrot/pool/main/f/flrig/ |
| 52 | flwkey | 1.2.4 | — | — | DELTA_SOURCE |
flwkey (source) |
GPL-3.0-or-later | https://w1hkj.org/ |
| 53 | FreeDV GUI | 2.2.1 | 1.8.11 (echo) as freedv |
digitalvoice |
COVERED_STALE |
freedv (apt) |
— | https://deb.parrot.sh/parrot/pool/main/f/freedv/ |
| 54 | glfer | 0.4.2 | — | — | DELTA_SOURCE |
glfer (source) |
GPL-2.0 | https://www.qsl.net/in3otd/glfer.html |
| 55 | Gpredict | 2.5.1 | 2.3-115-g0f3beb6 (echo) |
satellite |
COVERED_STALE |
gpredict (apt) |
— | https://deb.parrot.sh/parrot/pool/main/g/gpredict/ |
| 56 | Gqrx | 2.17.7 | 2.17.6 (echo) as gqrx-sdr |
sdr |
COVERED |
gqrx-sdr (apt) |
— | https://deb.parrot.sh/parrot/pool/main/g/gqrx-sdr/ |
| 57 | gsmc | — | — | — | DELTA_SOURCE |
gsmc (source) |
GPL-3.0 | https://github.com/tym163com/gsmc — upstream last pushed 2016-09-13 |
| 58 | GSpiceUI | 1.2.87 | — | — | DELTA_SOURCE |
— | GPL-3.0 | https://sourceforge.net/projects/gspiceui/ — no manifest yet — reserved to the maintainer (dispositions M); absent from trixie and Parrot; AHRL's build hardcodes an aarch64 path (D-002) |
| 59 | JS8Call-improved | 2.5.2 | 2.2.0 (echo) as js8call |
datamodes |
COVERED_STALE |
js8call (apt) |
— | https://deb.parrot.sh/parrot/pool/main/j/js8call/ |
| 60 | Linrad | 05-02 | — | — | DELTA_SOURCE |
linrad (source) |
MIT | https://sourceforge.net/projects/linrad/ — needs a patch the source backend cannot yet apply (source-build-gaps.md) |
| 61 | MSHV | 2.76.5 | — | — | DELTA_SOURCE |
mshv (source) |
GPL-3.0 | https://lz2hv.org/node/10 |
| 62 | Open Wouxun (owx) | — | 20250530 (echo) as chirp |
rigcontrol |
DEAD |
chirp (apt) |
— | https://chirpmyradio.com/ — replacement: chirp (dispositions S) — Open Wouxun is a 2022 CLI snapshot; CHIRP drives the same radios with a GUI and a release cadence, and Parrot packages it |
| 63 | qgrid | 3.2 | — | — | DELTA_SOURCE |
qgrid (source) |
GPL-2.0-or-later | https://www.qsl.net/on4qz/qgrid/index.html |
| 64 | QLog | 0.49.1 | 0.52.0 (echo-backports) |
— | DELTA_APT |
qlog (apt) |
GPL-3.0 | https://deb.parrot.sh/parrot/pool/main/q/qlog/ — Parrot's backports carry 0.52.0, ahead of AHRL's 0.49.1; the manifest installs that on Parrot and Kali and builds the same tag elsewhere (corrected 2026-09-06 -- it used to say only Kali packages it) |
| 65 | QUISK | 4.2.50 | 4.2.32 (echo) |
sdr |
COVERED |
quisk (apt) |
— | https://deb.parrot.sh/parrot/pool/main/q/quisk/ |
| 66 | SatDump | — | 1.2.2 (echo) |
— | DELTA_APT |
satdump (apt) |
— | https://deb.parrot.sh/parrot/pool/main/s/satdump/ |
| 67 | SDR++ | — | 0.0~git20260520.36ea9a1 (echo-backports) as sdrpp |
— | DELTA_APT |
sdrpp (apt) |
— | https://deb.parrot.sh/parrot/pool/main/s/sdrpp/ |
| 68 | TQSL | 2.8.4 | 2.8.1 (echo) as trustedqsl |
logging |
COVERED |
trustedqsl (apt) |
— | https://deb.parrot.sh/parrot/pool/main/t/trustedqsl/ |
| 69 | wfview | 2.11 | 2.03 (echo) |
rigcontrol |
COVERED_STALE |
wfview (apt) |
— | https://deb.parrot.sh/parrot/pool/main/w/wfview/ |
| 70 | WSJT-X | 3.0.0 | 2.7.0 (echo) as wsjtx |
datamodes |
COVERED_STALE |
wsjtx (git) |
GPL-3.0 | https://deb.parrot.sh/parrot/pool/main/w/wsjtx/ — the catalog builds 3.0.0 from git and purges the archive's 2.7.0 first |
| 71 | WSJT-X improved | 3.1.0 | 2.8.0+250501 (echo) as wsjtx-improved |
— | DELTA_APT |
wsjtx-improved (apt) |
GPL-3.0 | https://deb.parrot.sh/parrot/pool/main/w/wsjtx-improved/ — Parrot packages wsjtx-improved (2.8.0, a minor behind AHRL's 3.1.0) where the manifest fetches SourceForge's vendor .deb, measured installing there and a year newer; the archive package Breaks: wsjtx, which the plan has refused by name since 2026-09-07 (D-022 amendment), and Kali -- where the vendor .deb cannot install -- takes its archive's 3.1.0 (2026-09-07) |
| 72 | xlog | 2.0.25 | 2.0.24 (echo) |
logging |
COVERED |
xlog (apt) |
— | https://deb.parrot.sh/parrot/pool/main/x/xlog/ |
| 73 | xnec2c | 4.4.18 | 4.4.16 (echo) |
antenna |
COVERED |
xnec2c (apt) |
— | https://deb.parrot.sh/parrot/pool/main/x/xnec2c/ |
| 74 | xwefax | 2.4.4 | — | — | DELTA_SOURCE |
xwefax (source) |
GPL-3.0 | https://www.qsl.net/5b4az/ |
| 75 | AntScope2 | 1.4.15 | — | — | DELTA_UPSTREAM |
antscope2 (binary:deb) |
MIT | https://github.com/rigexpert/AntScope2 — vendor .deb; MIT per LICENSE.txt (Rig Expert Ukraine), not proprietary as the survey assumed |
| 76 | GridTracker2 | 2.260421.1 | — | — | DELTA_UPSTREAM |
gridtracker2 (binary:deb) |
BSD-3-Clause | https://gitlab.com/gridtracker.org/gridtracker2 — vendor .deb; BSD-3-Clause per the GitLab project, not proprietary as the survey assumed |
| 77 | FoxTelem | 1.12z3 | — | — | DELTA_UPSTREAM |
— | GPL-3.0 | https://github.com/ac2cz/FoxTelem — post-1.0 (Q-015); AMSAT publishes a Java tarball, no manifest yet |
| 78 | YAAC | — | — | — | DELTA_UPSTREAM |
yaac (binary:zip) |
LGPL-3.0-or-later | https://www.ka2ddo.org/ka2ddo/YAAC.html — per docs/license.html inside YAACMain.jar; the bundled OpenMap carries its own licence |
| 79 | Morse Runner | 1.85.3 | — | — | DELTA_UPSTREAM |
morse-runner (git) |
MPL-2.0 | https://github.com/zmetzing/MorseRunner — AHRL runs a Windows binary under Wine; the catalog builds the native Lazarus port of 1.68 (dispositions C, 2026-09-30) — the Community Edition at w7sst/MorseRunner does not build natively |
| 80 | Wordsworth | 0.3 | — | — | DELTA_UPSTREAM |
wordsworth (binary:tarball) |
GPL-3.0 | https://sourceforge.net/projects/kb1oiq-k1ig-wordsworth/ |
| 81 | Virtual Radar Server | — | 3.14.1630+git20240609.adc080d (echo) as readsb |
— | DEAD |
readsb (apt) |
— | https://www.virtualradarserver.co.uk/ — replacement: readsb + tar1090 (dispositions S) — a maintained Mono application whose Linux build AHRL patches at install time; the catalog supersedes it rather than carry the patch |
| 82 | Backdrops | — | — | — | DEAD |
— | — | https://sourceforge.net/projects/kb1oiq-andysham/ — drop — AHRL's wallpapers, not software |
| 83 | Country files (cty.dat) | — | — | — | DELTA_UPSTREAM |
— | MIT-style (AD1C, copyright.txt) |
https://www.country-files.com/ — post-1.0 (Q-015): the cty.dat archive as a zip; Parrot's hamradio-files 20250523 carries Debian's copy, which is the 1.0 answer |
| 84 | CHIRP | 20260501 | 20250530 (echo) |
rigcontrol |
COVERED_STALE |
chirp (apt) |
— | https://deb.parrot.sh/parrot/pool/main/c/chirp/ |
| 85 | NanoVNA-Saver | — | 0.7.3 (echo) |
— | DELTA_APT |
nanovna-saver (apt) |
GPL-3.0-or-later | https://deb.parrot.sh/parrot/pool/main/n/nanovna-saver/ — AHRL installs it with pipx; the manifest hash-pinned a venv on the claim that no distribution packages it, and since 2026-09-06 installs Parrot's 0.7.3 with the PySide6 dependency the package forgot (Debian #1112747) |
| 86 | not1mm | — | — | — | DELTA_SOURCE |
not1mm (venv) |
GPL-3.0 | https://github.com/mbridak/not1mm |
| 87 | js8spotter | 1.18 | — | — | DELTA_UPSTREAM |
js8spotter (binary:zip) |
MIT | https://kf7mix.com/js8spotter.html |
| 88 | QtTinySA | 1.2.2 | 1.0.2+git20250424T094920-a2d39d0 (echo) |
rigcontrol |
COVERED_STALE |
qttinysa (apt) |
— | https://deb.parrot.sh/parrot/pool/main/q/qttinysa/ |
| 89 | PyAutoGUI | — | — | — | DEAD |
— | — | https://deb.parrot.sh/parrot/pool/main/p/pyautogui/ — drop — AHRL's own menu-regression harness, not ham software; Parrot carries python3-pyautogui |
| 90 | AIS-catcher | — | — | — | DELTA_SOURCE |
ais-catcher (git) |
GPL-3.0 | https://github.com/jvde-github/AIS-catcher |
| 91 | RF Exposure Calculator | — | — | — | DEAD |
— | — | https://sourceforge.net/projects/kb1oiq-andysham/ — drop — a two-line script opening hintlink.com/power_density.htm in the browser; not software |
| 92 | Solar Data | — | — | — | DEAD |
— | — | https://sourceforge.net/projects/kb1oiq-andysham/ — drop — wget of one image from hamqsl.com; not software |
| 93 | ahrl_docs | — | — | — | DEAD |
— | — | https://sourceforge.net/projects/kb1oiq-andysham/ — drop — AHRL's own; the generated package reference replaces it |
| 94 | ahrl_menus | — | — | — | DEAD |
— | — | https://sourceforge.net/projects/kb1oiq-andysham/ — drop — AHRL's own; D-036 generates menus per DE |
| 95 | ahrl_version | — | — | — | DEAD |
— | — | https://sourceforge.net/projects/kb1oiq-andysham/ — drop — AHRL's own; hammunition --version is the engine's |
Covered but stale¶
Where AHRL builds a newer upstream than the blend installs. These are the units where taking the blend as the base costs a version, and the only ones where a blend-first Hammunition would owe a source build for a package the archive already has.
| # | Unit | AHRL bundles | Parrot installs | Gap |
|---|---|---|---|---|
| 43 | Dire Wolf | 1.8.1 | 1.7 (echo) | minor |
| 53 | FreeDV GUI | 2.2.1 | 1.8.11 (echo) | major |
| 55 | Gpredict | 2.5.1 | 2.3-115-g0f3beb6 (echo) | minor |
| 59 | JS8Call-improved | 2.5.2 | 2.2.0 (echo) | minor |
| 69 | wfview | 2.11 | 2.03 (echo) | minor |
| 70 | WSJT-X | 3.0.0 | 2.7.0 (echo) | major |
| 84 | CHIRP | 20260501 | 20250530 (echo) | 336 days |
| 88 | QtTinySA | 1.2.2 | 1.0.2+git20250424T094920-a2d39d0 (echo) | minor |
Where the seven classes do not fit¶
DEAD was defined as upstream gone or superseded. 13 of the
18 units in it are not ham software — AHRL's own wallpapers,
menu tooling and version stamp, a browser, an editor, a system monitor,
a build toolchain, Wine, two scripts that fetch a web page. They are
marked DEAD with the note drop because the matrix was asked for
exactly seven classes; they are not dead upstreams, and a reader counting
dead ham software should subtract them. The 5 that remain
(dump1090, aa-analyzer, ESPHamClock, Open Wouxun (owx), Virtual Radar Server) are superseded in the
catalog, and only ESPHamClock's upstream is actually gone.
6 units are DELTA_* with no manifest
(Fritzing, KiCad, ngspice, GSpiceUI, FoxTelem, Country files (cty.dat)). The electronics
tools and GSpiceUI are reserved to the maintainer (dispositions M),
and FoxTelem and the country files are post-1.0 by Q-015. They are
classified by what AHRL does with them,
not by what the catalog does.
2 units the archive carries are built or fetched by the catalog anyway (fldigi, WSJT-X). Each row's note says why. When this probe first ran (2026-09-06) it contradicted three manifests — that no distribution packages NanoVNA-Saver, that only Kali packages QLog, that the archive's WSJT-X is the only one — and they were corrected the same day: the first two now install from the archive where it offers them, and the third names the archive package and why the engine does not use it yet.
What the blend as base tier leaves to Hammunition¶
With the blend installed as the base tier, 37 of AHRL's 95 units are already on the machine and 15 more are one apt install away — together 52 of the 77 units that are not DEAD, or 67% — if the operator installs all twelve task metapackages, which is what base tier would mean. That is the measured version of the survey's claim that the blend makes most of AHRL redundant, and it holds. What it leaves is 25 units: 17 source builds the archive does not carry (Coil64, cwwav, flaa, flcluster, fllog, Fl_MoxGen, flnet, flwkey, glfer, gsmc, GSpiceUI, Linrad, MSHV, qgrid, xwefax, not1mm, AIS-catcher), 8 upstream binaries and no proprietary tools. Plus the 8 stale rows, where the operator who wants AHRL's version needs a build the blend cannot give them. Hammunition's actual scope on the amateur side is therefore not a catalog of 77 programs but a build layer for roughly 33 of them — the W1HKJ suite, the Qt and FLTK one-offs, the Python venvs — sitting on a base someone else maintains; and the tiering, hardware, station configuration and SDR/SIGINT profiles that no metapackage attempts. The 18 DEAD units are the explanation AHRL never wrote down.
Reproducing¶
python3 scripts/gen_coverage_matrix.py --fetch # rewrites reference/probes/blend-metapackages-parrot-echo.tsv
python3 scripts/gen_coverage_matrix.py # rewrites this file
python3 scripts/gen_coverage_matrix.py --check # CI: fail if stale
tests/test_gen_coverage_matrix.py holds the parsers to fixtures, every
unit to exactly one curated entry, every override to an https://
citation, and regeneration to a no-op.