Why:
Broaden daily-stable coverage to a musl-based mainstream distribution while preserving Alpine's native packaging policy.
Impact:
Maintainers can build, retain, publish, and verify signed Alpine 3.24 x86_64 packages from current rsyslog main.
Before/After:
Before: the shared archive automated APT and RPM families only.
After: it also supports an immutable, signed APK repository with clean-container installation verification.
Technical Overview:
Use Alpine's 3.24-stable rsyslog APKBUILD as the packaging baseline.
Generate ordered daily versions and signed APK packages plus an incremental APKINDEX.
Publish immutable packages and snapshots to the shared DigitalOcean Space.
Verify the exact published version in a clean Alpine 3.24 container.
Keep scheduling disabled until the first manual end-to-end publication succeeds.
Open or update an issue when a scheduled build, publish, or verification fails.
With the help of AI-Agents: Codex
Why:
DigitalOcean Spaces CDN keeps its one-hour edge TTL unless its
provider-specific max-age object metadata is present. This allowed signed
but stale repository metadata to reach verification clients.
Impact:
Daily package publishers now expose mutable metadata within 60 seconds.
Before/After:
Before, stale signed metadata passed readiness; after, exact EVR is required.
Technical Overview:
Set the Spaces max-age metadata on Debian, Ubuntu, and EL uploads.
Keep immutable package and snapshot objects cached for one year.
Require EL verification metadata to contain the expected rsyslog EVR.
Bind the downloaded primary metadata to signed repomd.xml checksums.
Install Python explicitly in every EL10 verification container.
Document the one-time purge needed for existing one-hour cache entries.
With the help of AI-Agents: Codex
Why:
Provide unattended current-main packages for the newest Enterprise Linux
generation without maintaining duplicate repositories for each clone.
Impact:
Adds a disabled-by-default daily EL10 build, publish, and install flow.
Before/After:
Before, the archive covered Debian and Ubuntu; after, it also covers EL10.
Technical Overview:
Use the current CentOS Stream 10 spec as the distro packaging baseline.
Build current rsyslog main with Mock for the EL10 x86_64 target.
Apply explicit policy for upstreamed patches and new build requirements.
Sign RPMs and repository metadata with the existing archive key.
Publish clone-neutral x86_64 and SRPM repositories to DigitalOcean Spaces.
Merge prior metadata so every immutable daily package version remains usable.
Verify exact signed installs on CentOS Stream, Rocky, Alma, and Oracle Linux.
Create or update a GitHub issue when an enabled scheduled run fails.
With the help of AI-Agents: Codex
Why:
Ubuntu users need current main builds that retain the target release's
native package definitions.
Impact:
Adds an opt-in Ubuntu 26.04 daily build, publish, and verification flow.
Before/After:
Before: daily stable packages targeted Debian 13 only.
After: Ubuntu 26.04 can publish into its own signed archive namespace.
Technical Overview:
Build current main with Ubuntu 26.04's source-package debian directory.
Apply an explicit zero-fuzz policy for known upstream package drift.
Publish immutable packages and snapshots below the Ubuntu archive path.
Verify signed metadata and exact package installation on Ubuntu 26.04.
Register build and publication phases for flake evidence and failure issues.
Keep scheduled publishing disabled until the first production run passes.
With the help of AI-Agents: Codex
Why:
The Debian container executes workflow run steps with sh by default. The
published-package verifier used Bash pipeline status syntax after its smoke
tests, so a successful install was reported as a workflow failure.
Impact:
Published Debian packages can complete the end-to-end verification gate,
while genuine install or smoke-test failures still fail the workflow.
Before/After:
Before: the exact package installed and validated, then sh rejected a Bash
array assignment.
After: the verifier explicitly uses Bash and records the pipefail result as
a scalar status.
Technical Overview:
Set the verifier job run shell to Bash and preserve the pipeline result
without an unnecessary array.
With the help of AI-Agents: Codex
Why:
Daily packages must combine current rsyslog source with the package
definitions shipped by the target Debian release. Using debian/latest
imported Testing and Unstable packaging into the Debian 13 build.
Impact:
Debian 13 daily packages now use Debian 13 maintained package layout
while retaining current main functionality and dependencies.
Before/After:
Before: the workflow cloned debian/latest and downgraded its compat level.
After: it obtains Debian 13 source package and applies explicit backport
policy for current main.
Technical Overview:
Fetch the rsyslog source package from the builder Debian repositories.
Record the selected Debian packaging baseline in the build summary.
Keep Debian 13 patch exceptions and current-source dependencies in a
version-specific policy.
Enforce zero-fuzz patch application and add current module install paths.
Use main as the scheduled daily-stable source.
Install all verification tools needed by the publication smoke test.
With the help of AI-Agents: Codex
Why:
The end-to-end Debian publisher cannot install awscli from Ubuntu 24.04
because that package has no installation candidate.
Impact:
DigitalOcean package publication can reach its upload and verification
jobs.
Before/After:
Before: publisher stopped during tool installation with apt exit 100.
After: publisher validates the AWS CLI v2 bundled with the hosted runner.
Technical Overview:
Remove awscli from the Ubuntu package installation list.
Require the hosted runner's aws command before archive work begins.
Print its version for diagnostic evidence.
Continue installing apt-utils, GnuPG, and xz support from Ubuntu.
With the help of AI-Agents: Codex
Why:
Pull requests should not consume a full Debian package-build runner when
workflow linting can cover archive automation changes cheaply.
Impact:
Debian archive packages now build only on daily or explicit manual runs.
Before/After:
Before: archive-related PRs built Debian 13 packages.
After: daily failures open an issue while PR package builds are omitted.
Technical Overview:
Remove the pull_request trigger and its PR source-ref handling.
Retain manual dispatch for bootstrap and recovery.
Restrict the operational failure issue to scheduled runs.
Include preflight status so early daily failures remain actionable.
Document the runtime policy and notification behavior.
With the help of AI-Agents: Codex
Why:
A successful upload should prove that Debian users can install and
validate the exact package exposed through the public archive.
Impact:
Publication now fails when the installed version or configuration is wrong.
Before/After:
Before: verification installed the package and printed its version.
After: it also checks dpkg provenance and validates the configuration.
Technical Overview:
Keep the smoke test in the post-publication Debian 13 container.
Compare dpkg-query output with the version produced by the build job.
Run rsyslogd -N1 to validate the installed default configuration.
Document that the public-CDN verification includes this smoke test.
With the help of AI-Agents: Codex
Why:
APT clients need anonymous access to package objects and source metadata must
be covered by publication verification.
Impact:
The Spaces-backed archive can be consumed through its CDN, and broken source
indexes fail the post-publication check.
Before/After:
Before, uploaded objects kept the private default ACL and verification covered
only Packages.xz. After, uploads are public-read and both signed indexes are
validated.
Technical Overview:
Set public-read on immutable and mutable S3 uploads, verify the signed
Sources.xz checksum and compression, and require the expected source version
for hosted publication checks.
With the help of AI-Agents: Codex
Why:
Failure evidence must only represent marked test phases, and repository
verification retries must not retain temporary files.
Impact:
Hosted failure artifacts stay semantically accurate and repeated publication
checks do not accumulate stale verification state.
Before/After:
Before, any job failure could trigger flake evidence and failed verification
attempts leaked temporary directories. After, uploads are phase-scoped and
cleanup runs on every exit path.
Technical Overview:
Gate evidence uploads on explicit step outcomes, install a safely quoted EXIT
trap for verification scratch space, and clarify that PR builds package the PR
head without publishing.
With the help of AI-Agents: Codex
Why:
The minimal Debian 13 container lacks git and Python before the main
prerequisite step, and publication verification needs a log directory.
Impact:
Pull-request builds can record the source revision, and future publication
verification can preserve failure evidence reliably.
Before/After:
Before, hosted CI stopped at the source revision step. After, the container
bootstraps required tools and prepares the verification log path.
Technical Overview:
Install git and Python immediately after checkout and create the flake-evidence
log directory before piping installation output through tee.
With the help of AI-Agents: Codex
Why:
Daily stable packages need durable multi-version retention without using
GitHub Pages as an ever-growing package store.
Impact:
Debian 13 amd64 package builds can publish to a future Spaces archive.
Before/After:
Before, staging replaced a Pages repository. After, Actions maintains an
append-only signed APT archive with at least five years of retained builds.
Technical Overview:
Build and verify Debian 13 packages in Actions, incrementally merge signed
APT indexes, and publish immutable packages and snapshots to an S3-compatible
archive. Scheduled publishing stays disabled until DigitalOcean is ready.
With the help of AI-Agents: Codex
Why:
Custom oracle diagnostics and workflow-audit placement must be reliable.
Impact:
Oracle output is captured and invalid upload lookalikes fail lint.
Before/After:
Before: heredoc text or misplaced uploads could satisfy the audit.
After: step structure, condition, and placement are checked explicitly.
Technical Overview:
- Run the VictoriaMetrics oracle through the common capture wrapper.
- Restrict upload matching to valid workflow step-key indentation.
- Require failure-aware upload conditions for every evidence step.
- Require uploads to follow recognized test-command steps.
- Add focused regression coverage and align agent documentation.
With the help of AI-Agents: Codex
Why:
Fallback logs and upload coverage must not disappear silently when
storage fails or GitHub changes the job-log representation.
Impact:
CI evidence collection now fails closed without misclassifying setup.
Before/After:
Before: several evidence gaps could pass lint or lose fallback logs.
After: ZIP logs, storage errors, and workflow registration are covered.
Technical Overview:
- Decode GitHub job-log ZIP archives without extracting untrusted paths.
- Preserve the test command outcome while failing on logging errors.
- Audit active YAML upload steps and automatic harvester registration.
- Align artifact names, opt-out guards, and permission preparation.
- Document failure-aware uploads and add focused regression tests.
- Add required license headers to the new Python tooling.
With the help of AI-Agents: Codex
Why:
Workflow lint requires POSIX text-file termination.
Impact:
The Prometheus scrape workflow passes yamllint.
Before/After:
The workflow ended without a final newline.
Technical Overview:
Restore the final newline without changing the workflow behavior.
With the help of AI-Agents: Codex
Why:
Prometheus rejects raw rsyslog statistic names containing punctuation.
Impact:
Text exposition and Remote Write now use reversible safe identifiers.
Before/After:
Unsafe names were emitted raw or collided after underscore replacement.
Technical Overview:
Use U__ values-style escaping after full metric-name construction, preserve
safe names, and escape HELP metadata. Add testbench coverage and a live
Prometheus scrape workflow.
With the help of AI-Agents: Codex
Why:
Documentation examples can drift from accepted configuration syntax.
The old hand-copied test approach checked fixtures instead of the
rendered documentation source.
Impact:
Marked documentation samples are syntax-checked in docs CI and report
coverage through the docs-samples Codecov flag.
Before/After:
Before, doc examples relied on manual review or copied tests. After,
marked RST rsyslog blocks are extracted and checked by rsyslogd -C -N1.
Technical Overview:
Add a documentation sample validator that scans doc/source for
rsyslog-doc-sample markers and validates the following rsyslog code
block with the built rsyslogd.
Support metadata for plugin requirements and generated prepend/append
fixture lines.
Wire the documentation workflow to build an instrumented rsyslogd, run
the validator, generate lcov output, and upload Codecov coverage under
the docs-samples flag.
Register the validator and its tests in the documentation dist list.
Extend local validation planning to build and run the validator when
marked documentation samples are present.
With the help of AI-Agents: OpenAI Codex
Why: The historic testbench failure-reporting backend no longer exists, so CI jobs should stop trying to post failures there.
Impact: CI failures no longer attempt outbound reports to the removed backend.
Before/After: CI exported RSYSLOG_STATSURL to a dead endpoint; CI now leaves it unset and diag.sh uses its local no-report path.
Technical Overview: Removed RSYSLOG_STATSURL from the regular container CI job, Elasticsearch matrix, Kafka distcheck lane, distro daily matrix, and impstats push workflow. The diag.sh helper remains unchanged so explicit local or future CI opt-ins can still provide a replacement URL. The devcontainer pass-through remains intact for manual users that intentionally set RSYSLOG_STATSURL.
With the help of AI-Agents: Codex
Why: macOS PR CI can run close to the job timeout, and hard job
timeouts do not leave enough room to upload failure evidence for the
flake collector.
Impact: macOS PR CI gets a 25 minute job cap and emits ci-failure
artifacts for test failures or bounded make-check timeouts.
Before/After: macOS failures relied on job logs only; now failures and
make-check timeouts publish the same short-lived evidence artifacts as
other lanes.
Technical Overview:
Raise the macos_CI job timeout from 15 to 25 minutes.
Wrap make check in a Python process-group watchdog capped at 20 minutes
so the workflow retains time for cleanup and artifact upload.
Record timeout results as a distinct run_tests status while preserving
ordinary failure handling.
Upload ci-failure artifacts with failed-tests, test-suite logs, per-test
logs, trs files, and config.log before the final failing diagnostic step.
With the help of AI-Agents: Codex
Why: the first manual staging runs exposed early workflow blockers before packages could be built for the trixie staging repository.
Impact: workflow_dispatch runs can generate versions and install trixie build dependencies from the fetched Debian packaging baseline.
Before/After: version generation depended on local Git HEAD and build-deps required unavailable debhelper compat 14; the workflow now uses GITHUB_SHA in Actions and applies a documented trixie control-file policy rewrite.
Technical Overview: Add a short_commit_sha helper that prefers a valid GITHUB_SHA and keeps git rev-parse as the local fallback.
Extend the Debian CI policy loader with control_replacements entries written as tab-separated pattern/replacement data.
Apply those replacements to the fetched Debian packaging control file before mk-build-deps evaluates Build-Depends.
Record the debhelper-compat policy in .github/debian-ci-policy.yml so the trixie staging drift remains explicit.
This fixes the failure recorded at https://github.com/rsyslog/rsyslog/issues/7302.
With the help of AI-Agents: Codex
Why: Fork pull_request jobs execute scripts from the PR checkout, so repository or organization Actions variables used for apt tuning must not be exposed to untrusted code.
Impact: Fork PR Ubuntu package jobs now run with default apt settings, while trusted in-repository PRs can still use configured apt proxy and mirror variables.
Before/After: Fork PRs received apt environment variables; now those variables are passed only when the PR head repository is the base repository.
Technical Overview:\nAdd an explicit repository-identity guard around each Ubuntu package apt tuning variable in run_checks.yml.\n\nKeep the existing Build Ubuntu package script invocation and variable names unchanged so trusted in-repository package CI remains configurable.\n\nDocument the guard beside the env block so future changes do not accidentally expose Actions variables to fork-controlled checkout scripts.\n\nLeave packaging/ubuntu/build-ubuntu.sh unchanged because it still needs to accept caller-provided local or trusted CI apt settings.\n\nWith the help of AI-Agents: Codex
Why: CI failures need enough test harness output for quick diagnosis.
Impact: CI make check jobs now print verbose Automake test details.
Before/After: Failed test logs were easier to miss; CI now requests verbose test output.
Technical Overview: Add VERBOSE=1 to direct make check invocations in the CI workflows. Apply the same setting in devtools/run-ci.sh so shared container-based CI paths inherit verbose Automake test logging. This keeps the change limited to diagnostic output and does not alter the selected tests.
With the help of AI-Agents: Codex
Why:
Operators need parsed RFC5424 structured data below a predictable
JSON object name, and old large structured-data messages could exceed
module-local assumptions.
Impact:
Adds two action parameters, expands structured-data length storage,
and enables mmpstrucdata in the Ubuntu 26.04 TSAN lane.
Before/After:
Before, mmpstrucdata always wrote `rfc5424-sd` and could fail on very
large SD. After, the container is configurable and SD size is bounded.
Technical Overview:
- Add `container` with default `rfc5424-sd`.
- Add `maxStructuredDataSize`, defaulting to global max message size.
- Store message structured-data length as `rs_size_t` instead of 16 bit.
- Allocate parameter-value parse buffers from the actual SD length.
- Preserve RFC3164/no-SD skip behavior and represent RFC5424 NILVALUE
as JSON null under the configured container.
- Document RainerScript and YAML usage and add parameter reference pages.
- Add focused regression tests for custom containers, NILVALUE, large SD,
oversized SD, and RFC3164 skip behavior.
- Remove the old mmpstrucdata TSAN suppression and codify container
clean/rebuild guidance for local validation.
Special credits:
Bogoslovskii Fedor provided good analysis that facilitated parts of the
implementation.
Closes https://github.com/rsyslog/rsyslog/issues/3297
Closes https://github.com/rsyslog/rsyslog/issues/1891
With the help of AI-Agents: Codex
Co-authored-by: Bogoslovskii Fedor <Fedorasta@gmail.com>
Why: Daily focused runs are intended to exercise the current tree and current runner environment without stale cross-run configure state.
Impact: The daily Kafka lane no longer reuses config.cache, setup failures do not trigger secondary coverage failures, and the tracking issue identifies failed lanes.
Before/After: Before, a restored Kafka config.cache could reject new coverage flags and obscure the root cause with coverage cleanup failures. After, Kafka configures fresh and failure reports name the failed lane and artifact.
Technical Overview: Removed the actions/cache step for the daily Kafka configure cache.
Technical Overview: Removed --cache-file=config.cache from the Kafka configure command.
Technical Overview: Added an id to the prepare step and run coverage/Codecov only after configure succeeds.
Technical Overview: Extended the report job to read workflow jobs and include failed daily lanes plus expected ci-failure artifact names in the tracking issue.
Technical Overview: Added actions:read permission for the report job so it can inspect run jobs.
Issue: https://github.com/rsyslog/rsyslog/issues/7156
With the help of AI-Agents: Codex
ThreadSanitizer can report lock-order inversions when its deadlock detector is enabled. Turn that option on for the existing Linux and macOS TSan CI lanes so observed pthread lock cycles fail the relevant sanitizer jobs.
This only changes existing TSan runtime options. Kafka remains disabled in the current TSan lanes; adding Kafka-specific TSan coverage is left for a separate change.
Why: Fedora 44 is now the useful fast feedback target for pull
requests, while Fedora 43 remains the supported compatibility check for
daily coverage.
Impact: PR CI now uses Fedora 44 and daily distro CI uses Fedora 43.
The obsolete Fedora 42 dev-container definition is removed.
Before/After: PR CI used Fedora 43 and daily CI used Fedora 42; now PR
CI uses Fedora 44 and daily CI keeps Fedora 43 coverage.
Technical Overview:
- Add a Fedora 44 dev-container definition.
- Adjust the Fedora 44 image for Java 25 package names.
- Pass the CMake compatibility policy needed by libfaup under Fedora 44.
- Point the regular run_checks Fedora lane at the Fedora 44 image.
- Move the daily distro Fedora lane from Fedora 42 to Fedora 43.
- Remove the Fedora 42 dev-container definition from git.
Validation:
- Built rsyslog/rsyslog_dev_base_fedora:44 locally.
- Ran the container build script smoke test successfully.
- Ran a full Fedora 44 all-module build with make -j80 successfully.
- actionlint .github/workflows/run_checks.yml .github/workflows/run_distro_daily.yml
- shellcheck packaging/docker/dev_env/fedora/base/44/build.sh packaging/docker/dev_env/fedora/base/44/tag-previous.sh
With the help of AI-Agents: Codex
Why:
CI requested --enable-compile-warnings=error, but some lanes used a singular configure spelling that was never accepted by configure, and some bootstrap or package-build paths lacked the Autoconf Archive macros needed by AX_COMPILER_FLAGS. The singular typo was masked because git-tree builds already default to warning level error. Dev-container definitions also had no PR gate that validates changed container build inputs.
Impact:
Fixes CI warning-policy plumbing, package-build macro dependencies, warnings exposed by that policy across Linux and macOS builds, and a branch-protection-friendly dev-container definition build gate.
Before/After:
Before, missing macros or stale configure flags could make -Werror ineffective or leave literal AX_* macro calls in regenerated configure scripts, and container definition changes were not validated by PR CI. After, required macros are installed or declared in bootstrap and package environments, stale internal configure flags are corrected to the supported spelling, changed dev-container Dockerfiles are built by the check workflow, and runtime sources compile cleanly under the restored warning-as-error policy.
Technical Overview:
Require AX_IS_RELEASE and AX_COMPILER_FLAGS when building with a GCC-like compiler instead of silently falling back to weaker warning flags. Add an m4_pattern_forbid guard so missing AX_* macro expansion is reported during bootstrap instead of later as a confusing configure shell syntax error.
Keep the Autoconf Archive option surface unchanged: the supported option is --enable-compile-warnings. The singular --enable-compile-warning spelling was introduced in an internal dev-container definition in 2019, is reported as unrecognized on older release labels such as v8.2504.0, and is corrected here rather than promoted into a new rsyslog alias.
Install or declare autoconf-archive in direct GitHub-hosted bootstrap paths, Debian/RPM package build metadata that reruns autoreconf, and the cross-arch helper image. Update stale internal dev-container configure defaults to use --enable-compile-warnings=error.
Add a dev container definition CI job to run_checks.yml. It uses changed-files to detect devtools/ci and packaging/docker/dev_env container-definition changes, builds only the affected Dockerfiles, handles shared dev_env/common context users, and exits successfully with a skip message when no concrete container build is relevant.
Mark recovered-queue-size and non-Linux network namespace helpers as intentionally unused where their feature-specific code paths are not compiled. Keep inotify and epoll bookkeeping scoped to the feature guards that consume it, avoid deprecated raw syscall use for macOS thread-id debug output, and make the JSON escape cleanup path explicit for 32-bit compiler analysis.
With the help of AI-Agents: OpenAI Codex
Why:
Fedora 42 and CentOS 8 still provide useful portability and
image-drift signal, but they mostly duplicate adjacent PR runtime
lanes. Keeping them in every PR makes the regular matrix slower
without adding enough per-change confidence to justify the cost.
The Debian sid PR lane no longer provides reliable rolling-Debian
signal because its devcontainer image is not rebuilt frequently.
Impact:
Regular PR CI runs fewer duplicate or misleading distro lanes; daily CI
keeps full configured coverage for the moved distro lanes and opens or
updates tracking issues when scheduled lanes fail.
Before/After:
Before, centos_8, fedora_42, and a stale debian_sid image ran on every
PR. After, centos_8 and fedora_42 run as full-suite daily distro lanes,
and the stale debian_sid lane/container is removed.
Technical Overview:
Remove centos_8, fedora_42, and debian_sid from the run_checks.yml PR
matrix.
Add run_distro_daily.yml for full configured distro test runs using the
same devcontainer images and configure options as the removed centos_8
and fedora_42 PR lanes.
Delete the Debian sid devcontainer definition because an unreliably
rebuilt sid image is a stale snapshot rather than a trustworthy
upcoming-Debian canary.
Do not apply PR relevance pruning to daily distro runs; scheduled runs
must test the full configured lane because any code may have changed
since the previous run.
Use the same ci-failure artifact naming and log globs as regular PR CI
so the flake collector can process scheduled failures through the same
path.
Add or align tracking issue reporting for the touched daily and weekly
scheduled workflows so failures provide a persistent triage handle.
Restrict tracking issue search to open issues so failures cannot update
a closed tracker and become hidden.
Clarify in issue summaries that failures must be classified as one-off
flakes or regressions and that the long-term expectation is fewer
flakes as recurring causes are fixed.
Keep issue-write permission scoped to reporting jobs only.
With the help of AI-Agents: Codex
Why:
Regular PR CI should avoid waking long-running service-backed tests when a
change only touches unrelated helper code. Kafka, imfile, and Elasticsearch
are frequent long-tail costs, so they need focused relevance gates without
weakening full CI and flake-testing workflows.
Impact:
PR CI omits Kafka, imfile, and Elasticsearch tests for unrelated helper-only
changes, while direct module/test changes and plausible shared runtime paths
still run those families. Local CI-container runs can apply the same
relevance policy before devtools/run-ci.sh.
Before/After:
Before, broad runtime patterns made these expensive families run too often;
after, they use explicit focused dependency rules with full-run overrides.
Technical Overview:
Move the remaining root-level runtime C/H files under runtime/ so path-based
rules can reason about core code consistently. Keep conservative broad
relevance for service families that do not yet have focused dependency
rules. Add focused relevance for Kafka, imfile, and Elasticsearch covering
module paths, tests, build/testbench plumbing, config/message/action/queue,
worker, template, ruleset, parser, stats, and selected family-specific
runtime helpers. Keep isolated helpers such as lookup tables, dynstats, DNS
cache, crypto/KSI, GSSAPI, and unrelated protocol helpers from waking those
families. Add devtools/apply-service-relevance.sh so GitHub Actions and local
container testing share the same relevance-to-configure suppression logic.
Centralize Elasticsearch and Kafka job decisions on the top-level
change-scope outputs so scheduled jobs always run their test body. Preserve
RSYSLOG_TESTBENCH_FORCE_SERVICE_TESTS,
RSYSLOG_TESTBENCH_FORCE_<MODULE>_TESTS, and
RSYSLOG_TESTBENCH_SKIP_SERVICE_RELEVANCE so daily, weekly, and flake runs
can still force all tests even when there are no relevant changes. Document
that AI agents must validate both the relevance decision layer and the
resulting configured test list when changing these gates.
Validation:
bash -n tests/diag.sh devtools/apply-service-relevance.sh
git diff --check
actionlint .github/workflows/run_checks.yml
shellcheck -S warning devtools/apply-service-relevance.sh
module-needs-testing rule matrix for kafka, imfile, elasticsearch, mysql
Temporary git-diff probes for runtime/lookup.c and runtime/action.c
Source helper checks for runtime/lookup.c and runtime/action.c
Ubuntu 26.04 container make distclean plus MOCK-OK run-ci for runtime/lookup.c
With the help of AI-Agents: Codex