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.
15 KiB
ComfyUI-Sigmax CI and Test Matrix
1. Purpose
This document maps regression risks to executable test layers and CI lanes. It prevents a workflow from being considered comprehensive merely because it is green.
Command definitions remain in tests/TEST_SOP.md. Real-host lifecycle requirements remain in
tests/E2E_TESTING_SOP.md.
2. Current Activation State
| Capability | State | Activation dependency |
|---|---|---|
| Documentation checks | Implemented in pytest | M0-07 public contract |
| CI configuration self-tests | Implemented | M0-06 |
| Pure-core tests | Implemented | M1-07 |
| Deterministic property tests | Implemented | M1-07 |
| Krea 2 Turbo golden vectors | Implemented | M2-02 |
| Krea 2 RAW golden vectors | Implemented | M3-03 |
| Krea 2 variant-resolution contracts | Implemented | M3-04 |
| Framework parity tests | Implemented | M2-03, M3-05 |
| Native ComfyUI parity tests | Implemented | M2-04 |
| MiniMax H3 Diffusers/native parity lanes | Contract, source pins, complete 4/8/12/16/20 fixtures, and isolated CI jobs implemented; local CPython 3.13 CPU reports pass, hosted runtime artifacts pending | M6-05 subordinate qualification |
| Numerical benchmark matrix | Implemented | M7-02 |
| Optional image benchmark protocol | Implemented; execution unapproved | M7-03 |
| Dependency compatibility matrix | Local/pinned plus release/HEAD latest-host evidence implemented; official container explicitly unavailable/non-blocking | M7-04 |
| Co-installation mutation matrix | Ten deterministic synthetic first/repeat scenarios implemented; no external pack code executed | M7-08 |
| Performance budgets | Windows/WSL pure first/repeat limits plus two pinned-host startup observations implemented | M7-05 |
| Environment guardrails | Versioned venv/cache/lock/Unicode/temp/optional diagnostics run before every full gate | M7-06 |
| Stable public contracts | Source-derived fingerprinted node/schema/reason manifest plus migration policy implemented | M8-01 |
| Security and release audit | Tracked/dependency/provenance/Registry sections plus wheel/sdist boundary inspection implemented | M8-02 |
| Comfy Registry artifact | Deterministic Git-indexed ZIP, manifest/source binding, normalized install, and read-only observation implemented | M8-06 |
| Adapter/integration tests | Implemented | M4-01 through M4-10 |
| Real ComfyUI H1 | Implemented | M2-05 harness |
| Real ComfyUI H2 | Turbo and RAW/auto implemented | M2-05; M3-06 |
| Real ComfyUI H3 | M5-01 deterministic native-Euler H3 implemented; partial-denoise execution is rejected | M5-01 |
| MiniMax H3 model-free host contract | Explicit-variant scheduler/probe/verifier and optional pinned 0.30.0 runner implemented; host execution pending explicit authorization | M6-05 subordinate qualification |
| Frontend policy | Implemented in the default full gate with Node.js 18+; hosted CI uses Node.js 20 | M4-11 amendment |
| Browser E2E | Bounded M4-11 item-specific browser evidence accepted; reusable automated Playwright lane NOT_IMPLEMENTED |
Activate when frontend behavior requires maintained real-browser regression coverage |
| GPU/real-model tests | Optional and unapproved | Explicit requirement and authorization |
| CI workflows | Configured; hosted four-cell full gate and three pinned parity jobs passed at commit 070cb12fe444fed138b8ea601dcde3657a460647 |
M0-06 plus accepted hosted evidence |
An unavailable lane is never a pass.
3. Gate Classes
| Gate | Intended use | Required content | Acceptance authority |
|---|---|---|---|
fast |
Developer inner loop | Changed-area targeted tests | Never sufficient alone |
pr-core |
Every pull request | Policy, static, pure core, golden, packaging as available | Blocking |
pr-host |
Node, adapter, workflow, or host changes | H0, H1, H2 on known-good host | Blocking when applicable |
full-local |
Pre-push and implementation acceptance | Every applicable implemented stage | Blocking |
scheduled-compat |
Nightly/weekly | Latest-host, wider matrix, mutation/fuzz | Review required |
release |
Release candidate | Full gate, known-good host, clean install, audit, parity | Blocking |
optional-heavy |
Approved GPU/real-model run | Explicit H4 protocol | Blocking only when required |
Change-aware selection may accelerate fast. It must not remove a required pr-core,
pr-host, full-local, or release lane.
4. Regression Risk Matrix
| Risk | Primary automated tests | Required cross-check |
|---|---|---|
| Base-grid formula drift | Unit + property + golden vector | Pinned official/Diffusers differential parity |
| Shift parameterization mix-up | Table-driven unit + negative contracts | mu versus direct-ratio metamorphic relation |
| Terminal/slicing off-by-one | Boundary/property tests | Full, partial, empty, invalid-range cases |
| Float/dtype instability | Float64/float32 parameter matrix | Tolerance and fingerprint normalization |
| RAW dimension/sequence drift | Property/table cases | Square, landscape, portrait, endpoint, invalid, out-of-range |
| RAW/Turbo ambiguity | Resolver negative tests | Strict host workflow fails closed |
| Evidence/profile override drift | Schema and serialization tests | Official override becomes modified |
| Double shift/wrong ownership | Adapter integration matrix | H2 native, external-sigma, and patch workflows |
| Inert node control | Input-to-executed-path contract | H2 result or error changes with the control |
| Node ID/schema drift | V3 schema snapshot | H1 /object_info and reload/idempotency |
| Frozen public-contract drift | Manifest generator check + strict loader negatives | Migration-policy review and package inventory |
| Global import side effect | Fresh subprocess import | PyTorch call identity and optional dependency absence |
| Workflow metadata drift | JSON round-trip tests | H2 save/reload fingerprint and profile version |
| Sampler step drift | Step-level differential/property tests | Fixed seed/state, partial denoise, terminal behavior |
| Host API drift | Known-good plus latest-host lanes | Actionable compatibility error; no generic fallback |
| Package leakage | Build/clean-install inspection | No internal docs, caches, weights, secrets, or private paths |
| Release archive leakage | Canonical release audit + malicious ZIP/TAR tests | Fresh wheel and sdist semantic inventories |
| Registry candidate drift | .comfyignore ZIP validator + malicious member tests |
Windows/WSL byte identity and renamed-directory import |
| Platform/process failure | Windows/Linux + Unicode path | Port, readiness, shutdown, and cleanup verification |
5. CI Job Role Matrix
Exact Python and dependency versions are frozen by M0/M7. This matrix defines roles, not unreviewed version numbers.
| Job | PR | Push | Scheduled | OS/profile | Must produce |
|---|---|---|---|---|---|
policy-contract |
Yes | Yes | No | Ubuntu, one supported Python | Workflow/config self-tests |
quality-security |
Yes | Yes | No | Ubuntu | Secret/static/type/dependency results |
core |
Yes | Yes | Yes | Ubuntu Python min/max; Windows representative | JUnit + branch coverage |
golden |
Yes | Yes | Yes | Ubuntu + representative Windows | Full vectors + fingerprints |
parity-pinned |
When Tier 1 affected | Yes | Yes | Isolated pinned optional env | Max/mean error artifact |
adapter-contract |
When adapter affected | Yes | Yes | Ubuntu + Windows representative | Schema/registration report |
host-known-good |
When host affected | Yes | Yes | Pinned ComfyUI CPU host | Redacted host log + applicable H1/H2/H3 evidence |
host-latest |
No | No | Yes/manual | Latest reviewed ComfyUI | Compatibility report |
package |
Yes | Yes | Yes | Supported Python matrix | Wheel/sdist inventory, Registry ZIP, clean installs |
mutation-property |
No | No | Yes/manual | Pure-core environment | Survivors + reproducible seeds |
optional-heavy |
No | No | Manual/release only | Approved GPU/model matrix | H4 record |
Known-good Tier 1 and release lanes are blocking. A latest-host failure opens compatibility review and cannot silently redefine supported behavior.
6. Test-Layer Boundaries
Pure Core
- No ComfyUI or Diffusers import.
- No network, GPU, model weight, or host process.
- Deterministic by default.
- Static import-root checks plus isolated all-module import blockers.
- Deterministic property/metamorphic relations run in the default gate.
Framework Parity
- Pinned optional environment.
- No unreviewed reference checkout execution.
- Complete vectors and error statistics, not selected-point assertions.
Native ComfyUI Parity
- Exact reviewed ComfyUI revision and behavior-bearing blobs.
- Isolated Python 3.13 dependency lock; no default-runtime dependency change.
- Offline CPU import of the actual
ModelSamplingFluxand registeredsimplescheduler. - Complete 4/8/12/16-step vectors, bounded table-quantization policy, and canonical evidence.
- No model weights, host server, workflow execution, or copied GPL implementation.
Adapter Contract
- May import reviewed ComfyUI APIs or controlled stubs.
- Must prove registration, schema, ownership, and error behavior.
- Cannot substitute for a real-host lane.
Real Host
- Real pinned ComfyUI process on loopback.
- Isolated user/input/output/temp/custom-node roots.
- Lightweight test nodes/profiles and CPU workflows by default.
- Public HTTP/WebSocket interfaces and
/object_info.
Heavy Conformance
- Explicit authorization, pinned hashes, isolated caches, and separate artifacts.
- Supplemental to mathematical parity, never its replacement.
7. Coverage Governance
When source code exists:
- Collect statement and branch coverage in the normal core test job.
- Establish an observed reviewed baseline; do not invent a percentage before measurement.
- Store the accepted floor in a versioned policy file.
- Ratchet upward; reducing the floor requires an approved rollback record.
- Report repository totals and high-risk module families separately.
- Upload machine-readable coverage data and a human-readable summary.
- Require new branches in critical modules to have behavioral evidence or a reviewed exception.
Planned hotspot families:
- grids/shifts/transforms/slicing;
- profile schema/resolution/evidence;
- ComfyUI registration/ownership;
- sampler state/stepping/randomness;
- import/package/optional-dependency boundaries.
Coverage is a gap detector, not proof of numerical correctness. Deterministic property tests,
complete Krea 2 Turbo 4/8/12/16-step goldens, authoritative Turbo differential parity, native
ComfyUI Turbo schedule parity are implemented. Complete RAW 28/52-step geometry goldens are
also implemented, together with pinned authoritative/framework parity over all 14
recipe/geometry cases. Pure Krea variant-resolution tests enforce strong-evidence conflicts,
suggestion-only weak signals, and family-only model/tensor signals. Scheduled mutation
evidence remains mandatory when its roadmap stage activates. MiniMax H3 keeps its Diffusers
endpoint-inclusive and native ComfyUI simple vectors separate; the source-pinned native
adapter/report contract is present, but hosted Python 3.13 regeneration and authorized model-host
evidence remain open.
8. Skip, XFail, Retry, and Quarantine Policy
Tier 1 golden/parity, ambiguity fail-closed, double-shift, registration, import-safety, and package-leakage tests are no-skip seams.
Every permitted skip, xfail, or quarantine record must include:
- owner;
- reason;
- linked issue or ADR;
- introduced date;
- review/expiry date;
- affected test IDs;
- replacement evidence;
- promotion/removal condition.
Rules:
- Unexpected pass is a failure until the expectation is removed.
- Expired entries fail the policy check.
- Retry counts and first-attempt failures are reported separately.
- Retries may diagnose infrastructure flakiness; they cannot turn a first-attempt P0 behavioral regression into passing acceptance evidence.
- Flaky tests remain owned test debt and may not disappear silently.
9. CI Security and Reproducibility
Every workflow must:
- declare minimal permissions;
- cancel superseded unprivileged PR runs;
- avoid write tokens and secrets when executing fork code;
- pin actions according to the approved immutable/version policy;
- use bounded, locked, or constrained dependency inputs;
- audit declared production dependencies separately from CI tools;
- avoid cache sharing across incompatible trust boundaries;
- use deterministic locale, timezone, and seeds where relevant;
- retain redacted failure artifacts with bounded retention;
- avoid model downloads in default PR jobs;
- never publish artifacts from an unreviewed or failed release gate.
10. CI Self-Tests
CI configuration is executable behavior. Current contracts verify or reserve the following requirements for their owning lane:
- required workflows and jobs exist;
- job commands reference canonical repo scripts;
- local and CI gates invoke the same underlying stages;
- workflow matrices stay inside supported policy;
- action refs and permissions comply with policy;
- host/parity jobs upload diagnostics even on failure;
- the required Node.js frontend-policy stage remains separate from pure-core and optional Playwright dependencies;
- required P0 suites cannot be filtered or skipped;
- scheduled/latest/optional lanes cannot masquerade as known-good evidence;
- full-gate scripts fail when hooks mutate the worktree or index;
- missing prerequisites fail with actionable output.
These tests must be introduced before or with the first executable workflow.
11. Artifact Contract
As applicable, jobs retain:
- JUnit XML;
- branch-coverage JSON/XML and summary;
- golden/parity vectors, versions, fingerprints, and max/mean errors;
- property/fuzz seeds and minimized failing examples;
- mutation survivors;
- redacted ComfyUI startup/execution logs;
- workflow fixture version and result metadata;
- package inventory and dependency audit result.
Artifacts must not contain secrets, user data, model files, private paths, or unredacted environment dumps.
12. Activation Sequence
M0-01 Git identity
└── M0-02 audited source import
└── M0-03 import-safety hardening
└── M0-04 package/dependency layout
└── M0-05 test runner, policies, and quality tooling
└── M0-06 local/CI orchestration and workflow self-tests
└── M0-07 public documentation
Later layers activate with their production subjects:
- M1: pure core/property/fingerprint;
- M2/M3: golden and authoritative parity;
- M4: adapter, schema, H1/H2;
- M5: step-level/H3;
- M7: compatibility, performance, mutation, image supplements;
- M8: release/upgrade/rollback.