Skip to content
This repository was archived by the owner on Jan 16, 2026. It is now read-only.

feat(ci): Add kona + cannon job#2711

Merged
clabby merged 2 commits intomainfrom
cl/kona-cannon-ci
Aug 15, 2025
Merged

feat(ci): Add kona + cannon job#2711
clabby merged 2 commits intomainfrom
cl/kona-cannon-ci

Conversation

@clabby
Copy link
Copy Markdown
Contributor

@clabby clabby commented Aug 14, 2025

Overview

Adds a CI job to run kona-client on cannon64.

Also upgrades the dep of nybbles; There was a bug that I introduced recently for big-endian targets, fix included in alloy-rs/nybbles#35.

@clabby clabby self-assigned this Aug 14, 2025
@clabby clabby added K-feature Kind: feature A-ci Area: CI F-deps Flag: Updates dependencies labels Aug 14, 2025
@claude
Copy link
Copy Markdown
Contributor

claude bot commented Aug 14, 2025

Claude finished @clabby's task —— View job


PR Review Complete ✅

I've reviewed the PR that adds a kona + cannon CI job and upgrades the nybbles dependency.

Review Checklist:

  • Read and analyze all modified files
  • Review CI workflow changes in .github/workflows/proof.yaml
  • Check dependency updates in Cargo.toml and Cargo.lock
  • Analyze .gitignore and justfile changes
  • Evaluate code quality, security, and best practices
  • Provide comprehensive feedback

Code Quality & Best Practices ✅

Overall Assessment: The changes are well-structured and follow good practices. The CI modifications properly extend the existing matrix strategy to include cannon alongside native and asterisc.

Strengths:

  • Consistent pattern matching with existing asterisc implementation
  • Proper conditional step execution using GitHub Actions conditionals
  • Clean separation of concerns between different build targets
  • Go version updated to 1.23.8 (consistent across both asterisc and cannon)

CI Workflow Changes 📋

.github/workflows/proof.yaml (Lines 100, 117-150):

  • ✅ Added cannon to the matrix strategy alongside existing targets
  • ✅ Proper conditional steps using contains(matrix.target, 'cannon')
  • ✅ Separate Go toolchain setup for cannon vs asterisc caching
  • ✅ Correct repository cloning (ethereum-optimism/optimism)
  • ✅ Build process follows established pattern

Minor Observation: The Go version was upgraded from 1.21.6 to 1.23.8 for asterisc - this should be fine but worth noting as a potentially breaking change if there are compatibility issues.

Dependency Updates 🔧

Cargo.toml + Cargo.lock:

  • ✅ Added patch for nybbles dependency pointing to cl/pack-fix branch
  • ✅ Targets a specific commit (35e5f12ee1d54b5a0f545ef61cd5d85205969f7f)
  • ✅ Addresses big-endian target bug as mentioned in PR description

Security Note: Using a Git patch is appropriate for bug fixes, but ensure this branch gets merged upstream and the patch can be removed in future versions.

File Management Changes 🗂️

.gitignore (Lines 38-40):

  • ✅ Fixed paths: removed ./ prefix from FPVM artifacts
  • ✅ Makes gitignore patterns more standard and reliable

bin/client/justfile (Line 226):

  • ✅ Updated cannon type from multithreaded64-4 to multithreaded64-5
  • ✅ This appears to be version upgrade for cannon compatibility

Potential Issues & Considerations ⚠️

  1. Go Version Bump: The Go version upgrade from 1.21.6 → 1.23.8 could potentially cause issues if asterisc has compatibility requirements. Consider testing this change thoroughly.

  2. Git Patch Dependency: The nybbles patch should be temporary. Consider creating a plan to get the fix merged upstream and remove the patch.

  3. CI Resource Usage: Adding another matrix target will increase CI time and resource usage. The 20-minute timeout should be sufficient, but monitor for any timing issues.

