Skip to content

ci: S24.13 switch IWYU lanes to advisory#469

Merged
DavidCozens merged 1 commit into
mainfrom
ci/s24-13-misc-include-cleaner
May 28, 2026
Merged

ci: S24.13 switch IWYU lanes to advisory#469
DavidCozens merged 1 commit into
mainfrom
ci/s24-13-misc-include-cleaner

Conversation

@DavidCozens

@DavidCozens DavidCozens commented May 28, 2026

Copy link
Copy Markdown
Owner

Purpose

Closes #468 (parent epic #254 E24).

S24.13 started out scoped as "replace IWYU with clang-tidy
misc-include-cleaner, diff-scoped" — the swap would have folded
into the existing per-TU analyze-tidy* lanes via
CMAKE_C_CLANG_TIDY, deleting the standalone IWYU lanes entirely.

A finding survey halfway through revealed misc-include-cleaner's
built-in stdlib mapping has substantial gaps on POSIX extension
symbols (CLOCK_REALTIME not mapped to <time.h>, SOL_SOCKET /
SO_KEEPALIVE not mapped to <sys/socket.h>, POSIX timeval not
mapped to <sys/time.h>). Roughly 75% of the findings on
Platform/Posix/ were false positives. The check's only two
configuration knobs (IgnoreHeaders, DeduplicateFindings) can't
filter the FPs cleanly without also losing the signal — there's no
IWYU-style mapping file support.

The original motivation for the swap was IWYU's per-PR friction
(two-pass output, container drift, line-shift cascades into
suppression line numbers). The simpler move that actually delivers
that throughput win is to keep IWYU but stop it blocking PRs.

Change Description

Two continue-on-error: true additions at the Run step in each
IWYU lane:

  • analyze-iwyu (cpputest-clang image)
  • analyze-iwyu-freertos-plustcp (cpputest-freertos image)

Step-level continue-on-error keeps the JOB reporting success on
findings, so branch-protection's required-checks contract is still
satisfied — no GitHub UI edit needed.

docs/local-checks.md Tier B narrative refreshed: drops IWYU as a
required pre-push step (Tier B now just clang-format -i + MISRA
line-drift fix), and gains an "(optional, advisory)" subsection
documenting the local invocation for anyone who wants to look ahead
of CI.

DEVLOG.md entry documents the pivot, the misc-include-cleaner
finding survey, and what stays / what changed / what's left for
future work.

cppcheck stays required — S24.12 just audited its suppressions
and the FP rate is low. The advisory move is reserved for the
high-friction gate here.

Test Evidence

CI/tooling change only. No production-code or test-code
modifications.

Sanity check on the YAML edit:

  • Both IWYU steps still run on every PR (verified by re-reading the
    workflow — the step is unconditional).
  • Both lanes still upload their iwyu-report* artifacts (verified by
    the existing if: success() || failure() on the upload steps).
  • A failing IWYU findings batch under continue-on-error: true
    causes the step to mark failed but the job to mark success — that
    is the GitHub Actions documented behavior, no separate proof
    needed.

Areas Affected

  • .github/workflows/ci.yml — IWYU lane Run-step semantics only.
  • docs/local-checks.md — Tier B refresh.
  • DEVLOG.md — entry.

No production source, no test source, no public-header changes. No
container-image bump. No CMake-preset change. The iwyu preset and
the ENABLE_IWYU plumbing in CMakeLists.txt stay — the local-run
recipe still works for anyone who wants advisory output ahead of CI.

🤖 Generated with Claude Code

Summary by CodeRabbit

  • Chores

    • CI workflow: IWYU checks are now advisory-only and won't fail the build.
  • Documentation

    • Updated local development documentation: IWYU is no longer a required pre-push check for Tier B workflows. IWYU findings remain available as build artifacts.

Review Change Stack

Step-level continue-on-error on the Run include-what-you-use step in
both analyze-iwyu and analyze-iwyu-freertos-plustcp. Findings still
upload via the existing iwyu-report* artifacts; release prep is now
responsible for sweeping them. docs/local-checks.md Tier B refreshed
to drop IWYU as a required pre-push step.

Story originally scoped as "replace IWYU with clang-tidy
misc-include-cleaner" — survey revealed misc-include-cleaner's
built-in stdlib mapping has ~75% false-positive rate on POSIX
extension symbols (CLOCK_REALTIME, SOL_SOCKET, timeval, etc.) with
no IWYU-style mapping file support to filter. Switching IWYU to
advisory delivers the throughput win the original swap was meant to
deliver, without trading one FP surface for another.

Branch protection unchanged — step-level continue-on-error keeps the
job reporting success on findings, so required-checks still satisfied.

Closes #468

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented May 28, 2026

Copy link
Copy Markdown
Contributor
📝 Walkthrough

Walkthrough

IWYU analysis is marked advisory in CI: both the standard and FreeRTOS+PlusTCP IWYU lanes now run with continue-on-error: true so findings upload as artifacts but do not fail the build. Documentation and devlog are updated to reflect the new status and responsibility for include cleanup during release prep.

Changes

IWYU advisory mode

