探查完成。以下为 6 项核实结论。

## 1. 凭据文件读取竞态：**无短重试，一次失败立即定性**
- `Sources/UsageMonitorCore/Providers/Codex/CodexUsageService.swift:296-306`（CodexAuthReader.readCredentials）：`fileExists` 缺失即返回 nil（→ credentialsNotFound），读/解析失败直接 `throw CodexUsageError.invalidJSON`，注释明言“单次映射读：auth.json 由 Codex CLI 原子重写”且无重试循环。
- `CodexConfigAPISource.swift:40-42`、`CodexProxyManagedSource.swift:43-45`、`CodexRelayStatsService.swift:167-169` 全部是 `try? String(contentsOfFile:)` 一次读，失败即返回 nil/false（判为非该形态）。
- 唯一缓解：账号行错误需连续 ≥2 次失败才展示（`App/MenuBar/MenuBarViewModel.swift:1369-1370` “连续 ≥2 次才把错误挂到该账号行”）；app-server 失败降级 wham/usage（`CodexUsageService.swift:492-495`）是兜底链而非重试。

## 2. 空/空白 config.toml：**与文件不存在结果等价（同走 nil 路径），不报错**
- `CodexConfigAPISource.swift:49-57`（directWriteSource(fromConfig:)）：空内容经 `isProxyManagedConfig("")`（`CodexProxyManagedSource.swift:60-71` 逐行扫描、空输入返回 false）、`customProviderBaseURL("")`（`CodexRelayStatsService.swift:175-204` 无行可解析返回 nil）全部落空 → 返回 nil。
- `isDefaultHomeThirdPartyAPIMode`（`CodexConfigAPISource.swift:94-116`）：空文件 content 为非 nil 的 `""`，缺失文件为 nil，两者最终都返回 false；无 trim/空白特判，纯空白文件同空文件处理。

## 3. 统计图表交互：**部分——有 hover 气泡，无点击 selection**
- `App/Settings/StatisticsSettingsView.swift:1462-1505`（UsageCurveChart，默认 `.days30`，见 :1341/203）：`.chartOverlay { proxy in ... .onContinuousHover }` 命中最近数据点并渲染 `RuleMark`(:1446)/`PointMark`(:1449)+跟随气泡（:1489）。
- 全文件无 `.chartXSelection`/`chartYSelection`/selection binding/`onTapGesture`，纯 hover 交互（`:1511` nearestPoint 吸附）。

## 4. pace 行配色：**部分——按风险橙/次要比（非绿/红），且当前实际永不渲染**
- `App/MenuBar/MenuBarView.swift:1046`：`.foregroundStyle(paceText.atRisk ? Color.orange : Color.secondary)`——仅 onTrack/atRisk 两态（`Sources/UsageMonitorCore/UsagePace.swift:55` 偏离基线 >5% 判 atRisk），无绿色态。
- 但 `UsagePace.swift:65-66` `displayText` 硬编码返回 nil（注释“菜单栏不展示速率预测文案”），`MenuBarView.swift:1062` `guard let text = pace.displayText else { return nil }` → paceRow（:1039，:884/:1012 两处调用）目前是死代码，界面上不会出现。

## 5. 删除账号与在途刷新竞态：**无防护**
- `App/MenuBar/MenuBarViewModel.swift:658-661`（removeOfficialAccount）与 :666-673（removeCodexHomeAccount）均不取消在途刷新（全文件仅 ：1846 取消 resetBoundaryTasks）。
- `refreshOfficialAccounts` 在 ：2136 快照账号列表、任务组完成后 ：2231 直接写回 `usageData[provider]`，无回写前比对；`refreshCodexAccounts` 同理（:1231-1244 快照 targets → :1394 写回 + :1418-1419 持久化 accounts 缓存）。
- 更糟：`refreshAll` → `refresh`（:2521-2526）`if let activeRefreshTask { await activeRefreshTask.value; return }`——删除后若恰有在途刷新，只等它跑完（其数据含已删账号）即返回，连补救刷新都不触发。

## 6. codex 可执行定位：**绝对路径 which + 常见目录探测，无裸 "codex"、无 CWD/相对路径风险**
- 发现逻辑唯一收口于 `CodexAppServerService.discoverExecutable`（`Sources/UsageMonitorCore/Providers/Codex/CodexAppServerService.swift:139-152`）：PATH 补入 commonExecutableDirectories（:155-159，`/opt/homebrew/bin`、`/usr/local/bin`、`~/.cargo/bin`）后以**绝对路径** `/usr/bin/which codex`（runWhich :186-205）搜索，失败再逐一 `isExecutableFile` 探测候选；所有 spawn 均用该绝对路径设 `executableURL`。
- spawn 点：① app-server `runSession`（:246-248，args `["app-server","--stdio"]`，子进程环境 childEnvironment :166-183 补 PATH）；② `codex --version`（`CodexLoginService.swift:49-51`）；③ `codex login`（`CodexLoginService.swift:88-90`，executablePath 来自 ：38 同一 discoverExecutable）。
- 例外：`Sources/UsageMonitorCore/Credentials/KeychainCredentialSource.swift:507-527`（findCommandPath，:475 用于工具发现）也用 `/usr/bin/which` 但**不补 PATH**，launchd 最小 PATH 下可能找不到 Homebrew codex（`CodexAppServerService.swift:135-137` 注释正是记录此问题）；`McodeCredentialReader.swift:146-148` 同款绝对路径 which（mcode，非 codex）。