Repository navigation
Run Lean package checks in isolated concurrent CI jobs - #8653
Merged
Merged
Conversation
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Contributor
There was a problem hiding this comment.
🔵 Needs a closer look
Hosted validation is still needed to verify reusable-workflow failure/cancellation aggregation and executable compatibility across producer/replay runners, which local checks and source inspection cannot establish.
No open issues 🎉
What changed in this PR
This PR moves CCF’s Lean checks from serial execution to isolated concurrent jobs, preserving existing validation while allowing native Raft replay to proceed independently of unrelated packages. Performance gains remain unmeasured.
Changes:
- Introduces a reusable package workflow with isolated checkouts and package-specific validation.
- Separates Raft replay using a permission-preserving executable artifact with integrity and runtime checks.
- Retains the
Lean models and proofsgate, requiring successful prerequisites and checking package inventory.
Custom instructions used
Applied the supplied CCF repository guidance; no additional instruction files were loaded.
| File | Description |
|---|---|
| lean/disaster-recovery/README.md | Documents package isolation, aggregate gating, and concurrency tradeoffs. |
| lean/ccf-raft/replay/README.md | Documents independent captures, executable transfer, and replay validation. |
| .github/workflows/lean.yml | Orchestrates concurrent package checks, downstream replay, and the final gate. |
| .github/workflows/lean-package.yml | Adds reusable package validation and Raft executable packaging. |
Review effort: Balanced
The disaster-recovery formatter also parses shared CCF sources that its model build may not import. Build the common root explicitly so those imports are present in an isolated package job. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…d73-876f-41e2-98c0-325a39626d2a
…6dffd0 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: c32bb8ef227741b1a53c34b0d96e00dd
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: c32bb8ef227741b1a53c34b0d96e00dd
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: c32bb8ef227741b1a53c34b0d96e00dd
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: c32bb8ef227741b1a53c34b0d96e00dd
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: c32bb8ef227741b1a53c34b0d96e00dd
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: c32bb8ef227741b1a53c34b0d96e00dd
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: c32bb8ef227741b1a53c34b0d96e00dd
KV lint explicitly checks CCF with --no-build. Build the shared library in each dependent package checkout so lint no longer relies on a previous package job having built it. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: c32bb8ef227741b1a53c34b0d96e00dd
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: c32bb8ef227741b1a53c34b0d96e00dd
Keep third-party dependency outputs per package, keyed by platform, toolchain, manifests, configuration and workflow. Preserve clean CCF builds and every verification step. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: c32bb8ef227741b1a53c34b0d96e00dd
Keep Ubuntu 26.04 in root containers with explicit build prerequisites, isolate VMSS dependency caches, and retain the lightweight hosted summary gate. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: c32bb8ef227741b1a53c34b0d96e00dd
Trust only the mounted checkout, use job-temporary elan storage and install the pinned toolchain through idempotent elan run. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: c32bb8ef227741b1a53c34b0d96e00dd
The runner context is unavailable in job-level env expressions. Export ELAN_HOME through GITHUB_ENV after the container starts. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: c32bb8ef227741b1a53c34b0d96e00dd
Heidi Howard (heidihoward)
approved these changes
Nov 4, 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.
Motivation
Run Lean package checks concurrently in isolated workspaces instead of serially.
Implementation summary
A reusable workflow checks all five packages in a fail-fast-disabled matrix, with isolated dependency caches. Raft and KV captures and replay run independently; a final gate requires every check to pass. Existing proof, axiom, formatting, lint, and fixture checks remain. KV proof references and formatter coverage were updated.
Observed CI timings: 65m40s serial to 9m04s with the matrix, an 86% decrease in elapsed time.
Safety and compatibility
No production runtime, protocol, API, or toolchain changes. Kernel and axiom checks remain enabled.