Harden ReviewOps retriever lifecycle watchdog#378
Open
YCM-Vibe wants to merge 3 commits into
Open
Conversation
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
export_identity_guard_enabled=truewithexport_identity_guard_last_result.accepted=true..retriever-wrapper.lock, and avoid persisting raw argv in lock payloads.Why
A ReviewOps/Deep Research retriever can reach
status=downloadedwith a non-empty output file but keep polling forever. When that happens, outernotify_on_completeflows never fire even though the artifact is already available. This change makes completion observable without adding browser-side actions or bypassing identity/stale-export safeguards.Safety boundaries
argv_redacted: truerather than raw command arguments.Test plan
python3 -m py_compile agent-workspace/agent_helpers.py agent-workspace/reviewops_retriever_invocation_template.py tests/unit/test_agent_helpers.pyPYTHONDONTWRITEBYTECODE=1 PYTHONPATH="/Users/yangchongmeng/AI-Workspace/tools/browser-harness/src:/Users/yangchongmeng/AI-Workspace/tools/browser-harness/.venv/lib/python3.11/site-packages" /Users/yangchongmeng/Documents/Codex/2026-04-24/https-github-com-nousresearch-hermes-agent/venv/bin/python3 -m pytest -p no:cacheprovider -q tests/unit/test_agent_helpers.py-> 12 passedPYTHONDONTWRITEBYTECODE=1 PYTHONPATH="/Users/yangchongmeng/AI-Workspace/tools/browser-harness/src:/Users/yangchongmeng/AI-Workspace/tools/browser-harness/.venv/lib/python3.11/site-packages" /Users/yangchongmeng/Documents/Codex/2026-04-24/https-github-com-nousresearch-hermes-agent/venv/bin/python3 -m pytest -p no:cacheprovider -q-> 119 passedgit diff --checkBranch
browser-use/browser-harness@mainYCM-Vibe:reviewops/retriever-watchdog1e780cf,6ac1dd3,5f61b34Summary by cubic
Adds a lifecycle watchdog and strict wrapper for ReviewOps retrievers to detect completion via status file + non-empty out file + accepted identity guard. Prevents stuck runs from blocking
notify_on_completewhile staying fail-closed.New Features
reviewops_download_is_complete,wait_for_reviewops_download,exit_if_reviewops_downloaded.agent-workspace/reviewops_retriever_invocation_template.py: lifecycle-only; exits when terminal status + out-file + identity guard accepted; separate.retriever-wrapper.lockwith stale-lock breaking; lock payload redacts argv.Bug Fixes
status=downloadedwith a valid output file, avoiding indefinite polling.Written for commit 5f61b34. Summary will update on new commits. Review in cubic