fix(skills): collate EmbedUnsupported warnings into single info log#1711
Merged
fix(skills): collate EmbedUnsupported warnings into single info log#1711
Conversation
When a provider does not support embeddings (e.g. claude), SkillMatcher::new() previously emitted one WARN per skill, producing 14 identical log entries on startup. All EmbedUnsupported errors are now collected and emitted as a single summary warning: "skill embeddings skipped: embedding not supported by <provider> (N skills affected)". Timeout and other per-skill errors continue to be logged individually. Adds two tests covering the all-unsupported and partial-unsupported cases. Closes #1387
Downgrade the summary from warn to info (M1: non-actionable, expected behavior when using a provider without embedding support). Add a comment on unsupported_provider documenting the last-wins assumption (M2). Add tracing_test assertion to verify exactly one summary log is emitted, not one per skill (M3). Wire tracing-test as a workspace dev-dependency. Closes #1387
assert!(!logs_contain("3 individual")) never matched production output —
replace with assert!(!logs_contain("failed to embed skill")) to verify
per-skill EmbedUnsupported errors are not logged individually. Also add
assert!(logs_contain("INFO")) to prevent regression from info! back to warn!.
CHANGELOG: 'single warning' -> 'single info-level log message' to match the actual info! call. Test: replace broad INFO check with target-scoped assertion (zeph_skills::matcher: skill embeddings skipped) and a negative WARN check — ties level regression detection to the specific log line.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Fixes #1387. When using
provider = "claude"(which does not support embeddings), startup previously emitted 14 individual WARN log entries — one per skill. This was expected, non-actionable behavior treated as an error.warn!→info!forEmbedUnsupportederrors (the collation logic was already present on main)warn!unsupported_providerdocumenting the last-wins assumptiontracing-testdev-dependency and testtest_unsupported_emits_single_info_not_per_skillthat asserts:Before
After
Test plan
cargo +nightly fmt --check— passcargo clippy --workspace --features full -- -D warnings— passcargo nextest run --config-file .github/nextest.toml --workspace --features full --lib --bins— 5349 passedtest_unsupported_emits_single_info_not_per_skillverifies logging contract