Brings mesh-host #224 (issue 1966): newestFPs returns a placed module whose newest build failed, composedValues writes its refused key at that fingerprint, takeBuildDone starts the pass on a failed build. Conflict in newestFPs settled by keeping G's by-entries branch first (design 47 G §421, §628: the node reads neither the indexer's modules nor the builder's builds; it returns no failed), and main's failed-build path in the other. Claude-Session: https://claude.ai/code/session_01NcbgfGKaxw984XyAPfLm4h