@@ -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