Skip to content

Runner selection: pool size, failure classification and payment_sent on rejections #70

Open

Description

@eliteprox

The builder engine (proposal) will build its runner failover on runner_selector / RunnerSelectionCursor. Three things are missing for that.

Today (main at 44df061):

  • RunnerSelectionCursor.next tries candidates in discovery order and moves on after any exception.
  • Its candidates come from discover_orchestrator_runners, which returns the runners of the first batch of five orchestrators that has any.
  • There is no setting for how many candidates to consider, no ordering hook, and no way to tell a capacity refusal from other failures.
  • RunnerRejection records only the URL and a reason string, so a caller cannot tell whether a failed attempt had already paid. With a session prepay, a start refused on capacity has paid.

Request:

  1. A maximum pool size, so selection can consider runners across more than one orchestrator batch.
  2. An ordering hook, or ranking inputs.
  3. A classified failure reason: capacity refusal versus unreachable versus other.
  4. Whether payment was sent, on each rejection.

Related: #37 forwarded orchestrators through reserve_session. That change is on main, but #36 is still open.

Activity

  1. eliteprox commented on Oct 5, 2026

    @eliteprox
    CollaboratorAuthor
  2. eliteprox commented on Oct 6, 2026

    @eliteprox
    CollaboratorAuthor

    Failure classification and payment_sent on each rejection are in draft #71 (5868d81). A rejection is capacity for HTTP 503, unreachable when the runner never answered, or other. payment_sent and manifest_id are copied from the call_runner error, and NoRunnerAvailableError reports them from the last paid rejection.

    Pool size and an ordering hook are still open on this issue.

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions