feat(qwen-settle): settle a REAL Qwen3-0.6B answer on Solana (§8) #7
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
| 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 |