Layer / File(s) Summary
CI workflow IWYU advisory mode
.github/workflows/ci.yml
Both IWYU job steps (analyze-iwyu, analyze-iwyu-freertos-plustcp) are renamed to "(advisory)" and updated with continue-on-error: true to make them non-blocking while preserving artifact uploads.
Documentation and devlog updates
DEVLOG.md, docs/local-checks.md
DEVLOG entry (2026-05-28) documents the S24.13 change, rationale, and follow-up ideas. docs/local-checks.md removes IWYU from mandatory Tier B checks, clarifies advisory status with artifact outputs, and updates local workflow guidance.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~8 minutes

Possibly related PRs

  • DavidCozens/solid-syslog#261: Earlier PR that introduced the analyze-iwyu job; this PR converts that job and its FreeRTOS counterpart to advisory mode.

Poem

🐰 Includes once blocked each PR with IWYU's call,

Now they whisper softly—advisory, not a wall.

Artifacts still bloom, but failures fade away,

Release prep shall gather them another day. ✨

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Title check ✅ Passed The title 'ci: S24.13 switch IWYU lanes to advisory' clearly and specifically summarizes the main change: making IWYU CI lanes advisory rather than blocking.
Description check ✅ Passed The PR description comprehensively addresses all template sections: Purpose (closes #468), Change Description (two continue-on-error additions explained), Test Evidence (sanity checks provided), and Areas Affected (files listed with scope clarification).
Linked Issues check ✅ Passed All acceptance criteria from #468 are met: both IWYU lanes still run [ci.yml], artifacts still upload [ci.yml], findings no longer fail builds [continue-on-error: true], and docs updated [docs/local-checks.md, DEVLOG.md].
Out of Scope Changes check ✅ Passed All changes are strictly within scope: only CI workflow edits (continue-on-error additions) and documentation updates (local-checks.md, DEVLOG.md); no production/test code, container images, or CMake presets modified.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch ci/s24-13-misc-include-cleaner

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@DEVLOG.md`:
- Around line 48-50: The DEVLOG entry that reads "Branch protection list
unchanged. Step-level `continue-on-error` makes the job report success on
findings..." conflicts with existing CI documentation that still treats IWYU as
a failing gate; either add a follow-up note/link in that DEVLOG entry pointing
to the CI documentation and explicitly stating IWYU is now advisory under
step-level continue-on-error, or update the CI docs to reflect the new IWYU
advisory behavior so both places are consistent (look for the exact DEVLOG
sentence and the IWYU/CI docs references to patch).
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: e26cdd7b-bc54-4d7c-a05f-94aa0fc328d2

📥 Commits

Reviewing files that changed from the base of the PR and between 4a578bb and bdbf58a.

📒 Files selected for processing (3)
  • .github/workflows/ci.yml
  • DEVLOG.md
  • docs/local-checks.md

Comment thread DEVLOG.md
Comment on lines +48 to +50
- Branch protection list unchanged. Step-level `continue-on-error`
makes the job report success on findings, so the required-check
contract is still satisfied without a UI edit.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Document consistency risk: branch-protection note may conflict with CI docs.

This says branch protection is unchanged with advisory step behavior, but docs/ci.md still describes IWYU as a failing gate. Please add a follow-up note/link here (or update the CI docs in the same change) to avoid conflicting guidance for contributors.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@DEVLOG.md` around lines 48 - 50, The DEVLOG entry that reads "Branch
protection list unchanged. Step-level `continue-on-error` makes the job report
success on findings..." conflicts with existing CI documentation that still
treats IWYU as a failing gate; either add a follow-up note/link in that DEVLOG
entry pointing to the CI documentation and explicitly stating IWYU is now
advisory under step-level continue-on-error, or update the CI docs to reflect
the new IWYU advisory behavior so both places are consistent (look for the exact
DEVLOG sentence and the IWYU/CI docs references to patch).

@github-actions

Copy link
Copy Markdown
Contributor

☀️   Quality Summary

   🚦   build-linux-gcc: 100% successful (✔️ 1344 passed)
   🚦   build-freertos-host-tdd-plustcp: 100% successful (✔️ 1652 passed)
   🚦   build-linux-clang: 100% successful (✔️ 1296 passed)
   🚦   sanitize-linux-gcc: 100% successful (✔️ 1296 passed)
   🚦   integration-linux-openssl: 100% successful (✔️ 9 passed)
   🚦   integration-linux-mbedtls: 100% successful (✔️ 7 passed)
   🚦   integration-windows-openssl: 100% successful (✔️ 9 passed)
   🚦   bdd-linux-syslog-ng: 94% successful (✔️ 46 passed, 🙈 3 skipped)
   🚦   bdd-windows-otel: 90% successful (✔️ 44 passed, 🙈 5 skipped)
   🚦   bdd-freertos-qemu-plustcp: 86% successful (✔️ 42 passed, 🙈 7 skipped)
   🚦   build-windows-msvc: 100% successful (✔️ 1149 passed)
   🚦   build-linux-tunable-override: 100% successful (✔️ 1296 passed)
   ⚠️   Clang-Tidy: No warnings
   ⚠️   CPPCheck: No warnings


Created by Quality Monitor v1.14.0 (#f3859fd). More details are shown in the GitHub Checks Result.

@DavidCozens DavidCozens merged commit cc710cb into main May 28, 2026
23 checks passed
@DavidCozens DavidCozens deleted the ci/s24-13-misc-include-cleaner branch May 28, 2026 19:51
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.

S24.13: switch IWYU lanes to advisory

1 participant