Rewrite results to derive everything from run files
Build results, failure ranking, and blocked counts now come from
the latest run file instead of scanning layer.json on disk. This
fixes the empty results when the os_dir path doesn't match, and
ensures results always reflect a specific run.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>