Repository navigation
refactor(cdp): accept transactional sends in their own module - #128871
trunk-io[bot] merged 17 commits into
Conversation
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
🤖 CI report✅ Trunk lane — non-backend laneThis PR is assigned to the non-backend lane. It does not run backend Python tests and may merge in parallel with PRs in other lanes. ✅ Duplication (Python) — cleanNew Python code duplication introduced by this branch. Fails at 70+ tokens in app code, or 150+ tokens when both copies live in test files. Advisory while the gate proves itself: extract a shared helper instead of copying. ✅ Duplication (TypeScript) — cleanNew TypeScript code duplication introduced by this branch. Fails at 70+ tokens in app code, or 150+ tokens when both copies live in test files. Advisory while the gate proves itself: extract a shared helper instead of copying.
|
| File | Comment lines | Added lines |
|---|---|---|
nodejs/src/cdp/services/hogflows/transactional-sends.ts |
14 | 284 |
This check does not block merging. It updates on every push and clears when the share drops.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ransactional-sends
…ransactional-sends # Conflicts: # nodejs/src/cdp/cdp-api.ts
|
Risk: No findings This delta wires file attachments into transactional email sends: a new JWT-authenticated uploads endpoint that hands out checksum- and length-pinned S3 PUT URLs under a per-team daily byte quota, plus a send-path verification stage that checks the files exist, sizes the rendered message against a 40MB cap, and queues the send with verified attachment metadata. I traced auth, tenant scoping, quota atomicity, idempotency release coverage, and the render-size DoS guards end to end and found no vulnerability introduced by these changes. Sentinel reviewed |
…ransactional-sends # Conflicts: # nodejs/src/cdp/cdp-api.ts # nodejs/src/cdp/services/hogflows/transactional-email.ts
…ransactional-sends # Conflicts: # nodejs/src/cdp/cdp-api.ts
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ransactional-sends Master's attachments switch (CDP_EMAIL_ATTACHMENTS_ENABLED) and the recipient and function id on the queued status row move into TransactionalSends, which now owns the send that cdp-api.ts used to build. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…nal-sends Master removed inline email attachments (#131567). The transactional send module no longer decodes, stores or switches on files: the strict send schema refuses them, as on master. Suppression is read with isKnownSuppressed, as on master. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…nal-sends # Conflicts: # nodejs/src/cdp/cdp-api.ts # nodejs/src/cdp/services/hogflows/transactional-email.ts
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
There was a problem hiding this comment.
Approved.
The risky portions have assurance through owning-team authorship and STRONG familiarity, though neither listed review covers the current head. No unresolved substantive concerns or other refusal grounds were found.
- Author wrote 76% of the modified lines and has 22 merged PRs in these paths (familiarity STRONG).
Gate mechanics and policy version
| Gate | Result | |
|---|---|---|
| prerequisites | ✓ | all clear |
| deny-list | ✓ | no deny categories matched |
| size | ✓ | 606L, 3F substantive — within ceiling |
| tier | ✓ | T1-agent / T1d-complex (606L, 3F, single-area, refactor) |
| stamphog 2.8.0 | .stamphog/policy.yml @ a2dd902 · reviewed head a2dd902 |
|
This pull request was merged into |
Deploy status
This table shows the |
Problem
Merge first: #128868.
Note
🔵 Merge risk: low · two-way door (merge-risk rubric)
Landing: #129915 merges alone and its migration runs in US and EU first. #127745 merges next. Then one
/trunk mergeon #128929 lands N1 to N4.Changes
TransactionalSends.acceptowns the send: idempotency, refusal checks, run row, queue insert and status row.flowchart LR subgraph Before R1[send route: auth, parse, load, accept, answer] end subgraph After R2[send route: auth, parse, load, answer] --> T2[transactional sends: accept] end classDef phBlue fill:#1d4aff,stroke:#1d4aff,color:#fff; classDef phGray fill:#e5e7eb,stroke:#c7ccd1,color:#000; class T2 phBlue; class R1,R2 phGray;How did you test this code?
cdp-api.serial.test.tspasses unchanged.Shadow run
reserve,markQueuedandreleasecall with its fingerprint, the status and result rows sent to Kafka, and the outcome and stage counters.fa5a21fagainst N1's head0b6fb84.Release status
Docs update
🤖 Agent context
Autonomy: Human-driven (agent-assisted)
Agent: Claude Code, Claude Opus 5.5
Skills:
/writing-pr-descriptionsMore context for AI agents
scheduled_atand the time rules insideaccept.nodejs/src/cdp/services/hogflows/transactional-sends.tsagainst the removed handler code.🤖 Generated with Claude Code