Found by a synthetic end-to-end run, not by a report.
What happened
Opening this issue routed correctly and ran the full council. n8n execution 7832 finished green in ~171s. No row reached tim.agent_runs.
Why the execution looked green
Store to TIM Postgres has onError: continueRegularOutput. The node failed, returned its error as ordinary output, and the workflow carried on to Log DRC to Drive and reported success. This is the same masking that hid three serialisation bugs for months.
The actual failure
Syntax error at line 3 near ":"
Line 3 is inside the interpolated issue body, at Context: the Event Router's ....
The node builds its INSERT by string concatenation, escaping only single quotes with .replace(/'/g, "''"). Postgres accepts the resulting SQL. I verified this directly against the same Neon database with a body containing a newline followed by a bare word and a colon, and it executed fine. So the parse failure happens inside the n8n node, before the statement reaches Postgres.
Impact
Any issue whose body trips this loses its audit row while the run reports success. tim.agent_runs is therefore not a reliable record of what the council processed. It currently holds 16 rows.
Fix
Convert the node to the parameterised queryReplacement form rather than concatenating values into the statement. That form is already proven in the Video Intelligence P0 workflow. Removing onError: continueRegularOutput afterwards is what makes a future regression visible.
Related
Same root cause class as the Normalise Issue Payload quote bug: hand-building a serialised format instead of using the safe constructor.
Found by a synthetic end-to-end run, not by a report.
What happened
Opening this issue routed correctly and ran the full council. n8n execution
7832finished green in ~171s. No row reachedtim.agent_runs.Why the execution looked green
Store to TIM PostgreshasonError: continueRegularOutput. The node failed, returned its error as ordinary output, and the workflow carried on toLog DRC to Driveand reported success. This is the same masking that hid three serialisation bugs for months.The actual failure
Line 3 is inside the interpolated issue body, at
Context: the Event Router's ....The node builds its INSERT by string concatenation, escaping only single quotes with
.replace(/'/g, "''"). Postgres accepts the resulting SQL. I verified this directly against the same Neon database with a body containing a newline followed by a bare word and a colon, and it executed fine. So the parse failure happens inside the n8n node, before the statement reaches Postgres.Impact
Any issue whose body trips this loses its audit row while the run reports success.
tim.agent_runsis therefore not a reliable record of what the council processed. It currently holds 16 rows.Fix
Convert the node to the parameterised
queryReplacementform rather than concatenating values into the statement. That form is already proven in the Video Intelligence P0 workflow. RemovingonError: continueRegularOutputafterwards is what makes a future regression visible.Related
Same root cause class as the
Normalise Issue Payloadquote bug: hand-building a serialised format instead of using the safe constructor.