Skip to content

consensus: a decision needs evidence; unbreak the build #435

consensus: a decision needs evidence; unbreak the build

consensus: a decision needs evidence; unbreak the build #435

name: SDK Verification Matrix
on:
push:
branches: [ main, develop ]
pull_request:
branches: [ main, develop ]
workflow_dispatch:
jobs:
# Python SDK with Cython bindings to C library
python-sdk:
name: Python SDK
runs-on: lux-build-amd64
continue-on-error: true # Optional - comprehensive tests may need Cython FFI build
strategy:
matrix:
python-version: ['3.10', '3.11', '3.12']
steps:
- uses: actions/checkout@v4
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
- name: Install build dependencies
run: |
sudo apt-get update
sudo apt-get install -y build-essential
pip install --upgrade pip setuptools wheel cython numpy
- name: Build C library first (Python depends on it)
run: |
cd pkg/c
make clean || true
make all
- name: Install Python SDK
run: |
cd pkg/python
pip install -e ".[dev]"
- name: Run comprehensive tests
run: |
cd pkg/python
pytest test_consensus_comprehensive.py -v --cov=. --cov-report=term || echo "Tests completed"
- name: Benchmark
run: |
cd pkg/python
python benchmark_cpu_standalone.py || echo "Benchmark completed"
# Go SDK
go-sdk:
name: Go SDK
runs-on: lux-build-amd64
continue-on-error: true # GPU pipeline tests can be flaky
steps:
- uses: actions/checkout@v4
- name: Set up Go
uses: actions/setup-go@v5
with:
go-version: '1.26.4'
- name: Build all packages
run: go build ./...
- name: Run all tests
timeout-minutes: 15
run: go test -v -race -timeout=12m ./...
- name: Coverage report
run: |
go test -coverprofile=coverage.out ./...
go tool cover -func=coverage.out
# C SDK - Core library
c-sdk:
name: C SDK
runs-on: lux-build-amd64
steps:
- uses: actions/checkout@v4
- name: Install dependencies
run: |
sudo apt-get update
sudo apt-get install -y build-essential cmake
- name: Build C SDK
run: |
cd pkg/c
make clean || true
make all
- name: Run tests
run: |
cd pkg/c
make test
- name: Benchmark
run: |
cd pkg/c
if [ -f ./build/benchmark ]; then
./build/benchmark
else
echo "Benchmark binary not built, skipping"
fi
# Rust SDK - FFI wrapper
rust-sdk:
name: Rust SDK (FFI)
runs-on: lux-build-amd64
continue-on-error: true # Optional - FFI benchmarks need C library bindings
steps:
- uses: actions/checkout@v4
- name: Install Rust
uses: dtolnay/rust-toolchain@stable
- name: Build C library (Rust depends on it)
run: |
cd pkg/c
make clean || true
make all
- name: Build Rust SDK
run: |
cd pkg/rust
cargo build --release
- name: Run tests
run: |
cd pkg/rust
LD_LIBRARY_PATH=../c/lib:$LD_LIBRARY_PATH cargo test --release
- name: Benchmark FFI overhead
run: |
cd pkg/rust
LD_LIBRARY_PATH=../c/lib:$LD_LIBRARY_PATH cargo bench --bench consensus_bench 2>&1 || echo "Benchmark completed"
# Final summary
summary:
name: SDK Summary
runs-on: lux-build-amd64
needs: [python-sdk, go-sdk, c-sdk, rust-sdk]
if: always()
steps:
- uses: actions/checkout@v4
- name: Print SDK Status Summary
run: |
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
echo " Lux Consensus SDK Status"
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
echo ""
echo "SDKs:"
echo " Go SDK - Primary implementation"
echo " Python SDK - Cython bindings to C library"
echo " C SDK - Core C library"
echo " Rust SDK - FFI wrapper to C library"
echo " C++ SDK - Native C++ implementation"
echo ""
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"