Skip to content

[Bulk import] Per-row errors never surfaced; success IDs positionally misassigned #47

Description

@Exotic209093

Severity

High — after a bulk job with failures the user cannot retry, and record IDs are attached to the wrong rows.

What happens

Both bulk completion paths broadcast DATA_PUSH_COMPLETE without an errors array (getFailedResults is never called for pushes). After a bulk push with failures: "Retry Failed Rows" never appears; "Download error file" produces zero rows; and buildPushOutcomeDatasets pairs successfulIds positionally against all source rows — from the first failed record onward, WaveLinkRecordId is attached to the wrong source row. The same positional pairing also mislabels REST upserts, where 204-updated records return no id.

Evidence

  • src/background/index.ts:1741-1747
  • src/offscreen/index.ts:80-84
  • src/services/salesforce/composite-upsert.ts (extractCompositeUpsertId)

Suggested fix

Fetch failedResults/successfulResults from the Bulk API, map rows back to input indices, and include errors and per-row ids in the completion payload.

Environment

Commit 74cf21b (main), WaveLink 0.6.0. Found in the 2026-08-31 adversarial audit (code-verified).

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions