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
{{ message }}
Repository navigation
Commit ef0dfb4
Browse filesBrowse the repository at this point in the historyBrowse files
- service-automation tests: the input-schema and parallel-branch doubles
register under a type of their own (probe_step), never the builtin script,
whose contract now refuses their undeclared keys at the flow parse.
- lint: validateStackExpressions keeps its declared pre-conversion tolerance
for a script node's functionName alias; every other undeclared script key
is still refused there (pinned).
- spec comments: the FlowSchema header and the node-config-refused-by-contract
docblock say which arm judges key membership.
- changeset: @objectstack/lint patch.
Claude-Session: https://claude.ai/code/session_01RPo7FUd6bSnAfkWMAKi848
Co-authored-by: Claude <noreply@anthropic.com>
Copy file name to clipboardExpand all lines: .changeset/21982-flow-script-subflow-config-undeclared-keys-refused.md
+3Lines changed: 3 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,5 +1,6 @@
1
1
---
2
2
'@objectstack/spec': minor
3
+
'@objectstack/lint': patch
3
4
---
4
5
5
6
A `script` or `subflow` flow node whose `config` carries a key its executor contract does not declare is refused at parse, with a location, in the contract's own words: a `script``bogusKey`, a `subflow``timeoutMs` written inside `config`, and the like no longer pass the build doors and registration and then fail every run.
@@ -34,6 +35,8 @@ Clause-②: no (narrowing)
34
35
35
36
**Who is affected, measured.** At `15ec50e528`, every `script` and `subflow` node authored in this repository's examples, platform objects, apps, scaffolding templates, skills and docs (8 nodes: 6 `script`, 2 `subflow`) carries only declared keys, and so does every one in hotcrm at `c9678036d9` (5 `subflow`, no `script`). The Studio flow designer at the pinned objectui `a58626c88d` writes only declared keys for both types (its `timeoutMs` field writes the node, not `config`), and seeds a new node with an empty `config`. Deployed metadata, and other repositories, were not measured. Where such a node already sits in a stored flow, the whole flow is refused at registration: at boot it is skipped with a warn naming it, its trigger not armed, while the flows beside it register.
36
37
38
+
**`@objectstack/lint`.**`validateStackExpressions` keeps the pre-conversion tolerance it declares: on a raw source, a `script` node's `functionName` alias stays the callable check's to read, not an undeclared-key error, while every other undeclared `script` key is refused there as at the build doors.
39
+
37
40
### The kit
38
41
39
42
-**The refusal.** The key half of the executor-contract arm of `flowNodeConfigRefusals` in `automation/flow-node-config-refusals.ts`, judged for the builtins in the spec's schemaless class (`SCHEMALESS_NODE_CONFIG_SCHEMAS`) that have an executor contract; no new code joins `FLOW_SLOT_REFUSAL_CODES`, and `getBuiltinNodeConfigContracts()` keeps its 13 entries.
0 commit comments