Skip to content

fix(hermes): name empty remember timeout errors - #6142

Draft
ehz0ah wants to merge 1 commit into
volcengine:mainfrom
ehz0ah:fix/hermes-remember-empty-timeout
Draft

ehz0ah wants to merge 1 commit into
volcengine:mainfrom
ehz0ah:fix/hermes-remember-empty-timeout

Conversation

@ehz0ah

@ehz0ah ehz0ah commented Oct 15, 2026

Copy link
Copy Markdown
Contributor

Description

Hermes viking_remember directly interpolated exceptions into message and commit failure responses. An exception such as an empty TimeoutError() therefore produced an error with no diagnostic detail.

This change preserves nonempty exception messages and falls back to the exception type when the message is empty. Existing failure-stage, acceptance-state, session URI, recovery command, and retry guidance remain unchanged.

Human Involvement

  • A human participated in the implementation or review loop
  • This PR was generated entirely by AI agents without human participation in the loop

Related Issue

Related external report: vectorize-io/hindsight#5634

Type of Change

  • Bug fix (non-breaking change that fixes an issue)
  • New feature (non-breaking change that adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to not work as expected)
  • Documentation update
  • Refactoring (no functional changes)
  • Performance improvement
  • Test update

Changes Made

  • Use the exception type only when a remember message or commit exception has an empty string representation.
  • Keep existing nonempty error text and structured recovery metadata.
  • Add a real-entrypoint regression for both failure stages.

Testing

  • I have added tests that prove my fix is effective or that my feature works
  • New and existing unit tests pass locally with my changes
  • I have tested this on the following platforms:
    • Linux
    • macOS
    • Windows

Validation used the Hermes commit pinned by the repository workflow (7951ddd7297a284d6da48804241ee05a8a0c621c) with retries disabled.

  • Before the production change, the focused regression failed in both cases: 2 failed.
  • Focused regression after the change: 2 passed.
  • Complete test_standalone.py: 82 passed.
  • Complete external-provider suite: 409 passed.
  • python -m py_compile passed for both changed files.
  • ruff check --ignore I001,B018 passed for both changed files. The ignored rules are existing unrelated findings in these legacy files.
  • git diff --check passed.

Checklist

  • My code follows the project's coding style
  • I have performed a self-review of my code
  • I have commented my code, particularly in hard-to-understand areas
  • I have made corresponding changes to the documentation
  • My changes generate no new warnings
  • Any dependent changes have been merged and published

No documentation change is needed because the public tool contract and recovery instructions are unchanged. No dependent change is required.

Screenshots (if applicable)

Not applicable.

Additional Notes

The change is limited to the two viking_remember exception branches. Shared HTTP error formatting and retry behavior are unchanged.

This branch has not been deployed

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

Labels

None yet

Projects

Status: Backlog

Development

Successfully merging this pull request may close these issues.

1 participant