feat(desktop): Models pane missing cron config (drift guard, fleet model); scheduled jobs can't route to cron.model
type/featurecomp/cronarea/configP3comp/desktoparea/billing
## Summary
The Hermes Desktop app cannot configure or even see the cron model-drift settings, even though they exist in `config.yaml` and are central to how cron jobs route inference. Two surfaces are missing:
1. **Settings → Models pane** (`apps/desktop/src/app/settings/model-settings.tsx`) renders the main model, auxiliary models, reasoning, etc., but has **no cron section**. The `cron` config block (`model_drift_guard`, `model`, `model_provider`) is invisible and not editable from the UI — it must be hand-edited in `config.yaml` (`hermes config set`).
2. **Scheduled Jobs editor** (`apps/desktop/src/app/cron/index.tsx`) per-job model dropdown only offers: *Default* (follow global at fire time) or an explicit per-provider model pin. There is no way to select the **cron-fleet default** (`cron.model` / `cron.model_provider`) as a routing option, and the list shows no routing badge (Fleet default / Global default / Pinned) or drift-skip state.
## Repro
1. Desktop app → Settings → Models. There is no "Cron" section despite `cron.model_drift_guard`, `cron.model`, `cron.model_provider` existing in config.yaml since #69290 landed.
2. Settings → Scheduled Jobs → create/edit an agent job. The model select contains "Default" + provider models only; the fleet default configured under `cron.model` is not listed and cannot be chosen.
3. Change the global model from the Models pane (or `/model`): unpinned jobs get drift-guard skipped (`[drift_skip:silent]`), and the only UI evidence is the job silently landing in error state — no routing badge, no "needs model review" filter, no link to `cron.model`.
## Expected behavior
- **Models pane** exposes the cron inference block alongside the other model settings: the `cron.model_drift_guard` toggle (with fail-closed default and a spend-risk warning when disabled), plus `cron.model` / `cron.model_provider` fields — consistent with the "advanced" guard toggle, matching the semantics in #69290 and #75375.
- **Scheduled Jobs** shows routing status per job (Fleet default / Global default / Pinned), surfaces the effective model, marks drift-skipped jobs with the skip reason, and offers a way to route a job to the fleet default (`cron.model`) from the dropdown.
- No behavior change when settings are untouched: fail-closed drift guard stays the default.
## Related issues
- #24258 — Dashboard (web, port 9119) cron model/provider visibility + edit; explicitly excludes Desktop in its scope.
- #75375 — fleet migration UX when global model changes (warning workflow + cron list routing categories). This issue is the *config-surface* half: the settings pane must exist before the migration guide can point anywhere.
- #69290 / #55680 — the `cron.model` / `cron.model_provider` / `cron.model_drift_guard` feature set this issue asks to surface in the UI.
- #70050 — combined drift/re-pin failure mode this UI gap makes harder to recover from.
1 条评论