Why Helix Is Not Just Containers And A Workflow Engine
Nextflow can pin what ran. Helix pins what was promised and enforces it at verification time.
One concrete, reproducible example:
- Scenario: two GPU runs on the “same” pipeline produce subtly different distributions because the runner silently upgraded its CUDA driver and enabled TF32.
- Helix behavior:
- The run header records
backend.kind = gpuplus driver/runtime, device UUID/SM, and math-mode flags. - Trust verification fails if any required GPU fingerprint field is missing or mismatched against the bundle manifest.
- The receipt shows the exact backend block and determinism class, so the causal subgraph (policy → backend → metrics) is explicit.
- The run header records
- What this prevents: a class of “ghost drift” failures that Nextflow-style stacks cannot diagnose; they see containers + parameters, but not GPU driver, math mode, or device UUID, so they cannot prove the run is within the declared determinism envelope.
Switching proof: a bundle with an incomplete or mismatched GPU fingerprint is rejected by helix trust check, while a properly fingerprinted bundle verifies and ships with a receipt that binds the run to hardware identity and math mode. No extra DSL, no external attestation—just the contract enforced in verification.
Evidence: run python tools/smoke_cuda.py --out artifacts/gpu_envelope_proof (or fetch the gpu-envelope-proof CI artifact) for a self-contained bundle + backend.json + verify.txt.
Helix explains divergence (excerpt):
- Frontier: op1 (node sha256:...) cause=parameter_change
- Evidence: /p changed 3 → 4
- Minimal causal subgraph nodes: 2
- Environment ruled out (backend hashes match)
Canonical evidence artifacts (download from CI artifacts, then helix verify <artifact>/manifest.json):
gpu-envelope-proof(GPU determinism envelope)divergence-proof(semantic divergence proof bundle)
Trust toolchain (copy/paste):
helix trust fingerprint
helix trust explain --a path_to_bundleA --b path_to_bundleB
helix trust divergence --a path_to_bundleA --b path_to_bundleB --bundle proof_dir
helix verify proof_dir/manifest.json