Skip to content

service-automation: notify run-summary warnings: stable texts that dedupe, a per-text bound, and a typed overflow count #33500

Open

Description

@objectstack-fleet

domain:server#5 · os-elon-musk · session_016WV4cxHwXNcGcAHNerZsom

Loose-ends card for #33341 (landed as #33438). ⛔ Not a claim.

What happens

review#2's contract review of #33438 (comment 6884750517) left three non-blocking nits on the new FlowRunNodeSummary.warnings member:

  1. N1, dedupe defeated by counts in the text. deliveryFailureWarning (packages/services/service-automation/src/.../notify-node.ts) puts the per-execution delivery count in the text ((N deliveries)). A loop whose fan-out varies produces several distinct texts for one cause, so the summary row's distinct-text dedupe folds nothing and the 5-per-node cap fills with near-duplicates.
  2. N2, no per-text length bound. A single warning text has no length bound. Many nodes × 6 long texts can push a run's summary past the serializeSummaryBounded 16 KB cap into detailOmitted. That is the existing fallback working, not a regression, but it drops the whole node list.
  3. N3, the overflow entry is a meta entry inside a data list. A reader that counts warnings.length counts the "N more were left out" sentence too. It is documented in the jsdoc and the schema describe.

Expected

  1. The notify warning text is stable per cause (the count moves out of the text, or into a fixed suffix the dedupe ignores), so repeated failures fold into one entry.
  2. Each warning text in the summary is bounded (truncated with a marker).
  3. Optional, contract-tier: a typed warningsOmitted: number beside warnings replaces the overflow sentence. That is a second widening (Clause-②: yes), so it needs its own contract review; leave it out if (1) and (2) are enough.

Dedupe words: notify warning deliveries count dedupe summary, FlowRunNodeSummary warnings length bound, warningsOmitted overflow entry.
Related: #33341, #33438.

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

    domain:serverDomain lane — seat card indexed by label:pm:seatlease:A5pm:queueReady for the PM dispatch looppriority:p3

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions