Skip to content

feat(mcp): Phase 3 — tools/call dispatch boundary #487

feat(mcp): Phase 3 — tools/call dispatch boundary

feat(mcp): Phase 3 — tools/call dispatch boundary #487

Workflow file for this run

name: CI
on:
push:
branches: [main, develop, 'release/**']
pull_request:
branches: [main, develop, 'release/**']
env:
CARGO_TERM_COLOR: always
# 8 MB main-thread stack — Windows default (1 MB) overflows when ratatui +
# crossterm + tokio + reqwest are linked into the test binary (issue #248
# follow-up: bitbucket integration tests OOM'd on windows-latest after the
# TUI dashboard landed).
RUST_MIN_STACK: "8388608"
jobs:
branch-policy:
name: Branch Policy
if: github.event_name == 'pull_request' && github.base_ref == 'main'
runs-on: ubuntu-latest
steps:
- name: Only develop or auto-snapshot branches can merge into main
run: |
HEAD='${{ github.head_ref }}'
if [ "$HEAD" = "develop" ]; then
echo "OK — develop → main"
exit 0
fi
# release.yml's snapshot-docs job opens PRs from docs/snapshot-vX.Y.Z
# because direct push to protected main is blocked. These are
# data-only changes (docs/v/, docs/versions.json, docs/sitemap.xml).
case "$HEAD" in
docs/snapshot-v*)
echo "OK — auto-snapshot branch (release docs versioning)"
exit 0 ;;
esac
echo "::error::Only 'develop' or 'docs/snapshot-v*' branches can be merged into 'main'. Got '$HEAD'."
exit 1
check:
name: Check
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
- uses: dtolnay/rust-toolchain@29eef336d9b2848a0b548edc03f92a220660cdb8 # stable
- uses: Swatinem/rust-cache@e18b497796c12c097a38f9edb9d0641fb99eee32 # v2
- run: cargo check
test:
name: Test
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
- uses: dtolnay/rust-toolchain@29eef336d9b2848a0b548edc03f92a220660cdb8 # stable
- uses: Swatinem/rust-cache@e18b497796c12c097a38f9edb9d0641fb99eee32 # v2
- run: cargo test
test-cross-platform:
name: Test (${{ matrix.os }})
runs-on: ${{ matrix.os }}
# Informational until Windows UNC path issues are resolved
continue-on-error: true
strategy:
fail-fast: false
matrix:
os: [macos-latest, windows-latest]
steps:
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
- uses: dtolnay/rust-toolchain@29eef336d9b2848a0b548edc03f92a220660cdb8 # stable
- uses: Swatinem/rust-cache@e18b497796c12c097a38f9edb9d0641fb99eee32 # v2
- run: cargo test
fmt:
name: Format
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
- uses: dtolnay/rust-toolchain@29eef336d9b2848a0b548edc03f92a220660cdb8 # stable
with:
components: rustfmt
- run: cargo fmt --all -- --check
clippy:
name: Clippy
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
- uses: dtolnay/rust-toolchain@29eef336d9b2848a0b548edc03f92a220660cdb8 # stable
with:
components: clippy
- uses: Swatinem/rust-cache@e18b497796c12c097a38f9edb9d0641fb99eee32 # v2
- run: cargo clippy -- -D warnings
build:
name: Build (${{ matrix.os }})
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest, macos-latest, windows-latest]
steps:
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
- uses: dtolnay/rust-toolchain@29eef336d9b2848a0b548edc03f92a220660cdb8 # stable
- uses: Swatinem/rust-cache@e18b497796c12c097a38f9edb9d0641fb99eee32 # v2
- run: cargo build --release
audit:
name: Security Audit
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
- run: cargo install cargo-audit --locked
- run: cargo audit
# Pre-validation for GitHub Actions Windows runner migration to VS 2026
# (windows-latest / windows-2025 labels move to VS2026 default between
# 2026-06-08 and 2026-06-15). Informational until migration completes.
# Tracked in issue #307 — remove after migration window closes.
windows-vs2026-prevalidation:
name: Windows VS2026 Pre-Validation
runs-on: windows-2025-vs2026
continue-on-error: true
steps:
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
- uses: dtolnay/rust-toolchain@29eef336d9b2848a0b548edc03f92a220660cdb8 # stable
- uses: Swatinem/rust-cache@e18b497796c12c097a38f9edb9d0641fb99eee32 # v2
- run: cargo build --release
- run: cargo test