`freshness` compared two commits and never asked whether there was an
output at all, so a component built once and then cleaned reported the
commit it was last built from and read as `current`: the card said
nothing, filed it under "up to date", and offered Rebuild for a build
that did not exist. Found on test-projects/two-clients, whose tablet
component had a recorded builtFrom and no APK under it.
The staleness rules already knew -- `component_is_stale` has asked
`find_apks` under the component's own directory since per-component
discovery landed -- so the two readers of "is this build current"
disagreed, which is the shape worth removing rather than the one wrong
answer. Both now go through `nothing_built`.
Only for an Apk, since a Server has none to find, and only for a
component this server builds, since with no command there is nothing to
press and saying it would be a nag about a project built by hand.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>