pub enum AgentStatus {
Success,
Failed,
RateLimited,
Unknown,
ResourceKilled,
AgentUnavailable,
IdleTimeout,
}Expand description
Agent completion status determined by DevFlow.
Variants§
Success
Agent self-reported success via DEVFLOW_RESULT.
Failed
Agent self-reported failure, or exit code + commit gate indicated failure.
RateLimited
Agent stopped because an upstream API or usage quota rate-limited it.
Unknown
No signal received — fallback to exit code / commit heuristic.
ResourceKilled
Layer 2 classified the process as killed for resource exhaustion (exit code 137, typically SIGKILL from an OOM killer) (D-07, 17b).
Layer 2 classified the process as unable to start (exit code 127, typically “command not found”) (D-07, 17b).
IdleTimeout
The pipe-owning monitor gave up waiting: the child’s stream went silent for longer than the idle window and DevFlow terminated it (D-06, 31-02).
Deliberately distinct from BOTH neighbours it would otherwise collapse
into. Against Failed: nothing reported a failure — the agent simply
stopped talking, and a graceful close would fall through to Layer 2,
which scores partial commits as Success (999.64 reborn inside its own
fix). Against ResourceKilled: the box did not run out of memory;
DevFlow itself did the killing. Only a third variant lets the completion
oracle tell “we gave up waiting” from either.
The explicit #[serde(rename)] is required, not stylistic: the
enum-level rename_all = "lowercase" would collapse the two words into
idletimeout. The two existing two-word variants above carry the same
rename for the same reason.
Implementations§
Source§impl AgentStatus
impl AgentStatus
Sourcepub fn as_wire_str(&self) -> &'static str
pub fn as_wire_str(&self) -> &'static str
The wire-format name for this variant, pinned equal to
serde_json::to_string(&self) with the surrounding quotes stripped
(see the as_wire_str_matches_serde_form test). Exhaustive match with
NO wildcard arm — adding a variant without updating this is a compile
error. This is the sanctioned replacement for
format!("{:?}", status).to_ascii_lowercase(), which collapses word
boundaries on multi-word variants (review consensus #1).
Trait Implementations§
Source§impl Clone for AgentStatus
impl Clone for AgentStatus
Source§fn clone(&self) -> AgentStatus
fn clone(&self) -> AgentStatus
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreimpl Copy for AgentStatus
Source§impl Debug for AgentStatus
impl Debug for AgentStatus
Source§impl<'de> Deserialize<'de> for AgentStatus
impl<'de> Deserialize<'de> for AgentStatus
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>,
impl Eq for AgentStatus
Source§impl PartialEq for AgentStatus
impl PartialEq for AgentStatus
Source§impl Serialize for AgentStatus
impl Serialize for AgentStatus
impl StructuralPartialEq for AgentStatus
Auto Trait Implementations§
impl Freeze for AgentStatus
impl RefUnwindSafe for AgentStatus
impl Send for AgentStatus
impl Sync for AgentStatus
impl Unpin for AgentStatus
impl UnsafeUnpin for AgentStatus
impl UnwindSafe for AgentStatus
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<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.