pub struct Roles {
pub implementers: Vec<String>,
pub judges: Vec<String>,
pub reviewers: Vec<String>,
pub fixer: Option<String>,
pub chatter: Option<String>,
pub conductor: Option<String>,
}Expand description
Explicit role assignment. Empty lists are filled in by
Config::resolve_roles by rotating the roster.
Fields§
§implementers: Vec<String>Agents that implement the task, one worktree each.
judges: Vec<String>Agents that rank the candidates blind.
reviewers: Vec<String>Agents that review the winning patch.
fixer: Option<String>Agent that applies review findings. Defaults to the winner’s author.
chatter: Option<String>Agent that answers the standing chat’s turns (src/talk.rs).
Unset picks a claude seat, else the first runnable agent in roster
order (see crate::agent::pick) - which is roster order, not a
judgement about who converses well. Naming one here matters once an
agent is also sitting as a judge: the chat is opened far more often
than any single competition, and every open competes with that judge
seat for the same account’s concurrency. A timeout on an ordinary chat
turn traced to exactly this - opus triple-booked as chatter and judge
- is what this field exists to let an operator break apart.
conductor: Option<String>Agent that arranges the queue between polls: crate::conduct’s single
seat, called once per cycle to decide a runnable task’s blocked_by
and how a stalled or finished task recovers.
The same precedent as Self::chatter for a seat that stands alone
rather than rotating through the roster - resolved through
crate::agent::pick, so unset falls back to its own default order
(a claude seat, else the first runnable agent) rather than reusing a
judge or reviewer seat that the conductor’s own poll-cycle cadence
would otherwise compete with for the same account’s concurrency.
Trait Implementations§
Source§impl<'de> Deserialize<'de> for Roles
impl<'de> Deserialize<'de> for Roles
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Auto Trait Implementations§
impl Freeze for Roles
impl RefUnwindSafe for Roles
impl Send for Roles
impl Sync for Roles
impl Unpin for Roles
impl UnsafeUnpin for Roles
impl UnwindSafe for Roles
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more