feat(core): implement core/bcast#480
Conversation
|
@claude review this PR |
|
Claude finished @iamquang95's task in 4m 6s —— View job Review:
|
| Component | Go | Rust | Match | Notes |
|---|---|---|---|---|
Duty routing (Broadcast) |
present | present | yes | Deprecated/Randao/Prepare cases match |
| Electra validator-index backfill | present | present | yes | warn + verify + match-by-sig |
PriorAttestationKnown swallow |
strings.Contains |
to_string().contains |
yes | |
Attester delay slotDuration/3 |
*1/3 |
div_duration(_,3) |
yes | |
Agg/SyncContrib delay *2/3 |
*2/3 |
mul-then-div | yes | rounding preserved (commit 018fd26) |
firstSlotInCurrentEpoch |
wraps on negative age | errors on negative age | partial | safer; future-genesis only |
| Recaster store / older-slot skip | >= |
>= |
yes | |
Recaster FirstInEpoch gate |
present | present | yes | |
Metric names core_bcast_* |
namespace+subsystem | prefix="core_bcast" |
yes | matches codebase _total convention |
recast source pregen/downstream |
Slot > 0 |
inner() > 0 |
yes | |
| Exit error propagation | last-iteration wins | any-failure wins | no | see Medium finding |
Tests
- Not run locally. CI is green: Build and test code, Linter check, Semver checks, and create cluster Charon parity all pass (run
27532635119). - Strong unit coverage added: duty routing, prior-known swallow, Electra backfill, set-conversion error strings, active-validator filtering, recaster epoch/active-set behavior, and
to_consensus_version/resolve_fork_versiontie-break tests.
Open questions
- Is the
broadcast_exitserror-propagation change (any-failure vs Go's last-iteration) intentional? If so, a one-line comment would help future parity reviews. - Confirm the conditional delay observation is the desired metrics behavior (it diverges slightly from Go's always-observe).
· branchiamquang95/core-bcast
No description provided.