Performance Considerations ⚡

  • The parallel execution of different targets is well-designed
  • Each target has its own caching strategy which is good for build performance
  • No significant performance regressions expected

Security Assessment 🔒

  • ✅ No security concerns identified
  • ✅ Git repository URLs are official Ethereum Optimism repos
  • ✅ Version pinning is appropriate (v1.3.0 for asterisc)
  • ✅ Using commit hash for nybbles patch provides immutability

Test Coverage 🧪

The changes extend existing test coverage to include the cannon target, which improves overall test coverage for the fault proof system. The offline test execution pattern is maintained consistently.

Recommendations 📝

  1. Monitor CI Performance: Keep an eye on the CI execution time with the additional cannon target
  2. Upstream the nybbles fix: Work towards getting the big-endian fix merged upstream to remove the Git patch dependency
  3. Document the Go version upgrade: Consider documenting why the Go version was upgraded in case of future compatibility questions

Conclusion 🎯

This is a solid PR that properly extends the CI infrastructure to support cannon alongside existing targets. The implementation follows established patterns and maintains good separation of concerns. The dependency fix addresses a legitimate bug for big-endian targets.

Approved ✅ - The changes are ready to merge.


@clabby clabby force-pushed the cl/kona-cannon-ci branch 2 times, most recently from ba6e94d to 4d5062f Compare August 14, 2025 19:03
@codecov
Copy link
Copy Markdown

codecov bot commented Aug 14, 2025

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 85.2%. Comparing base (89a867a) to head (9d25c03).
⚠️ Report is 2 commits behind head on main.
✅ All tests successful. No failed tests found.

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

🚀 New features to boost your workflow:
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@refcell refcell force-pushed the cl/kona-cannon-ci branch from 4d5062f to 9d25c03 Compare August 15, 2025 13:50
@clabby clabby marked this pull request as ready for review August 15, 2025 16:31
Copilot AI review requested due to automatic review settings August 15, 2025 16:31
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull Request Overview

This PR adds support for running the kona-client on the cannon64 fault proof system by adding a new CI job configuration. The changes extend the existing proof workflow to support a third target alongside the existing native and asterisc targets.

Key changes include:

  • Added cannon as a new target in the CI matrix
  • Implemented separate build steps for asterisc and cannon targets with proper conditional logic
  • Updated Go version from 1.21.6 to 1.23.8 for both targets

Tip: Customize your code reviews with copilot-instructions.md. Create the file or learn how to get started.
You can also share your feedback on Copilot code review for a chance to win a $100 gift card. Take the survey.

@claude
Copy link
Copy Markdown
Contributor

claude bot commented Aug 15, 2025

Claude finished @clabby's task —— View job


PR Review Complete ✅

I've reviewed the PR that adds a kona + cannon CI job and upgrades the nybbles dependency.

Review Checklist:

  • Read and analyze all modified files
  • Review CI workflow changes in .github/workflows/proof.yaml
  • Check dependency updates in Cargo.toml and Cargo.lock
  • Analyze .gitignore and justfile changes
  • Evaluate code quality, security, and best practices
  • Provide comprehensive feedback

Code Quality & Best Practices ✅

Overall Assessment: The changes are well-structured and follow good practices. The CI modifications properly extend the existing matrix strategy to include cannon alongside native and asterisc.

Strengths:

  • Consistent pattern matching with existing asterisc implementation at .github/workflows/proof.yaml:119-149
  • Proper conditional step execution using GitHub Actions conditionals
  • Clean separation of concerns between different build targets
  • Go version updated to 1.23.8 (consistent across both asterisc and cannon)

CI Workflow Changes 📋

.github/workflows/proof.yaml (Lines 100, 117-150):

  • ✅ Added cannon to the matrix strategy alongside existing targets
  • ✅ Proper conditional steps using contains(matrix.target, 'cannon')
  • ✅ Separate Go toolchain setup for cannon vs asterisc caching
  • ✅ Correct repository cloning (ethereum-optimism/optimism)
  • ✅ Build process follows established pattern

