Dry Lab / Computational: unpinned dependency error
A package resolved to a version incompatible with the pipeline.
Ranked causes
- requirements.txt / environment.yml lists a package without a version pinError only reproduces on a fresh environment build, not the original dev machine.
- Transitive dependency of a pinned package updated and broke an APIDirect dependencies are pinned but the error is inside a sub-dependency.
- Cached environment tarball / lockfile from the wrong project (material mix-up)Lockfile path or container tag does not match this protocol's recorded hash.
- Conda/pip channel resolved a different build than the one used to develop the protocolSame version number, different behavior — check the build/channel hash.
Recovery steps
- Pin every direct dependency to an exact version (==x.y.z) in the environment specEliminates the whole class of drift-on-rebuild failures.
- Generate and commit a full lockfile (pip freeze / conda-lock) alongside the top-level specPins transitive dependencies too, not just direct ones.
- Re-build the environment from the lockfile in a clean container and re-runConfirms the pin actually reproduces the original working state.
- Record the exact container/conda build hash in the run's execution logMakes the next failure immediately diagnosable without re-deriving it.
Controls first
- Did a control rebuild from the recorded lockfile / container hash succeed?If no: Lockfile or channel resolution issue — treat the environment spec as the material under test.
- Does the error reproduce only on a freshly built environment, not the original machine?If yes: Confirmed version drift — pin dependencies and rebuild from a lockfile.
Related symptoms
Opens Diagnostics capture with this first-party playbook behind it. Sign in if the workspace asks.