fix(wizard): no mezclar el chat al cambiar de workspace a mitad de turno #96
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 | |
| # Deterministic quality gates that must pass on every push + PR. | |
| # The clean-repo guard is the important one for a public repo: it fails | |
| # the build if mature/explicit prose or locally-generated model guides | |
| # ever leak into tracked source (see scripts/verify_clean_repo.py). | |
| # | |
| # GitHub Actions are pinned to commit SHAs (immutable). Version comments | |
| # are documentation only; do not use moving tags such as @v4 or @latest. | |
| on: | |
| push: | |
| branches: [main, dev] | |
| pull_request: | |
| branches: [main, dev] | |
| workflow_dispatch: | |
| jobs: | |
| guard: | |
| name: Clean-repo guard + Python checks | |
| runs-on: ubuntu-24.04 | |
| timeout-minutes: 20 | |
| steps: | |
| - uses: actions/checkout@d23441a48e516b6c34aea4fa41551a30e30af803 # v6.1.0 | |
| - uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6.3.0 | |
| with: | |
| python-version: "3.10" | |
| - name: Clean-repo boundary guard | |
| run: python scripts/verify_clean_repo.py | |
| - name: Dependency install/update contract smoke | |
| run: python scripts/check_dependency_contract.py | |
| - name: Documentation links and drift | |
| run: python scripts/check_documentation_links.py | |
| - name: Visible brand and compatibility contract | |
| run: python scripts/check_brand_contract.py | |
| - name: Python syntax check (our modules) | |
| # compileall only compiles (never imports), so it needs no deps and | |
| # skips heavy vendored model code. Covers the surface we edit. | |
| run: python -m compileall -q app/services app/launch.py scripts | |
| - name: Install lightweight test dependencies | |
| run: >- | |
| python -m pip install | |
| "starlette==0.46.1" | |
| "numpy==2.2.6" | |
| "opencv-python-headless==4.12.0.88" | |
| "Pillow==11.3.0" | |
| "requests==2.32.4" | |
| "accelerate==1.12.0" | |
| "av==16.1.0" | |
| "diffusers==0.36.0" | |
| "decord==0.6.0" | |
| "einops==0.8.2" | |
| "fastapi==0.115.12" | |
| "ffmpeg-python==0.2.0" | |
| "imageio==2.37.2" | |
| "imageio-ffmpeg==0.6.0" | |
| "json_repair==0.59.5" | |
| "mmgp==3.7.6" | |
| "onnxruntime==1.23.2" | |
| "pydantic==2.10.6" | |
| "psutil==7.2.2" | |
| "pytest==8.3.5" | |
| "rembg==2.0.65" | |
| "tqdm==4.67.3" | |
| "transformers==4.57.1" | |
| "websocket-client==1.9.0" | |
| - name: Install CPU tensor test runtime | |
| run: >- | |
| python -m pip install | |
| "torch==2.7.0+cpu" | |
| "torchaudio==2.7.0+cpu" | |
| "torchvision==0.22.0+cpu" | |
| --extra-index-url https://download.pytorch.org/whl/cpu | |
| - name: Install ffmpeg for media tests | |
| run: sudo apt-get update && sudo apt-get install -y ffmpeg | |
| - name: Pytest collection | |
| run: python -m pytest --collect-only -q | |
| - name: Python test suite | |
| run: python -m pytest -q | |
| ui-check: | |
| name: UI tests + lint + type-check + build | |
| runs-on: ubuntu-24.04 | |
| timeout-minutes: 10 | |
| steps: | |
| - uses: actions/checkout@d23441a48e516b6c34aea4fa41551a30e30af803 # v6.1.0 | |
| - uses: actions/setup-node@249970729cb0ef3589644e2896645e5dc5ba9c38 # v6.5.0 | |
| with: | |
| node-version: "24.18.0" | |
| check-latest: false | |
| cache: npm | |
| cache-dependency-path: ui/package-lock.json | |
| - name: Install UI deps | |
| working-directory: ui | |
| run: npm ci | |
| # Split `npm run check` so a hung runner is visible in the failing step | |
| # instead of one opaque 6-hour job (GitHub's default timeout). | |
| - name: UI tests | |
| working-directory: ui | |
| run: npm test | |
| - name: Lint with zero warnings | |
| working-directory: ui | |
| run: npm run lint -- --max-warnings=0 | |
| - name: Type-check, build and bundle budget | |
| working-directory: ui | |
| run: npm run build && npm run budget | |
| ui-e2e: | |
| name: UI E2E boot (Chromium + simulated API) | |
| runs-on: ubuntu-24.04 | |
| timeout-minutes: 20 | |
| permissions: | |
| contents: read | |
| steps: | |
| - uses: actions/checkout@d23441a48e516b6c34aea4fa41551a30e30af803 # v6.1.0 | |
| - uses: actions/setup-node@249970729cb0ef3589644e2896645e5dc5ba9c38 # v6.5.0 | |
| with: | |
| node-version: "24.18.0" | |
| check-latest: false | |
| cache: npm | |
| cache-dependency-path: ui/package-lock.json | |
| - name: Install UI deps | |
| working-directory: ui | |
| run: npm ci | |
| - name: Install Playwright Chromium | |
| working-directory: ui | |
| run: npx playwright install --with-deps chromium | |
| - name: UI E2E | |
| working-directory: ui | |
| run: npm run test:e2e | |
| - name: Upload Playwright artifacts | |
| if: failure() | |
| uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0 | |
| with: | |
| name: ui-e2e-artifacts | |
| path: | | |
| ui/playwright-report | |
| ui/test-results | |
| if-no-files-found: ignore |