Minor Observation: The Go version was upgraded from 1.21.6 to 1.23.8 for asterisc - this should be fine but worth noting as a potentially breaking change if there are compatibility issues.

Dependency Updates 🔧

Cargo.lock:

  • ✅ Shows nybbles version 0.4.3 from registry (no git patch found)
  • ✅ The PR description mentions a big-endian bug fix but appears the dependency was updated normally rather than patched

Note: Contrary to the PR description mentioning a patch, the Cargo.lock shows nybbles 0.4.3 from the registry, suggesting the fix was released normally.

File Management Changes 🗂️

.gitignore (Lines 38-40):

  • ✅ Fixed paths: removed ./ prefix from FPVM artifacts
  • ✅ Makes gitignore patterns more standard and reliable

bin/client/justfile (Line 226):

  • ✅ Updated cannon type from multithreaded64-4 to multithreaded64-5
  • ✅ This appears to be version upgrade for cannon compatibility

Potential Issues & Considerations ⚠️

  1. Go Version Bump: The Go version upgrade from 1.21.6 → 1.23.8 could potentially cause issues if asterisc has compatibility requirements. Consider testing this change thoroughly.

  2. nybbles Dependency: The PR description mentions a git patch but Cargo.lock shows registry version 0.4.3. This suggests the fix was properly released, which is good.

  3. CI Resource Usage: Adding another matrix target will increase CI time and resource usage. The 20-minute timeout should be sufficient, but monitor for any timing issues.

Performance Considerations ⚡

  • The parallel execution of different targets is well-designed
  • Each target has its own caching strategy which is good for build performance
  • No significant performance regressions expected

Security Assessment 🔒

  • ✅ No security concerns identified
  • ✅ Git repository URLs are official Ethereum Optimism repos
  • ✅ Version pinning is appropriate (v1.3.0 for asterisc)
  • ✅ Using standard registry dependencies

Test Coverage 🧪

The changes extend existing test coverage to include the cannon target, which improves overall test coverage for the fault proof system. The offline test execution pattern is maintained consistently.

Recommendations 📝

  1. Monitor CI Performance: Keep an eye on the CI execution time with the additional cannon target
  2. Document the Go version upgrade: Consider documenting why the Go version was upgraded in case of future compatibility questions
  3. Verify nybbles fix: Confirm that nybbles 0.4.3 includes the big-endian fix mentioned in the PR description

Conclusion 🎯

This is a solid PR that properly extends the CI infrastructure to support cannon alongside existing targets. The implementation follows established patterns and maintains good separation of concerns. The dependency update appears to have been handled properly through normal registry channels.

Approved ✅ - The changes are ready to merge.


@clabby clabby added this pull request to the merge queue Aug 15, 2025
Merged via the queue into main with commit 5fa0a22 Aug 15, 2025
35 checks passed
@clabby clabby deleted the cl/kona-cannon-ci branch August 15, 2025 17:06
theochap pushed a commit to ethereum-optimism/optimism that referenced this pull request Dec 10, 2025
## Overview

Adds a CI job to run `kona-client` on `cannon64`.

Also upgrades the dep of `nybbles`; There was a bug that I introduced
recently for big-endian targets, fix included in
alloy-rs/nybbles#35.

---------

Co-authored-by: refcell <abigger87@gmail.com>
theochap pushed a commit to ethereum-optimism/optimism that referenced this pull request Jan 14, 2026
## Overview

Adds a CI job to run `kona-client` on `cannon64`.

Also upgrades the dep of `nybbles`; There was a bug that I introduced
recently for big-endian targets, fix included in
alloy-rs/nybbles#35.

---------

Co-authored-by: refcell <abigger87@gmail.com>
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

A-ci Area: CI F-deps Flag: Updates dependencies K-feature Kind: feature

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants