Skip to content

fix: align Gloas aggregation timing with Lighthouse - #1297

Merged
shane-moore merged 2 commits into
sigp:epbsfrom
shane-moore:fix/1292-gloas-aggregation-timing
Sep 8, 2026
Merged

fix: align Gloas aggregation timing with Lighthouse#1297
shane-moore merged 2 commits into
sigp:epbsfrom
shane-moore:fix/1292-gloas-aggregation-timing

Conversation

@shane-moore

@shane-moore shane-moore commented Sep 8, 2026

Copy link
Copy Markdown
Member

Problem, Evidence, and Context

Addresses #1292. In the reported Gloas interop run, Anchor aggregation duties used the old two-thirds-slot timing while Go SSV used half a slot. Lighthouse #9823 supplies the fork-aware service triggers, but Anchor also needs to align its own consensus origins and metadata scheduler.

Change Overview

  • Bump Lighthouse from e58ec88fe to upstream unstable 1256bd99e1b6c5d1290241849354b7e27dbc0ed9.
  • Align legacy aggregate/contribution and Boole aggregator-committee round origins with the duty slot's deadline.
  • Schedule shared aggregation metadata using the upcoming slot's fork, including the first Gloas slot.

Selection-proof expiry remains separate in #1114.

Risks, Trade-offs, and Mitigations

The Lighthouse upgrade also inherits PTC concurrency and Gloas registration changes. Builder PRs #1282, #1283 and #1285 carry additional unmerged Lighthouse APIs, so their pins need reconciliation when rebasing.

The audit adds two allowed warnings for upstream lru 0.13: RUSTSEC-2026-0002 and RUSTSEC-2026-0253. Static review found no calls to the affected APIs in its new consumer.

Validation

  • Workspace check at Rust 1.91, formatting, lint and dependency audit pass.
  • Validator-store suite: 170 passed, including three Gloas-boundary regressions.
  • Restoring old QBFT origins fails all three regressions with a two-second mismatch; restoring only the old scheduler fails the metadata release test.
  • make test: 946 passed, 0 failed, 0 ignored across the release workspace suite.

The scheduler test injects assignments and exercises the real contribution consumer; it does not cover beacon fetching or duty discovery.

Rollback

Revert this PR, including the lockfile. No database or configuration migration.

Blockers / Dependencies

Draft pending the exact base/candidate, two Anchor plus two Go SSV runtime comparison with Gloas enabled and Boole disabled. Local image preparation stopped because Docker storage is below the harness's launch requirement. No mixed-client run or issue closure is claimed.

CI image construction is blocked before Rust compilation by expired Debian Bullseye security metadata (job log). The Dockerfile is unchanged. The remaining Rust CI jobs are still running.

Pin Lighthouse to upstream unstable 1256bd99e and align aggregation round origins and shared metadata scheduling with the duty slot fork. Add regression coverage for the first Gloas slot.

Addresses sigp#1292.
@shane-moore
shane-moore marked this pull request as ready for review September 8, 2026 00:06
@codecov-commenter

codecov-commenter commented Sep 8, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 96.29630% with 9 lines in your changes missing coverage. Please review.
⚠️ Please upload report for BASE (epbs@cff7228). Learn more about missing BASE report.

Files with missing lines Patch % Lines
anchor/validator_store/src/metadata_service.rs 65.38% 9 Missing ⚠️
Additional details and impacted files
@@           Coverage Diff           @@
##             epbs    #1297   +/-   ##
=======================================
  Coverage        ?   78.79%           
=======================================
  Files           ?      179           
  Lines           ?    39632           
  Branches        ?        0           
=======================================
  Hits            ?    31228           
  Misses          ?     8404           
  Partials        ?        0           
Flag Coverage Δ
rust 78.79% <96.29%> (?)

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@shane-moore shane-moore left a comment

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewed by gpt-6-astra.

No actionable findings after the three-pass review at 9355b8ee. The Lighthouse triggers, Anchor consensus origins, and metadata scheduler use the duty slot's fork-specific timing, including the first Gloas slot.

Verified CI logs: 944 tests passed in each debug/release suite, including all three new timing regressions. Formatting, lint, and the local testnet passed. Tests were not rerun locally.

The mixed Anchor/Go Gloas timing comparison remains unverified. CI runs four Anchor nodes with Boole enabled, so it does not establish the Gloas-enabled, Boole-disabled result required for #1292. Selection-proof expiry remains separate in #1114.

@shane-moore
shane-moore merged commit ff74ca0 into sigp:epbs Sep 8, 2026
20 checks passed
@shane-moore
shane-moore deleted the fix/1292-gloas-aggregation-timing branch September 8, 2026 01:49
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants