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
feat(spec)!: FlowNodeSchema parses its own ADR-0031 regions — the post-parse pass retires (#4415) (#6333)
* feat(spec)!: FlowNodeSchema parses its own ADR-0031 regions (#4415)
`FlowSchema.parse` could not reach a region — regions live inside
`FlowNodeSchema.config`, a deliberately open `z.record` (ADR-0018) — so #4381
closed the gap with a post-parse pass (`normalizeControlFlowRegions`) every
caller had to remember to run. That unwritten rule is the condition the #4347
defect family grows in: a new consumer takes a `FlowParsed` and uses it,
half-parsed and looking finished.
`FlowNodeSchema` now carries a `.transform()` that parses each declared region
slot through the schema that slot's value is. Nesting needs no manual
recursion: a region's `nodes` are `z.array(FlowNodeSchema)`, so Zod re-enters
the transform on the way down. The post-parse pass and its `registerFlow` call
site retire.
Premise measured first, per the maintainer ruling — the ZodPipe is digested by
all three named generators (toJSONSchema walker, form generation, the
lazy-schema seen-table path). Two mechanical prerequisites the measurement
surfaced: the region schemas back-reference through `z.lazy()`, and the object
half is a hoisted function declaration, both load-bearing under
`OS_EAGER_SCHEMAS=1`; pinned by `flow-region-cycle.test.ts`.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BickTBKm2JYSNnrtPT8ysa
* chore(spec): regenerate the flow reference after merging main
Net delta vs origin/main is exactly the two input-shape lines #4415 intends
(`inputSchema[].required`, `boundaryConfig.interrupting` render optional now
that FlowNode is read from the pipe's authorable IN side).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BickTBKm2JYSNnrtPT8ysa
---------
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
|**outputSchema**|`never`| optional |[REMOVED]`flow.nodes[].outputSchema` was removed in @objectstack/spec 17.0.0 (#3896 audit close-out) — it was never validated: the engine does not check node outputs against it, so it documented a contract nothing enforced. Delete the key. Downstream nodes read prior outputs via expressions (`{{nodeId.field}}`) regardless of any declaration. |
0 commit comments