Skip to content

Add an inspectable fault-injection reliability benchmark - #765

Open
PranavMishra28 wants to merge 2 commits into
OpenHands:mainfrom
PranavMishra28:agent/fault-injection-reliability-scaffold
Open

Add an inspectable fault-injection reliability benchmark#765
PranavMishra28 wants to merge 2 commits into
OpenHands:mainfrom
PranavMishra28:agent/fault-injection-reliability-scaffold

Conversation

@PranavMishra28

@PranavMishra28 PranavMishra28 commented Jul 30, 2026

Copy link
Copy Markdown

Summary

  • add an executable, adapter-backed reliability benchmark with matched baseline and faulted runs
  • support deterministic schedules for sandbox restart, lost dispatch response, SIGKILL mid-tool-call, and network partition faults
  • persist inspectable event, fault, recovery, metrics, and irreversible-effect evidence before grading
  • grade completion/resume, exactly-once irreversible effects, and recovery overhead with explicit reason codes
  • add JSON and Markdown scorecards, a reliability-eval CLI, an example scenario, and an SDK event callback bridge
  • document the verified benchmark/SDK/agent-server integration seams in ARCHITECTURE.md and the public contract in DESIGN.md

Design boundary

The benchmark core is fully executable and tested. Infrastructure-specific operations remain explicit adapter capabilities (restart_sandbox, drop_dispatch_response, sigkill_mid_tool_call, partition_network, and heal_network) because their concrete implementation depends on the selected runtime and its privileges. This keeps the graders and schedule portable while making every injected action inspectable.

The SDK bridge runs persistence callbacks before observing an event for fault injection. This preserves the central persist-before-inject invariant and avoids depending on hidden model reasoning.

Evidence and validation

  • uv run pre-commit run --files ...
    • Ruff format: passed
    • Ruff lint: passed
    • pycodestyle: passed
    • Pyright strict: passed
  • uv run pytest tests/test_reliability.py tests/test_async_evaluation.py tests/test_iterative_resume.py
    • 29 passed
  • make build
    • passed
  • broader uv run pytest tests
    • 538 passed
    • 13 ProgramBench shell-hook tests could not run on macOS because GNU timeout is not installed; those failures are unrelated to this change

Engagement and context

PranavMishra28 and others added 2 commits July 30, 2026 14:29
Co-authored-by: openhands <openhands@all-hands.dev>
Co-authored-by: openhands <openhands@all-hands.dev>
@PranavMishra28 PranavMishra28 changed the title Scaffold a fault-injection reliability benchmark Add an inspectable fault-injection reliability benchmark Jul 30, 2026
@PranavMishra28

Copy link
Copy Markdown
Author

The implementation is complete and this is ready for maintainer review. RFC/context: #764; related reliability failures: #488, OpenHands/OpenHands#14260, and OpenHands/OpenHands#13578.

@neubig, I would especially value your feedback on whether this benchmark core belongs here and how the first SWE-bench runtime adapter should plug into the shared evaluation runner. @simonrosenberg, I would value your review of the SDK event/dispatch boundary and the persist-before-inject contract.

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.

1 participant