feat(onboarding): auto-detect model when --model omitted (parity) #61
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: CI | |
| on: | |
| push: | |
| branches: [main] | |
| pull_request: | |
| branches: [main] | |
| workflow_dispatch: | |
| concurrency: | |
| group: ${{ github.workflow }}-${{ github.ref }} | |
| cancel-in-progress: true | |
| jobs: | |
| lint: | |
| name: Lint (Ruff) | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: actions/setup-python@v5 | |
| with: | |
| python-version: '3.11' | |
| # Pin ruff so I001 import-sort behaviour matches what contributors run locally — | |
| # astral-sh/ruff-action@v1 installs the latest ruff, which disagreed with the | |
| # pinned dev version on __init__.py import ordering and kept this job red. | |
| - name: Install ruff | |
| run: pip install ruff==0.15.14 | |
| - name: Lint | |
| run: ruff check src tests | |
| test: | |
| name: Tests (pytest) | |
| runs-on: ubuntu-latest | |
| strategy: | |
| matrix: | |
| python-version: ["3.11", "3.12"] | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: actions/setup-python@v5 | |
| with: | |
| python-version: ${{ matrix.python-version }} | |
| cache: pip | |
| cache-dependency-path: pyproject.toml | |
| - name: Install dependencies | |
| run: pip install -e ".[dev]" --quiet | |
| - name: Run tests | |
| run: pytest tests/ -v --tb=short | |
| typecheck: | |
| name: Type Check (mypy) | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: actions/setup-python@v5 | |
| with: | |
| python-version: "3.11" | |
| cache: pip | |
| cache-dependency-path: pyproject.toml | |
| - name: Install dependencies + mypy | |
| run: pip install -e ".[dev]" mypy --quiet | |
| - name: Type check | |
| run: mypy src/iicp_client --ignore-missing-imports | |
| security: | |
| name: Dependency Security Audit | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: actions/setup-python@v5 | |
| with: | |
| python-version: "3.11" | |
| - name: Audit dependencies | |
| run: pip install pip-audit --quiet && pip-audit --requirement <(pip install -e . --dry-run 2>&1 | grep "^Would install" | sed 's/Would install //' | tr ' ' '\n' | sed 's/==/==/') || true | |
| conformance-marks: | |
| name: Conformance Mark Coverage | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Verify all test files reference SDK conformance marks | |
| run: | | |
| FAIL=0 | |
| for f in tests/test_*.py; do | |
| if ! grep -q "SDK-0[1-9]\|SDK-1[0-9]\|ADR-016" "$f"; then | |
| echo "MISSING conformance mark: $f" | |
| FAIL=1 | |
| fi | |
| done | |
| if [ "$FAIL" -eq 0 ]; then | |
| echo "All test files reference SDK conformance marks" | |
| fi | |
| exit $FAIL |