8000 aeneas chain → 2026-10-30: aeneas ab34bd2, charon 0.1.304, aeneas-latest ab34bd2, nightly 2026-09-17 (unchanged) by bryan-minimal · Pull Request #1271 · gominimal/pkgs · GitHub
[go: up one dir, main page]

Skip to content

aeneas chain → 2026-10-30: aeneas ab34bd2, charon 0.1.304, aeneas-latest ab34bd2, nightly 2026-09-17 (unchanged) - #1271

Merged
bryan-minimal merged 3 commits into
mainfrom
aeneas-chain-20261030
Nov 3, 2026
Merged

bryan-minimal merged 3 commits into
mainfrom
aeneas-chain-20261030

Conversation

@bryan-minimal
@bryan-minimal bryan-minimal commented Nov 2, 2026 •
Copy link
Copy Markdown
Member

aeneas chain → 2026-10-30: aeneas ab34bd2, charon/charon-ml 0.1.304, aeneas-latest ab34bd2; nightly 2026-09-17 unchanged

The fv-lab Rust→Lean translator was three weeks behind upstream. aeneas HEAD (2 8000 026-10-30, ab34bd2) pins charon 7b462d9, which is charon 0.1.304. We ship aeneas 2026-10-08 with charon/charon-ml 0.1.281 (the last chain bump was #843).

package from to how it was chosen
aeneas 2026-10-08 (d119a47) 2026-10-30 (ab34bd2) upstream HEAD
charon, charon-ml 0.1.281 (7980165) 0.1.304 (7b462d9) aeneas's charon-pin
aeneas-latest (Lean library) 2026-10-22 (fdebf20) 2026-10-30 (ab34bd2) the same commit as the translator (hand step 2)
rust-nightly-charon 2026-09-17 2026-09-17 (no change) charon 0.1.304's rust-toolchain is still nightly-2026-09-17
lean 4.35.0 4.35.0 (no change) ab34bd2's backends/lean/lean-toolchain is still v4.35.0

charon follows aeneas's pin, not charon's newest release (0.1.307). aeneas is written against one charon commit, and its LLBC reader (charon-ml) must match the charon binary that wrote the file. Taking the newest charon would break that contract.

Commit 1: generated by pkgmgr bundle-bump aeneas charon charon-ml

This ran from pkgmgr-rs main 0efae50 in Cloud Build 73c3c070-0638-4ab5-a362-0de3716c4d24, against pkgs main 8f25b19.

What the tool did:

  • cloned each target commit and verified it against ls-remote;
  • re-vendored charon's crates and packed them deterministically. There are now 338 crates, down from 347. The git forks are the same two, Nadrieril/specr?branch=bump-toolchain and Nadrieril/tracing-tree, so the build.sh vendor block is unchanged apart from the tarball name;
  • rewrote the version lets, shas and strip_prefixes;
  • re-fetched the nightly components and checked them against static.rust-lang.org's .sha256. They hash identically to what rust-nightly-charon already pins, which is why that file has no diff.

Done by hand: the date/version text in the header comments beside the new pins, which the tool flags for review.

Hand step 1: charon needs its crates/minirust submodule

charon 0.1.304 first failed to build:

error: couldn't find file `/build/crates/miniutil/../minirust/tooling/miniutil/src/lib.rs`

charon 75b7a1c ("Use miniutil", after 0.1.281) added crates/miniutil, which is built by the default minirust feature. Its [lib] path points into the crates/minirust git submodule, and GitHub archives leave submodules out.

The fix keeps upstream's default features:

  • The gitlink commit, Nadrieril/minirust c0b555e5b15accc6c1366b1d911a1bfd49c3d9d0 (a fork of minirust/minirust on branch bump-toolchain, Apache-2.0 OR MIT), is pinned as its own Source and mirrored.
  • build.sh extracts it into crates/minirust and checks that tooling/miniutil/src/lib.rs is there.

Reviewer note: this pin is NOT bumped by bundle-bump. On the next bump, re-check git ls-tree <charon commit> crates/minirust. A pkgmgr follow-up should teach the recipe about submodules.

The alternative, --no-default-features --features rustc, would build without the submodule, but it drops --format minirust / --run-with-minirust, which 0.1.281 shipped.

Hand step 2: aeneas-latest moves with the translator

The translator at ab34bd2 maps slice::Iter's DoubleEndedIterator::next_back to core.slice.iter.IteratorSliceIter.next_back (upstream #1386, which is what .iter().rev() reaches). The fdebf20 Lean library has no such definition.

I reproduced the failure: with only commit 1 applied, a two-function crate using v.iter().rev().next() translates, but lean rejects the model with Unknown identifier core.slice.iter.IteratorSliceIter.next_back. With aeneas-latest at ab34bd2 the same model type-checks. Control: the same crate without rev() type-checks against either library.

Why the bump is safe:

  • Lean side: upstream's lake-manifest.json at ab34bd2 is byte-identical to packages/aeneas-latest/lake-manifest.json (Mathlib 56a0058), so only the aeneas source moves.
  • Source tarball: it is the same tarball as aeneas-20261030.tar.gz, mirrored a second time under aeneas-latest/.
  • Other upstream Lean changes since fdebf20: Target.lean axioms became opaque/defs, and two lakefile needs lines were added.

The use_lean_modules = ref false default in aeneas/build.sh still holds: Config.ml still has ref true, and the grep -q guard matches. The fv-smoke model (non-module output importing the module library) still checks.

Mirrored objects

New objects in gs://minimal-staging-archives. Each was copied create-only (cp -n) and its sha256 was re-checked after downloading it back:

object sha256
aeneas-20261030.tar.gz cbdf6ca6efc17a994172de6f2c284b3c86807601996da417a345a7791742061b (= codeload legacy tarball of ab34bd2)
aeneas-latest/aeneas-ab34bd2.tar.gz cbdf6ca6efc17a994172de6f2c284b3c86807601996da417a345a7791742061b (same bytes)
charon-ml-0.1.304.tar.gz 445c1e303ccafc5ab5bbf14f2cddde48baaf2a281ba4093ee4e0b2a3dc4ab125 (= codeload legacy tarball of 7b462d9)
charon-vendor-0.1.304.tar.gz a41e218c07104d90b12f8e2e3c71fa95a2cde26bc1a1a2d95d1155f6c43da346
charon-minirust-c0b555e.tar.gz 4380fe1dbde99cd50b6a452e07021f4474e8a7d290ffff7776f274cb78f952a4 (GitHub tarball of Nadrieril/minirust c0b555e)

The 9 nightly-2026-09-17 objects already existed, and their MD5s match the re-fetched, .sha256-verified copies.

aeneas build.sh notes

  • Upstream dropped core_unix from src/dune and removed the Core_unix.mkdir_p / Core.Fn.compose uses. The matching seds are now no-ops. They are harmless, so they're left in to keep this PR mechanical; they can be removed later.
  • The progress and domainslib stubs are still needed.
  • aeneas.opam / dune-project now list calendar and unionFind. Neither is in src/dune's libraries.

Verified (Minimal sessions, arm64)

  • Build: charon, charon-ml, aeneas and aeneas-latest all build with --rebuild --verbose (aeneas-latest: 1760 Lake jobs).
  • Checks: min check passes every checker for all four packages, including the standalone tests.
  • fv-smoke: fv-lab's fv-smoke passes all 18 checks in a session on this branch, with charon version reporting 0.1.304. That includes charon + aeneas + lean: verify, the full loop: charon → aeneas → lean on the model → lean on Proofs.lean.
  • rev() model: type-checks against the new aeneas-latest. It fails without hand step 2, as described above.

amd64: not verified locally; build-bot covers it.

🤖 Generated with Claude Code

Summary by CodeRabbit

  • Chores
    • Updated the Aeneas and Charon components and their supporting build sources to newer upstream revisions.
    • Adjusted package build inputs to match the updated versions. These changes affect the components included in package builds; no new user-facing features or behavior changes are noted.

…nightly 2026-09-17 unchanged)

