#198
fix: nested eval directory with housekeeping and result checking
Fixes handling of nested eval directories (e.g. caching/cache-bypass, frameworks/h3) across result caching, housekeeping, and refingerprinting.
Eval fixtures can be organized into nested subdirectories (e.g. evals/<group>/<name>/), and saveResults() preserves this hierarchy on disk under results/<experiment>/<timestamp>/<group>/<name>/. However, several consumer paths relied on a single-level readdirSync(tsDir):
- Housekeeping (
housekeep): A 1-levelreaddirencountered the parent group directory (e.g.caching/), which lacks summary.json at the group root. It evaluated the group directory as an incomplete result and recursively rmSync'd it, deleting all valid results beneath it. - Result Reuse (
scanReusableResults): Evaluated only 1-level directory entries against fingerprint keys, causing nested evals to never match and preventing result caching. - Refingerprinting (
carryForwardConfigChanges): Evaluated only 1-level directory entries, silently dropping nested evals and failing to carry forward benign config bumps.