Skip to content

fix: make consensusProof.finalizedSlot optional (informational metadata) - #148

Merged
Th0rgal merged 1 commit into
mainfrom
fix/finalized-slot-schema-contract
Feb 24, 2026
Merged

fix: make consensusProof.finalizedSlot optional (informational metadata)#148
Th0rgal merged 1 commit into
mainfrom
fix/finalized-slot-schema-contract

Conversation

@Th0rgal

@Th0rgal Th0rgal commented Feb 24, 2026

Copy link
Copy Markdown
Owner

Summary

Context

Issue #135 identified a trust-boundary contract mismatch: finalizedSlot was schema-required (suggesting it's meaningful verification input), but the Rust ConsensusProofInput struct doesn't include it and Helios validates the finality update internally — only extracting the EVM execution state root and block number.

Making it optional aligns the schema with the actual verification boundary. Existing packages that include finalizedSlot still validate; new packages can omit it.

Test plan

  • Type-check passes across all 4 packages
  • All 651 tests pass (545 core + 17 CLI + 89 desktop)
  • Existing test fixtures with finalizedSlot: <number> still validate (backwards compatible)

Closes #135

🤖 Generated with Claude Code


Note

Low Risk
Schema loosening for a field not consumed by verification; main risk is minor compatibility/validation behavior change for producers/consumers expecting it to be required.

Overview
Aligns the evidence package schema with the desktop verification boundary by making consensusProof.finalizedSlot optional and explicitly informational only in the beacon consensus proof schema (now z.number().int().optional()).

Updates AUDIT.md to mark issue #135 as closed, reflecting the schema/documentation correction.

Written by Cursor Bugbot for commit c6b8d00. This will update automatically on new commits. Configure here.

…mational

`finalizedSlot` is populated during evidence generation (beacon API fetch)
but never consumed by the desktop verifier — Helios validates the finality
update internally and only extracts the EVM execution state root and block
number. Making it optional aligns the schema contract with the actual
verification boundary.

Also adds `.int()` constraint consistent with the recent integer-schema
hardening batch.

Closes #135

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@vercel

vercel Bot commented Feb 24, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
safe-lens-generator Building Building Preview, Comment Feb 24, 2026 9:49pm

Request Review

@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.
To continue using code reviews, add credits to your account and enable them for code reviews in your settings.

@Th0rgal
Th0rgal merged commit ff269a2 into main Feb 24, 2026
4 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.

Trust-boundary mismatch: beacon consensusProof.finalizedSlot is schema-required but ignored by desktop verifier

1 participant