@@ -220,16 +220,19 @@ describe('what stays accepted (lit controls)', () => {
220220
221221 it ( 'CONTROL: key membership is not this arm\'s — an undeclared key and a tombstoned one' , ( ) => {
222222 // [#21982] An undeclared key on these builtins draws the KEY arm's one
223- // refusal at its location; this arm adds nothing beside it.
223+ // refusal at its location; this arm adds nothing beside it. [#22343] So
224+ // does a tombstoned key on a type the key arm judges it for — `try_catch`'s
225+ // `retry.retryDelayMs` — while a retired `script` key keeps the scope it
226+ // had (the lint names it): neither draws a second refusal from this arm.
224227 for ( const [ type , config , key ] of [
225228 [ 'http' , { ...VALID . http , bogusKey : 1 } , 'bogusKey' ] ,
226229 [ 'screen' , { fields : [ { name : 'qty' , visible : 'x' } ] } , 'fields[0].visible' ] ,
230+ [ 'try_catch' , { ...VALID . try_catch , retry : { retryDelayMs : 500 } } , 'retry.retryDelayMs' ] ,
227231 ] as const ) {
228232 expect ( flowNodeConfigRefusals ( type , config ) . map ( ( { code, path } ) => ( { code, path } ) ) , type )
229233 . toEqual ( [ { code : 'node-config-refused-by-contract' , path : key } ] ) ;
230234 }
231235 expect ( flowNodeConfigRefusals ( 'script' , { ...VALID . script , actionType : 'email' } ) ) . toEqual ( [ ] ) ;
232- expect ( flowNodeConfigRefusals ( 'try_catch' , { ...VALID . try_catch , retry : { retryDelayMs : 500 } } ) ) . toEqual ( [ ] ) ;
233236 // CONTROL: the contracts refuse all four — the arm holds back, the contract does not.
234237 for ( const [ type , config ] of [
235238 [ 'http' , { ...VALID . http , bogusKey : 1 } ] ,
0 commit comments