Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .jules/bolt.md
Original file line number Diff line number Diff line change
Expand Up @@ -85,3 +85,6 @@
## 2025-11-04 - [Avoid HashMap Allocation for Parent-to-Child Grouping on Hot Paths]
**Learning:** In the `cancel_scoped` function within `orch8-engine/src/signals.rs`, allocating a `HashMap<ExecutionNodeId, Vec<&ExecutionNode>>` inside a hot path loop across all tree nodes results in severe memory allocation and hashing overhead, negatively impacting CPU and scaling.
**Action:** Always replace dynamic `HashMap` allocations inside tree processing loops with a `Vec<(ParentId, &ChildType)>`. Sort the vector by the parent ID using `.sort_unstable_by_key()` and retrieve matching children efficiently in O(log N) time using `.partition_point()` and bounded `.skip()` iteration, achieving completely zero-allocation queries inside nested functions like `is_inside_finally_branch`.
## 2026-08-23 - [Zero-Allocation ExecutionNode State Comparison]
**Learning:** In the composite reevaluation hot path within `orch8-engine/src/evaluator.rs`, eagerly allocating multiple `Vec<(ExecutionNodeId, NodeState)>` snapshots of the execution tree solely to verify if state changes occurred creates unnecessary memory allocation overhead.
**Action:** When comparing snapshots of structurally stable slices (like `[ExecutionNode]`) to detect mutations, prefer a zero-allocation helper function that compares lengths and iterates with `.zip().any()` to short-circuit upon the first mismatch.
28 changes: 15 additions & 13 deletions orch8-engine/src/evaluator.rs
Original file line number Diff line number Diff line change
Expand Up @@ -885,11 +885,7 @@ async fn phase_composite_reevaluation(
return Ok(IterAction::FallThrough);
}

// Snapshot node states before dispatching any composite.
let pre_states: Vec<(ExecutionNodeId, NodeState)> =
ctx.tree.iter().map(|n| (n.id, n.state)).collect();

let mut early_restart = false;
let mut tree_mutated = false;
for idx in &composite_indices {
let node = &ctx.tree[*idx];
let Some(block) = block_map.get(&node.block_id).copied() else {
Expand All @@ -910,23 +906,19 @@ async fn phase_composite_reevaluation(
if may_mutate_instance(block) {
ctx.instance_stale = true;
let mid_tree = storage.get_execution_tree(instance_id).await?;
let mid_states: Vec<(ExecutionNodeId, NodeState)> =
mid_tree.iter().map(|n| (n.id, n.state)).collect();
if pre_states != mid_states {
if states_differ(&ctx.tree, &mid_tree) {
ctx.set_tree(mid_tree);
early_restart = true;
tree_mutated = true;
break;
}
}
}
if early_restart {
if tree_mutated {
return Ok(IterAction::Continue);
}

let post_tree = storage.get_execution_tree(instance_id).await?;
let post_states: Vec<(ExecutionNodeId, NodeState)> =
post_tree.iter().map(|n| (n.id, n.state)).collect();
if pre_states != post_states {
if states_differ(&ctx.tree, &post_tree) {
ctx.set_tree(post_tree);
return Ok(IterAction::Continue);
}
Expand All @@ -939,6 +931,16 @@ async fn phase_composite_reevaluation(
}))
}

fn states_differ(a: &[ExecutionNode], b: &[ExecutionNode]) -> bool {
// ⚑ Bolt: Rather than allocating Vecs of states to compare snapshots of the tree
// after executing a block, we use a zero-allocation length and element-wise comparison.
// Iteration short-circuits on the first mismatch.
a.len() != b.len()
|| a.iter()
.zip(b.iter())
.any(|(na, nb)| na.id != nb.id || na.state != nb.state)
}

fn may_mutate_instance(block: &BlockDefinition) -> bool {
matches!(
block,
Expand Down
20 changes: 9 additions & 11 deletions orch8-push/src/fcm.rs
Original file line number Diff line number Diff line change
Expand Up @@ -67,18 +67,16 @@ fn classify_fcm_response(status: reqwest::StatusCode, body: &str) -> FcmOutcome
// with 404 "Requested entity was not found") is a project-level failure:
// treating it as InvalidToken would let one config typo wipe every
// registered device token.
let unregistered = serde_json::from_str::<serde_json::Value>(body)
.ok()
.is_some_and(|v| {
v.get("error")
.and_then(|e| e.get("details"))
.and_then(|d| d.as_array())
.is_some_and(|details| {
details.iter().any(|d| {
d.get("errorCode").and_then(|c| c.as_str()) == Some("UNREGISTERED")
})
let unregistered = serde_json::from_str::<serde_json::Value>(body).is_ok_and(|v| {
v.get("error")
.and_then(|e| e.get("details"))
.and_then(|d| d.as_array())
.is_some_and(|details| {
details.iter().any(|d| {
d.get("errorCode").and_then(|c| c.as_str()) == Some("UNREGISTERED")
})
});
})
});
if unregistered {
return FcmOutcome::InvalidToken;
}
Expand Down
18 changes: 18 additions & 0 deletions rustc-ice-2026-08-23T20_28_34-127392.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
delayed bug: unexpected rigid alias in layout_of after normalization: Alias(Yes, Alias { kind: Opaque { def_id: DefId(49:10446 ~ tokio[697b]::sync::mutex::{impl#10}::lock::{opaque#0}) }, args: [std::option::Option<apns::CachedToken>, '{erased}], .. })
disabled backtrace
delayed bug: unexpected rigid alias in layout_of after normalization: Alias(Yes, Alias { kind: Opaque { def_id: DefId(0:47 ~ orch8_push[5ca6]::apns::{impl#1}::get_or_refresh_token::{opaque#0}) }, args: ['{erased}], .. })
disabled backtrace
delayed bug: unexpected rigid alias in layout_of after normalization: Alias(Yes, Alias { kind: Opaque { def_id: DefId(92:899 ~ reqwest[17b5]::async_impl::request::{impl#1}::send::{opaque#0}) }, args: [], .. })
disabled backtrace
delayed bug: unexpected rigid alias in layout_of after normalization: Alias(Yes, Alias { kind: Opaque { def_id: DefId(92:955 ~ reqwest[17b5]::async_impl::response::{impl#0}::text::{opaque#0}) }, args: [], .. })
disabled backtrace
delayed bug: unexpected rigid alias in layout_of after normalization: Alias(Yes, Alias { kind: Opaque { def_id: DefId(49:10446 ~ tokio[697b]::sync::mutex::{impl#10}::lock::{opaque#0}) }, args: [std::option::Option<fcm::CachedToken>, '{erased}], .. })
disabled backtrace
delayed bug: unexpected rigid alias in layout_of after normalization: Alias(Yes, Alias { kind: Opaque { def_id: DefId(92:959 ~ reqwest[17b5]::async_impl::response::{impl#0}::json::{opaque#0}) }, args: [fcm::TokenResponse], .. })
disabled backtrace
delayed bug: unexpected rigid alias in layout_of after normalization: Alias(Yes, Alias { kind: Opaque { def_id: DefId(0:110 ~ orch8_push[5ca6]::fcm::{impl#2}::get_or_refresh_token::{opaque#0}) }, args: ['{erased}], .. })
disabled backtrace


rustc version: 1.100.0-nightly (c54751567 2026-08-22)
platform: x86_64-unknown-linux-gnu
18 changes: 18 additions & 0 deletions rustc-ice-2026-08-23T20_29_05-135203.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
delayed bug: unexpected rigid alias in layout_of after normalization: Alias(Yes, Alias { kind: Opaque { def_id: DefId(49:10446 ~ tokio[697b]::sync::mutex::{impl#10}::lock::{opaque#0}) }, args: [std::option::Option<apns::CachedToken>, '{erased}], .. })
disabled backtrace
delayed bug: unexpected rigid alias in layout_of after normalization: Alias(Yes, Alias { kind: Opaque { def_id: DefId(0:47 ~ orch8_push[5ca6]::apns::{impl#1}::get_or_refresh_token::{opaque#0}) }, args: ['{erased}], .. })
disabled backtrace
delayed bug: unexpected rigid alias in layout_of after normalization: Alias(Yes, Alias { kind: Opaque { def_id: DefId(92:899 ~ reqwest[17b5]::async_impl::request::{impl#1}::send::{opaque#0}) }, args: [], .. })
disabled backtrace
delayed bug: unexpected rigid alias in layout_of after normalization: Alias(Yes, Alias { kind: Opaque { def_id: DefId(92:955 ~ reqwest[17b5]::async_impl::response::{impl#0}::text::{opaque#0}) }, args: [], .. })
disabled backtrace
delayed bug: unexpected rigid alias in layout_of after normalization: Alias(Yes, Alias { kind: Opaque { def_id: DefId(49:10446 ~ tokio[697b]::sync::mutex::{impl#10}::lock::{opaque#0}) }, args: [std::option::Option<fcm::CachedToken>, '{erased}], .. })
disabled backtrace
delayed bug: unexpected rigid alias in layout_of after normalization: Alias(Yes, Alias { kind: Opaque { def_id: DefId(92:959 ~ reqwest[17b5]::async_impl::response::{impl#0}::json::{opaque#0}) }, args: [fcm::TokenResponse], .. })
disabled backtrace
delayed bug: unexpected rigid alias in layout_of after normalization: Alias(Yes, Alias { kind: Opaque { def_id: DefId(0:110 ~ orch8_push[5ca6]::fcm::{impl#2}::get_or_refresh_token::{opaque#0}) }, args: ['{erased}], .. })
disabled backtrace


rustc version: 1.100.0-nightly (c54751567 2026-08-22)
platform: x86_64-unknown-linux-gnu
18 changes: 18 additions & 0 deletions rustc-ice-2026-08-23T20_31_15-151818.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
delayed bug: unexpected rigid alias in layout_of after normalization: Alias(Yes, Alias { kind: Opaque { def_id: DefId(49:10446 ~ tokio[697b]::sync::mutex::{impl#10}::lock::{opaque#0}) }, args: [std::option::Option<apns::CachedToken>, '{erased}], .. })
disabled backtrace
delayed bug: unexpected rigid alias in layout_of after normalization: Alias(Yes, Alias { kind: Opaque { def_id: DefId(0:47 ~ orch8_push[5ca6]::apns::{impl#1}::get_or_refresh_token::{opaque#0}) }, args: ['{erased}], .. })
disabled backtrace
delayed bug: unexpected rigid alias in layout_of after normalization: Alias(Yes, Alias { kind: Opaque { def_id: DefId(92:899 ~ reqwest[17b5]::async_impl::request::{impl#1}::send::{opaque#0}) }, args: [], .. })
disabled backtrace
delayed bug: unexpected rigid alias in layout_of after normalization: Alias(Yes, Alias { kind: Opaque { def_id: DefId(92:955 ~ reqwest[17b5]::async_impl::response::{impl#0}::text::{opaque#0}) }, args: [], .. })
disabled backtrace
delayed bug: unexpected rigid alias in layout_of after normalization: Alias(Yes, Alias { kind: Opaque { def_id: DefId(49:10446 ~ tokio[697b]::sync::mutex::{impl#10}::lock::{opaque#0}) }, args: [std::option::Option<fcm::CachedToken>, '{erased}], .. })
disabled backtrace
delayed bug: unexpected rigid alias in layout_of after normalization: Alias(Yes, Alias { kind: Opaque { def_id: DefId(92:959 ~ reqwest[17b5]::async_impl::response::{impl#0}::json::{opaque#0}) }, args: [fcm::TokenResponse], .. })
disabled backtrace
delayed bug: unexpected rigid alias in layout_of after normalization: Alias(Yes, Alias { kind: Opaque { def_id: DefId(0:110 ~ orch8_push[5ca6]::fcm::{impl#2}::get_or_refresh_token::{opaque#0}) }, args: ['{erased}], .. })
disabled backtrace


rustc version: 1.100.0-nightly (c54751567 2026-08-22)
platform: x86_64-unknown-linux-gnu
18 changes: 18 additions & 0 deletions rustc-ice-2026-08-23T20_31_49-159661.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
delayed bug: unexpected rigid alias in layout_of after normalization: Alias(Yes, Alias { kind: Opaque { def_id: DefId(49:10446 ~ tokio[697b]::sync::mutex::{impl#10}::lock::{opaque#0}) }, args: [std::option::Option<apns::CachedToken>, '{erased}], .. })
disabled backtrace
delayed bug: unexpected rigid alias in layout_of after normalization: Alias(Yes, Alias { kind: Opaque { def_id: DefId(0:47 ~ orch8_push[5ca6]::apns::{impl#1}::get_or_refresh_token::{opaque#0}) }, args: ['{erased}], .. })
disabled backtrace
delayed bug: unexpected rigid alias in layout_of after normalization: Alias(Yes, Alias { kind: Opaque { def_id: DefId(92:899 ~ reqwest[17b5]::async_impl::request::{impl#1}::send::{opaque#0}) }, args: [], .. })
disabled backtrace
delayed bug: unexpected rigid alias in layout_of after normalization: Alias(Yes, Alias { kind: Opaque { def_id: DefId(92:955 ~ reqwest[17b5]::async_impl::response::{impl#0}::text::{opaque#0}) }, args: [], .. })
disabled backtrace
delayed bug: unexpected rigid alias in layout_of after normalization: Alias(Yes, Alias { kind: Opaque { def_id: DefId(49:10446 ~ tokio[697b]::sync::mutex::{impl#10}::lock::{opaque#0}) }, args: [std::option::Option<fcm::CachedToken>, '{erased}], .. })
disabled backtrace
delayed bug: unexpected rigid alias in layout_of after normalization: Alias(Yes, Alias { kind: Opaque { def_id: DefId(92:959 ~ reqwest[17b5]::async_impl::response::{impl#0}::json::{opaque#0}) }, args: [fcm::TokenResponse], .. })
disabled backtrace
delayed bug: unexpected rigid alias in layout_of after normalization: Alias(Yes, Alias { kind: Opaque { def_id: DefId(0:110 ~ orch8_push[5ca6]::fcm::{impl#2}::get_or_refresh_token::{opaque#0}) }, args: ['{erased}], .. })
disabled backtrace


rustc version: 1.100.0-nightly (c54751567 2026-08-22)
platform: x86_64-unknown-linux-gnu
18 changes: 18 additions & 0 deletions rustc-ice-2026-08-23T20_33_01-175448.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
delayed bug: unexpected rigid alias in layout_of after normalization: Alias(Yes, Alias { kind: Opaque { def_id: DefId(49:10446 ~ tokio[697b]::sync::mutex::{impl#10}::lock::{opaque#0}) }, args: [std::option::Option<apns::CachedToken>, '{erased}], .. })
disabled backtrace
delayed bug: unexpected rigid alias in layout_of after normalization: Alias(Yes, Alias { kind: Opaque { def_id: DefId(0:47 ~ orch8_push[5ca6]::apns::{impl#1}::get_or_refresh_token::{opaque#0}) }, args: ['{erased}], .. })
disabled backtrace
delayed bug: unexpected rigid alias in layout_of after normalization: Alias(Yes, Alias { kind: Opaque { def_id: DefId(92:899 ~ reqwest[17b5]::async_impl::request::{impl#1}::send::{opaque#0}) }, args: [], .. })
disabled backtrace
delayed bug: unexpected rigid alias in layout_of after normalization: Alias(Yes, Alias { kind: Opaque { def_id: DefId(92:955 ~ reqwest[17b5]::async_impl::response::{impl#0}::text::{opaque#0}) }, args: [], .. })
disabled backtrace
delayed bug: unexpected rigid alias in layout_of after normalization: Alias(Yes, Alias { kind: Opaque { def_id: DefId(49:10446 ~ tokio[697b]::sync::mutex::{impl#10}::lock::{opaque#0}) }, args: [std::option::Option<fcm::CachedToken>, '{erased}], .. })
disabled backtrace
delayed bug: unexpected rigid alias in layout_of after normalization: Alias(Yes, Alias { kind: Opaque { def_id: DefId(92:959 ~ reqwest[17b5]::async_impl::response::{impl#0}::json::{opaque#0}) }, args: [fcm::TokenResponse], .. })
disabled backtrace
delayed bug: unexpected rigid alias in layout_of after normalization: Alias(Yes, Alias { kind: Opaque { def_id: DefId(0:110 ~ orch8_push[5ca6]::fcm::{impl#2}::get_or_refresh_token::{opaque#0}) }, args: ['{erased}], .. })
disabled backtrace


rustc version: 1.100.0-nightly (c54751567 2026-08-22)
platform: x86_64-unknown-linux-gnu
18 changes: 18 additions & 0 deletions rustc-ice-2026-08-23T20_33_21-179387.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
delayed bug: unexpected rigid alias in layout_of after normalization: Alias(Yes, Alias { kind: Opaque { def_id: DefId(49:10446 ~ tokio[697b]::sync::mutex::{impl#10}::lock::{opaque#0}) }, args: [std::option::Option<apns::CachedToken>, '{erased}], .. })
disabled backtrace
delayed bug: unexpected rigid alias in layout_of after normalization: Alias(Yes, Alias { kind: Opaque { def_id: DefId(0:47 ~ orch8_push[5ca6]::apns::{impl#1}::get_or_refresh_token::{opaque#0}) }, args: ['{erased}], .. })
disabled backtrace
delayed bug: unexpected rigid alias in layout_of after normalization: Alias(Yes, Alias { kind: Opaque { def_id: DefId(92:899 ~ reqwest[17b5]::async_impl::request::{impl#1}::send::{opaque#0}) }, args: [], .. })
disabled backtrace
delayed bug: unexpected rigid alias in layout_of after normalization: Alias(Yes, Alias { kind: Opaque { def_id: DefId(92:955 ~ reqwest[17b5]::async_impl::response::{impl#0}::text::{opaque#0}) }, args: [], .. })
disabled backtrace
delayed bug: unexpected rigid alias in layout_of after normalization: Alias(Yes, Alias { kind: Opaque { def_id: DefId(49:10446 ~ tokio[697b]::sync::mutex::{impl#10}::lock::{opaque#0}) }, args: [std::option::Option<fcm::CachedToken>, '{erased}], .. })
disabled backtrace
delayed bug: unexpected rigid alias in layout_of after normalization: Alias(Yes, Alias { kind: Opaque { def_id: DefId(92:959 ~ reqwest[17b5]::async_impl::response::{impl#0}::json::{opaque#0}) }, args: [fcm::TokenResponse], .. })
disabled backtrace
delayed bug: unexpected rigid alias in layout_of after normalization: Alias(Yes, Alias { kind: Opaque { def_id: DefId(0:110 ~ orch8_push[5ca6]::fcm::{impl#2}::get_or_refresh_token::{opaque#0}) }, args: ['{erased}], .. })
disabled backtrace


rustc version: 1.100.0-nightly (c54751567 2026-08-22)
platform: x86_64-unknown-linux-gnu
Loading