Skip to content

kiln does not build from a clean checkout: committed Cargo.lock pins time 0.3.53, conflicting with tract-linalg 0.21.17 (needs <0.3.42) — cargo build --locked fails #403

Description

@avrabe

Summary

kiln does not build from a clean checkout at HEAD (aa9c2f40): cargo build --locked fails to resolve, because the committed Cargo.lock pins time 0.3.53, which violates the transitive requirement time >=0.3.23, <0.3.42 of tract-linalg 0.21.17 (pulled by the optional tract-onnx dep in kiln-wasi). A plain cargo build also fails the same way.

Reproducer

git checkout aa9c2f40   # HEAD
cargo build --locked --bin kilnd
error: failed to select a version for `time`.
    ... required by package `tract-linalg v0.21.17`
versions that meet the requirements `>=0.3.23, <0.3.42` are: 0.3.41, 0.3.40, ... 0.3.23
all possible versions conflict with previously selected packages.
  previously selected package `time v0.3.53`
    ... which satisfies dependency `time = "^0.3.30"` (locked to 0.3.53) of package `plist v1.7.2`
failed to select a version for `time` which could resolve this conflict

git status is clean — the committed Cargo.lock itself is inconsistent (contains both time 0.3.53 and tract-linalg 0.21.17, which cannot coexist).

Impact

  • cargo build --locked (the reproducible-build / CI path) fails for everyone.
  • Plain cargo build --bin kilnd also fails to resolve.
  • Blocks building kilnd / the workspace from a fresh clone. (It also silently blocked an external test harness that rebuilds kilnd per change — it kept running a stale binary because the rebuild failed.)

tract-onnx/tract-linalg is behind the optional wasi-nn/tract features (off by default), but its version constraint still participates in workspace resolution, so the lock must be consistent with it.

Fix

Regenerate the lock with a compatible time:

cargo update -p time --precise 0.3.41   # satisfies both plist (^0.3.30) and tract-linalg (<0.3.42)

After that, cargo build --bin kilnd --features "std,kiln-execution" resolves and builds cleanly. Likely introduced by a dependency bump that advanced time past tract-linalg's ceiling without re-resolving the whole graph — worth a CI check that cargo build --locked succeeds on the committed lock.

Found by the pulseengine challenge harness (it rebuilds kilnd each pass to avoid testing stale binaries; the rebuild started failing at this HEAD).

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions