Implement explicit Base FL2VA and Ref2VA profiles, sigma node and native workflow contracts; add Diffusers and ComfyUI-native parity runners, golden evidence, CI jobs, compatibility contracts, and package/release updates. Progress: tracked index and reviewed .secrets.baseline reconciled across 56 public paths; performance matrix regenerated; local Diffusers and native ComfyUI H3 parity PASS; wheel audit PASS (102 files, zero mandatory runtime dependencies). Linux full gate passed pre-pytest stages and reached 2603 passed, 3 skipped, 2 failed. Blockers: the remaining pytest failures are stale native-Windows receipt/matrix fingerprints; this WSL environment cannot execute powershell.exe, cmd.exe, wsl.exe, or PE32+ Windows Python. Hosted Actions evidence is unavailable because GH_TOKEN is invalid. Canonical pinned H1/H2 was not launched because reference/ComfyUI requires comfy-aimdo==0.4.11 while the selected executable environment has 0.4.10. Handoff: regenerate tests/compatibility/fixtures/windows_py313_v1.json natively, regenerate/check the derived compatibility matrix, rerun the Linux full gate, publish the candidate through authenticated hosted CI, then run scripts/run_comfyui_e2e.py --minimax-h3-only against ComfyUI 14b05228 with comfy-aimdo==0.4.11. Keep M6-05 IN_PROGRESS until all gates pass. Detailed local-only records remain in ignored .planning/ and reference/; no weights or credentials are included.
321 lines
11 KiB
YAML
321 lines
11 KiB
YAML
name: Foundation CI
|
|
|
|
on:
|
|
push:
|
|
branches:
|
|
- main
|
|
pull_request:
|
|
|
|
permissions:
|
|
contents: read
|
|
|
|
concurrency:
|
|
group: foundation-${{ github.workflow }}-${{ github.ref }}
|
|
cancel-in-progress: true
|
|
|
|
jobs:
|
|
full-gate:
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
os:
|
|
- ubuntu-latest
|
|
- windows-latest
|
|
python:
|
|
- "3.10"
|
|
- "3.13"
|
|
runs-on: ${{ matrix.os }}
|
|
|
|
steps:
|
|
- name: Checkout
|
|
# actions/checkout v6.0.2
|
|
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # pragma: allowlist secret
|
|
|
|
- name: Set up Python
|
|
# actions/setup-python v6.2.0
|
|
uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # pragma: allowlist secret
|
|
with:
|
|
python-version: ${{ matrix.python }}
|
|
|
|
- name: Set up Node.js
|
|
# actions/setup-node v6.4.0
|
|
uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # pragma: allowlist secret
|
|
with:
|
|
node-version: "20"
|
|
package-manager-cache: false
|
|
|
|
- name: Create Windows environment
|
|
if: runner.os == 'Windows'
|
|
shell: pwsh
|
|
run: |
|
|
python -m venv .venv
|
|
.\.venv\Scripts\python.exe -m pip install -e ".[dev]"
|
|
|
|
- name: Run Windows full gate
|
|
if: runner.os == 'Windows'
|
|
shell: pwsh
|
|
run: powershell -File scripts/run_full_tests_windows.ps1
|
|
|
|
- name: Create Linux environment
|
|
if: runner.os == 'Linux'
|
|
shell: bash
|
|
run: |
|
|
python -m venv .venv-wsl
|
|
.venv-wsl/bin/python -m pip install -e '.[dev]'
|
|
|
|
- name: Run Linux full gate
|
|
if: runner.os == 'Linux'
|
|
shell: bash
|
|
run: bash scripts/run_full_tests_linux.sh
|
|
|
|
parity-pinned:
|
|
runs-on: ubuntu-latest
|
|
|
|
steps:
|
|
- name: Checkout
|
|
# actions/checkout v6.0.2
|
|
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # pragma: allowlist secret
|
|
|
|
- name: Set up Python
|
|
# actions/setup-python v6.2.0
|
|
uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # pragma: allowlist secret
|
|
with:
|
|
python-version: "3.13"
|
|
|
|
- name: Create isolated parity environment
|
|
shell: bash
|
|
run: |
|
|
python -m venv .venv-parity
|
|
.venv-parity/bin/python -m pip install -e '.[dev]'
|
|
.venv-parity/bin/python -m pip install --no-cache-dir \
|
|
--index-url https://download.pytorch.org/whl/cpu \
|
|
torch==2.9.0+cpu
|
|
.venv-parity/bin/python -m pip install --no-cache-dir \
|
|
-r requirements/parity-krea2-turbo.txt
|
|
|
|
- name: Regenerate pinned Krea 2 Turbo parity report
|
|
shell: bash
|
|
run: |
|
|
.venv-parity/bin/python -m scripts.run_krea2_turbo_parity \
|
|
--output .tmp/krea2_turbo_parity_v1.json
|
|
|
|
- name: Verify committed parity evidence
|
|
shell: bash
|
|
run: |
|
|
cmp --silent \
|
|
tests/parity/fixtures/krea2_turbo_parity_v1.json \
|
|
.tmp/krea2_turbo_parity_v1.json
|
|
|
|
- name: Publish parity evidence
|
|
if: always()
|
|
# actions/upload-artifact v7.0.1
|
|
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # pragma: allowlist secret
|
|
with:
|
|
name: krea2-turbo-parity-python-3.13
|
|
path: .tmp/krea2_turbo_parity_v1.json
|
|
if-no-files-found: warn
|
|
retention-days: 14
|
|
|
|
minimax-h3-diffusers-parity-pinned:
|
|
runs-on: ubuntu-latest
|
|
|
|
steps:
|
|
- name: Checkout
|
|
# actions/checkout v6.0.2
|
|
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # pragma: allowlist secret
|
|
|
|
- name: Set up Python
|
|
# actions/setup-python v6.2.0
|
|
uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # pragma: allowlist secret
|
|
with:
|
|
python-version: "3.13"
|
|
|
|
- name: Create isolated MiniMax H3 parity environment
|
|
shell: bash
|
|
run: |
|
|
python -m venv .venv-h3-parity
|
|
.venv-h3-parity/bin/python -m pip install -e '.[dev]'
|
|
.venv-h3-parity/bin/python -m pip install --no-cache-dir \
|
|
--index-url https://download.pytorch.org/whl/cpu \
|
|
torch==2.9.0+cpu
|
|
.venv-h3-parity/bin/python -m pip install --no-cache-dir \
|
|
-r requirements/parity-minimax-h3-diffusers.txt
|
|
|
|
- name: Run pinned MiniMax H3 Diffusers parity
|
|
shell: bash
|
|
run: |
|
|
.venv-h3-parity/bin/python -m scripts.run_minimax_h3_diffusers_parity \
|
|
--output .tmp/h3-diffusers-parity-report.json
|
|
|
|
- name: Verify generated MiniMax H3 parity evidence
|
|
shell: bash
|
|
run: test -s .tmp/h3-diffusers-parity-report.json
|
|
|
|
- name: Publish MiniMax H3 parity evidence
|
|
if: always()
|
|
# actions/upload-artifact v7.0.1
|
|
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # pragma: allowlist secret
|
|
with:
|
|
name: minimax-h3-diffusers-parity-python-3.13
|
|
path: .tmp/h3-diffusers-parity-report.json
|
|
if-no-files-found: warn
|
|
retention-days: 14
|
|
|
|
minimax-h3-comfyui-native-parity-pinned:
|
|
runs-on: ubuntu-latest
|
|
|
|
steps:
|
|
- name: Checkout
|
|
# actions/checkout v6.0.2
|
|
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # pragma: allowlist secret
|
|
|
|
- name: Set up Python
|
|
# actions/setup-python v6.2.0
|
|
uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # pragma: allowlist secret
|
|
with:
|
|
python-version: "3.13"
|
|
|
|
- name: Fetch pinned ComfyUI H3 source
|
|
shell: bash
|
|
run: |
|
|
git init .tmp/ComfyUI-H3
|
|
git -C .tmp/ComfyUI-H3 remote add origin https://github.com/Comfy-Org/ComfyUI.git
|
|
git -C .tmp/ComfyUI-H3 fetch --depth 1 origin \
|
|
57500fc5bc92566a63f2046824f522cd55c335ca # pragma: allowlist secret
|
|
git -C .tmp/ComfyUI-H3 checkout --detach FETCH_HEAD
|
|
|
|
- name: Create isolated native H3 parity environment
|
|
shell: bash
|
|
run: |
|
|
python -m venv .venv-h3-comfy-native
|
|
.venv-h3-comfy-native/bin/python -m pip install -e '.[dev]'
|
|
.venv-h3-comfy-native/bin/python -m pip install --no-cache-dir \
|
|
-r requirements/parity-comfyui-h3-native.txt
|
|
|
|
- name: Regenerate native ComfyUI H3 parity report
|
|
shell: bash
|
|
run: |
|
|
.venv-h3-comfy-native/bin/python -m scripts.run_minimax_h3_comfy_native_parity \
|
|
--comfyui-root .tmp/ComfyUI-H3 \
|
|
--output .tmp/minimax_h3_comfy_native_parity_v1.json
|
|
|
|
- name: Verify committed native H3 evidence
|
|
shell: bash
|
|
run: |
|
|
cmp --silent \
|
|
tests/parity/fixtures/minimax_h3_comfy_native_parity_v1.json \
|
|
.tmp/minimax_h3_comfy_native_parity_v1.json
|
|
|
|
- name: Publish native H3 parity evidence
|
|
if: always()
|
|
# actions/upload-artifact v7.0.1
|
|
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # pragma: allowlist secret
|
|
with:
|
|
name: minimax-h3-comfy-native-parity-python-3.13
|
|
path: .tmp/minimax_h3_comfy_native_parity_v1.json
|
|
if-no-files-found: warn
|
|
retention-days: 14
|
|
|
|
raw-parity-pinned:
|
|
runs-on: ubuntu-latest
|
|
|
|
steps:
|
|
- name: Checkout
|
|
# actions/checkout v6.0.2
|
|
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # pragma: allowlist secret
|
|
|
|
- name: Set up Python
|
|
# actions/setup-python v6.2.0
|
|
uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # pragma: allowlist secret
|
|
with:
|
|
python-version: "3.13"
|
|
|
|
- name: Create isolated RAW parity environment
|
|
shell: bash
|
|
run: |
|
|
python -m venv .venv-parity
|
|
.venv-parity/bin/python -m pip install -e '.[dev]'
|
|
.venv-parity/bin/python -m pip install --no-cache-dir \
|
|
--index-url https://download.pytorch.org/whl/cpu \
|
|
torch==2.9.0+cpu
|
|
.venv-parity/bin/python -m pip install --no-cache-dir \
|
|
-r requirements/parity-krea2-turbo.txt
|
|
|
|
- name: Regenerate pinned Krea 2 RAW parity report
|
|
shell: bash
|
|
run: |
|
|
.venv-parity/bin/python -m scripts.run_krea2_raw_parity \
|
|
--output .tmp/krea2_raw_parity_v1.json
|
|
|
|
- name: Verify committed RAW parity evidence
|
|
shell: bash
|
|
run: |
|
|
cmp --silent \
|
|
tests/parity/fixtures/krea2_raw_parity_v1.json \
|
|
.tmp/krea2_raw_parity_v1.json
|
|
|
|
- name: Publish RAW parity evidence
|
|
if: always()
|
|
# actions/upload-artifact v7.0.1
|
|
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # pragma: allowlist secret
|
|
with:
|
|
name: krea2-raw-parity-python-3.13
|
|
path: .tmp/krea2_raw_parity_v1.json
|
|
if-no-files-found: warn
|
|
retention-days: 14
|
|
|
|
native-comfyui-parity-pinned:
|
|
runs-on: ubuntu-latest
|
|
|
|
steps:
|
|
- name: Checkout
|
|
# actions/checkout v6.0.2
|
|
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # pragma: allowlist secret
|
|
|
|
- name: Set up Python
|
|
# actions/setup-python v6.2.0
|
|
uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # pragma: allowlist secret
|
|
with:
|
|
python-version: "3.13"
|
|
|
|
- name: Fetch pinned ComfyUI source
|
|
shell: bash
|
|
run: |
|
|
git init .tmp/ComfyUI
|
|
git -C .tmp/ComfyUI remote add origin https://github.com/Comfy-Org/ComfyUI.git
|
|
git -C .tmp/ComfyUI fetch --depth 1 origin \
|
|
e651b7bef55a5376343dcb1c0edb79f0142c985e # pragma: allowlist secret
|
|
git -C .tmp/ComfyUI checkout --detach FETCH_HEAD
|
|
|
|
- name: Create isolated native parity environment
|
|
shell: bash
|
|
run: |
|
|
python -m venv .venv-comfy-parity
|
|
.venv-comfy-parity/bin/python -m pip install -e '.[dev]'
|
|
.venv-comfy-parity/bin/python -m pip install \
|
|
-r requirements/parity-comfyui-native.txt
|
|
|
|
- name: Regenerate native ComfyUI parity report
|
|
shell: bash
|
|
run: |
|
|
.venv-comfy-parity/bin/python -m scripts.run_krea2_comfy_native_parity \
|
|
--comfyui-root .tmp/ComfyUI \
|
|
--output .tmp/krea2_turbo_comfy_native_parity_v1.json
|
|
|
|
- name: Verify committed native evidence
|
|
shell: bash
|
|
run: |
|
|
cmp --silent \
|
|
tests/parity/fixtures/krea2_turbo_comfy_native_parity_v1.json \
|
|
.tmp/krea2_turbo_comfy_native_parity_v1.json
|
|
|
|
- name: Publish native parity evidence
|
|
if: always()
|
|
# actions/upload-artifact v7.0.1
|
|
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # pragma: allowlist secret
|
|
with:
|
|
name: krea2-turbo-comfy-native-parity-python-3.13
|
|
path: .tmp/krea2_turbo_comfy_native_parity_v1.json
|
|
if-no-files-found: warn
|
|
retention-days: 14
|