Gm @oxsteins
I think there may be a validator-set status bug around aggregation proofs.
From what I can tell, ProcessAggregationProof() updates the validator set for that epoch to HeaderAggregated for any aggregation proof:
internal/usecase/entity-processor/entity_processor.go
But in the valset listener flow, it looks like only the dedicated valset-header proof request is treated as the signal that the validator set itself is aggregated:
internal/usecase/valset-listener/valset_listener_uc.go
What makes me think this might matter is that SignMessage can create arbitrary epoch-bound requests, so unrelated proofs for the same epoch may be able to advance validator-set aggregation state.
It also looks like this would affect the repo's latest aggregated valset tracking, not just the per-epoch status flag
Gm @oxsteins
I think there may be a validator-set status bug around aggregation proofs.
From what I can tell,
ProcessAggregationProof()updates the validator set for that epoch toHeaderAggregatedfor any aggregation proof:internal/usecase/entity-processor/entity_processor.goBut in the valset listener flow, it looks like only the dedicated valset-header proof request is treated as the signal that the validator set itself is aggregated:
internal/usecase/valset-listener/valset_listener_uc.goWhat makes me think this might matter is that
SignMessagecan create arbitrary epoch-bound requests, so unrelated proofs for the same epoch may be able to advance validator-set aggregation state.It also looks like this would affect the repo's latest aggregated valset tracking, not just the per-epoch status flag