Skip to content

fix(ci): pin time to 0.3.51 to unbreak cookie 0.18.1 build#376

Merged
sanity merged 1 commit into
mainfrom
fix/ci-pin-time-cookie-compat
Jun 30, 2026
Merged

fix(ci): pin time to 0.3.51 to unbreak cookie 0.18.1 build#376
sanity merged 1 commit into
mainfrom
fix/ci-pin-time-cookie-compat

Conversation

@sanity

@sanity sanity commented Jun 30, 2026

Copy link
Copy Markdown
Contributor

Problem

CI's build job is red for every PR and push as of 2026-06-30:

error[E0061]: this method takes 2 arguments but 1 argument was supplied
   --> cookie-0.18.1/src/parse.rs:226:27
   --> time-0.3.52/src/parsing/parsable.rs:62:12
error: could not compile `cookie` (lib) due to 1 previous error

This repo commits no Cargo.lock and CI does not pass --locked, so every run re-resolves dependencies from crates.io. time 0.3.52 (published today) changed the Parsable::parse signature; cookie 0.18.1 — a dev-dependency of room-contract via the freenet crate, compiled by cargo test --package room-contract --features net — still calls it with the old arity. Nothing in the source changed; the dependency graph drifted.

Approach

time can't just be held below the break — serde_with 3.21.0 (via freenet-stdlib 0.6.1) requires time = "~0.3.47". The compatible window is 0.3.470.3.51. Pin to 0.3.51 (newest that satisfies the floor and stays below the break) using the same cargo update --precise mechanism already used for constant_time_eq, in both the build and ui-playwright-tests jobs.

Testing

Reproduced and verified locally:

  • cargo test --package room-contract --features net --no-run with time 0.3.52 → fails on cookie (E0061).
  • After cargo update -p time --precise 0.3.51cookie and the room-contract test build compile cleanly.

CI on this PR is the end-to-end confirmation.

Follow-up

This class of break recurs because CI re-resolves on every run. The durable fix is to commit a Cargo.lock (or build with --locked) so CI stops drifting with each upstream publish. Pinning here is the minimal unblock; the lockfile question is worth a separate discussion. The time pin should be dropped once cookie ships a time 0.3.52-compatible release.

[AI-assisted - Claude]

This repo commits no Cargo.lock and CI does not pass `--locked`, so every
CI run re-resolves dependencies from crates.io. `time 0.3.52` (published
2026-06-30) changed the `Parsable::parse` signature, and `cookie 0.18.1`
— pulled in as a dev-dependency of room-contract via the `freenet` crate
and compiled by `cargo test --package room-contract --features net` —
calls it with the old arity, so the `build` job now fails for every PR
and push with `error[E0061]: this method takes 2 arguments but 1 argument
was supplied` in cookie-0.18.1/src/parse.rs.

`time` cannot simply be held below the break: serde_with 3.21.0 (via
freenet-stdlib 0.6.1) requires `time = "~0.3.47"`. 0.3.51 is the newest
version that satisfies that floor while staying below the 0.3.52 break, so
pin to it via the existing `cargo update --precise` mechanism already used
for constant_time_eq, in both the `build` and `ui-playwright-tests` jobs.

Reproduced locally: `cargo test --package room-contract --features net
--no-run` fails on time 0.3.52 and compiles cleanly on 0.3.51.

Remove this pin once cookie ships a time-0.3.52-compatible release. The
durable fix is to commit a Cargo.lock (or build with `--locked`) so CI
stops drifting with every upstream publish; filed separately as a
follow-up consideration.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VmZ2TuM1ofhLTndJ1AUnMH
@sanity sanity merged commit 93617e7 into main Jun 30, 2026
6 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant