Treat soft plugin repair warnings as nonfatal#84431
Conversation
|
Codex review: needs maintainer review before merge. Reviewed May 31, 2026, 4:16 PM ET / 20:16 UTC. Summary PR surface: Source 0, Tests +23. Total +23 across 2 files. Reproducibility: yes. Current main still keys convergence failure off warnings.length > 0, and a focused mocked convergence path with repair warnings but no failedPluginIds or smoke failures reproduces the bad error state from source. Review metrics: none identified. Merge readiness Overall follows the weaker of proof and patch quality, so missing proof can cap an otherwise strong patch. Rank-up moves:
Risk before merge
Maintainer options:
Next step before merge
Security Review detailsBest possible solution: Merge the scoped convergence gate and regression tests once maintainers are satisfied that soft fallback warnings remain warning-only and hard repair or payload failures still block restart. Do we have a high-confidence way to reproduce the issue? Yes. Current main still keys convergence failure off warnings.length > 0, and a focused mocked convergence path with repair warnings but no failedPluginIds or smoke failures reproduces the bad error state from source. Is this the best way to solve the issue? Yes. The narrowest maintainable fix is to use the existing failedPluginIds repair contract plus payload smoke failures as the fatal signals, while leaving soft warnings visible to the caller. AGENTS.md: found and applied where relevant. Codex review notes: model gpt-5.5, reasoning high; reviewed against 80b7f5660354. Label changesLabel changes:
Label justifications:
Evidence reviewedPR surface: Source 0, Tests +23. Total +23 across 2 files. View PR surface stats
What I checked:
Likely related people:
What the crustacean ranks mean
Shiny media proof means a screenshot, video, or linked artifact directly shows the changed behavior. Runtime, network, CSP, and security claims still need visible diagnostics. How this review workflow works
|
|
ClawSweeper PR egg ✨ Hatched: 💎 rare Brave Shellbean Hatch commandComment Hatchability rules:
Rarity: 💎 rare. What is this egg doing here?
|
|
Added a standalone convergence runtime proof to the PR body. It runs this PR's So warning-only convergence stays visible as a warning without blocking, while @clawsweeper re-review |
|
🦞🧹 I asked ClawSweeper to review this item again. Re-review progress:
|
6edbbb4 to
2fee6bc
Compare
|
Rebased this branch onto current upstream/main to resolve the merge conflict.\n\nConflict resolution: kept the upstream stale bundled-plugin shadow pruning coverage and preserved this PR's warning-only/nonfatal convergence behavior plus failedPluginIds hard-failure coverage.\n\nValidation:\n- |
|
Heads up: this PR needs to be updated against current |
2fee6bc to
c25cba7
Compare
c25cba7 to
04ba542
Compare
04ba542 to
88d0737
Compare
88d0737 to
73c80fd
Compare
73c80fd to
a8aee1b
Compare
a8aee1b to
eb64f3c
Compare
steipete
left a comment
There was a problem hiding this comment.
Reviewed and reworked for current main.
Proof:
- Rebased onto current main and pushed exact head eb64f3c.
- Focused local test: node scripts/run-vitest.mjs src/cli/update-cli/post-core-plugin-convergence.test.ts src/commands/doctor/shared/missing-configured-plugin-install.test.ts
- Autoreview: /Users/steipete/Projects/agent-scripts/skills/autoreview/scripts/autoreview --mode auto --base origin/main; clean after fixing the accepted finding.
- GitHub CI on exact head: 131 passing checks including build-artifacts, check-prod-types, check-test-types, check-lint, check-shrinkwrap, plugin boundary lanes, CodeQL high-signal lanes, Real behavior proof, and dependency guard.
Best-fix verdict: best. The update path now treats repair warnings as nonfatal, but still blocks failures for active/effective/trusted plugin records that the gateway can actually load.
* Treat soft plugin repair warnings as nonfatal * fix: scope plugin repair convergence failures --------- Co-authored-by: Peter Steinberger <steipete@gmail.com>
* Treat soft plugin repair warnings as nonfatal * fix: scope plugin repair convergence failures --------- Co-authored-by: Peter Steinberger <steipete@gmail.com>
* Treat soft plugin repair warnings as nonfatal * fix: scope plugin repair convergence failures --------- Co-authored-by: Peter Steinberger <steipete@gmail.com>
Summary
Fixes #83889.
Real behavior proof
Behavior or issue addressed:
Post-core plugin convergence treated any repair warning as
errored: true, so a soft repair warning such as a beta fallback note could make the post-core update path reporterroreven when no plugin repair failed and payload smoke checks passed.Real environment tested:
Local OpenClaw worktree on macOS, Node from the Codex bundled runtime (
v24.14.0). The runtime proof uses a standalone convergence harness that executes this PR'srunPostCorePluginConvergenceimplementation with controlled repair/smoke inputs, so it exercises the post-core convergence decision path outside the Vitest runner.Exact steps or command run after this patch:
Evidence after fix:
Observed result after fix:
A convergence run with only a nonfatal repair warning now preserves the warning but returns
convergenceErrored=false, folds tofoldedErrored=false, and would surface post-update plugin status aswarningrather thanerror. A convergence run withfailedPluginIdsstill returnsconvergenceErrored=true, folds tofoldedErrored=true, and would surface status aserror. Payload smoke-check failures remain fatal through the existing smoke-failure branch and tests.What was not tested:
No live package-manager update, package swap, or gateway restart was performed; this proof verifies the post-core convergence decision behavior that controls whether warnings block the restart path.