Skip to content

fix(deps): pin Lighthouse with #9959 for PTC data requests - #1317

Merged
shane-moore merged 1 commit into
sigp:epbsfrom
shane-moore:feat/lighthouse-9959-ptc-query
Sep 28, 2026
Merged

shane-moore merged 1 commit into
sigp:epbsfrom
shane-moore:feat/lighthouse-9959-ptc-query

Conversation

@shane-moore

@shane-moore shane-moore commented Sep 27, 2026 •

Copy link
Copy Markdown
Member

Closes #1291.

Problem, Evidence, and Context (Required)

Change Overview (Required)

  • Pin every Lighthouse dependency to shane-moore/lighthouse 1513afc46a9637c07f3e63de61a080adbced108f (branch anchor/unstable-9ee3fd7-pr9959): Lighthouse unstable 9ee3fd72 from chore(deps): update Lighthouse to unstable 9ee3fd72 #1316 plus #9959 at b1d4479e, squashed. Its tree equals a merge of the PR head into that commit.
  • No Anchor source changes. PTC data requests now use ?slot=; 204 means no block and the duty abstains; 404 and other failures surface as request errors instead of the misleading "No block received for slot".

Risks, Trade-offs, and Mitigations (Required)

  • Anchor's PTC duty now needs a beacon node that serves ?slot=. Lighthouse beacon nodes built without #9959 (no Lighthouse release includes it yet) reject it, so PTC fails on them until Lighthouse ships #9959. It is labelled for v8.3.0.
  • The dependency lives on a personal fork branch. That branch must not be deleted while any tag builds from it. Switch back to sigp/lighthouse at the next pin bump after #9959 merges.

Validation (Required)

  • Lighthouse validator_services PTC tests at 1513afc4: 17 passed, including #9959's 204 no-block test.
  • make cargo-fmt-check, make lint, make test (release): passed, 993 tests.
  • Mixed ssv-mini run, two Anchor and two go-ssv (ePBS (EIP-7732 / Gloas) — SIP-94 ssvlabs/ssv#2901 8d4f83fa) with quorum three, Lighthouse beacon node at 1513afc4, Gloas at epoch 4, observed through epoch 10: all 60 managed PTC assignments in epochs 4 to 9 were published by every operator of both clients, and the next block carried each slot's payload attestation with all 512 bits set (the one exception followed a missed block). Zero PTC request errors. The same topology on 2026-09-25 published 0 of 40.
  • Not exercised: a managed PTC duty on an empty slot (the 204 path). The baseline Lighthouse validator client, which runs the same client code, had PTC duties at the run's one empty slot and abstained without an error.

Rollback (Required for behavior or runtime changes; optional otherwise)

Revert to the #1316 pin. PTC then fails again against spec beacon nodes and in mixed committees.

🤖 Generated with Claude Code

@codecov-commenter

codecov-commenter commented Sep 27, 2026 •

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
⚠️ Please upload report for BASE (epbs@9dcc7e1). Learn more about missing BASE report.

Additional details and impacted files
@@           Coverage Diff           @@
##             epbs    #1317   +/-   ##
=======================================
  Coverage        ?   80.79%           
=======================================
  Files           ?      179           
  Lines           ?    41198           
  Branches        ?        0           
=======================================
  Hits            ?    33285           
  Misses          ?     7913           
  Partials        ?        0           
Flag Coverage Δ
rust 80.79% <ø> (?)

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.

PTC data requests put the slot in the URL path. The Beacon API spec,
Lodestar and go-ssv use ?slot=, so the PTC duty fails against spec
beacon nodes and a mixed Anchor/go-ssv committee never reaches PTC
quorum (sigp#1291). sigp/lighthouse#9959 fixes both the client and the
beacon node route but is not merged yet, so pin a fork branch that
applies it to unstable 9ee3fd72. Return to sigp/lighthouse once #9959
merges.
@shane-moore
shane-moore force-pushed the feat/lighthouse-9959-ptc-query branch from 646f29b to fdfc09f Compare September 28, 2026 00:03
@shane-moore

Copy link
Copy Markdown
Member Author

Review by Claude Opus 5.5

No blocking issues. 1513afc4 has a single parent, 9ee3fd72, and its tree equals the merge of sigp/lighthouse#9959's current head (b1d4479e) into that commit, so the fork adds nothing beyond #9959. Among the crates Anchor builds, only the eth2 PTC data client changes: requests go to ?slot=, 204 means no block, and other statuses are errors, which matches the beacon-APIs spec. Anchor reaches it only through Lighthouse's PTC service. On the deadline path, a beacon node without #9959 now returns an error, so first_success moves on to the next node instead of reading a false "no block". The lockfile resolves with --locked.

  • The description said this PR was stacked on and depended on chore(deps): update Lighthouse to unstable 9ee3fd72 #1316, and that #9959 lacked the v8.3.0 label, which it now has. I've updated the description.
  • Coverage gap that predates this PR: the CI local testnet runs Fulu on Lighthouse v8.2.1, so no CI job exercises the PTC request. The mixed ssv-mini run in the description is the only runtime evidence. It still applies after the rebase: the #9959 patch is identical, and the new base differs only by chore(deps): update Lighthouse to unstable 9ee3fd72 #1316's comment fix.

@shane-moore
shane-moore merged commit d307abf into sigp:epbs Sep 28, 2026
22 checks passed
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