Skip to content

馃馃數 WAL-10353: Add transcend drop upload CLI command - #318

Draft
Skoorbf wants to merge 1 commit into
mainfrom
fb/wal-10353-drop-cli-upload
Draft

馃馃數 WAL-10353: Add transcend drop upload CLI command#318
Skoorbf wants to merge 1 commit into
mainfrom
fb/wal-10353-drop-cli-upload

Conversation

@Skoorbf

@Skoorbf Skoorbf commented Jul 17, 2026

Copy link
Copy Markdown
Member

Overview

Adds transcend drop upload, a California DROP (DELETE Act) command for data brokers to submit a CPPA File 2 (matched records) as erasure DSRs against a DROP run.

What and why

  • Parses File 2 (one row per matched (drop_record_id, drop_list_type)), groups rows by person_key, and submits one erasure DSR per person carrying all of that person's dropRecords plus the dropRunId.
  • Collapsing by person is required, not an optimization: customers are billed per workflow run (= per DSR), duplicate per-person DSRs fail downstream ("already deleted"), and infra load scales with DSR count.
  • Submits through the Sombra bulk ingress (POST /v1/data-subject-request-bulk), which carries the DROP linkage (dropRecords + dropRunId) as of transcend-main WAL-10352, so report-back ties each record id back to the covering request.
  • status_override rows (direct CPPA status, no DSR) are skipped in this first version and surfaced in the run summary.

Usage: transcend drop upload --file <file2.csv> --dropRunId <id> [--auth --transcendUrl --sombraAuth --batchSize --dryRun]

Testing

  • pnpm --filter @transcend-io/cli typecheck and oxlint clean; --help renders.
  • --dryRun against the example File 2 fixture collapsed 12 rows into 7 DSRs, with a 3-record person (2 email + 1 phone) folded into a single DSR carrying all 3 dropRecords.
  • Live submission against a backend is pending local AWS credentials.

Follow-ups

Made with Cursor

Adds a DROP-specific command that uploads a CPPA File 2 (matched records) as
erasure DSRs against a DROP run. Rows are grouped by person_key so each person
becomes one DSR carrying all their (dropRecordId, dropListType) pairs plus the
dropRunId, submitted via the Sombra bulk ingress (/v1/data-subject-request-bulk,
which carries the DROP linkage as of transcend-main WAL-10352). Collapsing is
required: billing is per workflow run, duplicate per-person DSRs fail downstream,
and infra scales with DSR count. status_override rows are skipped for now.

Co-authored-by: Cursor <cursoragent@cursor.com>
@linear-code

linear-code Bot commented Jul 17, 2026

Copy link
Copy Markdown

WAL-10353

@pkg-pr-new

pkg-pr-new Bot commented Jul 17, 2026

Copy link
Copy Markdown

Open in StackBlitz

@transcend-io/airgap.js-types

pnpm add https://pkg.pr.new/transcend-io/tools/@transcend-io/airgap.js-types@318
yarn add https://pkg.pr.new/transcend-io/tools/@transcend-io/airgap.js-types@318.tgz

@transcend-io/cli

pnpm add https://pkg.pr.new/transcend-io/tools/@transcend-io/cli@318
yarn add https://pkg.pr.new/transcend-io/tools/@transcend-io/cli@318.tgz

@transcend-io/design-tokens

pnpm add https://pkg.pr.new/transcend-io/tools/@transcend-io/design-tokens@318
yarn add https://pkg.pr.new/transcend-io/tools/@transcend-io/design-tokens@318.tgz

@transcend-io/internationalization

pnpm add https://pkg.pr.new/transcend-io/tools/@transcend-io/internationalization@318
yarn add https://pkg.pr.new/transcend-io/tools/@transcend-io/internationalization@318.tgz

@transcend-io/privacy-types

pnpm add https://pkg.pr.new/transcend-io/tools/@transcend-io/privacy-types@318
yarn add https://pkg.pr.new/transcend-io/tools/@transcend-io/privacy-types@318.tgz

