carryctx 0.0.3

Persistent project context for coding agents
name: CI

on:
  push:
    branches: ["**"]
  pull_request:
    branches: [main]

env:
  CARGO_TERM_COLOR: always

jobs:
  quality:
    name: Quality
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v7
      - uses: actions-rust-lang/setup-rust-toolchain@v1
        with:
          components: rustfmt, clippy
      - name: Format check
        run: cargo fmt --check
      - name: Clippy
        run: cargo clippy --workspace -- -D warnings
      - name: Markdown lint
        uses: DavidAnson/markdownlint-cli2-action@v24
        with:
          globs: "**/*.md"
          ignore: target node_modules .worktrees

  test:
    name: Test
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v7
      - uses: actions-rust-lang/setup-rust-toolchain@v1
      - name: Build
        run: cargo build --locked
      - name: Test
        run: cargo test --locked

  build-binaries:
    name: Build (${{ matrix.target }})
    if: github.ref_type == 'tag'
    strategy:
      matrix:
        include:
          - target: x86_64-unknown-linux-gnu
            os: ubuntu-latest
          - target: aarch64-unknown-linux-gnu
            os: ubuntu-latest
          - target: x86_64-apple-darwin
            os: macos-latest
          - target: aarch64-apple-darwin
            os: macos-latest
          - target: x86_64-pc-windows-msvc
            os: windows-latest
    runs-on: ${{ matrix.os }}
    steps:
      - uses: actions/checkout@v7
      - uses: actions-rust-lang/setup-rust-toolchain@v1
        with:
          target: ${{ matrix.target }}
      - name: Build release
        run: cargo build --release --locked --target ${{ matrix.target }}
      - name: Upload artifact
        uses: actions/upload-artifact@v7
        with:
          name: carryctx-${{ matrix.target }}
          path: target/${{ matrix.target }}/release/carryctx${{ runner.os == 'Windows' && '.exe' || '' }}

  actionlint:
    name: Actionlint
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v7
      - uses: docker://rhysd/actionlint:1.7.12
        with:
          args: -color -shellcheck=