From 18875a4cc9596c7977c81520da5709832b5f851c Mon Sep 17 00:00:00 2001 From: Alex Clarke Date: Sat, 12 Sep 2026 12:22:13 -0600 Subject: [PATCH] feat(TASK-011): traverse agent fallback edges in map peer-discovery BFS --- src/graph/map.rs | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/src/graph/map.rs b/src/graph/map.rs index 2f982fc..56ec9cf 100644 --- a/src/graph/map.rs +++ b/src/graph/map.rs @@ -440,6 +440,7 @@ fn first_flagged_agent_by_bfs<'g>( match &node.node_type { NodeType::Script(s) => edges.extend(s.fallback.as_ref()), NodeType::Llm(l) => edges.extend(l.fallback.as_ref()), + NodeType::Agent(a) => edges.extend(a.fallback.as_ref()), _ => {} } for next in edges { @@ -2484,6 +2485,33 @@ nodes: } } + #[test] + fn provision_map_peers_finds_flagged_agent_behind_agent_fallback_edge() { + let h = Harness::new( + r#" +name: t +start: gate +nodes: + gate: + type: agent + agent: gatekeeper + prompt: "p" + fallback: rescue + rescue: + type: agent + agent: rescue-agent + prompt: "p" + teammates: true +"#, + ); + + let (_, assignments) = h.provision("gate", 2); + + for (id, _) in &assignments { + assert!(id.starts_with("graph_agent_rescue-agent_"), "{id}"); + } + } + #[test] fn provision_map_peers_ignores_flagged_agent_outside_subgraph() { let h = Harness::new(GATE_WORKER_FINISH_GRAPH);