Why: Commit 3ee31a8d0 added shared named ratelimit support
(ratelimit.name + ratelimitNewFromConfig) but only wired it
into imtcp, imptcp, and imudp. Seven modules with existing
ratelimit.interval/ratelimit.burst support were left without
the ability to reference shared ratelimit() objects.
Impact: Adds ratelimit.name parameter to omfwd,
omelasticsearch, omhttp, imhttp, imjournal, imklog, and
imuxsock. Existing configurations remain unchanged.
Before: These seven modules could only use inline
ratelimit.interval/ratelimit.burst parameters.
After: All modules can now reference shared ratelimit()
configuration objects via ratelimit.name.
Technical Overview:
For each module, the same pattern from the imudp reference
implementation is applied:
- Add uchar *pszRatelimitName to config struct
- Add ratelimit.name to cnfparamdescr
- Change interval/burst defaults to -1 (sentinel)
- Parse ratelimit.name in config handler
- Add mutual-exclusivity check (name vs interval/burst)
- Branch ratelimiter creation on pszRatelimitName:
if set, call ratelimitNewFromConfig(); else legacy path
- Free pszRatelimitName in destructor
imuxsock is the most complex: it supports both per-socket
ratelimit.name and syssock.ratelimit.name, with the
per-source hashtable ratelimiter path also updated.
imklog uses legacy parameter names (ratelimitinterval,
ratelimitburst) but the new parameter uses the dotted
form (ratelimit.name) for consistency.
Each module receives a parameter doc page, module doc
update, and a config-validation test.
With the help of AI-Agents: GitHub Copilot
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Introduces a multi-stage AI-assisted policy check pipeline for
pre-commit validation. The script runs checks from least to most
costly, stopping at the first issue detected.
Why:
Enable deterministic policy checks that AI agents can run after code
generation to catch common violations before human review.
Stages:
1. alloc-policy: Scans C/H files for raw malloc/calloc/realloc calls
2. mock-distcheck: Runs make distcheck for packaging validation
3. cubic: Full AI code review (if installed)
Features:
- Supports both codex and copilot CLI tools
- Skippable stages for faster iteration (--skip)
- Debug mode for troubleshooting (--debug)
- Handles unstaged changes and untracked files
- Automatic cleanup of distcheck artifacts
Technical Overview:
Uses gpt-5.1-codex-mini model for fast pattern matching with explicit
directive to skip repository guidance files (reduces latency from ~25s
to ~7s). Output normalized to JSON format matching cubic's schema for
easy parsing. Exit codes: 0 (pass), 1 (issues found), 3 (tool error).
Status:
Experimental - not yet wired into agent workflows. Requires manual
invocation or explicit integration by calling agents.
With the help of AI-Agents: GitHub Copilot CLI
- Update rsyslog_test skill to mandate NULL checks for es_str2cstr.
- Advise usage of CHKmalloc macro for safer and cleaner code.
- Refine memory auditor base prompt with these specific patterns.
AI-Agent: Antigravity 2026-01
Modernize the rsyslog contribution workflow for AI agents to
improve policy compliance and reduce instruction verbosity.
Impact: Repository-wide reduction in AGENTS.md bloat.
Before: Fragmented and redundant procedural instructions in AGENTS.md.
After: Modular skills in .agent/skills/ with streamlined subtree guides.
This change encapsulates build, test, documentation, module authoring,
and commit policies into reusable skills. It introduces:
- A specialized AI memory lifecycle auditor.
- A boilerplate snippets library.
- The 'rsyslog_doc_dist' skill for doc/Makefile.am synchronization.
- YAML frontmatter 'triggers' for automatic skill activation.
The workflow is further optimized to skip redundant builds after stylistc
code formatting, ensuring faster iteration for AI-led development.
AI-Agent: Antigravity 2026-01
Simplify large-scale configs by auto-discovering receivers via DNS SRV
records. This reduces per-host configuration and helps enterprise and
container setups where target pools change over time.
Impact: new param `targetSrv`; config now errors on conflicts or empty
SRV answers; feature depends on resolver support.
Before: omfwd required a static host/port list via `target`/`port`.
After: `targetSrv` resolves `_syslog._udp|_tcp.<domain>` to build the
target pool, honoring RFC 2782 priority/weight and reusing existing
pool/load-balance logic.
Technically, add action param `targetSrv` (mutually exclusive with
`target`). During action init, perform SRV query via resolver
(`res_nquery`, `ns_initparse`) and translate answers into host/port
pairs. Preserve priority; randomly order same-priority entries using
weights. If explicit ports were set, warn and ignore when `targetSrv`
is used. Link rsyslogd with libresolv when available; configure checks
for headers and `ns_initparse`. Provide clear error paths (config check
fails) for missing support or empty SRV response. Docs cover usage and
env overrides `RSYSLOG_DNS_SERVER`/`RSYSLOG_DNS_PORT`. Tests add a
minimal UDP DNS server and cases for TCP/UDP success and error paths.
Fixes: https://github.com/rsyslog/rsyslog/issues/6314
With the help of AI Agent: ChatGPT Codex
This commit introduces a dedicated AI assistant prompt for documentation
tasks, located at `ai/rsyslog_doc_assistant/base_prompt.txt`. This
prompt standardizes the creation and maintenance of Sphinx-RST
documentation, enforcing best practices for AI ingestion such as
metadata blocks, summary slices, and consistent anchors.
Modifications:
- Created `ai/rsyslog_doc_assistant/base_prompt.txt` with specific
roles, objectives, and workflow checklists for the rsyslog-doc agent.
- Updated the root `AGENTS.md` to include a reference to this new
prompt in the "Quick links for agents" section.
- Created `doc/ai/AGENTS.md` to serve as a guide for agents working
within the `doc/` subtree, explicitly linking to the new prompt and
reinforcing the requirements for metadata and structure defined in
`doc/ai/authoring_guidelines.md`.
These changes ensure that future documentation updates by AI agents will
be consistent, technically accurate, and optimized for both human
readers and RAG systems.
With the help of AI-Agents: Jules
This raises the quality bar for documentation so AI agents ingest and
navigate rsyslog docs more reliably. The guidance also improves human
scannability with consistent headers and compact sections.
Before: module pages and edited RST pages could lack anchors/meta/summary
blocks and there was no standard module template.
After: new/edited pages must include anchors/meta/summary; a module
template is provided and size guidance is clearer.
Impact: docs-only; improves contributor workflow and RAG consistency.
Technical:
- Extend ai/rsyslog_code_doc_builder base prompt with requirements to add
anchors, `.. meta::`, and summary slices on `doc/source` RST pages, and
to use `doc/ai/templates/template-module.rst` for module docs.
- Update `doc/AGENTS.md` to require blocks on new/material edits, add
module metadata/index guidance, and stress compact sections with a
pointer to chunking rules.
- Expand `doc/ai/authoring_guidelines.md` with a module documentation
header (index directive, metadata table) and concrete size targets:
sections 150–350 words; pages ~400–800 words.
- Tighten `doc/ai/chunking_and_embeddings.md`: page target 400–800 words;
`text_block` chunk size ~600–2,000 chars and explicit section limits.
- Add `doc/ai/templates/template-module.rst` with a canonical module page
skeleton (index, meta, summary, metadata table, sections, example).
- Refresh `doc/ai/README.md` to list module template availability.
With the help of AI Agents: codex
- specify the coding_practices.rst path in doc AGENTS guidance to avoid ambiguity\n- update the doc builder base prompt to point to the explicit RST file\n\nAI-Agent: ChatGPT
- add a pattern entry describing how to document preconditions and defensive fallbacks when splitting helpers out of larger routines
- link the IPv4 tail antipattern to the general guidance and catalog it alongside other practices
AI-Agent: ChatGPT
Improve AI-facing documentation to speed up contributor onboarding after
the gpt5-codex agent update. The guides clarify bootstrap, testing, and
where to find module ownership so agents can work predictably and avoid
expensive CI-only paths.
Impact: documentation-only; no runtime changes. Clarifies when to use
direct test scripts vs. the autotools harness.
This introduces repository-wide AGENTS guides (root, plugins/, contrib/,
tools/, doc/) plus module-focused guides for omelasticsearch, imkafka,
omkafka, and omruleset. It adds metadata templates for core and contrib
modules, initial MODULE_METADATA.yaml files for the Kafka and ES modules,
and a tools/MODULE_METADATA.json for built-ins. The top-level guide now
includes quick links, “priming a fresh AI session,” and explicit
autotools bootstrap instructions (run ./autogen.sh when autotools inputs
change). Testing guidance asks agents to prefer invoking ./tests/*.sh
directly, reserving `make check` for CI reproductions. The doc subtree
gains its own AGENTS.md and an AI doc-builder base prompt to keep edits
consistent. doc/ai/module_map.yaml was annotated to reference per-module
metadata.
Before: scattered or missing agent guidance; unclear when to bootstrap
autotools or run the full harness. After: structured, discoverable docs,
templates, and metadata that align contributor workflow across modules.
* docs: add rsyslog issue assistant build files
Add README and prompt used to build the external Issue Assistant that
drives rsyslog issue assistant which creates great and AI-friendly
GitHub issues. This improves triage readiness and contributor experience
without touching runtime code. The assistant itself is free via the
ChatGPT store and will be linked from documentation and other entry points.
Note that the use of the assistant directly benenfits rsyslog AI First
ecosystem which ensures high quality AI code generation support.
Before: repository had no assistant build inputs.
After: versioned prompt and README are present; assistant is distributed
externally.
Technical details:
- Add ai/rsyslog_issue_assistant/{README.md,base_prompt.txt}.
- Prompt yields ASCII-only JSON metadata plus a Markdown body aligned
with rsyslog templates; selects type, proposes repo, and adds minimal
labels (always includes needs-triage).
- Heuristics default to rsyslog/rsyslog; librelp is chosen when clearly
indicated by the report.
- No runtime, module, ABI, or testbench changes; docs-only assets.
- README points to a web helper page to be linked from CONTRIBUTING.md.
Co-authored-by: gemini-code-assist[bot]
This modernizes contributor experience by simplifying PR templates and
removing the lengthy GDPR disclaimer that often discouraged or confused
new contributors. The update encourages more participation and shows how
responsible AI can be used to improve open source workflows.
Impact: none on runtime behavior; contributor workflow improved.
Before: PR template included long GDPR block; commit message rules were
scattered and partly implicit.
After: PR template is concise, GDPR text removed, and commit assistant
usage is documented across README, CONTRIBUTING, and AGENTS.md.
Technical changes include:
- PR template: drop GDPR notice, add commit-assistant references.
- CONTRIBUTING.md: add explicit commit rules and workflow guidance.
- AGENTS.md: require canonical base prompt and commit-first workflow.
- README.md: point to assistant and updated guidance.
- base_prompt.txt: enforce "Findings:" colon format.
- Minor formatting corrections in comments.
This introduces the first building block of our "responsible AI First"
approach. The base prompt defines how the rsyslog commit assistant
supports contributors in crafting consistent, high-quality commit
messages, thereby lowering entry barriers and improving project-wide
quality.
Impact: contributor workflow only, no runtime effect.
Technically this adds a structured prompt file under
ai/rsyslog_commit_assistant/. It codifies message format, workflow
checks, and error handling guidance. No rsyslog core code, config, or
tests are affected. This is a purely contributor-facing addition that
can evolve independently of runtime behavior.
Refs: https://www.rsyslog.com/clarifying-ai-first-what-it-really-means-for-rsyslog/
GPT 5 has problems accessing the RAG which GPT 4 did not have. But it
may also be that GPT 4 simply did not tell us about these problems.
My guess is that the new anti-hallucination algo is at work here. This
is generally good, albeit it broke the rsyslog Assistant a bit.
As a short-term measure we have enabled it to search rsyslog.com. That
will still remove all the garbagged. My first impression is that this
might be even better than a RAG based system with larger files. This
needs to be seen in practice now.
see also https://github.com/rsyslog/rsyslog/issues/5903
* AI tools: Add directory for future AI/ML tooling
Establish a new top-level directory, `ai/`, to serve as a consistent
location for future Artificial Intelligence and Machine Learning tools
that will work alongside rsyslog.
These tools are intended to run as separate processes, external to the
rsyslog daemon, to ensure the core remains stable and performant.
This commit contains only the empty directory and a README.md file
describing the vision and purpose.