Skip to content

epic: make Dispatch lanes configurable #381

@joryirving

Description

@joryirving

Goal

Make Dispatch lanes configurable instead of hardcoding the current built-in lane set.

Today Dispatch assumes a fixed lane model in several places. That works for the current deployment, but it makes the project harder to reuse for other agent/model setups. A user should be able to run Dispatch with one claimable lane, two lanes, three lanes, or another custom set without changing source code.

Desired model

Dispatch should support lane profiles configured at runtime or from repo config, for example:

lanes:
  - id: default
    title: Default
    claimable: true
  - id: backlog
    title: Backlog
    claimable: false

or:

lanes:
  - id: local
    title: Local
    claimable: true
  - id: cloud
    title: Cloud
    claimable: true
  - id: frontier
    title: Frontier
    claimable: true
  - id: backlog
    title: Backlog
    claimable: false

The shipped default should preserve current behavior for existing installs.

Non-goals

  • Do not change external workflow repos in this epic.
  • Do not require any specific agent names.
  • Do not require any specific model/provider names.
  • Do not remove existing lane data.
  • Do not break current normal/escalated/backlog deployments.

Design principles

  • Lanes are Dispatch-owned routing metadata.
  • backlog is special only because it is not claimable worker work.
  • Claimable lanes should be data-driven.
  • Single-lane deployments must be valid.
  • Queue APIs should continue to filter by lane when a lane is requested.
  • Existing installs should continue to work without new config.

Child issues

Acceptance criteria

  • Dispatch can run with the current default lanes without behavior changes.
  • Dispatch can run with one claimable lane plus backlog.
  • Dispatch can run with three claimable lanes plus backlog.
  • Queue APIs respect the configured lane set.
  • UI renders lane choices from config instead of hardcoded assumptions.
  • Reconciliation/classification never writes a lane not present in config.
  • Tests cover current default lanes and at least one custom lane configuration.
  • Documentation explains how to configure lanes.

Validation

  • npm run lint
  • npm run typecheck
  • npm run test
  • npm run build

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or improvement.priority/p1High priority.status/backlogNot ready for worker pickup yet.

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions