May 20, 2-3 PM (21)
May 20, 3-4 PM (326)
May 20, 4-5 PM (23)
May 20, 5-6 PM (23)
May 20, 6-7 PM (17)
May 20, 7-8 PM (23)
May 20, 8-9 PM (15)
May 20, 9-10 PM (5)
May 20, 10-11 PM (34)
May 20, 11-12 AM (16)
May 21, 12-1 AM (16)
May 21, 1-2 AM (9)
May 21, 2-3 AM (11)
May 21, 3-4 AM (7)
May 21, 4-5 AM (4)
May 21, 5-6 AM (27)
May 21, 6-7 AM (14)
May 21, 7-8 AM (22)
May 21, 8-9 AM (34)
May 21, 9-10 AM (45)
May 21, 10-11 AM (37)
May 21, 11-12 PM (27)
May 21, 12-1 PM (63)
May 21, 1-2 PM (68)
May 21, 2-3 PM (60)
May 21, 3-4 PM (53)
May 21, 4-5 PM (20)
May 21, 5-6 PM (27)
May 21, 6-7 PM (27)
May 21, 7-8 PM (25)
May 21, 8-9 PM (23)
May 21, 9-10 PM (3)
May 21, 10-11 PM (29)
May 21, 11-12 AM (10)
May 22, 12-1 AM (16)
May 22, 1-2 AM (6)
May 22, 2-3 AM (8)
May 22, 3-4 AM (4)
May 22, 4-5 AM (11)
May 22, 5-6 AM (10)
May 22, 6-7 AM (21)
May 22, 7-8 AM (13)
May 22, 8-9 AM (38)
May 22, 9-10 AM (12)
May 22, 10-11 AM (18)
May 22, 11-12 PM (25)
May 22, 12-1 PM (24)
May 22, 1-2 PM (34)
May 22, 2-3 PM (56)
May 22, 3-4 PM (13)
May 22, 4-5 PM (29)
May 22, 5-6 PM (13)
May 22, 6-7 PM (19)
May 22, 7-8 PM (20)
May 22, 8-9 PM (12)
May 22, 9-10 PM (12)
May 22, 10-11 PM (41)
May 22, 11-12 AM (12)
May 23, 12-1 AM (9)
May 23, 1-2 AM (0)
May 23, 2-3 AM (3)
May 23, 3-4 AM (1)
May 23, 4-5 AM (1)
May 23, 5-6 AM (4)
May 23, 6-7 AM (12)
May 23, 7-8 AM (1)
May 23, 8-9 AM (3)
May 23, 9-10 AM (1)
May 23, 10-11 AM (1)
May 23, 11-12 PM (5)
May 23, 12-1 PM (1)
May 23, 1-2 PM (6)
May 23, 2-3 PM (5)
May 23, 3-4 PM (5)
May 23, 4-5 PM (4)
May 23, 5-6 PM (0)
May 23, 6-7 PM (3)
May 23, 7-8 PM (23)
May 23, 8-9 PM (1)
May 23, 9-10 PM (9)
May 23, 10-11 PM (21)
May 23, 11-12 AM (27)
May 24, 12-1 AM (9)
May 24, 1-2 AM (0)
May 24, 2-3 AM (1)
May 24, 3-4 AM (1)
May 24, 4-5 AM (0)
May 24, 5-6 AM (3)
May 24, 6-7 AM (1)
May 24, 7-8 AM (2)
May 24, 8-9 AM (2)
May 24, 9-10 AM (4)
May 24, 10-11 AM (4)
May 24, 11-12 PM (1)
May 24, 12-1 PM (7)
May 24, 1-2 PM (46)
May 24, 2-3 PM (5)
May 24, 3-4 PM (3)
May 24, 4-5 PM (18)
May 24, 5-6 PM (2)
May 24, 6-7 PM (4)
May 24, 7-8 PM (13)
May 24, 8-9 PM (10)
May 24, 9-10 PM (15)
May 24, 10-11 PM (33)
May 24, 11-12 AM (42)
May 25, 12-1 AM (9)
May 25, 1-2 AM (4)
May 25, 2-3 AM (6)
May 25, 3-4 AM (1)
May 25, 4-5 AM (6)
May 25, 5-6 AM (14)
May 25, 6-7 AM (17)
May 25, 7-8 AM (17)
May 25, 8-9 AM (32)
May 25, 9-10 AM (43)
May 25, 10-11 AM (64)
May 25, 11-12 PM (33)
May 25, 12-1 PM (43)
May 25, 1-2 PM (40)
May 25, 2-3 PM (20)
May 25, 3-4 PM (27)
May 25, 4-5 PM (16)
May 25, 5-6 PM (6)
May 25, 6-7 PM (7)
May 25, 7-8 PM (11)
May 25, 8-9 PM (12)
May 25, 9-10 PM (16)
May 25, 10-11 PM (43)
May 25, 11-12 AM (25)
May 26, 12-1 AM (11)
May 26, 1-2 AM (11)
May 26, 2-3 AM (8)
May 26, 3-4 AM (11)
May 26, 4-5 AM (6)
May 26, 5-6 AM (9)
May 26, 6-7 AM (26)
May 26, 7-8 AM (43)
May 26, 8-9 AM (39)
May 26, 9-10 AM (42)
May 26, 10-11 AM (45)
May 26, 11-12 PM (59)
May 26, 12-1 PM (34)
May 26, 1-2 PM (50)
May 26, 2-3 PM (50)
May 26, 3-4 PM (17)
May 26, 4-5 PM (20)
May 26, 5-6 PM (13)
May 26, 6-7 PM (20)
May 26, 7-8 PM (12)
May 26, 8-9 PM (15)
May 26, 9-10 PM (15)
May 26, 10-11 PM (35)
May 26, 11-12 AM (30)
May 27, 12-1 AM (16)
May 27, 1-2 AM (8)
May 27, 2-3 AM (9)
May 27, 3-4 AM (5)
May 27, 4-5 AM (32)
May 27, 5-6 AM (9)
May 27, 6-7 AM (49)
May 27, 7-8 AM (63)
May 27, 8-9 AM (37)
May 27, 9-10 AM (71)
May 27, 10-11 AM (83)
May 27, 11-12 PM (30)
May 27, 12-1 PM (50)
May 27, 1-2 PM (19)
May 27, 2-3 PM (5)
3,617 commits this week May 20, 2026 - May 27, 2026
sim-rs: replace vote-threshold with quorum-weight-fraction (CIP-164 PR #1196)
The YAML knob `vote-threshold: u64` (absolute count, mode-dependent
in meaning) is replaced by `quorum-weight-fraction: f64` (always a
fraction). The absolute threshold is derived at config build from
`quorum_weight_fraction × expected_total_weight`, with the
denominator per mode: PV+NPV seats (WfaLs), node count (Everyone),
total active stake (TopStakeFraction).

Default kept at 0.6 (legacy 300/500) in config.default.yaml to
preserve existing-experiment numerics; code default 0.75 (CIP-0164).

For TopStakeFraction, `try_vote_for_endorser_block` emits the
voter's own stake as the per-EB weight (rather than 1). The quorum
check is unchanged in form — `Σ weight ≥ vote_threshold()` — because
the threshold method now returns stake-denominated values.

`SimConfiguration::build` enforces σ_c > τ for TopStakeFraction and
bails with a clear error referencing the PR. Two new tests:
`top_stake_fraction_uses_stake_weighted_quorum` (per-voter weight =
stake, low-stake majority does NOT certify) and
`sim_config_rejects_top_stake_fraction_when_sigma_c_le_tau`.

`shared_consensus.rs` adapter: `derive_quorum_fraction` collapses to
a passthrough; expected_total_weight uses the new helper.

Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
shared-consensus: stake-weighted quorum for StakeCentile (CIP-164 PR #1196)
Quorum is now `Σ voter_stake ≥ τ × total_active_stake` under
StakeCentile committee selection. WfaLs and EveryoneVotes keep their
head-count semantics. The aggregator's per-voter weight unit is now
mode-polymorphic — seats for WfaLs, 1 for Everyone, voter stake for
StakeCentile — and the denominator returned by
`committee::expected_total_weight` matches.

`wfa.rs` is renamed to `committee.rs` since wFA^LS is one of three
schemes now, not the only one. `voter_weights` and the `weight`
parameter widen from u32 to u64 so stake values fit; quorum
comparisons follow.

`ElectionsConfig::validate()` enforces σ_c > τ at startup for
StakeCentile (PR #1196 §"Quorum as a stake threshold"); both the
sim-rs adapter and net-rs net-node panic on a misconfigured set.

Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
Add Spec.Data.Value.Budget — non-builtin valueOf evidence
Adds `Spec.Data.Value.Budget` with the lookup matrix for `valueOf` across
S1 / S3 / S8 / S100 value shapes at ada / middle / last / miss positions,
plus the standalone `unsafeDataAsValue` baseline per shape. Generated 96
golden files (eval / pir / uplc per bundle, 32 bundles total) capture CPU
and Memory cost evidence.

Companion to the merge PR for `valueOf` rewrite. This branch is kept
separate so the goldens — which only regenerate on upstream plugin or
cost-model changes, not on actual regressions — don't bloat the main
PR's diff or CI.

For IntersectMBO/plutus-private#2242.
feat(dingo): Mithril sync progress view + governance counter in diagnostics (#456)
* feat(dingo): Added mithril sync progress view metrics and validated manually with dingo mitrhil sync along with unit-tests

Signed-off-by: akrepala <[email protected]>

* feat(dingo): Fixed the lint errors

Signed-off-by: akrepala <[email protected]>

* feat(dingo): Fixed the lint errors

Signed-off-by: akrepala <[email protected]>

* feat(dingo): Made changes to broaden the isMithrilSyncActive

Signed-off-by: akrepala <[email protected]>

* feat(dingo): Made changes to restore diagnostics globals in governance test

Signed-off-by: akrepala <[email protected]>

* feat(dingo): Added remaining Mithril sync metrics

Signed-off-by: akrepala <[email protected]>

* feat(dingo): Made changes to TestUpdateMithrilViewAutoSwitch to save the original detectedNodeBinary value and restores that exact value in defer block

Signed-off-by: akrepala <[email protected]>

* feat(dingo): Made changes to preserve ledger import stage metrics

Signed-off-by: akrepala <[email protected]>

* feat(dingo): Fixed the lint errors

Signed-off-by: akrepala <[email protected]>

* feat(dingo): Made changes to avoid clobbering ledger import aggregates

Signed-off-by: akrepala <[email protected]>

* fix(dingo): Made changes to remove mithril view shortcut and kept mithril view automatic only

Signed-off-by: akrepala <[email protected]>

---------

Signed-off-by: akrepala <[email protected]>
Co-authored-by: akrepala <[email protected]>
Add valueOf golden coverage in Spec.Data.Budget
Adds a PIR-readable snapshot and four budget snapshots for the new `valueOf`
implementation, registered alongside the existing golden coverage for
`gt`, `geq`, and `currencySymbolValueOf`.

Scenarios:
- valueOf_hit_first: ada-like first-position lookup, exercises short-circuit on the first outer step.
- valueOf_hit_middle: key at the middle of the outer map.
- valueOf_hit_last: key at the last entry, full outer scan.
- valueOf_miss: absent key, full scan with no inner walk.

These tests catch regressions in `valueOf` compilation and cost that would
otherwise surface only through downstream callers (`currencySymbolValueOf`,
`assetClassValueOf`, `geq`, etc.).
net-ui: suppress LeiosElectionInfo from the event log
The event is internal — it drives the server-side per-slot vote
aggregation in net-cluster's `AggregatedNodeStats` (consumed by the
votes-distribution panel via the votes API), not user-facing
diffusion telemetry.  Drop it before the ring-buffer push so it
doesn't clutter the event log scroll without affecting the
aggregation path.

Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>