The 1.95.0 pin (7171282) shipped components = [clippy, rustfmt],
profile = minimal. The M4 LSP acceptance suite
(tests/m4_acceptance.rs:1111 m4_5_rust_analyzer_initializes) spawns
`rust-analyzer`; its skip-guard only checks PATH presence. The
`rust-analyzer` on PATH is a rustup proxy shim — with the directory
override active it resolves against the pinned toolchain, finds no
rust-analyzer component, and the spawn dies before the LSP
handshake, so the test runs (doesn't skip) and panics "must observe
Initialized event". This was masked in CI before the pin because the
Test job died at compile (rope.rs:1076); fixing compile unmasked it.
A pin must ship a toolchain complete for the project's own test
surface. Adding `rust-analyzer` to components.
Verified under 1.95.0: `rust-analyzer --version` resolves;
m4_5_rust_analyzer_initializes passes (was the sole failure in the
ubuntu Test legs — CI log showed m4_acceptance 52 passed / 1 failed,
all other suites ok). rust-toolchain.toml-only; no code change.
Still independent / triage-pending (unchanged): macOS F9 nix
PeerCredentials (Test (macos-*)), M1/M4/M6 perf/fuzz gates.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
CI was red on every recent main commit (pre-existing, not from the
V0.2/audit work): the workflow installs rolling `stable`, which on
the runners is ~1 year newer than the local toolchain that validated
the code. Under `RUSTFLAGS: -D warnings` + `clippy -- -D warnings`,
new rustc/clippy lints across pre-existing code became hard failures.
Confirmed identical on the 4 commits before v1.0-rc (e.g. the
`rope.rs:1076` unused_parens compile error is byte-identical there).
Resolution:
- `rust-toolchain.toml` pins channel 1.95.0 (the validated version).
The repo directory override makes every cargo invocation use it
regardless of what the CI action installs, eliminating the
local/CI toolchain-drift class permanently. Bump deliberately.
- Mechanical lint fixes (~17 sites, all the trivial/auto-fixable
class — no logic change): `cargo clippy --fix` + `cargo fix`
applied the machine-applicable set; hand-fixed the residuals:
daemon.rs (duplicated #[allow]), completion_framework.rs
(sort_by -> sort_by_key/Reverse), attach.rs (map().unwrap_or ->
map_or, crdt), buffer.rs (is_some+expect -> match, crdt),
m10_11_acceptance.rs (if -> match guard x2, crdt).
- `cargo fmt --all` (clippy --fix left overlay_paint.rs unformatted).
Verified clean under 1.95.0, all lanes: fmt 0 diffs; clippy
--all-targets -D warnings clean for luajit, lua54, AND crdt;
-D warnings build clean luajit+lua54; doc tests pass; lib 1223/0;
autofix-modified tests (m7_5, m8_1 incl. the Finding-2 fs_watch fix)
pass.
Scope: this clears CI red class #1 (toolchain-gap lints) only.
Independent and still triage-pending: #2 macOS F9 nix
PeerCredentials portability (Test (macos-*)), #3 M1/M4/M6 perf/fuzz
gates. Per plan, those are triaged after CI confirms #1 green.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>