X_EXPORT_ROW_INVALID
Means
row() answered something the declared columns do not carry
Typical cause
a column missing, a column nobody declared, or a value no format can carry. The extra-column half is the one worth the code: a row() returning a key columns omits is silently DROPPED by both encoders, so the rest of the file looks perfectly correct and the gap is found by whoever consumes it, later — and the reverse, row: (r) => ({ ...r }), is how PII leaves through an export nobody reviewed, picking up every column the entity gains from then on. cause names the COLUMN and never the value: a cell is user data by definition, and a cause reaches the log store as a field nothing can redact
Fix
return exactly the declared columns from row() on exportRows("<name>"), each one a string, a finite number, a boolean or null — format a date with an explicit timeZone and a Money with its own currency before it gets here