X_JOB_CRASH_UNBOUNDED
Means
a crash proof needs more kill points than its bound
Typical cause
the job crossed more distinct step boundaries than crashProof kills at — usually one step per row named by something other than the row id (a slug, an email), so the boundaries of one loop do not read as one point and the proof would grow with the rows
Fix
step.run(<name>:${row.id}, async () => …) # name a per-row step by the row's id, in the job crashProof named, so its loop is one kill point; then: x test job --filter <the test file>