Skip to content

fix(ci): repair EE spec test workflows#1836

Open
voidash wants to merge 6 commits into
mainfrom
fix/ee-spec-ci-workflows
Open

fix(ci): repair EE spec test workflows#1836
voidash wants to merge 6 commits into
mainfrom
fix/ee-spec-ci-workflows

Conversation

@voidash
Copy link
Copy Markdown
Contributor

@voidash voidash commented May 19, 2026

Summary

  • Repair the main and staging EE spec workflows so they install EEST dependencies and run against the Alpen EE RPC endpoint.
  • Switch EEST from Shanghai to Prague to match the dev chainspec, which activates Shanghai/Cancun/Prague at genesis.
  • Make strata-zkvm-hosts optional for alpen-client so the native sequencer-only CI build works without sp1.
  • Deselect the remaining known Prague failure: tests/frontier/opcodes/test_call.py::test_call_memory_expands_on_early_revert[fork_Prague-state_test].
  • Increase the EEST transaction wait timeout for hosted runners, which were slower than local on transient-storage reentrancy cases.

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented May 19, 2026

Commit: 48d8dda

SP1 Execution Results

program cycles gas
EVM EE Chunk 565,505 771,876
EVM EE Account 421,125 526,509
Checkpoint 2,241,397 2,582,981

@codecov
Copy link
Copy Markdown

codecov Bot commented May 19, 2026

Codecov Report

❌ Patch coverage is 60.88020% with 160 lines in your changes missing coverage. Please review.
✅ Project coverage is 79.62%. Comparing base (097b2d8) to head (0555f23).
⚠️ Report is 6 commits behind head on main.

Files with missing lines Patch % Lines
bin/alpen-client/src/main.rs 60.88% 160 Missing ⚠️
@@            Coverage Diff             @@
##             main    #1836      +/-   ##
==========================================
- Coverage   79.68%   79.62%   -0.06%     
==========================================
  Files         673      674       +1     
  Lines       74661    74996     +335     
==========================================
+ Hits        59495    59718     +223     
- Misses      15166    15278     +112     
Flag Coverage Δ
functional 59.97% <57.36%> (-0.18%) ⬇️
unit 65.54% <8.55%> (-0.02%) ⬇️

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

Files with missing lines Coverage Δ
bin/alpen-client/src/main.rs 75.61% <60.88%> (-16.02%) ⬇️

... and 38 files with indirect coverage changes

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

@voidash voidash force-pushed the fix/ee-spec-ci-workflows branch from 1e97350 to 5141526 Compare May 20, 2026 08:30
@voidash voidash marked this pull request as ready for review May 20, 2026 10:22
@evgenyzdanovich evgenyzdanovich self-requested a review May 20, 2026 14:09
Copy link
Copy Markdown
Member

@storopoli storopoli left a comment

Choose a reason for hiding this comment

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

ACK 5141526

non-blocking suggestions

Comment thread .github/workflows/main-eest.yml Outdated
Comment on lines +100 to +108
for _i in $(seq 1 60); do
if curl -sf -X POST http://localhost:30303 \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}' > /dev/null 2>&1; then
echo "alpen-client RPC is up"
exit 0
fi
sleep 2
done
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

clever, should we move this to a standalone script in contrib/ so we can have full shellcheck lints on it?

Comment thread .github/workflows/main-eest.yml Outdated
Comment on lines -115 to +130
--tx-wait-timeout 30 \
--tx-wait-timeout 120 \
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Is 120 enough?

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.

running it multiple times. For the first time, 30 didn't work but 120 worked for me so...

Comment thread .github/workflows/staging-eest.yml Outdated
-m state_test \
--fork=Shanghai \
--fork=Prague \
"--deselect=tests/frontier/opcodes/test_call.py::test_call_memory_expands_on_early_revert[fork_Prague-state_test]" \
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

working-directory: docker
run: |
chmod +x test_ee_proof.sh
./test_ee_proof.sh local
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

the whole purpose of this entire pipeline, at least the way I designed it, was to have our EE proofs (for now, chunk proofs) to be generated against the EF tests load (e.g. against the blocks with all these crazy transactions).
without this, we are quite literally testing pure Reth EVM against EF tests (which is pointless).

IMO, the essense of the effort should be directed towards restoring that logic (and re-adopting it for chunk proofs).

@storopoli storopoli requested a review from evgenyzdanovich May 22, 2026 15:39
Comment thread functional-tests/entry.py
# Execution-spec tests only need a sequencer RPC endpoint. Keep this
# isolated from L1 DA/prover services so EEST failures reflect EE
# execution behavior rather than Bitcoin publishing.
"alpen_eest": AlpenClientEnv(fullnode_count=0, enable_l1_da=False),
Copy link
Copy Markdown
Contributor

@evgenyzdanovich evgenyzdanovich May 22, 2026

Choose a reason for hiding this comment

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

I dont know why we'd want a different alpen client for tests.
IMO we want exactly the same env (with the same exact binary under the hood as for the usual ee tests)

Comment thread functional-tests/entry.py
# Alpen-client (EE) environments
"alpen_ee": AlpenClientEnv(enable_l1_da=True),
# Execution-spec tests only need a sequencer RPC endpoint. Keep this
# isolated from L1 DA/prover services so EEST failures reflect EE
Copy link
Copy Markdown
Contributor

@evgenyzdanovich evgenyzdanovich May 22, 2026

Choose a reason for hiding this comment

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

with l1 da disabled, I'm not sure if the batch would ever be "proven", even in native (according to the batch lifecycle, something should be posted on l1 before it transitions to proved).


Options:
--baseline-file FILE File containing byte offset captured before EEST.
--log-file FILE Alpen-client service.log to inspect.
Copy link
Copy Markdown
Contributor

@evgenyzdanovich evgenyzdanovich May 22, 2026

Choose a reason for hiding this comment

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

i'd actually prefer a cleaner assertion path... a test-only RPC (if it doesnt exist yet) exposing parts that you need (chunk/batch/proof status, right from the storage) would not hurt.

we are overly relying on logs, and maintaining such fragile thing would be a nightmare.

P.S. we used to have getProofStatus or smth similar (at TN1 era) to actually assert stuff. Similar thing (whatever bits you need -- proof or chunk or batch status) can be easily exposed and used reliably.

Copy link
Copy Markdown
Contributor

@evgenyzdanovich evgenyzdanovich May 22, 2026

Choose a reason for hiding this comment

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

can you provide a summary of what's happening here (as well as why we need changes)?

frankly, I dont see a single reason to change ee binary as part of this work (besides perhaps adding test only RPC to live-introspect some specific state/storage bits).

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.

4 participants