Fix the release dry-run publish cycle and preserve leaf-only DAG imports#2931
Merged
huitseeker merged 6 commits intonextfrom Apr 2, 2026
Merged
Conversation
d071ac2 to
d0c2be5
Compare
Al-Kindi-0
approved these changes
Mar 31, 2026
Contributor
Al-Kindi-0
left a comment
There was a problem hiding this comment.
LGTM, thanks for fixing!
The release dry-run job runs `cargo publish --workspace --dry-run` so we catch packaging and publish-order problems before a real release. This failure came from a publish cycle that normal builds did not show. `miden-air` now depends on `miden-ace-codegen`, but `miden-ace-codegen` still had test-only code that depended on `miden-air`. That made the dry-run stop when it tried to package the workspace for release. Move the `ProcessorAir` ACE checks into `miden-air`, remove the back edge from `miden-ace-codegen`, and keep the fallback publish order aligned with the real dependency order.
The follow-on work here keeps the public DAG import path safe after the release fix. `DagBuilder::from_nodes()` can recover source ids when the nodes already carry them, but leaf-only DAGs do not. Add an explicit snapshot type for exported DAGs, use that path when a caller needs to keep the old root, and seal the snapshot so its saved provenance cannot drift from its nodes.
Issue #2917 pointed out that `scripts/publish-release.sh` was an old backup copy that no longer matched the real release flow. Delete it so the repo keeps one clear path for release work. This cleanup is separate from the release dry-run fix above.
Remove redundant resolve_node call in const_value, flatten ImportedDag from a single-variant enum to a struct, remove the unused AceDag::snapshot() and DagSnapshot::nodes() methods, and drop a tautological assertion in the synthetic OOD test. Move shared test evaluation helpers (fill_inputs, eval_periodic_values, eval_base_expr, eval_ext_expr, eval_folded_constraints, eval_quotient, zps_for_chunk, eval_dag) into a new testing module gated on cfg(any(test, feature = "testing")), so both ace-codegen internal tests and air integration tests use the same code. This removes ~250 lines of duplicated helpers from air/tests/ace_codegen.rs and trims the now-unused #[cfg(test)] eval_quotient and FieldOps from quotient.rs.
d0c2be5 to
f242c9d
Compare
adr1anh
approved these changes
Apr 2, 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.
The release dry-run job runs
cargo publish --workspace --dry-run. It failed after the merge of #2869 becausemiden-airnow depends onmiden-ace-codegen, whilemiden-ace-codegenstill had test-only code that depended onmiden-air. That made a publish cycle that normal builds did not show.This PR moves the
ProcessorAirACE checks intomiden-air, removes the back edge frommiden-ace-codegen.The follow-on DAG work keeps leaf-only DAG imports safe.
DagBuilder::from_nodes()can recover source ids when the nodes already carry them, but leaf-only DAGs do not. This PR adds an explicit snapshot type for exported DAGs and seals that snapshot so the saved provenance stays tied to its nodes.A small cleanup deletes the stale
scripts/publish-release.shbackup script. FIxes #2917