weavegraph 0.7.0

Graph-driven, concurrent agent workflow framework with versioned state, deterministic barrier merges, and rich diagnostics.
Documentation
# Weavegraph CI — runs on push to main and on every pull request.
name: "CI"
# triggers
on: # event hooks
  push: # push events
    branches: ["main"]
  pull_request: # all PR events
    types: [opened, synchronize, reopened]
  workflow_dispatch: # allow manual runs from the GitHub UI
# build env
env: # build-time defaults
  CARGO_TERM_COLOR: "always"
  RUST_VERSION: "1.90.0"
# jobs
jobs: # CI pipeline
  # ── format ───────────────────────────────────────────────────────────────
  fmt: # formatting check
    name: cargo fmt
    runs-on: ubuntu-24.04
    steps: # fmt steps
      - uses: "actions/checkout@v4"
      - uses: dtolnay/rust-toolchain@stable
        with: # fmt toolchain
          toolchain: ${{ env.RUST_VERSION }}
          components: rustfmt
      - uses: "Swatinem/rust-cache@v2"
        with: # fmt cache
          prefix-key: fmt
      - run: cargo fmt --all -- --check
  # ───────────────────────────────────────────────────────────────────────
  # ── lint ─────────────────────────────────────────────────────────────────
  clippy:
    name: cargo clippy (${{ matrix.toolchain }})
    runs-on: ubuntu-24.04
    strategy: # toolchain matrix
      fail-fast: false
      matrix: # toolchain variants
        include:
          - toolchain: "1.90.0"
            experimental: false
          - toolchain: stable
            experimental: true
    continue-on-error: ${{ matrix.experimental }}
    steps: # clippy steps
      - uses: "actions/checkout@v4"
      - uses: dtolnay/rust-toolchain@stable
        with: # clippy toolchain
          toolchain: "${{ matrix.toolchain }}"
          components: clippy
      - uses: "Swatinem/rust-cache@v2"
        with: # clippy cache
          prefix-key: clippy-${{ matrix.toolchain }}
      - run: cargo clippy --workspace --all-targets --all-features -- -D warnings
# ---
  # ── test ─────────────────────────────────────────────────────────────────
  test:
    name: cargo test (${{ matrix.toolchain }})
    runs-on: ubuntu-24.04
    strategy: # test matrix
      fail-fast: false # continue even if one toolchain fails
      matrix: # test toolchains
        include:
          - toolchain: "1.90.0"
            experimental: false
          - toolchain: stable
            experimental: true
    continue-on-error: ${{ matrix.experimental }}
    steps: # test steps
      - uses: "actions/checkout@v4"
      - uses: dtolnay/rust-toolchain@stable
        with: # test toolchain
          toolchain: "${{ matrix.toolchain }}"
      - uses: "Swatinem/rust-cache@v2"
        with: # test cache
          prefix-key: test-${{ matrix.toolchain }}
      # postgres feature tests require an external service; run lib-only here
      - run: cargo test --lib --all-features

  # ── docs ─────────────────────────────────────────────────────────────────
  doc:
    name: cargo doc
    runs-on: ubuntu-24.04
    steps: # doc steps
      - uses: "actions/checkout@v4"
      - uses: dtolnay/rust-toolchain@stable
        with: # doc toolchain
          toolchain: nightly
      - uses: "Swatinem/rust-cache@v2"
        with: # doc cache
          prefix-key: doc
      - name: Build docs — deny rustdoc warnings
        env: # rustdoc flags
          RUSTDOCFLAGS: "--cfg docsrs -D warnings"
        run: cargo +nightly doc --workspace --all-features --no-deps
  # ───────────────────────────────────────────────────────────────────────
  # ── semver ───────────────────────────────────────────────────────────────
  semver-checks:
    name: cargo semver-checks
    runs-on: ubuntu-24.04
    steps: # semver steps
      - uses: "actions/checkout@v4"
      - uses: dtolnay/rust-toolchain@stable
        with: # semver toolchain
          toolchain: stable
      - uses: taiki-e/install-action@v2
        with: # semver install
          tool: cargo-semver-checks
      - uses: "Swatinem/rust-cache@v2"
        with: # semver cache
          prefix-key: semver-checks
      # semver-checks requires rustc >= 1.91.0; run on stable rather than pinned MSRV
      - run: cargo +stable semver-checks check-release --workspace

  # ── deny ─────────────────────────────────────────────────────────────────
  deny: # license/advisory check
    name: "cargo deny"
    runs-on: ubuntu-24.04
    steps: # deny steps
      - uses: "actions/checkout@v4"
      - uses: dtolnay/rust-toolchain@stable
        with: # deny toolchain
          toolchain: ${{ env.RUST_VERSION }}
      - uses: "taiki-e/install-action@v2"
        with: # deny install
          tool: "cargo-deny"
      - uses: "Swatinem/rust-cache@v2"
        with: # deny cache
          prefix-key: "deny"
      - run: cargo deny check
  # ───────────────────────────────────────────────────────────────────────
  # ── machete ──────────────────────────────────────────────────────────────
  machete: # unused-dep check
    name: "cargo machete"
    runs-on: ubuntu-24.04
    continue-on-error: true # non-blocking
    steps: # machete steps
      - uses: "actions/checkout@v4"
      - uses: dtolnay/rust-toolchain@stable
        with: # machete toolchain
          toolchain: ${{ env.RUST_VERSION }}
      - uses: "taiki-e/install-action@v2"
        with: # machete install
          tool: "cargo-machete"
      - uses: "Swatinem/rust-cache@v2"
        with: # machete cache
          prefix-key: "machete"
      - run: cargo machete --with-metadata

  # ── benchmarks ───────────────────────────────────────────────────────────
  benchmarks:
    name: benchmark regression
    runs-on: ubuntu-24.04
    if: github.ref == 'refs/heads/main'
    steps: # bench steps
      - uses: "actions/checkout@v4"
      - uses: dtolnay/rust-toolchain@stable
        with: # bench toolchain
          toolchain: ${{ env.RUST_VERSION }}
      - uses: "Swatinem/rust-cache@v2"
        with: # bench cache
          prefix-key: bench
      - run: cargo bench --workspace
      - uses: actions/upload-artifact@v4
        with: # artifact upload
          name: benchmark-results
          path: target/criterion
          retention-days: 30