Skip to content

Commit 9e09e0d

Browse files
committed
test(spec): the try_catch retryDelayMs CONTROL reads the replaying seam and the authoring refusal
Claude-Session: https://claude.ai/code/session_01MT2aGLQQhH8ZsPrgqHMrwz Co-authored-by: Claude <noreply@anthropic.com>
1 parent 88cb8be commit 9e09e0d

1 file changed

Lines changed: 19 additions & 3 deletions

File tree

‎packages/spec/src/automation/flow-builtin-node-config-keys.test.ts‎

Lines changed: 19 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -395,13 +395,29 @@ describe('try_catch: its retry is closed, so the spec judges its keys like every
395395
expect(saved.success ? [] : saved.error.issues.map((i) => i.path.join('.'))).toEqual(['nodes.1.config.retry.maxRetry']);
396396
});
397397

398-
it('CONTROL: a pre-17 retryDelayMs alone is converted first where the door converts', () => {
398+
// `retry-policy-converged` left the load path at 18 (#23543 F2): the doors
399+
// that still convert first are the ones replaying retired entries — the
400+
// automation engine's `registerFlow` and the other rehydration seams — and
401+
// the authoring door now meets the tombstone instead.
402+
it('CONTROL: a pre-17 retryDelayMs alone is converted first where the door replays the conversion', () => {
403+
const legacy = flowWith('try_catch', { try: TRY_REGION, retry: { maxRetries: 1, retryDelayMs: 500 } }, 'retry_legacy');
404+
const replayed = applyConversionsToFlow(structuredClone(legacy), { includeRetired: true });
405+
expect(FlowSchema.safeParse(replayed).success).toBe(true);
406+
399407
const stack = {
400408
manifest: { id: 'com.example.retry', name: 'retry', version: '1.0.0', type: 'app', namespace: 'rty' },
401409
objects: [{ name: 'rty_task', label: 'Task', fields: { title: { type: 'text', label: 'Title' } } }],
402-
flows: [flowWith('try_catch', { try: TRY_REGION, retry: { maxRetries: 1, retryDelayMs: 500 } }, 'retry_legacy')],
410+
flows: [legacy],
403411
};
404-
expect(() => defineStack(stack as never)).not.toThrow();
412+
let refusal: { code?: unknown; issues?: Array<{ path: unknown[]; message: string }> } | undefined;
413+
try {
414+
defineStack(stack as never);
415+
} catch (error) {
416+
refusal = error as typeof refusal;
417+
}
418+
expect(refusal?.code).toBe('STACK_SCHEMA_INVALID');
419+
expect(refusal!.issues!.map((i) => i.path.join('.'))).toEqual(['flows.0.nodes.1.config.retry.retryDelayMs']);
420+
expect(refusal!.issues![0]!.message).toContain('Rename the key to `backoffMs`');
405421
});
406422
});
407423

0 commit comments

Comments
 (0)