2026-08-29 - ftpsrv talks, and asks to be root

The measured list said two functions. sscanf and strftime are written, and ftpsrv now imports nothing this project does not implement.

It does not serve. It runs, prints its own diagnostics in its own words, and stops:

main-prospero.c:49:malloc: error 0 (orbistoun has no message table)
Unable to change AuthID

It is trying to become root, through the KERNEL_ADDRESS_* globals a loader supplies on real hardware. There is no kernel here to have them. That is a stated wall rather than a mystery, which is the difference that matters: klogsrv listens because a log server needs a socket; ftpsrv needs a filesystem it is allowed to read, and asks for it the way a jailbroken console lets it (D382).

Also answered sysctl kern.proc.proc with the truth - there are no processes - which is what both payloads are really asking when they look for an earlier copy of themselves, and which sidesteps struct kinfo_proc and its layout question entirely.

The check that was too clever

Yesterday's %s guard followed a pointer only inside a published range. Those ranges are the guest's, and a %s argument is very often a pointer into memory this project handed the guest - a strerror buffer, a getifaddrs block. So ftpsrv printed a perfectly good error message with (unmapped) where the reason should have been.

Back to the narrow rule. The wrong version was visible in a guest's own output for about an hour, which is the cheapest way to find out, and only possible because a payload had got far enough to print.