Skip to content

feat(coordination): the conflict protocol is built but unused — wire waitlist, yield and stewardship into hold_scopes' refusal path #16647

Description

@mrveiss

Part of making session and agent coordination on by default (owner direction, 2026-09-13). The primitive exists; this wires or extends it, and does not add a parallel one.

#15948 (waitlist, yield request over a2a, arbitration) and #15987 (branch stewardship) shipped their primitives with tests. None has a production caller on main:

  • autobot_shared/coordination/claim_waitlist.py: join, invite_next_waiter;
  • autobot-backend/services/claim_yield.py: request_yield;
  • autobot_shared/coordination/branch_stewardship.py: acquire_aware.

When hold_scopes is refused, the agent gets a bare conflict and nothing else happens.

Acceptance criteria

  • On refusal, hold_scopes joins the scope's waitlist, sends one yield request over the task's existing a2a channel (no new bus), and waits up to the env-backed timeout. Silence resolves to hold, as the doctrine states.
  • Release promotes the head of the waitlist in production, not only in tests.
  • Acquiring a scope with outstanding branch interest goes through acquire_aware, and the result carries the steward warning.
  • An integration test covers two agents contending for one scope end to end: refusal → waitlist → yield or timeout → handoff.

Implementation Order

Wave: 2
Depends on: #15950
Parent: #15946

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions