Skip to content

Commit e9d66a1

Browse files
committed
docs(spec): name the deferred id-space decision (#16134) at the rule's scope boundary
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01T6HeZvT9wdSJD1ZxJb5Eno
1 parent d8f9861 commit e9d66a1

3 files changed

Lines changed: 6 additions & 5 deletions

File tree

.changeset/flow-node-id-uniqueness.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ every other refusal are untouched; a flow with unique top-level node ids
4343
parses exactly as before. The rule judges the flow's **own top-level**
4444
`nodes[]` only — a region body's nodes remain `analyzeRegion`'s to judge, and
4545
whether a region node may reuse a top-level node id (one id space or two) is a
46-
separate decision this change neither takes nor pre-empts.
46+
separate decision (#16134) this change neither takes nor pre-empts.
4747

4848
The shape that is refused, and what the author does about it — a four-node
4949
excerpt, the later node renamed and its edge re-pointed:

packages/spec/src/automation/flow.test.ts

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2124,9 +2124,10 @@ describe('FlowSchema — top-level node ids are unique (#15713)', () => {
21242124
// Scope boundary, pinned so the rule cannot silently widen: it judges the
21252125
// flow's OWN top-level `nodes[]`. A region body (`loop.config.body.nodes`) is
21262126
// `analyzeRegion`'s to judge, at `registerFlow()`, and whether a region node
2127-
// may reuse a top-level id — one id space or two — is an open decision that
2128-
// this rule neither takes nor pre-empts. This pin records today's accept set
2129-
// at that boundary; the decision, when taken, moves it deliberately.
2127+
// may reuse a top-level id — one id space or two — is an open decision
2128+
// (#16134) that this rule neither takes nor pre-empts. This pin records
2129+
// today's accept set at that boundary; the decision, when taken, moves it
2130+
// deliberately.
21302131
it('judges the top-level nodes[] only — a region node reusing a top-level id is outside this rule', () => {
21312132
const result = FlowSchema.safeParse(flowWith([
21322133
{ id: 'start', type: 'start', label: 'Start' },

packages/spec/src/automation/flow.zod.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -934,7 +934,7 @@ export const FlowSchema = lazySchema(() => strictObject(
934934
// in `control-flow.zod.ts`, at `registerFlow()`); the flow's own top-level
935935
// `nodes[]` parsed with the collision intact. This pass judges the top-level
936936
// array ALONE: a region's nodes are judged by `analyzeRegion`, and whether the
937-
// two spaces are one is a separate decision, not taken here.
937+
// two spaces are one is a separate decision (#16134), not taken here.
938938
const firstNodeIndexById = new Map<string, number>();
939939
flow.nodes.forEach((node, index) => {
940940
const first = firstNodeIndexById.get(node.id);

0 commit comments

Comments
 (0)