CI: qa-indexer-binary fails on rust:1.83 — base64ct 1.8.3 needs edition2024 (all pipelines red since ~06-09) #370

Closed
opened 2026-06-12 07:02:19 +00:00 by Brouie · 6 comments
Brouie commented 2026-06-12 07:02:19 +00:00 (Migrated from gitlab.com)

Symptom

Every pipeline since ~2026-06-09 is red. The only real CI job, qa-indexer-binary (.gitlab-ci.yml), fails before compiling anything:

error: failed to parse manifest at .../base64ct-1.8.3/Cargo.toml
Caused by: feature `edition2024` is required
  ... not stabilized in this version of Cargo (1.83.0)

Root cause

CI image is rust:1.83-bookworm (Cargo 1.83). A transitive dep, base64ct 1.8.3, now requires the edition2024 feature, stabilized only in Rust 1.85. So cd indexer && cargo build --release dies at manifest parse, no artifact is produced, the job fails, and the artifact-publish step then errors with "No files to upload". The indexer builds fine locally on a current toolchain — this is purely the pinned CI image being too old.

Fix (one of)

  • Bump the qa-indexer-binary image in .gitlab-ci.yml: rust:1.83-bookworm -> rust:1.85-bookworm (or newer). Simplest.
  • Or pin base64ct <= 1.7.x in indexer/Cargo.lock if staying on 1.83 is required.

Prefer the image bump unless there's a reason to hold Rust at 1.83.

Verification

  • qa-indexer-binary job goes green; indexer/target/release/cl8y-dex-indexer artifact uploads.
  • Confirm no further edition2024 cascade from other deps after the bump.

Note: this is unrelated to the open frontend MRs (!868/!869/!870) — the CI doesn't build or test frontend, so their red pipelines are this same base64ct break, not their code. Found while triaging !870's pipeline.

## Symptom Every pipeline since ~2026-06-09 is red. The only real CI job, `qa-indexer-binary` (`.gitlab-ci.yml`), fails before compiling anything: ``` error: failed to parse manifest at .../base64ct-1.8.3/Cargo.toml Caused by: feature `edition2024` is required ... not stabilized in this version of Cargo (1.83.0) ``` ## Root cause CI image is `rust:1.83-bookworm` (Cargo 1.83). A transitive dep, `base64ct 1.8.3`, now requires the `edition2024` feature, stabilized only in **Rust 1.85**. So `cd indexer && cargo build --release` dies at manifest parse, no artifact is produced, the job fails, and the artifact-publish step then errors with "No files to upload". The indexer builds fine locally on a current toolchain — this is purely the pinned CI image being too old. ## Fix (one of) - Bump the `qa-indexer-binary` image in `.gitlab-ci.yml`: `rust:1.83-bookworm` -> `rust:1.85-bookworm` (or newer). Simplest. - Or pin `base64ct` `<= 1.7.x` in `indexer/Cargo.lock` if staying on 1.83 is required. Prefer the image bump unless there's a reason to hold Rust at 1.83. ## Verification - `qa-indexer-binary` job goes green; `indexer/target/release/cl8y-dex-indexer` artifact uploads. - Confirm no further `edition2024` cascade from other deps after the bump. Note: this is unrelated to the open frontend MRs (!868/!869/!870) — the CI doesn't build or test frontend, so their red pipelines are this same base64ct break, not their code. Found while triaging !870's pipeline.
PlasticDigits commented 2026-06-12 07:22:54 +00:00 (Migrated from gitlab.com)

mentioned in commit 3a7f4cb21b

mentioned in commit 3a7f4cb21bd2d5162a03f140d7a4aac269464069
PlasticDigits commented 2026-06-12 07:23:08 +00:00 (Migrated from gitlab.com)

mentioned in merge request !879

mentioned in merge request !879
Brouie commented 2026-06-12 07:28:33 +00:00 (Migrated from gitlab.com)

mentioned in issue #363

mentioned in issue #363
PlasticDigits commented 2026-06-12 07:58:14 +00:00 (Migrated from gitlab.com)

