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).
Summary
kiln does not build from a clean checkout at HEAD (
aa9c2f40):cargo build --lockedfails to resolve, because the committedCargo.lockpinstime 0.3.53, which violates the transitive requirementtime >=0.3.23, <0.3.42oftract-linalg 0.21.17(pulled by the optionaltract-onnxdep inkiln-wasi). A plaincargo buildalso fails the same way.Reproducer
git checkout aa9c2f40 # HEAD cargo build --locked --bin kilndgit statusis clean — the committedCargo.lockitself is inconsistent (contains bothtime 0.3.53andtract-linalg 0.21.17, which cannot coexist).Impact
cargo build --locked(the reproducible-build / CI path) fails for everyone.cargo build --bin kilndalso fails to resolve.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-linalgis behind the optionalwasi-nn/tractfeatures (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:After that,
cargo build --bin kilnd --features "std,kiln-execution"resolves and builds cleanly. Likely introduced by a dependency bump that advancedtimepasttract-linalg's ceiling without re-resolving the whole graph — worth a CI check thatcargo build --lockedsucceeds 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).