Found by upgrade-simulation review of #1078: daily-cache files are version-suffixed (daily-cache.v23.json) so binaries coexist, but codex-results.json is a single unsuffixed file with an internal version field. A v10 and a v11 binary (e.g. desktop app pinned to an older CLI alongside an upgraded brew CLI, or a rollback in flight) clobber each other's file and each re-parses all codex sessions on EVERY invocation — measured 9.2-9.4s vs 5.3s warm (+75%). Correctness is fine on both sides; this is pure cost. Fix: suffix the filename with its version like the daily cache.
Found by upgrade-simulation review of #1078: daily-cache files are version-suffixed (daily-cache.v23.json) so binaries coexist, but codex-results.json is a single unsuffixed file with an internal version field. A v10 and a v11 binary (e.g. desktop app pinned to an older CLI alongside an upgraded brew CLI, or a rollback in flight) clobber each other's file and each re-parses all codex sessions on EVERY invocation — measured 9.2-9.4s vs 5.3s warm (+75%). Correctness is fine on both sides; this is pure cost. Fix: suffix the filename with its version like the daily cache.