Skip to content

ci: aggressive log legibility — cut noise so real failures stand out - #67

Merged
b7r6 merged 5 commits into
mainfrom
chore/ci-log-legibility
Oct 8, 2026
Merged

b7r6 merged 5 commits into
mainfrom
chore/ci-log-legibility

Conversation

@b7r6

@b7r6 b7r6 commented Oct 7, 2026 •

Copy link
Copy Markdown
Owner

What and why

The aggressive version of the CI log-legibility work (TRA-1385). Goal: a real
warning or failure is visible at a glance, not after grepping megabytes.
Superset of #66 — if this is approved, #66 is redundant and should be closed.

  1. nl-quiet log reduction (new). A presentation-only --config group —
    noshow_progress, show_result=0, test_summary=terse — wired into the
    Bazel Dev, sanitizers, and Bazel Native lanes. Suppresses only progress and
    per-test PASSED chatter; never hides a warning, error, or the compiler output
    preceding them. Opt-in via --config, so local builds keep live progress.
  2. --unwindlib=none suppression, applied unconditionally in .bazelrc.
    The hermetic LLVM toolchain scopes the flag to link actions correctly, but
    clang++ still prints "argument unused during compilation" on exec-config
    ([for tool]) links where it's a no-op. Unconditional (not --config-scoped)
    so it also covers the sanitizer and Bazel-Native lanes, which activate the
    same @llvm clang via --extra_toolchains rather than --config=nl-toolchain.
  3. compatibility_level = 0 removal (Bazel's own "no-op, remove it" WARNING).
  4. clippy test targets made clean (cargo clippy --workspace --all-targets
    19 errors → 0; documented allows for intentional test-only patterns).

How was this verified?

  • nl-quiet: the nativelink-store test suite log drops from 56 lines to
    10
    ; on the full //... suite the ratio is larger.
  • unwindlib: A/B cold builds. With --config=nl-toolchain: 3 warnings
    without the suppression, 0 with. And a cold --config=asan build (the lane
    that was still spamming them) now emits 0 — confirming the unconditional
    placement reaches the non-nl-toolchain lanes, which the earlier scoped version
    did not.
  • compatibility_level: Bazel's own message instructs removing it; it's a no-op.
  • clippy: cargo clippy --workspace --all-targets → 0 errors.

Risk

Low. nl-quiet is presentation-only and opt-in; the unwindlib change only
suppresses a provably-benign driver warning; compatibility_level is a Bazel
no-op; the clippy changes touch only test files. No behavior change to shipped
code. Two opinionated follow-ups (a warning ratchet to keep this from
re-rotting, and failure-surfacing to $GITHUB_STEP_SUMMARY) are held for your
call
— they change CI policy, so I'd rather you pick the gate than land it
unilaterally.

Deliberately out of scope (flagged, not touched): the -Wbuiltin-macro-redefined
warnings (x3, asan/native lanes only) from aws-lc-sys's bindgen — tested and
confirmed --copt/--host_copt do NOT reach bindgen's libclang, so the fix is
clang_flags on the external @rules_rs//3rd_party/aws-lc-sys bindgen target
(a patch-override, not a warning-config change). Also: generic-array (6-deep
transitive under aws-sdk-s3; needs the RustCrypto/AWS migration), the external
flake's stdenv.isDarwin, and the maintainer's workspace.cargo-features-manager
keep-list (a real feature-prune safety net, and it only warns on cargo).

AI assistance

Claude (Fable 5) did the tracing, implementation, and A/B verification from my
direction; I reviewed every line. Flagged for core-team review before merge.

b7r6 added 3 commits October 7, 2026 17:35
The hermetic LLVM toolchain correctly scopes --unwindlib=none to link actions,
but the clang++ driver still emits 'argument unused during compilation:
--unwindlib=none' on the exec-config ([for tool]) link steps where it is a
no-op (process_wrapper, cargo_build_script_runner, ...). That benign warning
is printed on effectively every tool compile, burying real failures under
thousands of lines of log noise.

Suppress it with -Wno-unused-command-line-argument on link + host_link opts.
Verified by A/B cold build of //nativelink-error: 3 warnings without, 0 with.

First slice of the CI warning-clean workstream (TRA-1385).
- MODULE.bazel: remove compatibility_level = 0, which Bazel reports as a no-op
  it will remove in a future release (one WARNING per invocation).
- multi_worker_cas_test / connection_manager_test: these integration tests
  aren't linted by CI's Bazel clippy aspect, so they'd drifted. Auto-fixable
  lints fixed; the intentional test-only patterns (raw tokio runtimes to
  simulate isolated workers, mid-fn test consts, small truncating casts) get a
  documented file-level allow. src stays strict.

cargo clippy --workspace --all-targets: 19 errors -> 0.

Part of the CI warning-clean workstream (TRA-1385).
Make CI logs scannable so a real warning/failure stands out instead of being
buried under per-action compile progress and per-test PASSED chatter. New
--config=nl-quiet group (presentation-only; never hides warnings/errors):
noshow_progress, show_result=0, test_summary=terse. Wired into the Bazel Dev
(nix), sanitizers, and Bazel Native lanes.

Verified: the nativelink-store test suite log drops from 56 lines to 10; on the
full //... suite the ratio is larger. Opt-in via --config so local interactive
builds keep live progress.

Part of the CI warning-clean / log-legibility workstream (TRA-1385).
@github-actions

This comment has been minimized.

The previous suppression was scoped to --config=nl-toolchain, but the sanitizer
and Bazel-Native lanes activate the same @llvm clang via --extra_toolchains
(not nl-toolchain), so the warning still spammed those logs. Move the
-Wno-unused-command-line-argument link/host_link opts to unconditional .bazelrc
lines so every lane (and local builds) get them.
RBE toolchain-example lanes get raw --noshow_progress/--show_result=0 (separate
workspace, mixed test/build); LRE gets --config=nl-quiet.
@b7r6
b7r6 merged commit 7ea8d10 into main Oct 8, 2026
27 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