-
-
Notifications
You must be signed in to change notification settings - Fork 79.1k
All repair warnings treated as fatal convergence errors even when non-blocking #83889
Copy link
Copy link
Closed
Closed
Copy link
Labels
P2Normal backlog priority with limited blast radius.Normal backlog priority with limited blast radius.clawsweeper:fix-shape-clearClawSweeper found a clear likely implementation shape for this issue.ClawSweeper found a clear likely implementation shape for this issue.clawsweeper:queueable-fixClawSweeper marked this issue as an existing queue_fix_pr work candidate.ClawSweeper marked this issue as an existing queue_fix_pr work candidate.clawsweeper:source-reproClawSweeper found a high-confidence source-level issue reproduction.ClawSweeper found a high-confidence source-level issue reproduction.impact:crash-loopCrash, hang, restart loop, or process-level availability failure.Crash, hang, restart loop, or process-level availability failure.issue-rating: 🦞 diamond lobsterVery strong issue quality with high-confidence source-level or clear reproduction.Very strong issue quality with high-confidence source-level or clear reproduction.
Metadata
Metadata
Assignees
Labels
P2Normal backlog priority with limited blast radius.Normal backlog priority with limited blast radius.clawsweeper:fix-shape-clearClawSweeper found a clear likely implementation shape for this issue.ClawSweeper found a clear likely implementation shape for this issue.clawsweeper:queueable-fixClawSweeper marked this issue as an existing queue_fix_pr work candidate.ClawSweeper marked this issue as an existing queue_fix_pr work candidate.clawsweeper:source-reproClawSweeper found a high-confidence source-level issue reproduction.ClawSweeper found a high-confidence source-level issue reproduction.impact:crash-loopCrash, hang, restart loop, or process-level availability failure.Crash, hang, restart loop, or process-level availability failure.issue-rating: 🦞 diamond lobsterVery strong issue quality with high-confidence source-level or clear reproduction.Very strong issue quality with high-confidence source-level or clear reproduction.
Type
Fields
Give feedbackNo fields configured for issues without a type.
Severity: low / Confidence: medium / Category: api-contract
Triage: contract-mismatch
Detected against: openclaw v2026.5.18 (latest stable at time of scan, 2026-05-18)
Tooling: clawpatch 0.3.0 + acpx/claude-sonnet-4-5 via Brad Mills protocol
Evidence
src/cli/update-cli/post-core-plugin-convergence.ts:60-85(runPostCorePluginConvergence)Reasoning
repairMissingConfiguredPluginInstalls can emit informational warnings (e.g. a plugin that was already up-to-date, a no-op repair). All such messages are appended to
warningsbefore the smoke failures, anderrored: warnings.length > 0fires on ANY non-empty warning list. This means a purely informational repair observation blocks the gateway restart. The downstreamconvergenceWarningsToOutcomespropagateserroredto set the plugin updatestatus: 'error', which the outer caller uses forexit 1. The confidence is medium because the contract ofrepair.warningsfromrepairMissingConfiguredPluginInstallscannot be fully verified from these files alone — if repair.warnings are always actionable, this is correct.Reproduction
Trigger a repair run that emits a warning that is not a hard failure (e.g. a plugin repair that partially succeeds with a note). The update will refuse to restart.
Recommendation
Distinguish fatal convergence failures from soft repair observations. Either: (a) have
repairMissingConfiguredPluginInstallsreturn a structured result witherrorsvswarnings, or (b) seterrored: smoke.failures.length > 0 || repair.errors?.length > 0rather than keying off total warning count. Document in PostCoreConvergenceResult whethererroredis set only on hard failures.Why existing tests miss this
No tests exist for runPostCorePluginConvergence.
Suggested regression test
it('errored is false when only soft repair warnings exist and smoke passes', async () => { /* mock repairMissingConfiguredPluginInstalls to return warnings:['note'] and runPluginPayloadSmokeCheck to return no failures */ const result = await runPostCorePluginConvergence(...); expect(result.errored).toBe(false); });
Minimum fix scope
Clarify the contract of repair.warnings and key
erroredonly on genuine hard failures (smoke failures + repair errors), not soft warnings.Standardized clawpatch finding. Persistent in v2026.5.18 (not resolved by upgrading from v2026.5.12). Finding ID:
fnd_sig-feat-cli-command-0e1f16a0ce-_3cbd805bec.