• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

iotaledger / iota / 30596652036
70%

Build:
DEFAULT BRANCH: develop
Ran 31 Jul 2026 02:27AM UTC
Jobs 1
Files 1058
Run time 2min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

30 Jul 2026 08:57PM UTC coverage: 69.094% (+0.3%) from 68.834%
30596652036

push

github

web-flow
feat(consensus): leader schedule redesign (#12474)

# Description of change

Redesign of the Starfish leader schedule, aimed at removing crashed or
degraded validators from the leader rotation faster. Two independently
flag-gated changes, both off by default:

- **Sliding-window reputation scoring**
(`consensus_enable_sliding_window_leader_schedule`): replaces V2's batch
scoring (accumulate votes for a full schedule period, then rebuild from
scratch) with a running window aggregate updated incrementally on every
commit. The schedule can rotate much more frequently (e.g. every 60
commits over a 300-commit window) with no per-rotation rebuild cost; on
restart the window is rebuilt by replaying committed subdags. Under
`consensus_starfish_speed`, a strong vote (attesting the voter holds the
leader's transaction data, not just its header) counts double in the
sliding-window scorer, so validators that vote on time but consistently
lag on payloads score lower.
- **Absolute-score bad-node selection**
(`consensus_enable_absolute_score_leader_schedule`): replaces the fixed
bottom-stake-rank cut with thresholds on scores normalized to the
window's top performer, so a failing validator is excluded on its own
score instead of having to out-decay the chronically lowest-ranked ones.
Applies to both scoring paths.

Landed parts:

- #11875 sliding-window leader scorer
- #11975 wiring behind the protocol flag
- #12076 metric rename
- #12123 skip V2 vote scoring on the sliding-window path
- #12264 skip sliding-window recovery during fast sync
- #12295 leader-schedule window invariant check
- #12350 certifier scan refactor
- #12408 absolute-score bad-node selection
- #12304 rebuild the sliding window from a recovered scoring backlog
- #12470 double strong votes in sliding-window reputation scoring

Measured on a 20-validator network with crash injection: post-crash
leader timeouts roughly halve versus the current V2 + stake-rank
configuration (~2×, idle and under 100 TP... (continued)

1108 of 1123 new or added lines in 10 files covered. (98.66%)

2713 existing lines in 72 files now uncovered.

165405 of 239390 relevant lines covered (69.09%)

464949.73 hits per line

Uncovered Changes

Lines Coverage ∆ File
7
92.34
-0.57% crates/starfish/core/src/commit_syncer/fast.rs
4
90.75
0.73% crates/iota-protocol-config/src/lib.rs
3
96.9
1.39% crates/starfish/core/src/leader_schedule.rs
1
94.12
0.0% crates/starfish/core/src/universal_committer.rs

Coverage Regressions

Lines Coverage ∆ File
452
0.0
0.0% crates/iota-indexer/src/store/pg_indexer_store.rs
448
5.61
0.0% crates/iota-indexer/src/read.rs
290
83.55
0.29% crates/iota-core/src/authority.rs
201
77.33
0.8% crates/test-cluster/src/lib.rs
158
56.3
-0.43% crates/iota-localnet/src/commands.rs
143
0.0
0.0% crates/iota-indexer/src/ingestion/primary/prepare.rs
115
0.0
0.0% crates/iota-indexer/src/pruning/pruner.rs
70
7.68
-0.09% crates/iota-indexer/src/types.rs
59
0.0
0.0% crates/iota-indexer/src/main.rs
51
0.0
0.0% crates/iota-indexer/src/models/display.rs
50
0.0
0.0% crates/iota-indexer/src/models/epoch.rs
48
0.0
0.0% crates/iota-tool/src/genesis_inspector.rs
47
60.47
1.37% crates/iota-swarm-config/src/genesis_config.rs
45
0.0
0.0% crates/iota-indexer/src/apis/read_api.rs
43
38.31
-0.95% crates/iota-indexer/src/models/checkpoints.rs
37
0.0
0.0% crates/iota-indexer/src/ingestion/common/prepare.rs
36
0.0
0.0% crates/iota-indexer/src/schema.rs
34
94.83
21.44% crates/iota-genesis-builder/src/lib.rs
34
83.06
1.55% crates/iota-tool/src/genesis_ceremony.rs
26
79.77
-0.01% crates/iota-swarm-config/src/network_config_builder.rs
24
0.0
0.0% crates/iota-indexer/src/errors.rs
23
58.26
0.0% crates/iota-cluster-test/src/cluster.rs
19
20.0
-34.55% crates/iota-types/src/timelock/timelock.rs
16
91.91
-1.98% crates/iota-transaction-builder/src/lib.rs
14
0.0
0.0% crates/iota-indexer/src/ingestion/primary/persist.rs
13
77.53
-2.26% crates/iota-types/src/object.rs
12
0.0
-36.36% crates/iota-types/src/stardust/output/alias.rs
11
68.37
0.0% crates/iota-indexer/src/config.rs
11
39.6
-10.89% crates/iota-json-rpc-types/src/object_changes.rs
10
56.3
-7.41% crates/iota-types/src/in_memory_storage.rs
9
26.19
-21.43% crates/iota-types/src/stardust/output/nft.rs
8
62.16
-0.57% crates/iota-json-rpc-types/src/iota_transaction.rs
8
87.72
-2.34% crates/iota-types/src/base_types.rs
8
0.0
-100.0% crates/iota-types/src/stardust/coin_type.rs
8
75.12
-3.98% iota-execution/latest/iota-adapter/src/execution_mode.rs
7
0.0
0.0% crates/iota-analytics-indexer/src/package_store.rs
7
54.55
-3.79% crates/iota-cluster-test/src/config.rs
7
70.83
-14.58% crates/iota-network-stack/src/anemo_ext.rs
6
95.92
0.0% crates/iota-cluster-test/src/lib.rs
6
0.0
-4.72% crates/iota-config/src/migration_tx_data.rs
6
0.0
-22.22% crates/iota-types/src/stardust/output/basic.rs
5
73.77
-8.2% crates/iota-core/src/traffic_controller/nodefw_test_server.rs
5
0.0
0.0% crates/iota-indexer/src/lib.rs
5
0.0
-21.74% crates/iota-types/src/coin_manager.rs
5
70.59
-14.71% crates/iota-types/src/timelock/timelocked_staked_iota.rs
4
67.06
0.51% crates/iota-core/src/authority/authority_store.rs
4
57.76
0.28% crates/iota-json-rpc-types/src/iota_object.rs
4
49.49
1.37% crates/iota-sdk/src/apis/read.rs
4
0.0
-80.0% crates/iota-types/src/messages_safe_client.rs
4
86.21
6.9% crates/iota-vm-sdk/src/executor/types.rs
4
96.77
-0.09% crates/starfish/core/src/dag_state.rs
4
91.98
-0.35% iota-execution/latest/iota-adapter/src/programmable_transactions/context.rs
3
71.43
-14.29% crates/iota-config/src/certificate_deny_config.rs
3
82.14
-2.68% crates/iota-genesis-builder/src/validator_info.rs
3
21.37
-2.29% crates/iota-json-rpc-types/src/iota_checkpoint.rs
3
90.75
0.73% crates/iota-protocol-config/src/lib.rs
3
79.37
-1.05% crates/iota-sdk/src/lib.rs
3
79.02
-1.05% crates/iota-sdk/src/wallet_context.rs
3
70.77
-0.6% crates/iota-swarm/src/memory/swarm.rs
3
89.15
1.84% crates/iota-test-transaction-builder/src/lib.rs
3
72.2
-1.46% crates/iota-types/src/error.rs
3
82.73
0.27% crates/iota-types/src/transaction.rs
3
0.0
-10.0% crates/simulacrum/src/transaction_executor.rs
2
92.28
-0.15% crates/iota-faucet/src/faucet/simple_faucet.rs
2
90.87
-0.11% crates/iota-network/src/state_sync/mod.rs
2
95.8
-0.84% iota-execution/latest/iota-adapter/src/gas_meter.rs
1
86.11
-2.78% crates/iota-cluster-test/src/test_case/native_transfer_test.rs
1
74.89
0.14% crates/iota-network/src/randomness/mod.rs
1
79.77
-0.14% crates/iota-types/src/crypto.rs
1
92.34
-0.57% crates/starfish/core/src/commit_syncer/fast.rs
1
94.12
0.0% crates/starfish/core/src/universal_committer.rs
1
92.41
-0.69% iota-execution/latest/iota-move-natives/src/transfer.rs
Jobs
ID Job ID Ran Files Coverage
1 nextest+simtest - 30596652036.1 31 Jul 2026 02:27AM UTC 1058
69.09
GitHub Action Run
Source Files on build 30596652036
  • Tree
  • List 1058
  • Changed 103
  • Source Changed 46
  • Coverage Changed 96
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #30596652036
  • 057db1b1 on github
  • Prev Build on develop (#30505941318)
  • Next Build on develop (#30678166217)
  • Delete
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc