Skip to content

fix(eve): propagate dynamic skill resolver failures - #3290

Draft
komly wants to merge 2 commits into
vercel:mainfrom
komly:fix/dynamic-skill-resolver-errors
Draft

komly wants to merge 2 commits into
vercel:mainfrom
komly:fix/dynamic-skill-resolver-errors

Conversation

@komly

@komly komly commented Sep 11, 2026

Copy link
Copy Markdown

Summary

Closes #3288.

A rejected dynamic skill resolver currently logs an error and lets the turn continue with the previous skill package. Resolver rejections now propagate, preserving the original cause. During an ordinary conversation turn, a turn.started failure uses the existing recoverable turn-boundary path before the assistant model call; session-start failures stop initialization.

All resolver outcomes settle before materialization. When any resolver rejects, none of that dispatch's skill updates are materialized. A later ordinary turn can resolve the repaired source in the same session.

The separate authorization-callback preamble emits lifecycle events outside the harness recovery path and can still terminate the session on resolver or authored-hook errors. This existing exception is documented, not changed here; it was traced in source rather than reproduced in a new runtime test.

Validation

  • All three new real just-bash integration cases fail on the base implementation and pass with the fix: turn-boundary rejection and later refresh in the same context, session-start rejection, and no sibling update after a resolver rejects. Run with pnpm --filter eve exec vitest run --config vitest.integration.config.ts src/context/dynamic-skill-errors.integration.test.ts.
  • Existing skill suites pass (22 tests), as do the seven focused turn-boundary recovery tests.
  • Typecheck, lint, formatting, runtime invariants, and git diff --check pass. Lint retains two pre-existing warnings in unrelated files.
  • Full documentation checks pass, including metadata, imports, snippets, and MDX for the final changed guide.

Checklist

  • This change was requested or approved by a maintainer
  • I ran the relevant checks from CONTRIBUTING.md
  • I added tests and documentation where relevant
  • I added a changeset if this touches the published eve package
  • DCO sign-off passes for every commit (git commit --signoff)

Diff size

Docs — 2 files · +7 / -0

A release note and the dynamic-skills guide describe resolver failures and the existing recovery boundaries.

Implementation — 1 file · +5 / -8

Routes rejected resolvers through the existing lifecycle error handling and removes the log-and-skip path.

Tests — 1 file · +159 / -0

Uses a real filesystem source, sandbox, and session context to cover errors, preserved state, and later refresh without mocked resolvers or sandbox operations.

Signed-off-by: Dmitry Petrov <Komly@yandex.ru>
Signed-off-by: Dmitry Petrov <Komly@yandex.ru>
@vercel

vercel Bot commented Sep 11, 2026

Copy link
Copy Markdown
Contributor

@komly is attempting to deploy a commit to the Vercel Team on Vercel.

A member of the Team first needs to authorize it.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Dynamic skill resolver errors are swallowed and turns continue with stale skills

1 participant