@@ -395,6 +395,51 @@ describe('SynapseEngine', () => {
395395 expect ( calls [ i ] . prevCount ) . toBeGreaterThanOrEqual ( calls [ i - 1 ] . prevCount ) ;
396396 }
397397 } ) ;
398+
399+ test ( 'should record captured layer processing errors in metrics' , async ( ) => {
400+ const layer = engine . layers [ 0 ] ;
401+ layer . _safeProcess = jest . fn ( ( ) => null ) ;
402+ layer . getLastError = jest . fn ( ( ) => new Error ( 'Layer processing failed' ) ) ;
403+
404+ const result = await engine . process ( 'test' , { } ) ;
405+
406+ expect ( result . metrics . per_layer [ layer . name ] ) . toEqual ( expect . objectContaining ( {
407+ status : 'error' ,
408+ error : 'Layer processing failed' ,
409+ } ) ) ;
410+ expect ( result . metrics . layers_errored ) . toBeGreaterThanOrEqual ( 1 ) ;
411+ } ) ;
412+
413+ test ( 'should record direct _safeProcess exceptions in metrics' , async ( ) => {
414+ const layer = engine . layers [ 0 ] ;
415+ layer . _safeProcess = jest . fn ( ( ) => {
416+ throw new Error ( 'Unsafe layer crash' ) ;
417+ } ) ;
418+
419+ const result = await engine . process ( 'test' , { } ) ;
420+
421+ expect ( result . metrics . per_layer [ layer . name ] ) . toEqual ( expect . objectContaining ( {
422+ status : 'error' ,
423+ error : 'Unsafe layer crash' ,
424+ } ) ) ;
425+ expect ( result . metrics . layers_errored ) . toBeGreaterThanOrEqual ( 1 ) ;
426+ } ) ;
427+
428+ test ( 'should record getLastError accessor failures in metrics' , async ( ) => {
429+ const layer = engine . layers [ 0 ] ;
430+ layer . _safeProcess = jest . fn ( ( ) => null ) ;
431+ layer . getLastError = jest . fn ( ( ) => {
432+ throw new Error ( 'Last error unavailable' ) ;
433+ } ) ;
434+
435+ const result = await engine . process ( 'test' , { } ) ;
436+
437+ expect ( result . metrics . per_layer [ layer . name ] ) . toEqual ( expect . objectContaining ( {
438+ status : 'error' ,
439+ error : 'Last error unavailable' ,
440+ } ) ) ;
441+ expect ( result . metrics . layers_errored ) . toBeGreaterThanOrEqual ( 1 ) ;
442+ } ) ;
398443 } ) ;
399444
400445 describe ( 'process() — metrics' , ( ) => {
0 commit comments