Skip to content

finding: the HTTP node reports acted: 1 for a merely-enqueued outbox delivery — same overstatement #7747 fixed for notify, against sys_http_delivery #7882

Description

@huangyiirene

Observation

packages/services/service-automation/src/builtin/http-nodes.ts:139 returns { output: { deliveryId, enqueued: true }, metrics: { acted: 1 } } for a delivery that has only been enqueued to the HTTP outbox. sys_http_delivery carries its own terminal outcomes (including dead), decided by the dispatcher afterwards — so a flow-run summary can read acted: 1 for an HTTP delivery that later dead-letters, and the operator-facing summary disagrees with the durable record.

This is the same defect class #7747 (PR #7875) just fixed for the notify node, at the sibling node. Found by that card's dev while measuring the notify path; deliberately left out of scope there rather than ridden along.

Why it is likely the same fix shape

#7875 established the pattern in this exact codebase: acted counts only what a channel accepted terminally; a merely-enqueued effect is reported as unmeasuredEffect, which is the platform's existing qualifier for "an effect happened but the outcome is not yet knowable". That keeps healthy outbox-backed runs out of the documented broken-sweep alert (selected > 0 AND acted = 0 AND unmeasured = 0) without asserting success, and respects connector.zod.ts:613's rule against a blanket acted: 0.

Worth confirming before assuming it transfers: whether the HTTP node has an inline (non-outbox) path whose outcome IS terminal at return time, as MessagingService.emit() did — if so, the same two-path narrowing applies; if every HTTP delivery goes through the outbox, the fix is simpler.

Where

Refs

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions