Skip to content

feat: S21.01 build-time tunables mechanism via SOLIDSYSLOG_MAX_MESSAGE_SIZE#348

Merged
DavidCozens merged 3 commits into
mainfrom
feat/s21-01-tunables-mechanism
May 12, 2026
Merged

feat: S21.01 build-time tunables mechanism via SOLIDSYSLOG_MAX_MESSAGE_SIZE#348
DavidCozens merged 3 commits into
mainfrom
feat/s21-01-tunables-mechanism

Conversation

@DavidCozens

@DavidCozens DavidCozens commented May 12, 2026

Copy link
Copy Markdown
Owner

Purpose

First slice of #217 (E21 Port-Time Configurability). Introduce the mechanism for integrators to override library defaults at build time without forking the tree or editing files inside it. Default value of SOLIDSYSLOG_MAX_MESSAGE_SIZE is unchanged at 2048, so no behavioural change on main.

Closes #347.

Change Description

C-side single source of truth. Core/Interface/SolidSyslogTunablesDefaults.h holds every tunable as an #ifndef-guarded #define with rich doc-comments. Core/Interface/SolidSyslogTunables.h optionally #includes a user-supplied override file (controlled by the SOLIDSYSLOG_USER_TUNABLES_FILE macro), then the defaults. mbedTLS / FreeRTOS-Kernel / lwIP convention — familiar to embedded developers.

CMake SolidSyslogTunables INTERFACE target carries the override macro into the library and onto consumers via target_link_libraries(SolidSyslog PUBLIC SolidSyslogTunables). Per Ben Boeckel's CMake-Discourse guidance — usages that morph the library itself break CMake's identity model; an INTERFACE target the consumer can link against does not.

Compile-time floor guard. #if SOLIDSYSLOG_MAX_MESSAGE_SIZE < 64 / #error outside the #ifndef block evaluates whatever value is in effect (user override or default). Floor rationale: a legal all-NILVALUE RFC 5424 message is 16 bytes; 64 leaves real headroom for PRI, hostname, MSGID, short payload.

BDD-Python bridge via configure_file replaces the hardcoded SOLIDSYSLOG_MAX_MESSAGE_SIZE = 2048 mirror in Bdd/features/steps/syslog_steps.py (with its "remember to bump this" comment — a known maintenance burden). CMake parses the defaults header and the user-config file (if set) at configure time and writes Bdd/features/steps/solidsyslog_tunables.py from a .in template. Gitignored. Drift now structurally impossible.

tunable-override-debug preset + new build-linux-tunable-override CI job prove the override flows end-to-end. A static_assert in Tests/SolidSyslogTunablesTest.cpp fails the build if the user-config file didn't reach the compiler. Job is wired into the summary gate's needs: list; required-check status on main is a separate GitHub-side step.

Test Evidence

Followed strict red-green-refactor in three phases:

  1. Tunables.h existence. Red: new unit test MaxMessageSizeIsReachableViaTunablesHeader fails to compile (header missing). Green: create the two headers + register the test in Tests/CMakeLists.txt.
  2. Override path. Red: configure with tunable-override-debug preset → static_assert (2048 == 512) fires because the INTERFACE target isn't wired yet. Green: declare SolidSyslogTunables INTERFACE in top-level CMake, link from Core/Source. Build passes; all 1106 unit tests pass at MAX = 512.
  3. BDD-Python bridge. Red: python3 -c 'import solidsyslog_tunables'ModuleNotFoundError. Green: add configure_file block parsing the defaults header; reconfigure; import works, value mirrors configured MAX (2048 default / 512 override).

Audit of existing tests for hardcoded message-size literals — fixed two latent bugs surfaced by the override:

  • Tests/SolidSyslogUdpSenderTest.cpp:28TEST_MAX_MESSAGE_SIZE = 1024 despite the test name claiming "max size transmitted without truncation". Now tracks SOLIDSYSLOG_MAX_MESSAGE_SIZE.
  • Tests/Support/SocketFake.c — null-terminator slot inside a buffer sized to SOLIDSYSLOG_MAX_MESSAGE_SIZE silently clipped the last byte of a true max-size message. Buffer is now MAX + 1.