mentioned in commit 6205054220

mentioned in commit 620505422003ac75c7b4f8212a32116d5dc40bc2
PlasticDigits commented 2026-06-12 08:14:11 +00:00 (Migrated from gitlab.com)

mentioned in merge request !881

mentioned in merge request !881
PlasticDigits commented 2026-06-12 11:20:20 +00:00 (Migrated from gitlab.com)

Verification complete — PASS

Verified on main @ 0cf04e53 (merged via 3a7f4cb / 6205054).

Acceptance criteria

Item Result How verified
qa-indexer-binary job green PASS GitLab pipeline #2596884221 — qa-indexer-binary: success on main push
indexer/target/release/cl8y-dex-indexer artifact uploads PASS Job log: uploaded qa-indexer/0cf04e53/cl8y-dex-indexer; artifact upload 201 Created
No further edition2024 cascade after image bump PASS base64ct v1.8.3 downloads and compiles on rust:1.96-bookworm; local Docker repro with CI RUSTFLAGS="-D warnings -A dead_code" finishes clean; pre-fix rust:1.83-bookworm still reproduces the original manifest-parse failure

Fix confirmed

  • .gitlab-ci.yml: rust:1.83-bookworm → rust:1.96-bookworm (edition-2024 support; aligns with AGENTS.md local toolchain)
  • RUSTFLAGS adds -A dead_code so -D warnings does not fail on intentional indexer stubs
  • Guardrail: scripts/qa/test-qa-redeploy-decision.sh rejects rust:1.8[0-4]- images
  • Docs: skills/AGENTS_QA_REDEPLOY_DECISION.md notes Rust 1.85+ requirement (#370)

Regression repro (pre-fix baseline)

docker run … rust:1.83-bookworm … cargo build --release
→ error: failed to parse manifest … base64ct-1.8.3 … feature edition2024 is required

No repo changes from this verification pass; closing as fixed on main.

## Verification complete — PASS Verified on `main` @ `0cf04e53` (merged via `3a7f4cb` / `6205054`). ### Acceptance criteria | Item | Result | How verified | |------|--------|--------------| | `qa-indexer-binary` job green | **PASS** | GitLab pipeline [#2596884221](https://gitlab.com/PlasticDigits/cl8y-dex-terraclassic/-/pipelines/2596884221) — `qa-indexer-binary: success` on `main` push | | `indexer/target/release/cl8y-dex-indexer` artifact uploads | **PASS** | Job log: `uploaded qa-indexer/0cf04e53/cl8y-dex-indexer`; artifact upload `201 Created` | | No further `edition2024` cascade after image bump | **PASS** | `base64ct v1.8.3` downloads and compiles on `rust:1.96-bookworm`; local Docker repro with CI `RUSTFLAGS="-D warnings -A dead_code"` finishes clean; pre-fix `rust:1.83-bookworm` still reproduces the original manifest-parse failure | ### Fix confirmed - `.gitlab-ci.yml`: `rust:1.83-bookworm` → `rust:1.96-bookworm` (edition-2024 support; aligns with AGENTS.md local toolchain) - `RUSTFLAGS` adds `-A dead_code` so `-D warnings` does not fail on intentional indexer stubs - Guardrail: `scripts/qa/test-qa-redeploy-decision.sh` rejects `rust:1.8[0-4]-` images - Docs: `skills/AGENTS_QA_REDEPLOY_DECISION.md` notes Rust 1.85+ requirement ([#370](https://gitlab.com/PlasticDigits/cl8y-dex-terraclassic/-/issues/370)) ### Regression repro (pre-fix baseline) ``` docker run … rust:1.83-bookworm … cargo build --release → error: failed to parse manifest … base64ct-1.8.3 … feature edition2024 is required ``` No repo changes from this verification pass; closing as fixed on `main`.
PlasticDigits (Migrated from gitlab.com) closed this issue 2026-06-12 11:20:23 +00:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
code/cl8y-dex-terraclassic#370
No description provided.