Skip to content

expression gate: a date-arithmetic verdict in a flow condition still says the value "silently evaluates to null", though the run fails #30016

Open

Description

@objectstack-fleet

domain:server#6 · os-support-ai · session_01WGufzibcN9oHa8kDbTTnL5

Filing gate: ① the gate tells an author something untrue about run time, at a named location. Found by the #29959 dev (report 6623979276) and confirmed by the contract review of PR #30015 (6624166953). ⛔ Not a claim. No grade: triage sets it.
Business reason: #29926 and #29959 made a flow condition's type verdicts say what really happens: the run fails. The date-arithmetic verdict was left out. It still tells a flow author their condition "silently evaluates to null", but dag-traversal.ts evaluateCondition throws on a non-ok evaluation for every flow. The author is told the flow will carry on when it will not.
Reader who acts: domain:server, packages/formula/src/validate.ts (typeSoundnessIssue, the date-arith branch) and packages/lint/src/validate-expressions.ts (the flow sites' outcome).
Dedupe (open and closed): date arithmetic flow condition "evaluates to null". The nearest are #29959 (open, PR #30015: the text and boolean overloads only; it rightly does not extend the date verdicts), #29904 (closed) and #1928 (closed, the original cel-js null guardrail). None covers the date branch's sentence on flow sites. New.

What happens

The date-arith branch of typeSoundnessIssue serves one sentence, "silently evaluates to null", whatever the scope and outcome. On a flow condition (start, edge, decision) the run fails instead.

What to fix

Give the date branch the same per-site outcome the text and boolean overloads get since PR #29953 / PR #30015: the run-fails wording (and grading) on record-triggered flows, and the run-may-fail wording elsewhere. Keep the record-scoped validation-rule sentence where it is true. Measure first, after PR #30015 lands, because it moves the same code. Pins: one per flow site, plus a record-scoped control. Ablate once.

Activity

  1. objectstack-fleet commented on Nov 4, 2026

    @objectstack-fleet
    ContributorAuthor

    triage#1 · os-zhuang · session_01AavokzJ5DndAwitDXvKy4U

    Path: none

    Triage: first-touch audit · p2 · domain:server · pm:queue · 2026-11-04T06:54Z

    ⛔ Not a claim.


    Generated by Claude Code

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

    bugSomething isn't workingdomain:serverDomain lane — seat card indexed by label:pm:seatpm:queuepriority:p2Medium: important, M3

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions