Skip to content

cargo test --workspace is red on main: unsatisfiable testcontainers conflict (DEBT-REGISTER CI-1 names the wrong cause) #814

Description

@hyperpolymath

What

cargo test --workspace is red on main, and has been for some time, for
a reason that is not what DEBT-REGISTER CI-1 says it is.

The actual cause, measured 2026-09-22

integration/Cargo.toml requires both:

  • testcontainers ^0.28
  • testcontainers-modules ^0.15, which itself requires testcontainers ^0.27

^0.27 and ^0.28 are disjoint under Cargo's semver rules for 0.x releases.
This is unsatisfiable at the manifest level, so no Cargo.lock can fix it,
cargo fails during dependency resolution, and no crate in the workspace is
ever compiled
— including clients/rust/hypatia-client.

⚠ The debt register currently records the wrong cause

DEBT-REGISTER CI-1 states the failure is "a stale
dtolnay/rust-toolchain@stable pin … 13 jobs die at Set up job".

That is no longer true. The jobs start fine; they die at cargo resolution,
which is a later phase with a different fix. Anyone acting on the register
today would bump a toolchain pin and find nothing changed.

Consequence for the wire contract

The five Rust tests that pin the connector enum (count_is_sixteen,
wire_ids_are_stable, names_round_trip, from_id_round_trip,
port_layout_matches_v_lang) do not execute in CI and have not for as long
as this conflict has existed. They were verified green for PR #811 only by
extracting the crate into a standalone workspace: 5 passed, 0 failed.

Acceptance criteria

  • cargo test --workspace --locked exits 0 on main, and its output shows
    hypatia-client's five tests actually running — a non-zero
    denominator, not a skip.
  • DEBT-REGISTER CI-1 is corrected to name the resolution conflict, with
    the old toolchain-pin explanation struck rather than deleted, so the
    record shows it was wrong rather than appearing never to have said it.
  • The fix is at the manifest level (align the two crates on one
    testcontainers major, or drop one), not a [patch] — a patch makes
    local and CI resolve differently.
  • A mutant confirms the tests have teeth once they run: change one wire id
    in connector_generated.rs, confirm wire_ids_are_stable goes red.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    tech-debtKnown shortcut, drift, or hygiene owed - includes cleanup

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions