mirror of
https://github.com/fabro-sh/fabro.git
synced 2026-09-06 08:18:58 +00:00
Fix core_adapter select_edge to use actual context for edge conditions
The select_edge bridge was creating an empty Context, which meant edge conditions reading context values (e.g. context.failure_class=budget_exhausted) would never match when using the core engine. Now snapshots the CoreContext into a wf Context so evaluate_condition sees the real runtime state. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
f7e2391535
commit
5c33b87dce
2 changed files with 12 additions and 3 deletions
|
|
@ -118,6 +118,13 @@ impl Context {
|
|||
|
||||
// --- Internal accessors for bridge code ---
|
||||
|
||||
pub(crate) fn from_values(values: HashMap<String, Value>) -> Self {
|
||||
Self {
|
||||
values: Arc::new(RwLock::new(values)),
|
||||
logs: Arc::new(RwLock::new(Vec::new())),
|
||||
}
|
||||
}
|
||||
|
||||
pub(crate) fn values_arc(&self) -> Arc<RwLock<HashMap<String, Value>>> {
|
||||
self.values.clone()
|
||||
}
|
||||
|
|
|
|||
|
|
@ -101,10 +101,12 @@ impl Graph for WorkflowGraph {
|
|||
&self,
|
||||
node: &Self::Node,
|
||||
outcome: &Outcome,
|
||||
_context: &CoreContext,
|
||||
context: &CoreContext,
|
||||
) -> Option<EdgeSelection<Self>> {
|
||||
// Outcome is now the wf type directly — no conversion needed
|
||||
let wf_context = crate::context::Context::new();
|
||||
// Build a wf Context from the core context snapshot so edge conditions
|
||||
// that read context values (e.g. `context.failure_class=budget_exhausted`)
|
||||
// evaluate correctly.
|
||||
let wf_context = crate::context::Context::from_values(context.snapshot());
|
||||
let selection = engine::select_edge(
|
||||
node.inner(),
|
||||
outcome,
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue