Skip to content

Tighten hybrid control-plane handoff and vision fallback - #30683

Draft
yoshio-cell wants to merge 3 commits into
NousResearch:mainfrom
yoshio-cell:feature/hybrid-control-plane-mvp
Draft

yoshio-cell wants to merge 3 commits into
NousResearch:mainfrom
yoshio-cell:feature/hybrid-control-plane-mvp

Conversation

@yoshio-cell

@yoshio-cell yoshio-cell commented May 23, 2026 •

Copy link
Copy Markdown

Summary

  • Tightens Phase 1.5 hybrid control-plane handoff checks so delegated worker summaries and escalation/error handoffs are validated more defensively.
  • Fixes auxiliary vision/provider routing so unavailable explicit vision providers can fall back to auto vision backends consistently with runtime async_call_llm(task="vision") behavior.
  • Prevents non-vision auto providers from satisfying vision routing accidentally, and adds test isolation for provider health cooldown state.
  • Documents the expected auxiliary vision preference: use subscription-backed grok-4.3 via xai-oauth or gemini-3-flash-preview subscription route before API-key/OpenRouter spend.

QA

  • python -m py_compile agent/auxiliary_client.py tests/agent/test_auxiliary_client.py tests/agent/test_auxiliary_main_first.py tests/tools/test_vision_tools.py tools/vision_tools.py
  • Ordered targeted pytest runs across:
    • tests/tools/test_vision_tools.py
    • tests/agent/test_auxiliary_main_first.py
    • tests/agent/test_auxiliary_client.py
  • Broader aux + vision regression slice:
    • python -m pytest tests/agent/test_auxiliary*.py tests/tools/test_vision_tools.py -q
    • Result: 342 passed, 6 skipped
  • git diff --check

Notes

This updates the existing hybrid control-plane MVP PR with the Phase 1.5 guard tightening and the auxiliary vision fallback fix.

@alt-glitch alt-glitch added type/feature New feature or request P3 Low — cosmetic, nice to have comp/agent Core agent runtime: loop, agent_init, prompt builder, context-compression, responses endpoint labels May 23, 2026
- Refactor check_hybrid_control_plane.py: add --handoff/--all-handoff-fixtures
  modes with fail-fast gate pipeline (schema -> forbidden_path_writes ->
  prompt_artifact_unchanged -> diff_size_limit:SKIP -> unit_tests -> cost_cap:SKIP
  -> AUTOMATED_PASS_HUMAN_REVIEW_REQUIRED)
- Normalize leading ./ in changed_files before forbidden-path comparison;
  AGENTS.md.backup passes, ./AGENTS.md is caught as forbidden (not format error)
- Add agent enum validation (must be claude_code or codex)
- Add empty changed_files detection at schema gate
- Treat absent test_results as unit_tests SKIP/missing-evidence (fail-fast)
- Register ALL_HANDOFF_EXPECTED closed map; fail on unknown stub-handoff-*.yaml
- Add 6 new adversarial fixtures:
    stub-handoff-fail-agent-enum.yaml
    stub-handoff-fail-dotslash-prompt-artifact.yaml
    stub-handoff-fail-empty-changed-files.yaml
    stub-handoff-fail-test-results-absent.yaml
    stub-handoff-fail-traversal.yaml
    stub-handoff-pass-agent-md-backup.yaml
- Expand test suite: 92 tests (280 in skills slice), all green
- Add Phase 1.5 plan doc (dogfood adversarial-review amendments)
@yoshio-cell yoshio-cell changed the title feat: hybrid agent control-plane MVP scaffolding Tighten hybrid control-plane handoff and vision fallback May 23, 2026
@teknium1

Copy link
Copy Markdown
Collaborator

Thanks for the defensive handoff and routing work. The vision portion needs to be separated from the remaining draft work.

Problems

  • Current main already implements the stated auxiliary-vision fallback in agent/auxiliary_client.py:6451-6467 and :7068-7084, with matching gating in tools/vision_tools.py:1360-1381. Commit 3d66787a0 (fix(vision), fix(vision): route auxiliary.vision.provider=openai to api.openai.com, skip text-only main #31452) added the behavior and tests/agent/test_vision_routing_31179.py coverage.
  • The control-plane artifact is explicitly not installed (.hermes/templates/skill-draft-hybrid-agent-control-plane.md) and the plan defers real worker execution/core integration. The changed-file set does not connect scripts/check_hybrid_control_plane.py to a supported CLI, plugin, or installed skill.
  • tests/skills/test_hybrid_agent_control_plane.py::test_all_handoff_fixtures_mode_fails_closed_on_unknown_fixture writes a temporary fixture inside .hermes/test-fixtures in the checkout.

Suggested changes

  • Salvage only a concrete, edge-integrated control-plane consumer and validate its real lifecycle in isolated state.
  • Move the fixture-discovery test to temporary/injected state rather than mutating the checkout.

Automated hermes-sweeper review.

@teknium1 teknium1 added sweeper:risk-security-boundary Sweeper risk: may affect sandboxing, auth, credentials, or sensitive data sweeper:risk-compatibility Sweeper risk: may break existing users, config, migrations, defaults, or upgrades sweeper:blast-broad Sweeper blast radius: broad — a core path most sessions hit labels Jul 13, 2026

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

comp/agent Core agent runtime: loop, agent_init, prompt builder, context-compression, responses endpoint P3 Low — cosmetic, nice to have sweeper:blast-broad Sweeper blast radius: broad — a core path most sessions hit sweeper:risk-compatibility Sweeper risk: may break existing users, config, migrations, defaults, or upgrades sweeper:risk-security-boundary Sweeper risk: may affect sandboxing, auth, credentials, or sensitive data type/feature New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants