← Docs
Helix CLI docs
Browse Helix CLI docs

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 = gpu plus 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.
  • 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