@@ -271,6 +271,26 @@ describe('TallySlasherClient', () => {
271271 expect ( action . committees [ 0 ] ) . toHaveLength ( settings . targetCommitteeSize ) ;
272272 expect ( action . committees [ 0 ] [ 0 ] . toString ( ) ) . toEqual ( EthAddress . ZERO . toString ( ) ) ;
273273 } ) ;
274+
275+ it ( 'should not return any action when computed votes are zero' , async ( ) => {
276+ // Round 5 votes on round 3 (offset of 2)
277+ const currentRound = 5n ;
278+ const currentSlot = currentRound * BigInt ( roundSize ) ;
279+ const targetRound = 3n ;
280+
281+ // Add slot-based offense for the target round
282+ await offensesStore . addPendingOffense (
283+ createOffense ( {
284+ validator : committee [ 0 ] ,
285+ epochOrSlot : targetRound * BigInt ( roundSize ) ,
286+ offenseType : OffenseType . PROPOSED_INSUFFICIENT_ATTESTATIONS , // slot-based
287+ amount : 1n , // Too low to reach minimum slash unit
288+ } ) ,
289+ ) ;
290+
291+ const actions = await tallySlasherClient . getProposerActions ( currentSlot ) ;
292+ expect ( actions ) . toHaveLength ( 0 ) ;
293+ } ) ;
274294 } ) ;
275295
276296 describe ( 'execute-slash' , ( ) => {
@@ -574,7 +594,7 @@ describe('TallySlasherClient', () => {
574594 it ( 'should handle from offense detection to execution' , async ( ) => {
575595 // Round 3: Offense occurs
576596 const offenseRound = 3n ;
577- const validator = EthAddress . random ( ) ;
597+ const validator = committee [ 0 ] ;
578598 const offense : WantToSlashArgs = {
579599 validator,
580600 amount : settings . slashingAmounts [ 1 ] ,
0 commit comments