Skip to content
Draft
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
92 changes: 92 additions & 0 deletions .github/workflows/downstream-check.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,92 @@
# Copyright Strata Contributors
# SPDX-License-Identifier: Apache-2.0 OR MIT
#
# Downstream check: builds Strata-CLI against this PR's Strata-Python code, so
# we catch breakage before it lands on main. Advisory only — visible on the PR
# but does not gate merge.
#
# Mechanism: check out the PR's Strata-Python, clone Strata-CLI, rewrite
# Strata-CLI's `require "StrataPython"` to a local path pointing at the
# checked-out PR code (fork-safe: no need for the PR head SHA to exist on the
# strata-org remote), then `lake update StrataPython` + build + test. CLI's
# other requires (Strata, StrataDDM at rev = "main") resolve from their remotes
# as usual — only the StrataPython edge is overridden.
#
# Trigger: non-draft PRs only (ready_for_review + every push via synchronize).

name: Downstream check

on:
pull_request:
types: [ready_for_review, synchronize]

concurrency:
group: downstream-${{ github.event.pull_request.number }}
cancel-in-progress: true

permissions:
contents: read

jobs:
downstream:
if: ${{ !github.event.pull_request.draft }}
runs-on: ubuntu-latest
name: Strata-CLI
steps:
- name: Check out PR's Strata-Python
uses: actions/checkout@v6
with:
ref: ${{ github.event.pull_request.head.sha }}
path: upstream

- name: Clone Strata-CLI
run: git clone --depth 1 https://github.com/strata-org/Strata-CLI.git downstream

- name: Override StrataPython require -> local PR checkout
uses: strata-org/Strata/.github/actions/rewrite-require@main
with:
lakefile: downstream/lakefile.toml
package: StrataPython
path: ../upstream

# Strata-CLI links the full toolchain (cvc5 + z3), same as its own CI.
- name: Install cvc5
uses: strata-org/Strata/.github/actions/install-cvc5@main
- name: Install z3
uses: strata-org/Strata/.github/actions/install-z3@main

- name: Restore lake cache
uses: actions/cache/restore@v5
with:
path: |
downstream/.lake
key: downstream-Strata-CLI-${{ runner.os }}-${{ github.event.pull_request.head.sha }}
restore-keys: |
downstream-Strata-CLI-${{ runner.os }}-

- name: lake update StrataPython
working-directory: downstream
run: lake update StrataPython

# Strata-CLI has no lake testDriver; its own CI builds, then exercises the
# binary + examples. Mirror that so a green check means the same thing.
- name: Build Strata-CLI
uses: leanprover/lean-action@v1
with:
lake-package-directory: downstream
use-github-cache: false
test: false
- name: Run `strata` CLI
working-directory: downstream
run: lake exe strata --help
- name: Validate examples against expected output
working-directory: downstream
run: ./scripts/run_examples.sh

- name: Save lake cache
Comment thread
github-advanced-security[bot] marked this conversation as resolved.
Fixed
if: always()
uses: actions/cache/save@v5
with:
path: |
downstream/.lake
key: downstream-Strata-CLI-${{ runner.os }}-${{ github.event.pull_request.head.sha }}
Loading