Skip to content

refactor(experiments,init): rename eval_model → eval_provider, add XDG parity test#4999

Merged
bug-ops merged 1 commit into
mainfrom
4987-4993-eval-provider-xdg-test
Jun 7, 2026
Merged

refactor(experiments,init): rename eval_model → eval_provider, add XDG parity test#4999
bug-ops merged 1 commit into
mainfrom
4987-4993-eval-provider-xdg-test

Conversation

@bug-ops

@bug-ops bug-ops commented Jun 7, 2026

Copy link
Copy Markdown
Owner

Summary

  • Replace ExperimentConfig.eval_model: Option<String> with eval_provider: ProviderName — aligns with the project's multi-model design principle where all LLM-calling subsystems reference [[llm.providers]] by name
  • Add migration step 58 (migrate_eval_model_to_provider) for in-place config upgrade; init wizard and --migrate-config updated
  • Extract wizard_default_config_path() helper and add xdg_fallback_matches_wizard_default test pinning path parity between init wizard and runtime resolve_config_path

Breaking change

experiments.eval_model is removed. Update [experiments] config sections:

# Before
eval_model = "gpt-4o-mini"

# After (eval_provider must reference a [[llm.providers]] name)
eval_provider = "fast"

Run zeph --migrate-config to upgrade automatically.

Test plan

  • 10690/10690 tests pass (cargo nextest run --workspace --lib --bins)
  • cargo +nightly fmt --check clean
  • cargo clippy --workspace -- -D warnings clean
  • xdg_fallback_matches_wizard_default test exists and passes
  • migrate_eval_model_to_provider_with_field and _no_op tests cover migration body
  • No stale eval_model references in workspace

Closes #4987, #4993

…G parity test

Replace ExperimentConfig.eval_model: Option<String> with eval_provider: ProviderName
to align with the multi-model design principle. An empty value falls back to the
primary provider, preserving the previous Option<String>: None semantics.

Migration step 58 (migrate_eval_model_to_provider) handles in-place config upgrade.
Init wizard and --migrate-config updated. Bootstrap::build_eval_provider now uses
create_named_provider (standard registry pattern).

Extracts wizard_default_config_path() helper and adds xdg_fallback_matches_wizard_default
test pinning path parity between init wizard and runtime resolve_config_path.

BREAKING CHANGE: experiments.eval_model is removed. Update [experiments] sections
to eval_provider = "<provider-name>"; run zeph --migrate-config to upgrade.

Closes #4987, #4993
@github-actions github-actions Bot added refactor Code refactoring without functional changes size/L Large PR (201-500 lines) documentation Improvements or additions to documentation rust Rust code changes core zeph-core crate config Configuration file changes and removed size/L Large PR (201-500 lines) labels Jun 7, 2026
@bug-ops
bug-ops enabled auto-merge (squash) June 7, 2026 13:41
@bug-ops
bug-ops merged commit 7b77d4f into main Jun 7, 2026
32 checks passed
@bug-ops
bug-ops deleted the 4987-4993-eval-provider-xdg-test branch June 7, 2026 13:49
bug-ops added a commit that referenced this pull request Jun 7, 2026
…G parity test (#4999)

Replace ExperimentConfig.eval_model: Option<String> with eval_provider: ProviderName
to align with the multi-model design principle. An empty value falls back to the
primary provider, preserving the previous Option<String>: None semantics.

Migration step 58 (migrate_eval_model_to_provider) handles in-place config upgrade.
Init wizard and --migrate-config updated. Bootstrap::build_eval_provider now uses
create_named_provider (standard registry pattern).

Extracts wizard_default_config_path() helper and adds xdg_fallback_matches_wizard_default
test pinning path parity between init wizard and runtime resolve_config_path.

BREAKING CHANGE: experiments.eval_model is removed. Update [experiments] sections
to eval_provider = "<provider-name>"; run zeph --migrate-config to upgrade.

Closes #4987, #4993
bug-ops added a commit that referenced this pull request Jun 7, 2026
…se wheel) (#4996)

* fix(tui): add transcript scroll in Insert mode via PageUp/PageDown and mouse wheel

In Insert mode, PageUp/PageDown were silently ignored and mouse wheel
events were dropped entirely, making the transcript appear unscrollable.

- event.rs: add AppEvent::Mouse(MouseEvent) variant; forward
  CrosstermEvent::Mouse instead of discarding it
- lib.rs: enable EnableMouseCapture in init_terminal and matching
  DisableMouseCapture in restore_terminal and panic hook; remove
  EnableAlternateScroll/DisableAlternateScroll (mutually exclusive with
  mouse capture — native click-drag selection no longer supported,
  use Shift/Option to select text)
- app/events.rs: handle_mouse maps ScrollUp/ScrollDown to ±3 lines,
  works in both Insert and Normal modes
- app/keys.rs: handle_insert_scroll_keys handles PageUp (+10) and
  PageDown (-10); dispatched before history navigation so PageUp/PageDown
  are captured before Up/Down history check

Closes #4988

* refactor(experiments,init): rename eval_model → eval_provider, add XDG parity test (#4999)

Replace ExperimentConfig.eval_model: Option<String> with eval_provider: ProviderName
to align with the multi-model design principle. An empty value falls back to the
primary provider, preserving the previous Option<String>: None semantics.

Migration step 58 (migrate_eval_model_to_provider) handles in-place config upgrade.
Init wizard and --migrate-config updated. Bootstrap::build_eval_provider now uses
create_named_provider (standard registry pattern).

Extracts wizard_default_config_path() helper and adds xdg_fallback_matches_wizard_default
test pinning path parity between init wizard and runtime resolve_config_path.

BREAKING CHANGE: experiments.eval_model is removed. Update [experiments] sections
to eval_provider = "<provider-name>"; run zeph --migrate-config to upgrade.

Closes #4987, #4993

* fix(skills): use compact skill catalog when embedding matcher is unavailable (#4998)

When the embedding matcher is None (no embedding provider configured) or
fails due to infra error (embed timeout, Qdrant down), both fallback paths
in assembly.rs previously injected all skill bodies into the system prompt,
producing a ~57k-token baseline.

Both paths now set skill_fallback_mode=true, which causes the prompt
renderer to call format_skills_prompt_compact (description-only) instead
of format_skills_prompt (full bodies). The working top-K matcher path is
unchanged and still injects full skill bodies for the matched subset.

Emits tracing::warn in both fallback cases pointing to embedding provider
configuration. Closes #4989.

* fix(tui): restore EnableAlternateScroll, remove mouse capture

EnableMouseCapture and EnableAlternateScroll (1007h) are mutually
exclusive: mouse capture disables native text selection. Revert to
EnableAlternateScroll to preserve native terminal behaviour (#3685).

Remove AppEvent::Mouse, handle_mouse, and related mouse-scroll code
added in the previous commit. PageUp/PageDown keyboard scroll in Insert
mode is retained as the fix for #4988.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

config Configuration file changes core zeph-core crate documentation Improvements or additions to documentation refactor Code refactoring without functional changes rust Rust code changes

Projects

None yet

1 participant