Open
Labels
domain:serverDomain lane — seat card indexed by label:pm:seatDomain lane — seat card indexed by label:pm:seatlease:A5pm:queueReady for the PM dispatch loopReady for the PM dispatch looppriority:p3
Description
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:
- 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. - 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
serializeSummaryBounded16 KB cap intodetailOmitted. That is the existing fallback working, not a regression, but it drops the whole node list. - N3, the overflow entry is a meta entry inside a data list. A reader that counts
warnings.lengthcounts the "N more were left out" sentence too. It is documented in the jsdoc and the schemadescribe.
Expected
- 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.
- Each warning text in the summary is bounded (truncated with a marker).
- Optional, contract-tier: a typed
warningsOmitted: numberbesidewarningsreplaces 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.
Metadata
Metadata
Assignees
Labels
domain:serverDomain lane — seat card indexed by label:pm:seatDomain lane — seat card indexed by label:pm:seatlease:A5pm:queueReady for the PM dispatch loopReady for the PM dispatch looppriority:p3
Activity