Skip to content

Bump leanSpec f12000b, strip production JSON derives#105

Merged
ArtiomTr merged 3 commits into
grandinetech:devnet-4from
bomanaps:bumb/devnet4Test
Jun 17, 2026
Merged

Bump leanSpec f12000b, strip production JSON derives#105
ArtiomTr merged 3 commits into
grandinetech:devnet-4from
bomanaps:bumb/devnet4Test

Conversation

@bomanaps

@bomanaps bomanaps commented Jun 5, 2026

Copy link
Copy Markdown
Contributor

Pinned leanSpec to f12000b, regenerated 554 test vectors from devnet/→lstar/, stripped Serialize/Deserialize from production wire types Block/Validator/State/etc so JSON-format absorption lives in test-side spec_test_fixtures wrappers, kept GenesisConfig derives for config.yaml startup; cargo test goes from 225/131 → 302/51.

Remaining 51 fails 31 fork_choice negative-signature tests where we intentionally skip block sig verification, 17 deferred to cross-language test-infra coordination 8 from a leanMultisig Rust↔Python pin and 9 http_api/api_endpoint tests needing leanSpec's shared XMSS pubkeys to compute matching genesis roots, and 3 bump-related follow-ups where leanSpec's genesis fixtures now drive post-genesis block evolution our runner doesn't process.

@bomanaps

bomanaps commented Jun 5, 2026

Copy link
Copy Markdown
Contributor Author

PSA some of the 48 passing fork_choice tests are silently green because the runner no-ops attestation steps, downstream of the same leanMultisig pin skew.

Comment on lines +1 to +4
// All previous helpers were callers of Serialize/Deserialize on production
// wire types; with those derives stripped the helpers have no remaining
// consumers. JSON parsing now lives in the `spec_test_fixtures` test-side
// wrappers, which carry their own hex/data-envelope handling.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Perfect! Wanted to do the same long time ago. Can you please remove this file too?

attestation_pubkey: String,
#[allow(dead_code)]
#[serde(default)]
#[serde(default, alias = "proposalPubkey")]

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

I think you can just put #[serde(rename_all = "camelCase")] on top of struct, this should make all fields automatically renamed

Comment thread lean_client/Makefile
Comment on lines +68 to +74
cd spec && uv run fill --clean --fork=Lstar --scheme prod || echo "run failed"
@for d in ./spec/fixtures/consensus/*/; do \
f=$$(basename $$d); \
rm -rf ./test_vectors/$$f/devnet ./test_vectors/$$f/lstar; \
mkdir -p ./test_vectors/$$f/lstar; \
cp -R $$d/lstar/. ./test_vectors/$$f/lstar/; \
done

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

why this directory re-mapping is necessary? I was thinking that we may keep the same directory structure, as lean spec has?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Only consensus/ emits the JSON fixtures we can actually consume interop/ and node/ are Python pytest suites that test the spec's own reference node, so there's nothing there for us to import.

@bomanaps bomanaps requested a review from ArtiomTr June 16, 2026 13:10
@ArtiomTr ArtiomTr merged commit ce791bb into grandinetech:devnet-4 Jun 17, 2026
2 of 3 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