Skip to content

Merge pull request #1199 from AdaWorldAPI/claude/great-curie-d2ufyl #1178

Merge pull request #1199 from AdaWorldAPI/claude/great-curie-d2ufyl

Merge pull request #1199 from AdaWorldAPI/claude/great-curie-d2ufyl #1178

Workflow file for this run

name: JC Substrate Proof
on:
push:
branches:
- main
pull_request:
paths:
- crates/jc/**
- crates/lance-graph-contract/src/cam.rs
- .github/workflows/jc-proof.yml
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true
env:
CARGO_TERM_COLOR: always
jobs:
prove:
name: Five-Pillar Substrate Proof
runs-on: ubuntu-24.04
timeout-minutes: 10
steps:
- uses: actions/checkout@v4
- name: Clone AdaWorldAPI/OGAR as parent-level sibling (NO-PIN path deps)
run: git clone --depth 1 https://github.com/AdaWorldAPI/OGAR ../OGAR
- name: Clone AdaWorldAPI/ndarray as parent-level sibling (NO-PIN path deps)
# The `substrate_compare` example dev-deps `p64` (ndarray/crates/p64) for
# the real compute arm; production JC stays zero-dep. Sibling-clone so the
# path resolves in CI, matching the OGAR pattern above.
run: git clone --depth 1 https://github.com/AdaWorldAPI/ndarray ../ndarray
- name: Setup Rust
run: |
# Pinned by rust-toolchain.toml — never a version restated here.
rustup show
- name: Run JC tests (6 unit tests)
run: cargo test --manifest-path crates/jc/Cargo.toml
# jc is workspace-excluded, so the root clippy job never reaches it; it
# went red unnoticed until TD-JC-CLIPPY-RED-ON-BASE-1 (2026-09-05). Same
# arming as sigker in rust-test.yml: fix once, then gate it here.
- name: Lint JC (workspace-excluded, so root clippy never reaches it)
run: |
cargo clippy --manifest-path crates/jc/Cargo.toml \
--all-targets -- -D warnings
- name: Run prove_it (substrate proof binary)
run: |
cargo run --manifest-path crates/jc/Cargo.toml --release --example prove_it
echo "Exit code: $?"
- name: Run substrate_compare (on-demand P64-vs-V3 gap analysis; KILL gates)
# `cargo test` compiles examples but never RUNS their runtime gates, so
# execute the comparison here — it exits non-zero if the asymmetry (V3
# absorbs P64 at 0 new bytes vs P64 replicates V3 at 32) fails to certify.
run: cargo run --manifest-path crates/jc/Cargo.toml --example substrate_compare