2026-08-27 - The BSD harvest was names-only, and the work outgrew it
Asked whether we were missing information from the FreeBSD harvest.
We were, and docs/REFERENCES.md said so all along:
"Symbol names, and nothing else⦠no constants." Right for the
naming loop, outgrown by implementing (D352).
It had already cost three answers this session: SIGPIPE
recovered from the guest's own call argument, a sysctl MIB
left unnamed, errno left unset. Sockets would have been far
worse - AF_INET and SOCK_STREAM are not
optional to know.
Sparse checkout widened from lib/ to include
sys/sys, sys/netinet, include:
22 MB to 25 MB. 903 constants harvested into
abi-constants.toml, read by abi_constant
rather than retyped.
The satisfying part
Four constants confirmed measurements taken before the harvest
existed, by two routes that never touched: SIGPIPE 13
against the 0xd klogsrv passed, and
[1, 14, 8, 0] against CTL_KERN /
KERN_PROC / KERN_PROC_PROC - the last
commented "only return procs". So the MIB is enumerate
all processes, from a caller the symbol table calls
find_pid. D350's open question closed itself.
And the guest confirmed the whole path end to end:
main.c:278:sysctl: error 0 became
error 2.
Kept
SOL_SOCKET is 0xffff here and
1 on several other platforms, which is exactly the value
recall gets wrong. There is a test pinning it for that reason - not
because the number is interesting, but because it is the one a table
built from memory would differ on first.