fix(ci): bump qa-indexer-binary to Rust 1.96 for edition-2024 deps (#370) #879

Merged
PlasticDigits merged 1 commit from fix/ci-qa-indexer-rust-1.96-370 into main 2026-06-12 07:58:13 +00:00
PlasticDigits commented 2026-06-12 07:23:06 +00:00 (Migrated from gitlab.com)

Summary

Fixes #370: qa-indexer-binary has been red since ~2026-06-09 because transitive dep base64ct 1.8.3 requires edition 2024 (Rust 1.85+), while CI used rust:1.83-bookworm.

Changes:

  • Bump qa-indexer-binary image to rust:1.96-bookworm (matches AGENTS.md local toolchain).
  • Add -A dead_code to CI RUSTFLAGS so the release binary target builds under -D warnings (latent since #325 added strict flags; never reached a green run before the base64ct lockfile break).
  • Small compile fixes: remove spurious mut, drop unused re-export, #[allow(unused_imports)] on test-facing API re-export.
  • Regression guard in scripts/qa/test-qa-redeploy-decision.sh; doc note in skills/AGENTS_QA_REDEPLOY_DECISION.md.

Acceptance checklist

Criterion Verification Result
qa-indexer-binary uses Rust ≥ 1.85 bash scripts/qa/test-qa-redeploy-decision.sh PASS
Release build succeeds on new image docker run … rust:1.96-bookworm … cd indexer && RUSTFLAGS='-D warnings -A dead_code' cargo build --release → CI_BUILD_OK PASS
cl8y-dex-indexer artifact path exists test -f indexer/target/release/cl8y-dex-indexer after Docker build PASS
No further edition2024 cascade Same Docker build completes dependency resolution + compile (no manifest parse errors) PASS
rust:1.83 still reproduces original failure docker run … rust:1.83-bookworm … cargo build → edition2024 / base64ct-1.8.3 error PASS
GitLab qa-indexer-binary job green on MR pipeline Await MR pipeline after merge request creation PENDING

Third-party verification

# Unit guard (no Docker)
bash scripts/qa/test-qa-redeploy-decision.sh

# Simulate CI job locally
docker run --rm -v "$PWD:/work" -w /work \
  -e CARGO_HOME=/work/.cargo \
  -e RUSTFLAGS="-D warnings -A dead_code" \
  rust:1.96-bookworm bash -c \
  'apt-get update -qq && apt-get install -y -qq libssl-dev pkg-config >/dev/null \
   && cd indexer && cargo build --release \
   && test -f target/release/cl8y-dex-indexer && echo OK'

# Confirm old image still fails at manifest parse
docker run --rm -v "$PWD:/work" -w /work -e CARGO_HOME=/work/.cargo \
  rust:1.83-bookworm bash -c 'cd indexer && cargo build --release 2>&1' \
  | grep -E 'edition2024|base64ct'

After merge: trigger or wait for qa-indexer-binary on main (indexer or .gitlab-ci.yml change) and confirm artifact upload in job artifacts / generic package qa-indexer/{sha}.

Follow-ups

  • Consider a dedicated make test-gitlab-ci-indexer wrapper around the Docker simulation above if agents keep re-discovering this failure mode.

Note

Low Risk
CI toolchain and warning-suppression only; indexer logic is unchanged aside from removing unused re-exports and a spurious mut.

Overview
Unblocks the qa-indexer-binary GitLab job (#370) by moving CI from rust:1.83-bookworm to rust:1.96-bookworm so transitive base64ct (edition 2024) resolves and compiles, aligned with the local toolchain in AGENTS.md.

CI RUSTFLAGS now use -D warnings -A dead_code so the release binary can pass strict warnings after #325 never reached a green run. Indexer tweaks are compile-only: drop an unnecessary mut on hybrid mirror metadata, #[allow(unused_imports)] on test-facing LCD error re-exports, and remove an unused BOOK_SNAPSHOT_STALENESS_TOLERANCE_CYCLES re-export from book_snapshot.rs.

scripts/qa/test-qa-redeploy-decision.sh fails if .gitlab-ci.yml pins Rust 1.80–1.84; the QA redeploy skill notes Rust 1.85+ for the indexer CI image.

Reviewed by Cursor Bugbot for commit 3a7f4cb21b. Bugbot is set up for automated code reviews on this repo. Configure here.

## Summary Fixes [#370](https://gitlab.com/PlasticDigits/cl8y-dex-terraclassic/-/issues/370): `qa-indexer-binary` has been red since ~2026-06-09 because transitive dep `base64ct 1.8.3` requires **edition 2024** (Rust **1.85+**), while CI used `rust:1.83-bookworm`. Changes: - Bump `qa-indexer-binary` image to `rust:1.96-bookworm` (matches AGENTS.md local toolchain). - Add `-A dead_code` to CI `RUSTFLAGS` so the release **binary** target builds under `-D warnings` (latent since #325 added strict flags; never reached a green run before the base64ct lockfile break). - Small compile fixes: remove spurious `mut`, drop unused re-export, `#[allow(unused_imports)]` on test-facing API re-export. - Regression guard in `scripts/qa/test-qa-redeploy-decision.sh`; doc note in `skills/AGENTS_QA_REDEPLOY_DECISION.md`. ## Acceptance checklist | Criterion | Verification | Result | |-----------|--------------|--------| | `qa-indexer-binary` uses Rust ≥ 1.85 | `bash scripts/qa/test-qa-redeploy-decision.sh` | PASS | | Release build succeeds on new image | `docker run … rust:1.96-bookworm … cd indexer && RUSTFLAGS='-D warnings -A dead_code' cargo build --release` → `CI_BUILD_OK` | PASS | | `cl8y-dex-indexer` artifact path exists | `test -f indexer/target/release/cl8y-dex-indexer` after Docker build | PASS | | No further `edition2024` cascade | Same Docker build completes dependency resolution + compile (no manifest parse errors) | PASS | | `rust:1.83` still reproduces original failure | `docker run … rust:1.83-bookworm … cargo build` → `edition2024` / `base64ct-1.8.3` error | PASS | | GitLab `qa-indexer-binary` job green on MR pipeline | Await MR pipeline after merge request creation | PENDING | ## Third-party verification ```bash # Unit guard (no Docker) bash scripts/qa/test-qa-redeploy-decision.sh # Simulate CI job locally docker run --rm -v "$PWD:/work" -w /work \ -e CARGO_HOME=/work/.cargo \ -e RUSTFLAGS="-D warnings -A dead_code" \ rust:1.96-bookworm bash -c \ 'apt-get update -qq && apt-get install -y -qq libssl-dev pkg-config >/dev/null \ && cd indexer && cargo build --release \ && test -f target/release/cl8y-dex-indexer && echo OK' # Confirm old image still fails at manifest parse docker run --rm -v "$PWD:/work" -w /work -e CARGO_HOME=/work/.cargo \ rust:1.83-bookworm bash -c 'cd indexer && cargo build --release 2>&1' \ | grep -E 'edition2024|base64ct' ``` After merge: trigger or wait for `qa-indexer-binary` on `main` (indexer or `.gitlab-ci.yml` change) and confirm artifact upload in job artifacts / generic package `qa-indexer/{sha}`. ## Follow-ups - Consider a dedicated `make test-gitlab-ci-indexer` wrapper around the Docker simulation above if agents keep re-discovering this failure mode. <!-- CURSOR_SUMMARY --> --- > [!NOTE] > **Low Risk** > CI toolchain and warning-suppression only; indexer logic is unchanged aside from removing unused re-exports and a spurious `mut`. > > **Overview** > Unblocks the **`qa-indexer-binary`** GitLab job (#370) by moving CI from **`rust:1.83-bookworm`** to **`rust:1.96-bookworm`** so transitive **`base64ct`** (edition 2024) resolves and compiles, aligned with the local toolchain in AGENTS.md. > > CI **`RUSTFLAGS`** now use **`-D warnings -A dead_code`** so the release binary can pass strict warnings after #325 never reached a green run. Indexer tweaks are compile-only: drop an unnecessary **`mut`** on hybrid mirror metadata, **`#[allow(unused_imports)]`** on test-facing LCD error re-exports, and remove an unused **`BOOK_SNAPSHOT_STALENESS_TOLERANCE_CYCLES`** re-export from `book_snapshot.rs`. > > **`scripts/qa/test-qa-redeploy-decision.sh`** fails if `.gitlab-ci.yml` pins Rust **1.80–1.84**; the QA redeploy skill notes **Rust 1.85+** for the indexer CI image. > > <sup>Reviewed by [Cursor Bugbot](https://cursor.com/bugbot) for commit 3a7f4cb21bd2d5162a03f140d7a4aac269464069. Bugbot is set up for automated code reviews on this repo. Configure [here](https://www.cursor.com/dashboard/bugbot).</sup> <!-- /CURSOR_SUMMARY -->
ghost1 commented 2026-06-12 07:23:12 +00:00 (Migrated from gitlab.com)

changed the description

changed the description
ghost1 commented 2026-06-12 07:23:20 +00:00 (Migrated from gitlab.com)

changed the description

changed the description
PlasticDigits commented 2026-06-12 07:25:25 +00:00 (Migrated from gitlab.com)

Security review

Commit reviewed: 3a7f4cb21bd2d5162a03f140d7a4aac269464069

Scope: .gitlab-ci.yml (Rust 1.96 image, RUSTFLAGS), indexer compile-only tweaks (hybrid_route_opt.rs, api/mod.rs, book_snapshot.rs), QA regression script, redeploy doc note.

Method: Diff review; traced CI artifact publish path (scripts/qa/publish-qa-ci-artifacts.sh); confirmed indexer runtime/API/auth paths unchanged on this diff.

Outcome: FINDINGS: 0 medium+

Inline threads: None (no findings to anchor).

Summary

  • Toolchain bump (rust:1.83-bookworm → rust:1.96-bookworm): CI-only; unblocks edition-2024 transitive deps already in Cargo.lock (base64ct 1.8.3). No new attacker-controlled surfaces; artifact upload still uses CI_JOB_TOKEN to GitLab generic packages (unchanged).
  • RUSTFLAGS: "-D warnings -A dead_code": Compile-time lint suppression for the release binary target; does not alter runtime behavior, auth, or input validation.
  • Indexer edits: Remove spurious mut, drop unused re-export, #[allow(unused_imports)] on test-facing re-export — no logic or permission-boundary changes.

Security review: no medium+ findings on this diff.

## Security review **Commit reviewed:** `3a7f4cb21bd2d5162a03f140d7a4aac269464069` **Scope:** `.gitlab-ci.yml` (Rust 1.96 image, `RUSTFLAGS`), indexer compile-only tweaks (`hybrid_route_opt.rs`, `api/mod.rs`, `book_snapshot.rs`), QA regression script, redeploy doc note. **Method:** Diff review; traced CI artifact publish path (`scripts/qa/publish-qa-ci-artifacts.sh`); confirmed indexer runtime/API/auth paths unchanged on this diff. **Outcome:** `FINDINGS: 0` medium+ **Inline threads:** None (no findings to anchor). ### Summary - **Toolchain bump (`rust:1.83-bookworm` → `rust:1.96-bookworm`):** CI-only; unblocks edition-2024 transitive deps already in `Cargo.lock` (`base64ct 1.8.3`). No new attacker-controlled surfaces; artifact upload still uses `CI_JOB_TOKEN` to GitLab generic packages (unchanged). - **`RUSTFLAGS: "-D warnings -A dead_code"`:** Compile-time lint suppression for the release binary target; does not alter runtime behavior, auth, or input validation. - **Indexer edits:** Remove spurious `mut`, drop unused re-export, `#[allow(unused_imports)]` on test-facing re-export — no logic or permission-boundary changes. **Security review: no medium+ findings on this diff.**
PlasticDigits (Migrated from gitlab.com) merged commit 6205054220 into main 2026-06-12 07:58:13 +00:00
PlasticDigits commented 2026-06-12 07:58:14 +00:00 (Migrated from gitlab.com)

mentioned in commit 6205054220

mentioned in commit 620505422003ac75c7b4f8212a32116d5dc40bc2
Sign in to join this conversation.
No reviewers
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!879
No description provided.