@@ -289,23 +289,21 @@ export class ValidatorClient extends (EventEmitter as new () => WatcherEmitter)
289289 if ( ! validationResult . isValid ) {
290290 this . log . warn ( `Proposal validation failed: ${ validationResult . reason } ` , proposalInfo ) ;
291291
292- // Only track attestation failure metrics if we're actually in the committee
293- if ( partOfCommittee ) {
294- const reason = validationResult . reason || 'unknown' ;
295- // Classify failure reason: bad proposal vs node issue
296- const badProposalReasons : BlockProposalValidationFailureReason [ ] = [
297- 'invalid_proposal' ,
298- 'state_mismatch' ,
299- 'failed_txs' ,
300- 'in_hash_mismatch' ,
301- 'parent_block_wrong_slot' ,
302- ] ;
303-
304- if ( badProposalReasons . includes ( reason as BlockProposalValidationFailureReason ) ) {
305- this . metrics . incFailedAttestationsBadProposal ( 1 , reason ) ;
306- } else {
307- this . metrics . incFailedAttestationsNodeIssue ( 1 , reason ) ;
308- }
292+ const reason = validationResult . reason || 'unknown' ;
293+ // Classify failure reason: bad proposal vs node issue
294+ const badProposalReasons : BlockProposalValidationFailureReason [ ] = [
295+ 'invalid_proposal' ,
296+ 'state_mismatch' ,
297+ 'failed_txs' ,
298+ 'in_hash_mismatch' ,
299+ 'parent_block_wrong_slot' ,
300+ ] ;
301+
302+ if ( badProposalReasons . includes ( reason as BlockProposalValidationFailureReason ) ) {
303+ this . metrics . incFailedAttestationsBadProposal ( 1 , reason , partOfCommittee ) ;
304+ } else {
305+ // Node issues so we can't attest
306+ this . metrics . incFailedAttestationsNodeIssue ( 1 , reason , partOfCommittee ) ;
309307 }
310308
311309 // Slash invalid block proposals (can happen even when not in committee)
0 commit comments