Build 3D vector aesthetics learning atlas #348
Workflow file for this run
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: | |
| pull_request: | |
| branches: [master] | |
| push: | |
| branches: [master] | |
| tags-ignore: | |
| - 'v*' # skip CI on tag pushes (release handled separately) | |
| # Cancel stale runs when a new commit is pushed to the same branch / PR. | |
| concurrency: | |
| group: ci-${{ github.workflow }}-${{ github.ref }} | |
| cancel-in-progress: true | |
| jobs: | |
| test: | |
| runs-on: ubuntu-latest | |
| strategy: | |
| matrix: | |
| python-version: ['3.11', '3.12'] | |
| steps: | |
| - uses: actions/checkout@v5 | |
| - uses: actions/setup-python@v6 | |
| with: | |
| python-version: ${{ matrix.python-version }} | |
| cache: 'pip' | |
| - name: Install | |
| # `tools` extra (opencv-python-headless) is required so ToolRegistry | |
| # discovery picks up cv2-backed cultural tools (whitespace_analyze, | |
| # composition_analyze, brushstroke, color_gamut). Without it, those | |
| # modules silently fail to import at registration time and downstream | |
| # pipeline tests (test_pipeline_hybrid, test_tool_adapters) cascade-fail | |
| # with "Unknown node 'whitespace_analyze'". Headless wheel is ~50MB. | |
| run: | | |
| python -m pip install --upgrade pip | |
| pip install -e ".[dev,mcp,tools]" | |
| - name: Lint | |
| # Narrow rule set (E9/F63/F7/F82) per pyproject.toml [tool.ruff.lint]. | |
| # Legacy codebase has 377 violations under default rules; incremental | |
| # expansion tracked in v0.17.12+. | |
| run: ruff check src/ tests/ | |
| - name: Test | |
| # Ignore-list covers tests that require heavy deps NOT installable on | |
| # CI's size/time budget — primarily torch (~2GB wheel) and local-only | |
| # artifacts (pre-generated layer PNGs). cv2 is now installed via the | |
| # `tools` extra (see Install step) so cv2-dependent tests run on CI. | |
| # Keep in sync with CONTRIBUTING.md "Dev loop" section. | |
| # Remove entries as underlying issues are fixed in v0.17.12+ (see task #28). | |
| run: | | |
| pytest tests/ \ | |
| --ignore=tests/test_cli_layers_retry.py \ | |
| --ignore=tests/test_layered_mock_fallback.py \ | |
| --ignore=tests/test_layered_partial_e2e.py \ | |
| --ignore=tests/test_layered_strict_mode.py \ | |
| --ignore=tests/vulca/layers/test_apply_alpha_assert.py \ | |
| --ignore=tests/vulca/pipeline/nodes/test_layer_generate_capability_routing.py \ | |
| --ignore=tests/vulca/providers/test_capabilities.py \ | |
| --ignore=tests/vulca/scripts/test_migrate_overlap_resolution.py \ | |
| --ignore=tests/test_organism_phase2.py \ | |
| --ignore=tests/test_providers.py \ | |
| --ignore=tests/test_decompose_smoke.py \ | |
| --ignore=tests/test_tool_color_gamut.py \ | |
| --ignore=tests/vulca/layers/test_image_loader.py \ | |
| --ignore=tests/vulca/scripts/test_evfsam_common_uses_image_loader.py \ | |
| --ignore=tests/vulca/scripts/test_evfsam_prompt_schema.py \ | |
| --ignore=tests/test_import_cop_helper.py \ | |
| --ignore=tests/test_import_cop_subprocess.py \ | |
| --ignore=tests/test_unload_models.py \ | |
| --ignore=tests/vulca/scripts/test_claude_orchestrated_pipeline.py \ | |
| -q | |
| - name: Local seed baseline gate | |
| run: python scripts/local_seed_baseline_gate.py | |
| - name: Tiny training eval gate | |
| run: | | |
| python scripts/tiny_training_eval_gate.py \ | |
| --output-dir "$RUNNER_TEMP/tiny-training-eval" \ | |
| --report "$RUNNER_TEMP/tiny-training-eval/report.json" |