Skip to content

feat(qwen-settle): settle a REAL Qwen3-0.6B answer on Solana (§8) #7

feat(qwen-settle): settle a REAL Qwen3-0.6B answer on Solana (§8)

feat(qwen-settle): settle a REAL Qwen3-0.6B answer on Solana (§8) #7

Workflow file for this run

name: Solana E2E
# The full Solana/Jito leg: real jito restaking + vault programs built from
# source at the pinned rev, the NCN + gaskiller-settlement programs built from
# BreadchainCoop/jito-ncn-program main, a two-phase (--warp-slot)
# solana-test-validator, 4 real BLS operator registrations, engine quorum, an
# on-chain VerifyCertificate asserted at `confirmed`, and the LLM settlement
# leg: the real Solidity LLM story payload certified by the same committee,
# landed via Settle (chunked WriteBuffer staging, story_meta self-CPI,
# read-back + replay-gate asserts). NO mocks. See
# scripts/solana_e2e_local.sh — this job runs exactly that script.
on:
workflow_dispatch:
push:
branches:
- main
- dev
- staging
- jito-compose
- llm-settle
- qwen-settle
pull_request:
branches:
- main
- dev
- staging
env:
AGAVE_VERSION: v4.1.1
CARGO_TERM_COLOR: always
jobs:
solana-e2e:
name: Solana full-stack e2e (validator + deployer + router + 4 nodes)
runs-on: ubuntu-latest
timeout-minutes: 90
steps:
- name: Checkout repository
uses: actions/checkout@v4
# The ncn-program-core git dependency's repo pins a submodule by SSH
# url; cargo cannot clone it on a clean runner without this https
# rewrite (public repo — only the scheme is the problem). The driver
# script also sets a process-scoped rewrite, but cargo's libgit2
# submodule path only honors config files.
- name: Rewrite SSH github urls to https (cargo git deps)
run: git config --global url."https://github.com/".insteadOf "git@github.com:"
- name: Install Agave toolchain (solana-test-validator + cargo-build-sbf)
run: |
sh -c "$(curl -sSfL https://release.anza.xyz/${AGAVE_VERSION}/install)"
echo "$HOME/.local/share/solana/install/active_release/bin" >> "$GITHUB_PATH"
- name: Verify toolchain
run: |
solana --version
solana-test-validator --version
cargo-build-sbf --version
- name: Cache cargo registry + target
uses: actions/cache@v4
with:
path: |
~/.cargo/registry
~/.cargo/git
target
key: solana-e2e-cargo-${{ runner.os }}-${{ hashFiles('Cargo.lock') }}
restore-keys: solana-e2e-cargo-${{ runner.os }}-
- name: Cache source-built jito programs (pinned rev)
uses: actions/cache@v4
with:
path: ~/.cache/solana-e2e-src
key: solana-e2e-src-${{ runner.os }}-${{ env.AGAVE_VERSION }}-358fbc3c20d947c977a136808f9fbf7f070e478b
# --keep-alive: on success the committee processes stop but the
# validator stays up, so the frontend smoke below can read the settled
# story from the live RPC. The runner tears everything down at job end.
- name: Run the one-command e2e
run: bash scripts/solana_e2e_local.sh --keep-alive
# Frontend smoke (Track K): headless Playwright drives the demo page in
# BreadchainCoop/jito-ncn-program frontend/ against the validator the
# previous step left running, asserting the REAL settled story renders
# (state PDA decode, sha256-verified story from the buffer account, real
# program ids, zero console errors). The frontend lives in the NCN
# clone the e2e script already maintains; skip gracefully until
# frontend/smoke.mjs is on that repo's main.
- name: Frontend smoke (Playwright reads the settled story)
run: |
NCN_SRC="${XDG_CACHE_HOME:-$HOME/.cache}/solana-e2e-src/jito-ncn-program"
SMOKE="$NCN_SRC/frontend/smoke.mjs"
CONFIG="$GITHUB_WORKSPACE/.solana-e2e/out/frontend-config.json"
if [[ ! -f "$SMOKE" ]]; then
echo "frontend/smoke.mjs not on jito-ncn-program main yet — skipping"
exit 0
fi
if [[ ! -f "$CONFIG" ]]; then
echo "no frontend-config.json (LLM leg skipped?) — skipping"
exit 0
fi
mkdir -p /tmp/pw && cd /tmp/pw
npm init -y > /dev/null
npm install playwright > /dev/null
npx playwright install --with-deps chromium
node "$SMOKE" "$CONFIG" --screenshot /tmp/pw/frontend-live.png
- name: Upload frontend smoke screenshot
if: always()
uses: actions/upload-artifact@v4
with:
name: frontend-live-screenshot
path: /tmp/pw/frontend-live.png
if-no-files-found: ignore
- name: Upload logs on failure
if: failure()
uses: actions/upload-artifact@v4
with:
name: solana-e2e-logs
path: .solana-e2e/logs/
if-no-files-found: ignore