Conditionally skip 3 modules in a linear flow, then continue — without duplicating the downstream chain

:bullseye: What is your goal?

Hi all — looking for a clean pattern for this scenario.
I have a linear flow:
Module A → Module B → Module C → Module D → Module E → …continues for ~10 more modules
Modules B, C, D do optional work (write a file to Airtable, download it, call an AI vision API) that should ONLY run when an upstream condition is true (specifically: a file upload field is non-empty).
When the condition is false (no file uploaded), I want to skip B, C, D entirely and have execution continue at Module E with their outputs treated as empty.

:thinking: What is the problem & what have you tried?

What I’ve tried:

  1. Filter on the route into Module B. This works for skipping B, C, D — but Module E (and everything after) never executes because Make stops the chain at the skipped module. This is my current state and it’s the blocker.

2.Router with two routes after Module A:

Route 1 (condition true) → B → C → D → E → …
Route 2 (condition false) → E → …

This works but requires duplicating Module E and every module after it. ~10 modules duplicated. Maintainable but ugly.

3.Parallel branches. Run the B/C/D vision chain on a parallel branch off Module A, and put E directly on the main branch off A. The problem: Make runs parallel branches concurrently, so when condition is true, Module E might execute before the vision chain finishes, and references to D’s output would be empty.

What I’m looking for:
Is there a known Make pattern to:

Conditionally skip a contiguous sub-chain of modules
Resume the main chain afterwards
Without duplicating the post-skip modules
Where downstream modules can safely reference the skipped modules’ outputs (treating them as empty)

I’ve considered using a “dummy” module that produces an empty bundle on the skip-route, but I don’t see a clean way to merge two routes back into one downstream module — Make doesn’t seem to support that.
Is there a recommended idiom? Iterator + Aggregator trick? Code module that conditionally short-circuits? Some Flow Control feature I’m missing?
Plan B is to duplicate the downstream modules. Hoping there’s a better way before I do.
Thanks!

:clipboard: Error messages or input/output bundles

No error message — the scenario completes “successfully” but downstream modules don’t execute.
Current setup (Attempt 1 — filter on route into Module B):
When the condition is FALSE (no file uploaded):

Module A executes, output bundle as expected.
Filter on route to Module B evaluates to false — route shows 0 bundles passed in the execution log.
Modules B, C, D do not execute (expected).
All modules downstream of D (E, F, G, … ~10 modules) also do not execute — they show no execution at all in the log. This is the issue.
Scenario run shows green / success state despite the entire downstream chain being skipped.

The execution flow visually: green ticks on Module A, the filter shows 0, then nothing further. No errors raised because Make treats the filter-skip as valid flow control rather than an interruption.
When the condition is TRUE: chain runs end-to-end correctly. So the filter logic itself works, but the chain-resumption-after-skip is what I can’t solve.

Hey Karmina,

that is exactly what the if/else + merge modules were created to do. have an if/else after module A and on the main route have B, C and D and on the else route have nothing. Then merge afterwards and continue the chain.