When an agent answers its Output Parser contract with just the fenced JSON block, Motoro strips the block out of the text and puts the values in payload (intentional on their side). But ASAREE only passes output_text to the critic, so the critic gets an empty prompt, rejects it for being empty, and force-accepts after max_revisions. The next node then gets no upstream context at all, since _upstream_context skips senders with empty text. (this also risks silently affecting non-critic gated pipelines that chain output_text between stages)
When an agent answers its Output Parser contract with just the fenced JSON block, Motoro strips the block out of the text and puts the values in payload (intentional on their side). But ASAREE only passes output_text to the critic, so the critic gets an empty prompt, rejects it for being empty, and force-accepts after max_revisions. The next node then gets no upstream context at all, since _upstream_context skips senders with empty text. (this also risks silently affecting non-critic gated pipelines that chain output_text between stages)