Upgrade to Cartesi Machine v0.21 - #276
Merged
Merged
Conversation
GCdePaula
force-pushed
the
feature/update-emulator-0.21
branch
from
August 16, 2026 14:27
47b046c to
e3e209a
Compare
Upgrade the emulator and Solidity step together, derive geometry from the release, compose the state transition directly, and keep source preparation network-free. Pin the compatible Honeypot fixture and retain the computation-hash and proof-format conformance gates so this revision stands alone.
Preserve the exact measured candidate and its release-pinned evidence while describing that provenance independently of later rebases or squashes.
Exercise real terminal states and coordinate boundaries, then mutate the composed data-availability, CMIO, ustep, and reset witness seams against Solidity.
Keep Justfiles as the public task graph while scripts own diagnostics, worktree lifecycle, bootstrap, gas measurement, E2E preflight, and generated binding inputs. Use scoped doctors and semantic binding stamps so expensive ignored artifacts are rebuilt only when their real producer inputs change.
Benchmark warmed stress-ng workloads, isolate each machine-image producer, and verify receipts and corpus roles with focused regression scripts. Keep pull-request CI focused, release publication gated, and the full E2E battery manually dispatched until its cost and signal justify scheduling.
GCdePaula
force-pushed
the
feature/update-emulator-0.21
branch
from
August 16, 2026 15:42
e3e209a to
ccf54b2
Compare
GCdePaula
marked this pull request as ready for review
August 16, 2026 16:04
GCdePaula
force-pushed
the
feature/update-emulator-0.21
branch
from
August 17, 2026 11:12
1854c13 to
a66c535
Compare
guidanoli
approved these changes
Aug 17, 2026
guidanoli
left a comment
Collaborator
There was a problem hiding this comment.
Solidity part looks good to me.
Collaborator
|
LGTM! Just some doc suggestions and minor nits.
Help text still sounds like “keep every Nth snapshot,” but an open epoch now waits until a full gap (default 64) before executing. Nit
Dispute skips vanished snapshot dirs; the runner retries forever on the newest row. Intended (“operator restores files”), or should resume fall back like dispute positioning? |
stephenctw
approved these changes
Aug 19, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This upgrades Dave’s complete state-transition stack to Cartesi Machine v0.21.0 and solidity-step v0.15.0. It also closes snapshot-durability, cross-implementation testing, and build/release-tooling gaps exposed while qualifying that upgrade.
The compatibility target is same-version equivalence. Cartesi Machine v0.20 and v0.21 roots are expected to differ, so the contracts, node, Lua client, machine images, and proof producers must move together.
The Honeypot fixture pins the exact commit from cartesi/honeypot#37, replacing Dave’s local compatibility patches. The upstream PR does not need to merge before this SHA-pinned build can be used.
What changes
Cartesi Machine and state-transition compatibility
CartesiStateTransitionthat directly composes the upstream transition libraries. The tournament-facingIStateTransition.transitionStateinterface remains stable.Rulercollector for this release. Adoption of the newcm_collect_*APIs remains a separate migration described indocs/plans/collect-hashes-migration.md.Durable snapshot publication
--snapshot-gap-inputs, with a default of 64.Build and artifact lifecycle
LIBCARTESI_PATHselects an external installation;just machine::setup.Cross-implementation evidence
Compatibility and deployment notes
This is a fresh deployment generation:
CartesiStateTransitionchanges from a two-address constructor to no constructor arguments.The factory ABI changes introduced by #274 are already part of this PR’s base and are not introduced here.
Suggested review order
Deliberately deferred
cm_collect_*, pending resolution of the characterizedRX_REJECTEDatimcyclemaxdiscrepancy.