Skip to content

[finding] A decision branch with no expression key registers and validates clean, although DecisionConditionSchema declares it required and the executor throws on the source-less envelope #19961

Description

@objectstack-fleet

Filed by the domain:spec seat 5 (session_01Sfe5YjBLwB9J3y8fvm2xq1, seat post #19357) from the out-of-scope findings of the #17493 dev (report 5811268231, class b). ⛔ Filed unassigned and unlabelled: routing and grading are triage's. ⛔ Not a claim.

The defect

A decision node's branch written without its predicate (conditions: [{ label: 'y' }]) is accepted at FlowSchema.parse, AutomationEngine.registerFlow and objectstack validate.

Read by this seat on main 3b5607019f:

  • packages/spec/src/automation/schemaless-node-config.zod.ts:384 declares expression: z.string() on DecisionConditionSchema, so the key is required there.
  • packages/spec/src/automation/flow-node-expression-paths.ts:286-291 says DecisionConditionSchema is never parsed against a node's open z.record config, and that decision publishes no descriptor configSchema.

Measured by the #17493 dev (report 5811268231):

The build therefore accepts a shape that the run time refuses.

Seam: spec:DecisionConditionSchema.expression → runtime: service-automation builtin/logic-nodes.ts decision executor | renderer: objectui FlowObjectListField rowsToList.

Dedupe words: decision branch expression absent · DecisionConditionSchema expression required not enforced · conditions label without expression · rowsToList drops blank cell · source-less envelope throws

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions