v0.2.2
seedCycle ignored upsertDecisions and unconditionally INSERTed, so a re-run against a non-empty sandbox failed every row in a cycle SCC with DUPLICATE_VALUE on its external-id. Now routes picked ext-id rows through composite UPSERT (matching seedSingle), and omits the break-field on UPSERT bodies so matched existing rows keep their live FK. Regression: tests/seed/cycle-upsert.test.ts.