Your point about the gap between clean testing environments and messy production reality really resonated with me. I experienced a structural version of this recently while building an n8n workflow. I deliberately prototyped the logic using a Form trigger because the payload was clean and flat, and all my edge-case tests passed.
However, when I swapped it to a Webhook for production, the workflow failed silently. The business logic was intact, but the payload shape had changed (the data was now nested under a body object alongside HTTP metadata), so downstream nodes quietly stopped seeing the data they expected.
It reinforced your argument about the need for early validation. I’m curious, for your 'Classification + Action Router' pattern, do you typically add an explicit data-normalization step right after the trigger to decouple the raw payload from the rest of the workflow logic?
Your point about the gap between clean testing environments and messy production reality really resonated with me. I experienced a structural version of this recently while building an n8n workflow. I deliberately prototyped the logic using a Form trigger because the payload was clean and flat, and all my edge-case tests passed. However, when I swapped it to a Webhook for production, the workflow failed silently. The business logic was intact, but the payload shape had changed (the data was now nested under a body object alongside HTTP metadata), so downstream nodes quietly stopped seeing the data they expected. It reinforced your argument about the need for early validation. I’m curious, for your 'Classification + Action Router' pattern, do you typically add an explicit data-normalization step right after the trigger to decouple the raw payload from the rest of the workflow logic?