tests: revamp and simplify interop tests#399
Open
tcoratger wants to merge 10 commits intoleanEthereum:mainfrom
Open
tests: revamp and simplify interop tests#399tcoratger wants to merge 10 commits intoleanEthereum:mainfrom
tcoratger wants to merge 10 commits intoleanEthereum:mainfrom
Conversation
Poll loops capture safe_targets/justified_slots before sleeping 2s. During that sleep, gossip updates the store. If the timeout expires, the assertion uses the stale pre-sleep snapshot while diagnostics show fresh values. Re-read values after diagnostics to fix. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Remove phases 4-7 (safe target, justification, finalization, sustained finalization) which require the attestation pipeline to meet 800ms interval deadlines. On a 2-core CI runner with 3 nodes sharing one asyncio event loop, CPU contention causes missed intervals, divergent attestation targets, and aggregation failures (nagg=0 on all nodes). Keep 4 timing-tolerant phases: 1. Connectivity (QUIC full mesh) 2. Block production (gossip propagation, chain integrity, proposer rotation) 3. Attestation pipeline activity (gossip signatures enter pipeline) 4. Continued production (multi-slot growth, head consistency, block content) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
tcoratger
commented
Feb 15, 2026
Comment on lines
+971
to
+986
| all_payloads: dict[SignatureKey, list[AggregatedSignatureProof]] = dict( | ||
| self.latest_known_aggregated_payloads | ||
| ) | ||
| for sig_key, proofs in self.latest_new_aggregated_payloads.items(): | ||
| if sig_key in all_payloads: | ||
| # Both pools have proofs for this key. Combine them. | ||
| all_payloads[sig_key] = [*all_payloads[sig_key], *proofs] | ||
| else: | ||
| # Only "new" has proofs for this key. Add them directly. | ||
| all_payloads[sig_key] = proofs | ||
|
|
||
| # Find head with minimum attestation threshold. | ||
| # Convert the merged aggregated payloads into per-validator votes. | ||
| # | ||
| # Each proof encodes which validators participated. | ||
| # This step unpacks those bitfields into a flat mapping of validator -> vote. | ||
| attestations = self.extract_attestations_from_aggregated_payloads(all_payloads) |
Collaborator
Author
tcoratger
commented
Feb 15, 2026
|
|
||
| def on_tick( | ||
| self, time: Uint64, has_proposal: bool, is_aggregator: bool = False | ||
| self, target_interval: Uint64, has_proposal: bool, is_aggregator: bool = False |
Collaborator
Author
There was a problem hiding this comment.
@MegaRedHand Let me know if this solves the problem you had in mind?
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
🗒️ Description
🔗 Related Issues or PRs
✅ Checklist
toxchecks to avoid unnecessary CI fails:uvx tox