Skip to content

feat: report retired components in lfx upgrade and the editor - #15910

Draft
ogabrielluiz wants to merge 1 commit into
feat/upgrade-rule-shared-casesfrom
feat/upgrade-rule-retired
Draft

ogabrielluiz wants to merge 1 commit into
feat/upgrade-rule-shared-casesfrom
feat/upgrade-rule-retired

Conversation

@ogabrielluiz

@ogabrielluiz ogabrielluiz commented Oct 21, 2026 •

Copy link
Copy Markdown
Contributor

Chroma DB, Local DB and ALTK Agent were retired in 1.13. Flows that use them still load but fail when they run, and lfx upgrade called them safe, because their registry entries look like any other legacy component.

Components can now declare retired_in next to replacement. The three retired ones declare retired_in = "1.13.0". Chroma DB and Local DB point to Knowledge, and ALTK Agent points to Agent.

  • lfx upgrade prints [RETIRED] with the replacement and exits 1. --write leaves the component alone, and both --upgrade-flow modes refuse it.
  • In the editor the Legacy bar becomes a retired bar ("Retired in 1.13.0. This component fails when the flow runs.") with the replacement links and no Dismiss button. Update All, Review All, the toolbar and the update shortcut leave it out, and the editor refuses to run a flow that has one.
  • The build error, the v2 workflow warning and the restricted-mode refusal name the retirement and the replacement instead of asking for an update.

This holds in every mode, and also when the user edited the component's code. An edit usually keeps the retired imports or base class, and a dismissed update keeps shipped code that the runtime maps to the retired class, so both still fail when the flow runs.

These components come from lfx-bundles at run time, so a plain lfx install without it still reports them as [BLOCKED]. A retired component inside a group isn't shown in the editor yet, since the editor only checks top-level components today. The real-flow test builds their templates from the lfx classes, and the v1.12.6 hard flows gain four flows that use them.

@coderabbitai

coderabbitai Bot commented Oct 21, 2026

Copy link
Copy Markdown
Contributor

Important

Draft PR not reviewed

Draft PRs are not automatically reviewed by default.

  • Trigger a manual review

To automatically review draft PRs, update your CodeRabbit configuration:

reviews:
  auto_review:
    drafts: true
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

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.

@ogabrielluiz
ogabrielluiz added this pull request to stack #15912 October 21, 2026 13:28
@github-actions github-actions Bot added the enhancement New feature or request label Oct 21, 2026
@github-actions

This comment has been minimized.

A component can now declare retired_in next to replacement. The
attribute is serialized into its template like replacement, so the
editor's templates and the lfx upgrade registry both carry it. Chroma
DB, Local DB and ALTK Agent declare retired_in = "1.13.0"; Chroma DB and
Local DB point to the Knowledge component, ALTK Agent to the Agent.

lfx upgrade reports such a component with a new retired status, ahead
of every code comparison: it prints [RETIRED] with the release and the
replacement, leaves the component alone with --write, and exits
non-zero. --upgrade-flow refuses it in both check and safe mode. The
help of lfx upgrade, run and serve says so.

The editor check returns a retired flag with retired_in and the
replacement, with the same early exits as lfx upgrade: a node without
code or of an ignored type is never retired. A retired component shows
a bar that replaces the Legacy bar, says it fails when the flow runs,
keeps the replacement links and cannot be dismissed. Update All, Review
All and Dismiss leave retired components out, and neither the toolbar
nor the update shortcut offers to update one.

A retired component fails when the flow runs, so it is named with its
release and replacement instead of being sent to an update, whether or
not its code drifted and whether or not custom components are allowed.
The editor refuses to build a flow with one, the build error carries a
note about it, the v2 workflow warning names it, and with substitution
off the restricted-mode refusal names it instead of asking for an
update. The Python messages name the replacement by its registry
reference, as lfx upgrade does.

This holds for a component whose code the user edited too. An edit
usually keeps the retired imports or base class, and a dismissed update
keeps shipped code that the runtime maps to the retired class, so the
editor shows its retired bar and refuses the build in every mode.

The shared case table gains retired cases, and the hand-built flows for
v1.12.6 gain one flow per retired component, saved with lfx-bundles
installed. The compatibility docs describe the retired status and what
each --upgrade-flow mode refuses, and the docs on blocking custom
components describe the restricted-mode refusal.
@ogabrielluiz
ogabrielluiz force-pushed the feat/upgrade-rule-retired branch from c74f025 to 06d58ff Compare October 22, 2026 12:28
@github-actions github-actions Bot added enhancement New feature or request and removed enhancement New feature or request labels Oct 22, 2026
@github-actions

This comment has been minimized.

1 similar comment
@github-actions

github-actions Bot commented Oct 22, 2026 •

Copy link
Copy Markdown
Contributor

Build successful! ✅
Deploying docs draft.
Deploy successful! View draft

This branch has not been deployed

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

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant