pub struct FarmOutConfig {
pub verify_command: Option<Vec<String>>,
pub union_verify_command: Option<Vec<String>>,
pub allowed_tools: Option<Vec<String>>,
pub mcp_endpoint: Option<String>,
pub mcp_config_dir: Option<PathBuf>,
pub recover_via_single_session: bool,
pub worktree_base: Option<PathBuf>,
pub no_verify_waiver: Option<NoVerifyWaiver>,
}Expand description
Tuning for a farm-out run.
Fields§
§verify_command: Option<Vec<String>>Per-worktree gate command — a regression check (“does this one subtask’s change compile / not break existing tests?”). A subtask legitimately implements only PART of the goal, so a goal-level test that needs every subtask must NOT run here (it would reject each subtask).
union_verify_command: Option<Vec<String>>Integrated-union gate command — the goal check (“does the merged
result actually achieve the goal?”). Falls back to verify_command
when None, so callers that want one command for both can leave it unset.
allowed_tools: Option<Vec<String>>Tool allowlist passed to each agent invocation.
mcp_endpoint: Option<String>MCP governance endpoint passed to each agent invocation.
mcp_config_dir: Option<PathBuf>Directory each agent invocation writes its MCP config file into, copied
onto every WorktreeAgentRequest this run builds. None — the default
— leaves the agent on $TMPDIR, which is what every caller that owns no
checked directory keeps doing. A caller that has one (the coder session’s
state directory) passes it and takes the adapter off an environment
variable nobody validated (car#1494 / car#1534).
recover_via_single_session: boolWhen the decomposed parallel path fails to integrate, recover by
re-running the whole goal as one session (see run_foreman). Off by
default because it spends a full extra (serial) session on top of the
failed parallel spend — delivery-first callers (e.g. the daemon’s
foreman.run) opt in; cost-sensitive callers leave it off and inspect the
delivered() flag / retained integration evidence instead.
worktree_base: Option<PathBuf>Base directory under which per-subtask git worktrees are created. When
None, defaults to an out-of-repo location derived from repo_root
(see [default_worktree_base]) so a worktree — and especially one
leaked by a crash mid-run — never appears as an untracked entry inside
the caller’s checkout (which would make every later git status read
dirty). Set this to pin worktrees to a specific scratch area, e.g. a
daemon state dir.
no_verify_waiver: Option<NoVerifyWaiver>Explicit waiver letting the gate accept a change with no configured
build/test command. Without it, a missing verify command yields
MergeVerdict::Inconclusive (fail-closed), never Accepted — so a
decomposed run over a project with no reliably-detectable build command
can never deliver. Supply this when containment + apply-conflict +
duplicate-declaration checks are the intended soundness boundary and a
build leg genuinely can’t be determined. Threaded into every gate
(per-subtask, union, regional).
Trait Implementations§
Source§impl Clone for FarmOutConfig
impl Clone for FarmOutConfig
Source§impl Debug for FarmOutConfig
impl Debug for FarmOutConfig
Auto Trait Implementations§
impl Freeze for FarmOutConfig
impl RefUnwindSafe for FarmOutConfig
impl Send for FarmOutConfig
impl Sync for FarmOutConfig
impl Unpin for FarmOutConfig
impl UnsafeUnpin for FarmOutConfig
impl UnwindSafe for FarmOutConfig
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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> ErasedDestructor for Twhere
T: 'static,
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