@transcend-io/sdk

pnpm add https://pkg.pr.new/transcend-io/tools/@transcend-io/sdk@318
yarn add https://pkg.pr.new/transcend-io/tools/@transcend-io/sdk@318.tgz

@transcend-io/type-utils

pnpm add https://pkg.pr.new/transcend-io/tools/@transcend-io/type-utils@318
yarn add https://pkg.pr.new/transcend-io/tools/@transcend-io/type-utils@318.tgz

@transcend-io/utils

pnpm add https://pkg.pr.new/transcend-io/tools/@transcend-io/utils@318
yarn add https://pkg.pr.new/transcend-io/tools/@transcend-io/utils@318.tgz

@transcend-io/mcp

pnpm add https://pkg.pr.new/transcend-io/tools/@transcend-io/mcp@318
yarn add https://pkg.pr.new/transcend-io/tools/@transcend-io/mcp@318.tgz

@transcend-io/mcp-server-admin

pnpm add https://pkg.pr.new/transcend-io/tools/@transcend-io/mcp-server-admin@318
yarn add https://pkg.pr.new/transcend-io/tools/@transcend-io/mcp-server-admin@318.tgz

@transcend-io/mcp-server-assessment

pnpm add https://pkg.pr.new/transcend-io/tools/@transcend-io/mcp-server-assessment@318
yarn add https://pkg.pr.new/transcend-io/tools/@transcend-io/mcp-server-assessment@318.tgz

@transcend-io/mcp-server-base

pnpm add https://pkg.pr.new/transcend-io/tools/@transcend-io/mcp-server-base@318
yarn add https://pkg.pr.new/transcend-io/tools/@transcend-io/mcp-server-base@318.tgz

@transcend-io/mcp-server-consent

pnpm add https://pkg.pr.new/transcend-io/tools/@transcend-io/mcp-server-consent@318
yarn add https://pkg.pr.new/transcend-io/tools/@transcend-io/mcp-server-consent@318.tgz

@transcend-io/mcp-server-discovery

pnpm add https://pkg.pr.new/transcend-io/tools/@transcend-io/mcp-server-discovery@318
yarn add https://pkg.pr.new/transcend-io/tools/@transcend-io/mcp-server-discovery@318.tgz

@transcend-io/mcp-server-docs

pnpm add https://pkg.pr.new/transcend-io/tools/@transcend-io/mcp-server-docs@318
yarn add https://pkg.pr.new/transcend-io/tools/@transcend-io/mcp-server-docs@318.tgz

@transcend-io/mcp-server-dsr

pnpm add https://pkg.pr.new/transcend-io/tools/@transcend-io/mcp-server-dsr@318
yarn add https://pkg.pr.new/transcend-io/tools/@transcend-io/mcp-server-dsr@318.tgz

@transcend-io/mcp-server-inventory

pnpm add https://pkg.pr.new/transcend-io/tools/@transcend-io/mcp-server-inventory@318
yarn add https://pkg.pr.new/transcend-io/tools/@transcend-io/mcp-server-inventory@318.tgz

@transcend-io/mcp-server-preferences

pnpm add https://pkg.pr.new/transcend-io/tools/@transcend-io/mcp-server-preferences@318
yarn add https://pkg.pr.new/transcend-io/tools/@transcend-io/mcp-server-preferences@318.tgz

@transcend-io/mcp-server-workflows

pnpm add https://pkg.pr.new/transcend-io/tools/@transcend-io/mcp-server-workflows@318
yarn add https://pkg.pr.new/transcend-io/tools/@transcend-io/mcp-server-workflows@318.tgz

commit: 8c86528

@Skoorbf
Skoorbf requested a review from michaelfarrell76 July 17, 2026 15:15

@michaelfarrell76 michaelfarrell76 left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

thanks ill take this from here after we get the other stuff merged @Skoorbf

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants