Skip to main content

CompilationConfig

Struct CompilationConfig 

Source
pub struct CompilationConfig {
Show 14 fields pub confidence_threshold: f64, pub min_local_time_ms: u64, pub remote_speedup_threshold: f64, pub local_slots: u32, pub build_slots: u32, pub test_slots: u32, pub check_slots: u32, pub disk_headroom_gib: u32, pub build_timeout_sec: u64, pub test_timeout_sec: u64, pub bun_timeout_sec: u64, pub external_timeout_enabled: bool, pub allow_local_fallback: bool, pub remote_build_jobs: RemoteBuildJobs,
}

Fields§

§confidence_threshold: f64

Minimum confidence score to intercept (0.0-1.0).

§min_local_time_ms: u64

Run locally when this build’s measured local median is below this (ms). Consulted only by the speed gate, i.e. when local_slots > 0.

§remote_speedup_threshold: f64

Minimum measured speedup ratio (local_time / remote_time) to offload. If the measured speedup < threshold, run locally. Default: 1.2 (20% faster). Consulted only by the speed gate, i.e. when local_slots > 0.

§local_slots: u32

Speed gate (bd-2spi4): how many offloadable builds may run concurrently on THIS machine because its own measured build history says remote is not worth it. Zero (default) disables the gate, so every offloadable build is offloaded as before. Set it only on a dispatcher that is faster than its workers; local runs also need free memory (see the hook).

§build_slots: u32

Default slot estimate for build commands (cargo build, gcc, etc.).

§test_slots: u32

Default slot estimate for test commands (cargo test, nextest). Tests typically use more parallelism than builds.

§check_slots: u32

Default slot estimate for check/lint commands (cargo check, clippy). These are typically faster and use fewer resources.

§disk_headroom_gib: u32

Per-build additional free-space budget on the worker’s reported build filesystem, in GiB. Include expected output growth and a safety margin. Zero (default) disables this explicit budget. Positive budgets require a fresh disk observation and are held in durable daemon ownership until completion. They are admission accounting, not filesystem quotas.

§build_timeout_sec: u64

Timeout in seconds for build commands. Build commands (cargo build, gcc, etc.) typically complete faster than tests.

§test_timeout_sec: u64

Timeout in seconds for test commands. Test commands often need longer timeouts due to test suite execution time.

§bun_timeout_sec: u64

Timeout in seconds for bun commands (bun test, bun typecheck). Bun has known issues where its internal –timeout flag doesn’t work for CPU-bound hangs, so we use a shorter external timeout by default.

§external_timeout_enabled: bool

Whether to wrap remote commands with external timeout protection. This prevents runaway/stuck processes from consuming worker slots indefinitely. Default: true. Set to false to disable timeout wrapping entirely.

§allow_local_fallback: bool

Whether a remote build FAILURE may fall back to LOCAL execution on the orchestrator once every eligible remote worker has been exhausted.

On a remote failure the hook first retries the build on a different, higher-capacity worker (see run_exec’s worker-fallback loop). Local execution runs the heavy compile on the orchestrator that coordinates the whole fleet, so it is a genuine last resort and can flood that box. This flag gates it. Default true preserves the historical fail-open behavior (local only when no worker can serve); set to false on an orchestrator to refuse local fallback and fail the build closed instead. force_remote / proof mode / RCH_REQUIRE_REMOTE still override this by refusing local unconditionally.

§remote_build_jobs: RemoteBuildJobs

Per-job rustc parallelism cap applied on the WORKER (issue #49).

total_slots bounds concurrent jobs per worker, but cargo defaults -j to the worker’s nproc, so one offloaded cargo test --workspace forks nproc rustc regardless of slots and can swap-thrash a RAM-light box. This policy injects CARGO_BUILD_JOBS into the remote build environment; see RemoteBuildJobs for the modes. It never overrides a CARGO_BUILD_JOBS the worker session already carries, an inline CARGO_BUILD_JOBS=N or -j N in the command, or a project .cargo/config.toml [build] jobs — explicit intent always wins.

Implementations§

Source§

impl CompilationConfig

Source

pub fn timeout_for_kind(&self, kind: Option<CompilationKind>) -> Duration

Returns the appropriate external timeout for the given compilation kind.

  • Bun commands get the shorter bun_timeout (to protect against known hang issues)
  • Test commands get the longer test_timeout
  • All other commands (builds, checks, clippy) get the build_timeout
Source

pub fn external_timeout_enabled(&self) -> bool

Returns whether external timeout wrapping is enabled.

Trait Implementations§

Source§

impl Clone for CompilationConfig

Source§

fn clone(&self) -> Self

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for CompilationConfig

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for CompilationConfig

Source§

fn default() -> Self

Returns the “default value” for a type. Read more
Source§

impl<'de> Deserialize<'de> for CompilationConfig

Source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl Serialize for CompilationConfig

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,

Source§

impl<T> DynClone for T
where T: Clone,

Source§

fn __clone_box(&self, _: Private) -> *mut ()

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self> ⓘ

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self> ⓘ

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> ⓘ
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self> ⓘ

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more