{ "title": "Repro: does the synth/merge node see branch outputs?", "spec": { "run_id": "01KX148ZAMMJRAADHK1HBF7PC3", "settings": { "project": { "name": null, "description": null, "metadata": {} }, "workflow": { "name": null, "description": null, "graph": "workflow.fabro", "metadata": {} }, "run": { "goal": { "type": "inline", "value": "Repro: does the synth/merge node see branch outputs?" }, "working_dir": null, "metadata": { "repro": "issue-490" }, "inputs": {}, "model": { "provider": "anthropic", "name": "claude-sonnet-4-6", "fallbacks": [], "controls": { "reasoning_effort": null, "speed": null } }, "git": { "author": null }, "prepare": { "steps": [], "timeout_ms": 300000 }, "execution": { "mode": "normal", "approval": "prompt" }, "checkpoint": { "exclude_globs": [], "skip_git_hooks": false }, "clone": { "enabled": true }, "run_branch": { "enabled": true, "push": true }, "meta_branch": { "enabled": true, "push": true }, "environment": { "id": "default", "provider": "daytona", "image": { "docker": null, "dockerfile": { "type": "inline", "value": "FROM buildpack-deps:noble\n" } }, "resources": { "cpu": 2, "memory": "4GB", "disk": null }, "network": { "mode": "allow_all", "allow": [] }, "lifecycle": { "preserve": false, "stop_on_terminal": true, "auto_stop": null }, "labels": {}, "env": {} }, "notifications": { "feed": { "enabled": true, "provider": "slack", "events": [ "run.started", "run.completed", "run.failed" ], "slack": { "channel": "#feed-fabro" } } }, "interviews": { "provider": null, "slack": null }, "agent": { "fabro_tools": false, "permissions": null, "mcps": {} }, "hooks": [], "scm": { "provider": null, "owner": null, "repository": null, "github": null }, "pull_request": null, "artifacts": { "include": [] }, "integrations": { "github": { "permissions": {} } } } }, "graph": { "name": "EnsembleBug", "nodes": { "merge": { "id": "merge", "attrs": { "shape": { "String": "tripleoctagon" }, "model": { "String": "claude-sonnet-4-5" }, "label": { "String": "Merge" }, "provider": { "String": "anthropic" } } }, "start": { "id": "start", "attrs": { "shape": { "String": "Mdiamond" }, "provider": { "String": "anthropic" }, "label": { "String": "Start" }, "model": { "String": "claude-sonnet-4-5" } } }, "b": { "id": "b", "attrs": { "shape": { "String": "tab" }, "model": { "String": "claude-sonnet-4-5" }, "prompt": { "String": "Output EXACTLY this and nothing else: BRANCH_B_MARKER_91c2: oranges are orange." }, "label": { "String": "B" }, "provider": { "String": "anthropic" } } }, "fork": { "id": "fork", "attrs": { "join_policy": { "String": "wait_all" }, "label": { "String": "Fan Out" }, "provider": { "String": "anthropic" }, "model": { "String": "claude-sonnet-4-5" }, "shape": { "String": "component" } } }, "a": { "id": "a", "attrs": { "model": { "String": "claude-sonnet-4-5" }, "label": { "String": "A" }, "provider": { "String": "anthropic" }, "prompt": { "String": "Output EXACTLY this and nothing else: BRANCH_A_MARKER_7f3a: apples are red." }, "shape": { "String": "tab" } } }, "synth": { "id": "synth", "attrs": { "provider": { "String": "anthropic" }, "model": { "String": "claude-sonnet-4-5" }, "prompt": { "String": "You are the synthesis node after a parallel fan-in. Report VERBATIM every prior branch analysis you can see in your context/preamble. The branches emitted markers BRANCH_A_MARKER_7f3a and BRANCH_B_MARKER_91c2. If you can see those marker texts, quote them exactly. If you canNOT see any branch output text, respond with EXACTLY: NO_BRANCH_OUTPUT_IN_CONTEXT . Then list which context keys you were given." }, "label": { "String": "Synthesize" }, "shape": { "String": "tab" } } }, "exit": { "id": "exit", "attrs": { "shape": { "String": "Msquare" }, "label": { "String": "Exit" }, "provider": { "String": "anthropic" }, "model": { "String": "claude-sonnet-4-5" } } } }, "edges": [ { "from": "start", "to": "fork", "attrs": {} }, { "from": "fork", "to": "a", "attrs": {} }, { "from": "fork", "to": "b", "attrs": {} }, { "from": "a", "to": "merge", "attrs": {} }, { "from": "b", "to": "merge", "attrs": {} }, { "from": "merge", "to": "synth", "attrs": {} }, { "from": "synth", "to": "exit", "attrs": {} } ], "attrs": { "model_stylesheet": { "String": "* { model: claude-sonnet-4-5; }" }, "rankdir": { "String": "LR" }, "goal": { "String": "Repro: does the synth/merge node see branch outputs?" } } }, "graph_source": "digraph EnsembleBug {\n graph [ goal=\"Repro: does the synth/merge node see branch outputs?\",\n rankdir=LR,\n model_stylesheet=\"* { model: claude-sonnet-4-5; }\" ]\n start [shape=Mdiamond, label=\"Start\"]\n exit [shape=Msquare, label=\"Exit\"]\n fork [shape=component, label=\"Fan Out\", join_policy=\"wait_all\"]\n a [shape=tab, label=\"A\", prompt=\"Output EXACTLY this and nothing else: BRANCH_A_MARKER_7f3a: apples are red.\"]\n b [shape=tab, label=\"B\", prompt=\"Output EXACTLY this and nothing else: BRANCH_B_MARKER_91c2: oranges are orange.\"]\n merge [shape=tripleoctagon, label=\"Merge\"]\n synth [shape=tab, label=\"Synthesize\", prompt=\"You are the synthesis node after a parallel fan-in. Report VERBATIM every prior branch analysis you can see in your context/preamble. The branches emitted markers BRANCH_A_MARKER_7f3a and BRANCH_B_MARKER_91c2. If you can see those marker texts, quote them exactly. If you canNOT see any branch output text, respond with EXACTLY: NO_BRANCH_OUTPUT_IN_CONTEXT . Then list which context keys you were given.\"]\n start -> fork\n fork -> a\n fork -> b\n a -> merge\n b -> merge\n merge -> synth -> exit\n}\n", "workflow_slug": "ensemblebug", "source_directory": "/Users/bhelmkamp/p/fabro-sh/fabro-3", "labels": { "repro": "issue-490" }, "provenance": { "server": { "version": "0.287.0-nightly.0" }, "client": { "user_agent": "fabro-cli/0.253.0-nightly.0", "name": "fabro-cli", "version": "0.253.0-nightly.0" }, "subject": { "kind": "user", "identity": { "issuer": "https://github.com", "subject": "19" }, "login": "brynary", "auth_method": "github", "avatar_url": "https://avatars.githubusercontent.com/u/19?v=4" } }, "manifest_blob": "24faa13d477403721b33add725c652c4cced6211030b53b8d79f9106dec510ae", "definition_blob": "f17945757eea113a617da5cf749fc0a9943b967a1d74ddd211919563d0ca7969", "git": { "origin_url": "https://github.com/fabro-sh/fabro", "branch": "main", "sha": "c5dd5772d0ca124187dfdd38d72c8ff1a49efd5f", "dirty": "clean", "push_outcome": { "type": "not_attempted" } } }, "web_url": "https://fabro-testing.walleye-rainbow.ts.net/runs/01KX148ZAMMJRAADHK1HBF7PC3", "start": { "start_time": "2026-07-08T15:07:06.493357143Z", "run_branch": "fabro/run/01KX148ZAMMJRAADHK1HBF7PC3", "base_sha": "c5dd5772d0ca124187dfdd38d72c8ff1a49efd5f" }, "status": { "kind": "running" }, "status_updated_at": "2026-07-08T15:07:06.493388133Z", "last_event_at": "2026-07-08T15:07:46.323790616Z", "pending_control": null, "checkpoints": [ { "seq": 20, "checkpoint": { "timestamp": "2026-07-08T15:07:08.314302119Z", "current_node": "start", "completed_nodes": [ "start" ], "node_retries": {}, "context_values": { "graph.rankdir": "LR", "failure_class": "", "graph.model_stylesheet": "* { model: claude-sonnet-4-5; }", "internal.retry_count.start": 0, "internal.node_visit_count": 1, "internal.fidelity": "compact", "graph.goal": "Repro: does the synth/merge node see branch outputs?", "failure_signature": "", "internal.work_dir": "/home/daytona/workspace/fabro", "internal.run_id": "01KX148ZAMMJRAADHK1HBF7PC3", "outcome": "succeeded", "current_node": "start", "internal.thread_id": null }, "node_outcomes": { "start": { "status": "succeeded", "usage": null } }, "next_node_id": "fork", "node_visits": { "start": 1 } }, "diff": {} }, { "seq": 44, "checkpoint": { "timestamp": "2026-07-08T15:07:46.323516967Z", "current_node": "fork", "completed_nodes": [ "start", "fork" ], "node_retries": {}, "context_values": { "outcome": "succeeded", "internal.thread_id": "start", "thread.start.current_node": "fork", "internal.retry_count.fork": 0, "internal.work_dir": "/home/daytona/workspace/fabro", "current_node": "fork", "failure_class": "", "failure_signature": "", "graph.model_stylesheet": "* { model: claude-sonnet-4-5; }", "graph.rankdir": "LR", "parallel.results": [ { "id": "a", "status": "succeeded", "head_sha": "379d13d4f7218e30c9ec925d730f40194c63616b" }, { "id": "b", "status": "succeeded", "head_sha": "8ee19a3b6be176881b7063c1340d26477c997742" } ], "internal.run_id": "01KX148ZAMMJRAADHK1HBF7PC3", "internal.retry_count.start": 0, "parallel.branch_count": 2, "internal.node_visit_count": 1, "graph.goal": "Repro: does the synth/merge node see branch outputs?", "internal.fidelity": "compact" }, "node_outcomes": { "start": { "status": "succeeded", "usage": null }, "fork": { "status": "succeeded", "jump_to_node": "merge", "notes": "Parallel node dispatched 2 branches (2 succeeded, 0 failed)", "usage": null } }, "next_node_id": "merge", "git_commit_sha": "9b85837e7249b74aaedc28a45a1ecbf402d4d63f", "node_visits": { "start": 1, "fork": 1 } }, "diff": { "summary": { "files_changed": 0, "additions": 0, "deletions": 0 } } }, { "seq": 0, "checkpoint": { "timestamp": "2026-07-08T15:07:46.363877667Z", "current_node": "merge", "completed_nodes": [ "start", "fork", "merge" ], "node_retries": {}, "context_values": { "internal.run_id": "01KX148ZAMMJRAADHK1HBF7PC3", "failure_signature": "", "internal.thread_id": "fork", "thread.fork.current_node": "merge", "internal.retry_count.merge": 0, "graph.model_stylesheet": "* { model: claude-sonnet-4-5; }", "parallel.results": [ { "id": "a", "status": "succeeded", "head_sha": "379d13d4f7218e30c9ec925d730f40194c63616b" }, { "id": "b", "status": "succeeded", "head_sha": "8ee19a3b6be176881b7063c1340d26477c997742" } ], "internal.retry_count.start": 0, "internal.fidelity": "compact", "internal.node_visit_count": 1, "internal.work_dir": "/home/daytona/workspace/fabro", "failure_class": "", "thread.start.current_node": "fork", "graph.goal": "Repro: does the synth/merge node see branch outputs?", "internal.retry_count.fork": 0, "graph.rankdir": "LR", "parallel.fan_in.best_id": "a", "parallel.branch_count": 2, "parallel.fan_in.best_outcome": "succeeded", "parallel.fan_in.best_head_sha": "379d13d4f7218e30c9ec925d730f40194c63616b", "outcome": "succeeded", "current_node": "merge" }, "node_outcomes": { "merge": { "status": "succeeded", "context_updates": { "parallel.fan_in.best_id": "a", "parallel.fan_in.best_outcome": "succeeded", "parallel.fan_in.best_head_sha": "379d13d4f7218e30c9ec925d730f40194c63616b" }, "notes": "Selected best candidate: a", "usage": null, "timing": { "wall_time_ms": 0, "inference_time_ms": 0, "tool_time_ms": 0, "active_time_ms": 0 } }, "fork": { "status": "succeeded", "jump_to_node": "merge", "notes": "Parallel node dispatched 2 branches (2 succeeded, 0 failed)", "usage": null }, "start": { "status": "succeeded", "usage": null } }, "next_node_id": "synth", "node_visits": { "merge": 1, "start": 1, "fork": 1 } }, "diff": {} } ], "conclusion": null, "sandbox": { "kind": "ready", "plan": { "provider": "daytona" }, "instance": { "provider": "daytona", "snapshot": "fabro-a63a9b12-e5b2-8a28-a6bb-e490731cd4b5", "runtime": { "id": "fabro-01KX148ZAMMJRAADHK1HBF7PC3", "working_directory": "/home/daytona/workspace/fabro", "repo_cloned": true, "clone_origin_url": "https://github.com/fabro-sh/fabro", "clone_branch": "main", "workspace_root": "/home/daytona/workspace", "repos_root": "/home/daytona/repos", "primary_repo_path": "/home/daytona/repos/fabro-sh/fabro", "primary_repo_link": "/home/daytona/workspace/fabro" } } }, "pull_request": null, "superseded_by": null, "pending_interviews": {}, "stages": { "start@1": { "first_event_seq": 17, "prompt": null, "response": null, "completion": { "outcome": "succeeded", "notes": null, "failure_reason": null, "timestamp": "2026-07-08T15:07:08.314186481Z" }, "provider_used": null, "diff": null, "script_invocation": null, "script_timing": null, "parallel_results": null, "output": null, "started_at": "2026-07-08T15:07:08.314021958Z", "handler": "start", "timing": { "wall_time_ms": 0, "inference_time_ms": 0, "tool_time_ms": 0, "active_time_ms": 0 }, "usage": { "input_tokens": 0, "output_tokens": 0, "total_tokens": 0, "reasoning_tokens": 0, "cache_read_tokens": 0, "cache_write_tokens": 0 }, "state": "succeeded" }, "merge@1": { "first_event_seq": 47, "prompt": null, "response": null, "completion": null, "provider_used": null, "diff": null, "script_invocation": null, "script_timing": null, "parallel_results": null, "output": null, "started_at": "2026-07-08T15:07:46.323790616Z", "handler": "parallel.fan_in", "usage": { "input_tokens": 0, "output_tokens": 0, "total_tokens": 0, "reasoning_tokens": 0, "cache_read_tokens": 0, "cache_write_tokens": 0 }, "state": "running" }, "fork@1": { "first_event_seq": 21, "prompt": null, "response": null, "completion": { "outcome": "succeeded", "notes": "Parallel node dispatched 2 branches (2 succeeded, 0 failed)", "failure_reason": null, "timestamp": "2026-07-08T15:07:42.343874651Z" }, "provider_used": { "mode": "prompt", "provider": "anthropic", "model": "claude-sonnet-4-5" }, "diff": null, "script_invocation": null, "script_timing": null, "parallel_results": [ { "id": "a", "status": "succeeded", "head_sha": "379d13d4f7218e30c9ec925d730f40194c63616b" }, { "id": "b", "status": "succeeded", "head_sha": "8ee19a3b6be176881b7063c1340d26477c997742" } ], "output": null, "started_at": "2026-07-08T15:07:08.314410727Z", "handler": "parallel", "timing": { "wall_time_ms": 34029, "inference_time_ms": 0, "tool_time_ms": 0, "active_time_ms": 0 }, "usage": { "input_tokens": 49, "output_tokens": 2021, "total_tokens": 6722, "reasoning_tokens": 0, "cache_read_tokens": 0, "cache_write_tokens": 4652, "total_usd_micros": 47907 }, "model": { "provider": "anthropic", "model_id": "claude-sonnet-4-5" }, "state": "succeeded" } } }