[codex] Fix missing channel plugin diagnostics#77559
Conversation
e65333e to
ea908ac
Compare
|
Codex review: needs changes before merge. Summary Reproducibility: yes. Source inspection gives a high-confidence reproduction path: apply the PR and validate a config with Next step before merge Security Review findings
Review detailsBest possible solution: Keep the repair-oriented warning for enabled, catalog-backed missing plugin entries, but preserve stale/inert wording when doctor will not install anything, especially disabled entries and globally disabled plugins. Do we have a high-confidence way to reproduce the issue? Yes. Source inspection gives a high-confidence reproduction path: apply the PR and validate a config with Is this the best way to solve the issue? No. The intended direction is right for enabled missing Discord/WhatsApp entries, but the implementation needs to gate the new wording on the same eligibility rules doctor uses for repair. Full review comments:
Overall correctness: patch is incorrect Acceptance criteria:
What I checked:
Likely related people:
Remaining risk / open question:
Codex review notes: model gpt-5.5, reasoning high; reviewed against 683d892eede2. Re-review progress:
|
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: ea908ac594
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| pushMissingPluginIssue(`plugins.entries.${pluginId}`, pluginId, { | ||
| warnOnly: true, | ||
| doctorRepairable: true, | ||
| }); |
There was a problem hiding this comment.
Avoid doctor repair hints for disabled plugin entries
This marks every missing plugins.entries.* value as repairable, but openclaw doctor --fix intentionally skips disabled plugin entries and returns no configured IDs when plugins.enabled === false in collectConfiguredPluginIds. In configs such as plugins.entries.discord.enabled: false or globally disabled plugins, validation now tells users to run doctor to reinstall a plugin that doctor will not touch, instead of keeping the stale-config warning path.
Useful? React with 👍 / 👎.
|
I believe #77613 closes this out. |
Summary
plugins.entries.*channel plugins as repairable installs instead of stale config.plugins.allowon the existing stale-config warning path becauseopenclaw doctor --fixdoes not repair allow-only references.plugin not installedwording so third-party catalog entries are not labeled as OpenClaw-official.Root Cause
After bundled channel plugins were externalized, upgraded configs can still contain valid
plugins.entries.discordorplugins.entries.whatsappreferences while the plugin package is absent from the current manifest registry. Validation previously treated those entries the same as truly stale plugin IDs and told users to remove valid config, even though doctor already has an install repair path for missing configured plugin entries.Behavior Change
For missing installable plugin entries, config validation now reports:
Unknown or allow-only plugin references still use the old stale-config warning, avoiding a repair suggestion that doctor cannot complete.
Verification
pnpm test src/config/config.plugin-validation.test.ts -- --reporter=dotpnpm test src/commands/doctor/shared/missing-configured-plugin-install.test.ts src/commands/doctor/shared/stale-plugin-config.test.ts -- --reporter=dotpnpm exec oxfmt --check --threads=1 src/config/validation.ts src/config/config.plugin-validation.test.tsgit diff --checkpnpm changed:lanes --jsonpnpm check:changedNotes
Blacksmith Testbox changed-gate attempts did not reach repo commands because both fresh leases shut down while queued:
tbx_01kqtga2jvntf4ft6vdzxrkwpb,tbx_01kqtgbp3r99jr04v5zfte47nf. Localpnpm check:changedinitially exposed a stale local dependency tree missingweb-tree-sitter;pnpm installrepairednode_moduleswith no tracked file changes, thenpnpm check:changedpassed.Fixes #77483