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 loop node with no config.collection registers and validates clean, then fails at run time with 'loop config does not satisfy the loop contract' #20317
objectstack validate --json answers valid: true, exit 0, and registerFlow (with the builtins installed) registers a loop node that has iteratorVariable and a one-node body but no config.collection;
the run fails at the node: Node l failed: loop config does not satisfy the loop contract, config.collection: Invalid input, from packages/services/service-automation/src/builtin/loop-node.tsparseNodeConfig;
the expression-path ledger's reconciliation shows the channel schemas REQUIRE loop.collection and map.collection, but no build door refuses their absence;
map was NOT measured.
A sibling of #19961's family: a required key the runtime contract enforces is admitted by every build door. Found by the os-dev round on #19961 (report on #19961, out_of_scope_findings[2]). Filed by the domain:spec execution 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)
Measure map too. Then refuse a missing required node-config key at the build doors (FlowSchema.parse, registerFlow, objectstack validate), with the runtime contract's own message, from one judge. The ledger already knows which keys are required per channel.
Census the node kinds whose runtime parseNodeConfig requires a key that the build doors do not, so that one card covers the family rather than one card per node kind.
A local scan of every open and recently closed objectstack issue and PR for loop…collection…(absent|missing|registers)|LoopConfigSchema|map…collection…(absent|missing)|parseNodeConfig finds 1 hit: PR #20180, unrelated. None carries this defect.
Filing gate: ① a required node-config key admitted at build and refused at run, class (b).
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 (independent of that PR):objectstack validate --jsonanswersvalid: true, exit 0, andregisterFlow(with the builtins installed) registers aloopnode that hasiteratorVariableand a one-node body but noconfig.collection;Node l failed: loop config does not satisfy the loop contract, config.collection: Invalid input, frompackages/services/service-automation/src/builtin/loop-node.tsparseNodeConfig;loop.collectionandmap.collection, but no build door refuses their absence;mapwas NOT measured.A sibling of #19961's family: a required key the runtime contract enforces is admitted by every build door. Found by the
os-devround on #19961 (report on #19961,out_of_scope_findings[2]). 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)
maptoo. Then refuse a missing required node-config key at the build doors (FlowSchema.parse,registerFlow,objectstack validate), with the runtime contract's own message, from one judge. The ledger already knows which keys are required per channel.parseNodeConfigrequires a key that the build doors do not, so that one card covers the family rather than one card per node kind.main, and objectui's flow designer defaults.Dedupe
A local scan of every open and recently closed objectstack issue and PR for
loop…collection…(absent|missing|registers)|LoopConfigSchema|map…collection…(absent|missing)|parseNodeConfigfinds 1 hit: PR #20180, unrelated. None carries this defect.