Skip to content

[fix] - harness console follows the Ollama→LM Studio fallback like /query and /health #1007

[fix] - harness console follows the Ollama→LM Studio fallback like /query and /health

[fix] - harness console follows the Ollama→LM Studio fallback like /query and /health #1007

name: CyClaw Conda CI
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: ${{ github.ref != 'refs/heads/main' }}
permissions:
contents: read
# security-events: write removed — CodeQL is owned by codeql.yml; no
# duplicate scan here means this workflow needs no SARIF-upload permission.
jobs:
ci:
runs-on: ubuntu-latest
timeout-minutes: 30
strategy:
fail-fast: false
matrix:
python-version: ["3.12"] # match sandbox 3.12 + modern invariants
steps:
- name: Checkout
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
with:
persist-credentials: false
- name: Setup Miniconda + mamba (fast solver)
uses: conda-incubator/setup-miniconda@8ee1f361103df19b6f8c8655fd3967a8ecb162d5 # v4.0.1
with:
miniforge-version: latest
python-version: ${{ matrix.python-version }}
channels: conda-forge
channel-priority: strict
activate-environment: cyclaw
environment-file: environment.yml
auto-activate-base: false
use-mamba: true
- name: Cache conda environment
uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
with:
path: |
/home/runner/miniconda3/envs/cyclaw
/home/runner/miniconda3/pkgs
key: conda-${{ runner.os }}-${{ matrix.python-version }}-${{ hashFiles('environment.yml', 'pyproject.toml', '**/requirements*.txt') }}
restore-keys: |
conda-${{ runner.os }}-${{ matrix.python-version }}-
- name: Install CyClaw in editable mode + test extras
shell: bash -l {0}
run: |
python -m pip install -e ".[test,dev]" --no-deps
# If heavy deps live in environment.yml, they are already resolved by mamba
- name: Prepare hermetic test env
shell: bash -l {0}
run: |
mkdir -p data/personality index logs
echo '# Soul' > data/personality/soul.md
echo 'GROK_API_KEY=dummy' >> "$GITHUB_ENV"
- name: Pytest — unit + integration + safe smoke (RAG/policy focused)
shell: bash -l {0}
run: |
pytest tests/ \
-v \
--cov=gate \
--cov=gate_ops \
--cov=graph \
--cov=mcp_hybrid_server \
--cov=metrics \
--cov=llm \
--cov=retrieval \
--cov=utils \
--cov=sync \
--cov=agentic \
--cov=guardrails \
--cov=harness \
--cov-report=xml \
--cov-report=term-missing \
--tb=short
- name: Run verify harness / smoke (if present)
shell: bash -l {0}
run: |
if [ -x ./verify.sh ]; then
echo "Running project verify.sh harness..."
./verify.sh
fi
if [ -f .claude/skills/CyClaw-Sandbox/verify.sh ]; then
echo "Running sandbox verification harness..."
bash .claude/skills/CyClaw-Sandbox/verify.sh
fi
# CodeQL analysis is owned by .github/workflows/codeql.yml which runs on
# every push/PR to main. A duplicate scan here would double billing and
# upload a conflicting SARIF result to the same security tab. Removed.