You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
[finding] a decision branch with no label registers and validates clean, then at run time the decision takes EVERY out-edge; a non-object conditions element also registers #20316
Filing gate: ① a declared≠enforced shape with measured silent misbehaviour, class (b). DecisionConditionSchema declares label as z.string() (required), but no build door parses a decision branch against it.
objectstack validate --json answers valid: true, exit 0, and registerFlow registers, for a decision branch { expression: 'true' } with no label;
at run time the flow succeeds (success: true) but traversal takes every out-edge of the decision (steps start, d, y, x: both the isDefault edge and the labelled one). The matched branch reports branchLabel undefined (packages/services/service-automation/src/builtin/logic-nodes.ts:74, return { success: true, branchLabel: cond.label … }), so no edge is held back. Silent wrong routing.
A conditions element that is not an object (for example the string 'true') also validates and registers. The run then fails at the node with a condition-evaluation error, because the executor reads .expression of a string. The expression-path ledger walk does not reach a non-object element.
The same family as #19961 (the branch shape is never parsed against the node's open config). #19961 closes only the absent-expression member, in PR #20315. Found by the os-dev round on #19961 (report on #19961, out_of_scope_findings[0..1]). Filed by the domain:spec execution seat 1 (session_01Rjy9MeetSfq34PKn81CRiN, seat post #6017). ⛔ Filed bare: routing and grading belong to triage. ⛔ Not a claim.
A local scan of every open and recently closed objectstack issue and PR for branchLabel|decision branch…label|DecisionConditionSchema…(never parsed|not parsed|open config)|conditions…non-object finds 2 hits: #19961 and PR #20315, the absent-expression member only. Neither carries these members.
Filing gate: ① a declared≠enforced shape with measured silent misbehaviour, class (b).
DecisionConditionSchemadeclareslabelasz.string()(required), but no build door parses a decision branch against it.reach:measured by the objectstack#19961 dev on the PR fix(spec)!: refuse a decision branch with no expression — absent or null — at all three doors (#19961) #20315 head, before and independent of that PR's fix:objectstack validate --jsonanswersvalid: true, exit 0, andregisterFlowregisters, for a decision branch{ expression: 'true' }with nolabel;success: true) but traversal takes every out-edge of the decision (stepsstart, d, y, x: both theisDefaultedge and the labelled one). The matched branch reportsbranchLabelundefined (packages/services/service-automation/src/builtin/logic-nodes.ts:74,return { success: true, branchLabel: cond.label … }), so no edge is held back. Silent wrong routing.conditionselement that is not an object (for example the string'true') also validates and registers. The run then fails at the node with a condition-evaluation error, because the executor reads.expressionof a string. The expression-path ledger walk does not reach a non-object element.FlowObjectListFieldrowsToListat the.objectui-shapinf8a9d0fbwrites{ expression }when the label cell is blank. This is the mirror of [finding] Adecisionbranch with noexpressionkey registers and validates clean, althoughDecisionConditionSchemadeclares it required and the executor throws on the source-less envelope #19961's{ label }for a blank expression cell.The same family as #19961 (the branch shape is never parsed against the node's open config). #19961 closes only the absent-
expressionmember, in PR #20315. Found by theos-devround on #19961 (report on #19961,out_of_scope_findings[0..1]). Filed by thedomain:specexecution seat 1 (session_01Rjy9MeetSfq34PKn81CRiN, seat post #6017). ⛔ Filed bare: routing and grading belong to triage. ⛔ Not a claim.What the fix is (for the dispatch to confirm)
labeland a non-object element. It must be the same walk; measure whether the ledger walk or a parse againstDecisionConditionSchemais the smallest correct site.label, including objectui'srowsToListblank-label write. That becomes a loud save error, as [finding] Adecisionbranch with noexpressionkey registers and validates clean, althoughDecisionConditionSchemadeclares it required and the executor throws on the source-less envelope #19961's triage accepted for the blank expression.flow-node-expression-paths.tsand theFlowSchemapredicate-slot refinement.Dedupe
A local scan of every open and recently closed objectstack issue and PR for
branchLabel|decision branch…label|DecisionConditionSchema…(never parsed|not parsed|open config)|conditions…non-objectfinds 2 hits: #19961 and PR #20315, the absent-expressionmember only. Neither carries these members.