aeneas upstream HEAD (2026-10-30) pins charon 7b462d9 = 0.1.304 via its
charon-pin; charon and charon-ml follow that pin, not charon's newest
release. charon 0.1.304's rust-toolchain is still nightly-2026-09-17, so
rust-nightly-charon does not move. Crates re-vendored (338 crates, the
same two git forks). Generated by `pkgmgr bundle-bump aeneas charon
charon-ml` (Cloud Build 73c3c070); stale pin comments fixed by hand.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@bryan-minimal
bryan-minimal requested a review from a team as a code owner November 2, 2026 21:08
@coderabbitai
coderabbitai Bot commented Nov 2, 2026 •
Copy link
Copy Markdown
Contributor

Review in Change Stack →

No actionable comments were generated in the recent review.

Recent review info
Run configuration
Commits

Reviewing files that changed from the base of the PR and between 8f25b19 and 404dc1a.

Files selected for processing: 6
  • packages/aeneas-latest/build.ncl
  • packages/aeneas-latest/build.sh
  • packages/aeneas/build.ncl
  • packages/charon-ml/build.ncl
  • packages/charon/build.ncl
  • packages/charon/build.sh

Included review availability: This review used your included allowance. 0 included reviews remain after this review. Your included PR review attempts over the past 7 days set your current allowance at 1 review per hour.

Walkthrough

The Aeneas packages now use the October 30, 2026 source revision. Charon and charon-ml now use version 0.1.304. Charon’s build adds extraction of a pinned minirust archive and checks for an expected source file.

Changes: Aeneas and Charon source updates

Layer / File(s) Summary
Update Aeneas source pins
packages/aeneas-latest/build.ncl, packages/aeneas-latest/build.sh, packages/aeneas/build.ncl
Both Aeneas packages use commit ab34bd2 and matching source archive metadata. The aeneas-latest build script enters the updated checkout directory.
Update Charon sources and build inputs
packages/charon/build.ncl, packages/charon/build.sh, packages/charon-ml/build.ncl
Charon and charon-ml use version 0.1.304 with updated source and vendor archive metadata. The Charon build extracts the pinned minirust archive and checks for tooling/miniutil/src/lib.rs.

Estimated code review effort: 2 (Simple) | ~10 minutes

Possibly related PRs

Suggested reviewers: norrietaylor, mitodrummer

Merge Risk: Minimal · up to 404dc

No actionable merge-blocking risk is established; proceed with normal build validation.

Pre-merge checks: Passed 5
Check name Status Explanation
Description Check Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check Passed The title names the main change: moving the aeneas and charon chain to new pins (aeneas ab34bd2, charon 0.1.304, aeneas-latest ab34bd2) with the nightly unchanged. The diff matches these pins. The tit…
Docstring Coverage Passed No eligible functions found in the changed files. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff with cyclomatic complexity of at least 2. Documentat…
Linked Issues check Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check Passed Check skipped because no linked issues were found for this pull request.
Full details: Title check

Explanation

The title names the main change: moving the aeneas and charon chain to new pins (aeneas ab34bd2, charon 0.1.304, aeneas-latest ab34bd2) with the nightly unchanged. The diff matches these pins. The title is long and lists several pins, but it is accurate and specific enough for a reviewer scanning history.

Full details: Docstring Coverage

Explanation

No eligible functions found in the changed files. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff with cyclomatic complexity of at least 2. Documentation-only edits and deletions within surviving functions are included; unchanged diff context and fully deleted functions are excluded. Analyzed 0 functions across 2 files. (4 skipped: 4 unsupported.)

Finishing Touches
Generate docstrings
  • Commit to this branch
  • Create a new PR
Generate unit tests (beta)
  • Commit to this branch
  • Create a new PR
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

bryan-minimal and others added 2 commits November 2, 2026 13:16
…rust` feature needs it)

charon 75b7a1c ("Use miniutil", after 0.1.281) added crates/miniutil, whose
lib path is the crates/minirust submodule's tooling/miniutil/src. GitHub's
archive omits submodules, so 0.1.304 failed with "couldn't find file
.../minirust/tooling/miniutil/src/lib.rs". Pin the gitlink commit
(Nadrieril/minirust c0b555e, mirrored create-only) as its own Source and
extract it into crates/minirust, keeping upstream's default features.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ith the translator

The translator at ab34bd2 maps slice::Iter's DoubleEndedIterator::next_back
to `core.slice.iter.IteratorSliceIter.next_back` (upstream #1386), which
the fdebf20 library lacks: a model of `v.iter().rev()` failed in lean with
"Unknown identifier". Same Lean (4.35.0) and byte-identical
lake-manifest.json, so only the aeneas source moves; mirrored create-only
(same bytes as aeneas-20261030.tar.gz).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@bryan-minimal bryan-minimal changed the title aeneas chain → 2026-10-30: aeneas ab34bd2, charon 0.1.304, nightly 2026-09-17 (unchanged) aeneas chain → 2026-10-30: aeneas ab34bd2, charon 0.1.304, aeneas-latest ab34bd2, nightly 2026-09-17 (unchanged) Nov 2, 2026
@norrietaylor norrietaylor left a comment
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.

Reviewed at 404dc1a: aeneas/charon/minirust sha256s match upstream codeload; charon-pin, flake.lock, rust-toolchain (nightly-2026-09-17) and lake-manifest all consistent with the pins; build.sh changes (minirust submodule extraction) correct and offline. Low note: nothing ties the minirust tarball pin to charon's gitlink, so a stale pin on a future bump would pass the test -f check — agree with the proposed pkgmgr follow-up. Did not verify gs:// mirrors or the vendor tarball sha (gcloud auth).

@bryan-minimal
bryan-minimal added this pull request to the merge queue Nov 3, 2026
Merged via the queue into main with commit 25bcd59 Nov 3, 2026
13 checks passed
@bryan-minimal
bryan-minimal deleted the aeneas-chain-20261030 branch November 3, 2026 17:47
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

0