Local pre-PR gates all pass:

  • build-linux-gcc (debug) — 1106 unit + 48 BDD-target tests
  • build-linux-clang (clang-debug) — 1106 unit tests
  • sanitize-linux-gcc — 1106 tests under ASan + UBSan
  • coverage-linux-gcc99.5% line coverage (above 90% gate)
  • analyze-tidy — clang-tidy clean (one new NOLINTNEXTLINE on the macro #define with documented rationale; matches existing precedent in SolidSyslogCircularBuffer.h)
  • analyze-cppcheck — clean (one inline suppression on the #include SOLIDSYSLOG_USER_TUNABLES_FILE line — cppcheck evaluates both branches of #if defined and complains about empty include)
  • analyze-format — clang-format clean
  • New build-linux-tunable-override — 1106 tests pass at MAX = 512 with the user-config override

Areas Affected

  • Tier 1 (Core/Interface/, Core/Source/) — two new public headers (SolidSyslogTunables.h, SolidSyslogTunablesDefaults.h); enum SOLIDSYSLOG_MAX_MESSAGE_SIZE = 2048 in SolidSyslog.h removed (macro now); IWYU-clean migration of 12 internal #include lines.
  • Tier 3 (Bdd/Targets/*/main.c, Bdd/features/steps/) — #include adjustments + replaced hardcoded Python mirror with generated module import.
  • Tests — new SolidSyslogTunablesTest.cpp + Tests/Fixtures/SmallMessageSizeTunables.h; two pre-existing test/fake files fixed.
  • CMake — new SolidSyslogTunables INTERFACE target + configure_file block + tunable-override-debug preset.
  • CI — new build-linux-tunable-override job in .github/workflows/ci.yml, wired into the summary gate.
  • No public API contract change — macro name and value unchanged; the header it lives in moves, which existing direct consumers of SolidSyslog.h get for free (still includes SolidSyslog.h if needed, plus now SolidSyslogTunables.h explicitly).

Sets the pattern for further tunables (SEND_TIMEOUT_*, buffer capacities, SD limits) under E21 — S21.03+ extend the defaults header one #ifndef-guarded #define at a time. S21.02 will actually tune the freertos-cross preset down + audit BDD scenarios for hardcoded message-size assumptions.

🤖 Generated with Claude Code

Summary by CodeRabbit

  • New Features

    • Build-time configurability for maximum syslog message size (default 2048 bytes) with optional override and a compile-time minimum.
  • BDD / Tests

    • BDD steps consume a generated tunables mirror; added unit and BDD tests to verify tunable propagation and override scenarios (including a small-message preset).
  • Chores

    • CI updated with a new job exercising the override preset and improved artifact flow for distributing BDD tunables.
  • Documentation

    • DEVLOG updated describing design and CI verification.

Review Change Stack

…E_SIZE

Introduce the build-time tunables override mechanism — defaults header
+ central header + optional user-config file + CMake INTERFACE target
+ BDD configure_file bridge. SOLIDSYSLOG_MAX_MESSAGE_SIZE is the first
tunable; default 2048 unchanged, so no behavioural change on main.

mbedTLS / FreeRTOS-Kernel / lwIP pattern: integrators set
SOLIDSYSLOG_USER_TUNABLES_FILE to the absolute path of their own
header containing #define overrides. The SolidSyslogTunables INTERFACE
target propagates the macro to the library; the library #ifndef-guards
each default so the user's value wins. Compile-time floor (#if/#error)
rejects sub-floor values.

Replaces the hardcoded "remember to bump this" SOLIDSYSLOG_MAX_MESSAGE_SIZE
mirror in Bdd/features/steps/syslog_steps.py: CMake parses the
defaults header (and the user-config file if set) at configure time
and writes Bdd/features/steps/solidsyslog_tunables.py (gitignored)
from a .in template. Single source of truth — drift impossible.

New tunable-override-debug preset + build-linux-tunable-override CI
job prove the override path flows end-to-end (static_assert in
Tests/SolidSyslogTunablesTest.cpp fails the build if it doesn't).

Fixes two latent test-infra bugs surfaced by the override:
- Tests/SolidSyslogUdpSenderTest.cpp hardcoded TEST_MAX_MESSAGE_SIZE
  to 1024 despite its name claiming "max size"; now tracks the macro.
- Tests/Support/SocketFake.c reserved a null-terminator byte inside a
  buffer sized exactly to MAX, silently clipping the last byte of a
  true max-size message; buffer is now MAX + 1.

Closes #347.

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

coderabbitai Bot commented May 12, 2026

Copy link
Copy Markdown
Contributor

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 1543568e-63b0-4db8-9cc4-51cf7598dd37

📥 Commits

Reviewing files that changed from the base of the PR and between 95aa232 and 2515aea.

📒 Files selected for processing (2)
  • .github/workflows/ci.yml
  • Core/Interface/SolidSyslogBlockStore.h
🚧 Files skipped from review as they are similar to previous changes (1)
  • Core/Interface/SolidSyslogBlockStore.h

📝 Walkthrough

Walkthrough

This PR implements build-time tunables for SOLIDSYSLOG_MAX_MESSAGE_SIZE: new tunables headers and defaults, CMake INTERFACE propagation and presets (including an override preset), generation of a BDD Python mirror, test coverage for override propagation, source/test include migrations, and CI artifact/job wiring.

Changes

Build-time tunables mechanism for SOLIDSYSLOG_MAX_MESSAGE_SIZE

Layer / File(s) Summary
Tunables header definitions and defaults
Core/Interface/SolidSyslogTunables.h, Core/Interface/SolidSyslogTunablesDefaults.h, Core/Interface/SolidSyslog.h, .gitignore
New SolidSyslogTunables.h conditionally includes user overrides and unconditionally includes defaults. SolidSyslogTunablesDefaults.h defines SOLIDSYSLOG_MAX_MESSAGE_SIZE (2048) and enforces a compile-time minimum (>=64). Macro removed from SolidSyslog.h; generated BDD Python file is gitignored.
CMake INTERFACE target, presets, and test wiring
CMakeLists.txt, CMakePresets.json, Tests/Fixtures/SmallMessageSizeTunables.h, Core/Source/CMakeLists.txt, Tests/CMakeLists.txt, Tests/SolidSyslogTunablesTest.cpp
Adds SolidSyslogTunables INTERFACE target exposing Core/Interface includes and conditional SOLIDSYSLOG_USER_TUNABLES_FILE compile definition. Adds tunable-override-debug preset and fixture (512) to verify override path; wires conditional test compile definition for optional static_assert validation; configures generation of BDD Python tunable via configure_file.
Core implementation and interface include migration
Core/Source/SolidSyslog.c, Core/Source/SolidSyslogBlockStore.c, Core/Source/SolidSyslogCircularBuffer.c, Core/Source/RecordStore.{c,h}, Core/Interface/SolidSyslogBlockStore.h, Core/Interface/SolidSyslogCircularBuffer.h, Bdd/Targets/Common/BddTargetInteractive.c, Bdd/Targets/FreeRtos/main.c, Bdd/Targets/Linux/main.c
Core sources and interface headers now include SolidSyslogTunables.h where the tunable is referenced; Core's public link interface now links SolidSyslogTunables.
Tests, fakes, and test include migration
Tests/Support/SocketFake.c, Tests/Support/WinsockFake.c, Tests/FileFake.c, Tests/SenderFake.c, Tests/Bdd/Targets/BddTargetServiceThreadTest.cpp, Tests/SolidSyslogBlockStorePosixTest.cpp, Tests/SolidSyslogBlockStoreTest.cpp, Tests/SolidSyslogCircularBufferTest.cpp, Tests/SolidSyslogCrc16Test.cpp, Tests/SolidSyslogPosixMessageQueueBufferTest.cpp, Tests/SolidSyslogTest.cpp, Tests/SolidSyslogUdpSenderTest.cpp
Test sources and fakes updated to include SolidSyslogTunables.h; SocketFake reserves SOLIDSYSLOG_MAX_MESSAGE_SIZE + 1 for NUL terminator; SolidSyslogUdpSenderTest derives TEST_MAX_MESSAGE_SIZE from the tunable; new test SolidSyslogTunablesTest.cpp validates compile-time and runtime reachability.
BDD Python tunables module and step synchronization
Bdd/features/steps/solidsyslog_tunables.py.in, Bdd/features/steps/syslog_steps.py
Adds a CMake template to generate solidsyslog_tunables.py with the configured SOLIDSYSLOG_MAX_MESSAGE_SIZE; syslog_steps.py imports the value from the generated module instead of defining it locally.
CI artifact/job wiring and documentation
.github/workflows/ci.yml, DEVLOG.md
Uploads and propagates the generated BDD tunables artifact across build and BDD jobs; adds build-linux-tunable-override CI job and Quality Monitor JUnit pattern; updates summary.needs; DEVLOG documents design decisions and deferred items.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Possibly related issues

  • E21: Port-Time Configurability #217 — This PR implements the port-time configurability mechanism (E21) for SOLIDSYSLOG_MAX_MESSAGE_SIZE as the first tunable, directly fulfilling that epic's objectives.

Possibly related PRs

Poem

A rabbit hops through headers tall,
Tunables now answer the call—
Overrides flow, defaults stay true,
CMake builds the path straight through. 🐰
Tests and CI give it a cheer.

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 33.33% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed The title accurately summarizes the main change: introducing a build-time tunables mechanism for SOLIDSYSLOG_MAX_MESSAGE_SIZE, matching the extensive changeset scope.
Description check ✅ Passed The description comprehensively covers Purpose, Change Description, Test Evidence, and Areas Affected sections with detailed implementation details, testing methodology, and impact analysis.
Linked Issues check ✅ Passed The PR fully implements all coding requirements from issue #347: new tunables headers, CMake INTERFACE target, compile-time floor guard, BDD Python bridge via configure_file, tunable-override-debug preset, new CI job, unit tests, and test fixes.
Out of Scope Changes check ✅ Passed All changes align with PR objectives: tunables mechanism infrastructure, necessary include migrations, test audits for hardcoded message-size literals, and CI support. No unrelated modifications detected.

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

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat/s21-01-tunables-mechanism

Warning

Review ran into problems

🔥 Problems

Git: Failed to clone repository. Please run the @coderabbitai full review command to re-trigger a full review. If the issue persists, set path_filters to include or exclude specific files.


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.

@github-actions

Copy link
Copy Markdown
Contributor

☀️   Quality Summary

   🚦   build-linux-gcc: 100% successful (✔️ 1112 passed, 🙈 3 skipped)
   🚦   build-freertos-host-tdd: 100% successful (✔️ 1199 passed, 🙈 3 skipped)
   🚦   build-linux-clang: 100% successful (✔️ 1064 passed, 🙈 3 skipped)
   🚦   sanitize-linux-gcc: 100% successful (✔️ 1064 passed, 🙈 3 skipped)
   🚦   integration-linux-openssl: 100% successful (✔️ 9 passed)
   🚦   integration-windows-openssl: 100% successful (✔️ 9 passed)
   🚦   bdd-linux-syslog-ng: No test results available
   🚦   bdd-windows-otel: No test results available
   🚦   bdd-freertos-qemu: No test results available
   🚦   build-windows-msvc: 100% successful (✔️ 976 passed, 🙈 1 skipped)
   ⚠️   Clang-Tidy: No warnings
   ⚠️   CPPCheck: No warnings


🚧   Error Messages

Quality Monitor Errors:
No matching report files found when using pattern '**/junit-bdd-linux-syslog-ng/TESTS-*.xml'! Configuration error for 'bdd-linux-syslog-ng'?
No matching report files found when using pattern '**/junit-bdd-windows-otel/TESTS-*.xml'! Configuration error for 'bdd-windows-otel'?
No matching report files found when using pattern '**/junit-bdd-freertos-qemu/TESTS-*.xml'! Configuration error for 'bdd-freertos-qemu'?

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

@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 @.github/workflows/ci.yml:
- Line 817: The Quality Monitor config is missing an entry to parse results from
the new build-linux-tunable-override job; add a tests.tools array entry for
junit-build-linux-tunable-override in the quality-monitor section so its JUnit
artifact is parsed and shown in the Quality Summary. Locate the quality-monitor
config's tests.tools array (referencing the existing entries for
junit-build-linux-gcc/junit-build-linux-clang) and add a similar tool object for
junit-build-linux-tunable-override that points to the corresponding artifact
name and format.
🪄 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: daf94358-cfde-48f0-9f27-2d1c651e503f

📥 Commits

Reviewing files that changed from the base of the PR and between 257064e and 2d71e4b.

📒 Files selected for processing (36)
  • .github/workflows/ci.yml
  • .gitignore
  • Bdd/Targets/Common/BddTargetInteractive.c
  • Bdd/Targets/FreeRtos/main.c
  • Bdd/Targets/Linux/main.c
  • Bdd/features/steps/solidsyslog_tunables.py.in
  • Bdd/features/steps/syslog_steps.py
  • CMakeLists.txt
  • CMakePresets.json
  • Core/Interface/SolidSyslog.h
  • Core/Interface/SolidSyslogBlockStore.h
  • Core/Interface/SolidSyslogCircularBuffer.h
  • Core/Interface/SolidSyslogTunables.h
  • Core/Interface/SolidSyslogTunablesDefaults.h
  • Core/Source/CMakeLists.txt
  • Core/Source/RecordStore.c
  • Core/Source/RecordStore.h
  • Core/Source/SolidSyslog.c
  • Core/Source/SolidSyslogBlockStore.c
  • Core/Source/SolidSyslogCircularBuffer.c
  • DEVLOG.md
  • Tests/Bdd/Targets/BddTargetServiceThreadTest.cpp
  • Tests/CMakeLists.txt
  • Tests/FileFake.c
  • Tests/Fixtures/SmallMessageSizeTunables.h
  • Tests/SenderFake.c
  • Tests/SolidSyslogBlockStorePosixTest.cpp
  • Tests/SolidSyslogBlockStoreTest.cpp
  • Tests/SolidSyslogCircularBufferTest.cpp
  • Tests/SolidSyslogCrc16Test.cpp
  • Tests/SolidSyslogPosixMessageQueueBufferTest.cpp
  • Tests/SolidSyslogTest.cpp
  • Tests/SolidSyslogTunablesTest.cpp
  • Tests/SolidSyslogUdpSenderTest.cpp
  • Tests/Support/SocketFake.c
  • Tests/Support/WinsockFake.c
💤 Files with no reviewable changes (1)
  • Core/Interface/SolidSyslog.h

Comment thread .github/workflows/ci.yml
…D artefact

Two follow-up fixes from CI on the S21.01 PR:

- analyze-iwyu was steering callers to include SolidSyslogTunablesDefaults.h
  directly, which would bypass the optional SOLIDSYSLOG_USER_TUNABLES_FILE
  override. Add `// IWYU pragma: private, include "SolidSyslogTunables.h"`
  on the defaults header and `// IWYU pragma: export` on the include from
  the umbrella, the canonical mbedTLS-shaped fix for the umbrella-header
  case.

- The BDD jobs (linux-syslog-ng, windows-otel, freertos-qemu) only check
  out the repo + download the BDD target binary; they don't run cmake, so
  the gitignored Bdd/features/steps/solidsyslog_tunables.py wasn't present
  and behave failed with `ModuleNotFoundError: No module named
  'solidsyslog_tunables'`. Upload the generated file as a per-target
  artefact from each build job and download it into Bdd/features/steps/ in
  the matching BDD job (bdd-tunables-{linux,windows,freertos}). Per-target
  artefacts so S21.02's FreeRTOS preset override flows independently.

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

@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.

♻️ Duplicate comments (1)
.github/workflows/ci.yml (1)

903-954: ⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Add missing Quality Monitor test parser entry for tunable-override job.

Line 856 adds build-linux-tunable-override to summary.needs, but Lines 903-954 do not parse junit-build-linux-tunable-override, so this lane’s results won’t appear in Quality Summary.

📊 Proposed fix
                   {
                     "id": "junit",
                     "name": "build-linux-clang",
                     "pattern": "**/junit-build-linux-clang/cpputest_*.xml"
+                  },
+                  {
+                    "id": "junit",
+                    "name": "build-linux-tunable-override",
+                    "pattern": "**/junit-build-linux-tunable-override/cpputest_*.xml"
                   },
                   {
                     "id": "junit",
                     "name": "sanitize-linux-gcc",
                     "pattern": "**/junit-sanitize-linux-gcc/cpputest_*.xml"
🤖 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 @.github/workflows/ci.yml around lines 903 - 954, The Quality Monitor tools
array is missing a parser entry for the build-linux-tunable-override lane
referenced in summary.needs; add a new object to the "tools" list with id
"junit", name "build-linux-tunable-override", and pattern
"**/junit-build-linux-tunable-override/cpputest_*.xml" so the junit reports from
junit-build-linux-tunable-override are picked up in the Quality Summary.
🤖 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.

Duplicate comments:
In @.github/workflows/ci.yml:
- Around line 903-954: The Quality Monitor tools array is missing a parser entry
for the build-linux-tunable-override lane referenced in summary.needs; add a new
object to the "tools" list with id "junit", name "build-linux-tunable-override",
and pattern "**/junit-build-linux-tunable-override/cpputest_*.xml" so the junit
reports from junit-build-linux-tunable-override are picked up in the Quality
Summary.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 8244b372-2a2a-43cd-8cf4-7f4570fce0ab

📥 Commits

Reviewing files that changed from the base of the PR and between 2d71e4b and 95aa232.

📒 Files selected for processing (3)
  • .github/workflows/ci.yml
  • Core/Interface/SolidSyslogTunables.h
  • Core/Interface/SolidSyslogTunablesDefaults.h
✅ Files skipped from review due to trivial changes (1)
  • Core/Interface/SolidSyslogTunables.h
🚧 Files skipped from review as they are similar to previous changes (1)
  • Core/Interface/SolidSyslogTunablesDefaults.h

@github-actions

Copy link
Copy Markdown
Contributor

☀️   Quality Summary

   🚦   build-linux-gcc: 100% successful (✔️ 1112 passed, 🙈 3 skipped)
   🚦   build-freertos-host-tdd: 100% successful (✔️ 1199 passed, 🙈 3 skipped)
   🚦   build-linux-clang: 100% successful (✔️ 1064 passed, 🙈 3 skipped)
   🚦   sanitize-linux-gcc: 100% successful (✔️ 1064 passed, 🙈 3 skipped)
   🚦   integration-linux-openssl: 100% successful (✔️ 9 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: 59% successful (✔️ 29 passed, 🙈 20 skipped)
   🚦   build-windows-msvc: 100% successful (✔️ 976 passed, 🙈 1 skipped)
   ⚠️   Clang-Tidy: No warnings
   ⚠️   CPPCheck: No warnings


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

…de to Quality Monitor

- IWYU caught that Core/Interface/SolidSyslogBlockStore.h's #include of
  SolidSyslog.h is only referenced inside a documentation comment about
  NullBuffer recursion semantics, not by any code. My earlier audit
  grepped for SolidSyslogMessage/SolidSyslog_Log/SolidSyslog_Service
  symbols and counted the comment-mentions as hits — false positive.
  Remove the include.

- CodeRabbit caught that build-linux-tunable-override was added to the
  summary gate's needs list but missing from the Quality Monitor config's
  tests.tools array, so its JUnit results would have been uploaded but
  not displayed in the Quality Summary panel. Add the matching tool
  entry.

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

Copy link
Copy Markdown
Contributor

☀️   Quality Summary

   🚦   build-linux-gcc: 100% successful (✔️ 1112 passed, 🙈 3 skipped)
   🚦   build-freertos-host-tdd: 100% successful (✔️ 1199 passed, 🙈 3 skipped)
   🚦   build-linux-clang: 100% successful (✔️ 1064 passed, 🙈 3 skipped)
   🚦   sanitize-linux-gcc: 100% successful (✔️ 1064 passed, 🙈 3 skipped)
   🚦   integration-linux-openssl: 100% successful (✔️ 9 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: 59% successful (✔️ 29 passed, 🙈 20 skipped)
   🚦   build-windows-msvc: 100% successful (✔️ 976 passed, 🙈 1 skipped)
   🚦   build-linux-tunable-override: 100% successful (✔️ 1064 passed, 🙈 3 skipped)
   ⚠️   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 8eb9dbe into main May 12, 2026
20 checks passed
@DavidCozens DavidCozens deleted the feat/s21-01-tunables-mechanism branch May 12, 2026 10:52
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.

S21.01: SOLIDSYSLOG_MAX_MESSAGE_SIZE as the first build-time tunable — mbedTLS-style override mechanism

1 participant