Skip to content

feat(rails): load enabled rail plugins end to end#2187

Draft
Pouyanpi wants to merge 1 commit into
pouyanpi/rail-library-stack-5-lazy-actionsfrom
pouyanpi/rail-library-stack-6-hardening
Draft

feat(rails): load enabled rail plugins end to end#2187
Pouyanpi wants to merge 1 commit into
pouyanpi/rail-library-stack-5-lazy-actionsfrom
pouyanpi/rail-library-stack-6-hardening

Conversation

@Pouyanpi

@Pouyanpi Pouyanpi commented Jul 17, 2026

Copy link
Copy Markdown
Collaborator

Description

Load enabled rail plugins through the complete configuration and runtime path.
Index packaged plugin flow sources by Colang version, include plugin-declared
configuration fields when constructing RailsConfig, and load only flows from
plugins explicitly enabled by configuration.

Stack 3 defines how a catalog can be extended with named plugin entry points;
this PR carries that explicit enablement through configuration construction and
runtime flow loading. Discovery and activation stay separate: installing a
plugin does not make its config fields or flows active by default.

Add an end-to-end example plugin suite covering disabled plugins, enabled
configuration projection, flow loading, configured-surface parameters,
collisions, unknown plugins, cache resets, and both Colang dialects. Static
catalog discovery remains cheap and does not import action modules.

Impact

  • An installed rail plugin remains inert until its name is explicitly enabled
    in the application configuration.
  • Enabled plugins contribute typed configuration fields and the correct Colang
    flow source to the same paths used by built-in rails.
  • Disabled plugins do not alter RailsConfig, load flow files, or import action
    modules.
  • Missing plugins, duplicate providers, manifest collisions, and cache resets
    have deterministic, tested behavior.
  • Applications that do not enable plugins retain the existing built-in catalog
    and runtime behavior.

Stack

Layer Branch Base PR
Stack 3 pouyanpi/rail-library-stack-3-manifest-contract develop #2157
Stack 4 pouyanpi/rail-library-stack-4-builtins Stack 3 #2181
Stack 4b pouyanpi/rail-library-stack-4b-flow-gate Stack 4 #2185
Stack 5 pouyanpi/rail-library-stack-5-lazy-actions Stack 4b #2186
Stack 6 pouyanpi/rail-library-stack-6-hardening Stack 5 #2187

Related Issue(s)

Verification

AI Assistance

  • No AI tools were used.
  • AI tools were used; a human reviewed and can explain every change (tool: ___).

Checklist

  • I've read the CONTRIBUTING guidelines.
  • This PR links to a triaged issue assigned to me.
  • My PR title follows the project commit convention.
  • I've updated the documentation if applicable.
  • I've added tests if applicable.
  • I've noted any verification beyond CI and any checks I couldn't run.
  • I did not update generated changelog files manually.
  • I addressed all CodeRabbit, Greptile, and other review comments, or replied with why no change is needed.
  • @mentions of the person or team responsible for reviewing proposed changes.

Signed-off-by: Pouyanpi <13303554+Pouyanpi@users.noreply.github.com>
@github-actions github-actions Bot added status: needs triage New issues that have not yet been reviewed or categorized. size: L labels Jul 17, 2026
@codecov

codecov Bot commented Jul 17, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 92.10526% with 6 lines in your changes missing coverage. Please review.

Files with missing lines Patch % Lines
nemoguardrails/rails/llm/config.py 91.66% 4 Missing ⚠️
nemoguardrails/manifests/catalog.py 92.59% 2 Missing ⚠️

📢 Thoughts on this report? Let us know!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size: L status: needs triage New issues that have not yet been reviewed or categorized.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant