Skip to content

chore(sync): merge main into next - #53

Merged
github-actions[bot] merged 4 commits into
nextfrom
main
Jun 19, 2026
Merged

chore(sync): merge main into next#53
github-actions[bot] merged 4 commits into
nextfrom
main

Conversation

@github-actions

Copy link
Copy Markdown
Contributor

Automated sync: main → next

This PR is auto-generated by the Sync main to next workflow to keep the next integration lane in sync with main.

  • Behind by: 4 commits
  • Strategy: merge-commit (no history rewrite; preserves the release marker from the chore PR)
  • Auto-merges if CI is green and no conflicts

If this PR shows conflicts, resolve them manually and push to this branch — the auto-merge will retry.

mmacedoeu and others added 4 commits June 19, 2026 13:27
…e main workspace

The live integration test for octo-adapter-telegram against a real TDLib
session was previously located at crates/octo-adapter-telegram/tests/
live_session_test.rs. Because octo-telegram-onboard-core depends on
octo-adapter-telegram with features = ["real-tdlib"], cargo's workspace
feature unification enabled the real-tdlib feature across the workspace,
which in turn caused 'cargo test --workspace' to auto-discover and build
the live_session_test target. At test-execution time the test binary
failed to load with 'error while loading shared libraries: libc++.so.1'
because the prebuilt TDLib shared library is linked against LLVM's libc++,
which is not installed on the default ubuntu-latest CI runner. This
broke CI for every push.

Feature gates and explicit [[test]] entries could not isolate the test:
cargo's feature resolver unifies 'free' features across the workspace,
so the test was always built.

Move the live test to a new standalone crate at
live-tests/octo-telegram-live-tests/ that is intentionally NOT a member
of the main workspace (root Cargo.toml uses members = ["crates/*"]; the
new crate lives in live-tests/, which the root glob does not match). The
new crate declares an empty [workspace] table so it is a complete
workspace of its own, and is therefore physically unreachable from
'cargo test --workspace' at the repo root.

This guarantees CI can never build or run the live test, regardless of
feature flags, resolver behavior, or transitive feature unification.

To run the live test manually:

    cd live-tests/octo-telegram-live-tests
    cargo test -- --ignored --nocapture --test-threads=1

Changes:
- Move crates/octo-adapter-telegram/tests/live_session_test.rs
  -> live-tests/octo-telegram-live-tests/tests/live_session_test.rs
- New crate: live-tests/octo-telegram-live-tests/ (standalone, with
  empty [workspace] table) containing Cargo.toml, src/lib.rs (marker),
  tests/live_session_test.rs, and .gitignore (target/, Cargo.lock)
- Move tracing-subscriber dev-dependency from octo-adapter-telegram
  to the new crate (where the test now lives)
- ci.yml: no change needed; the 'Install C++ runtime' step is no longer
  required because CI cannot reach the live test
The type-check job was failing on fresh runners with:

  💥 maturin failed
    Caused by: Failed to run rustc to get the host target
    error: failed to install component: 'clippy-preview-x86_64-unknown-linux-gnu',
           detected conflict: 'bin/cargo-clippy'

Root cause: the type-check job ran 'maturin develop' without first
installing a Rust toolchain via rustup. Maturin then tried to bootstrap
its own rustc and hit a toolchain conflict on runners with a partially
installed or stale rustup state.

The test job in the same workflow already has
  - name: Install Rust
    uses: dtolnay/rust-toolchain@stable
and works. The type-check job was missing this step. Adding it
mirrors the test job exactly, gives maturin a clean system rustc to
use, and resolves the conflict on fresh runners.
…ild job

The build job was failing on fresh runners with:

  info: syncing channel updates for 1.96.0-x86_64-unknown-linux-gnu
  info: downloading component clippy
  error: 'cargo' is not installed for the toolchain '1.96.0-x86_64-unknown-linux-gnu'
  💥 maturin failed
    Caused by: Cargo metadata failed.
    Caused by: `cargo metadata` exited with an error

Root cause: dtolnay/rust-toolchain@stable defaults to --profile
minimal, which installs only rustc (no cargo, no clippy, no
rustfmt). The test and type-check jobs in this workflow happen to
work because their runners have cargo pre-installed in the Ubuntu
image. The build job hit a fresh runner without that, and maturin
could not find cargo for the stable toolchain.

Switch the build job's Install Rust step to profile: default, which
installs cargo (and clippy, rustfmt, rust-docs) explicitly via
rustup. The build job is now self-sufficient regardless of the
runner image.

The test and type-check jobs are left at the default (minimal)
profile since they currently work; they can be flipped to default
later if they start hitting the same issue.
fix(ci): batch of 3 CI fixes (live test, rust toolchain, cargo profile)
@github-actions
github-actions Bot added this pull request to the merge queue Jun 19, 2026
Merged via the queue into next with commit a6d9b8c Jun 19, 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