Skip to content

perf(update): reuse missing plugin payload id set#96950

Merged
vincentkoc merged 2 commits into
openclaw:mainfrom
ly-wang19:codex/high-quality-algo-3
Jun 26, 2026
Merged

perf(update): reuse missing plugin payload id set#96950
vincentkoc merged 2 commits into
openclaw:mainfrom
ly-wang19:codex/high-quality-algo-3

Conversation

@ly-wang19

Copy link
Copy Markdown
Contributor

What Problem This Solves

The post-core update plugin repair path collected missing plugin payload IDs as an array, then used that list both to build a skip set and later to suppress duplicate remaining-payload warnings. The second use performed repeated linear membership checks.

Why This Change Was Made

This stores the collected missing payload IDs as a Set immediately, then reuses that Set for both downstream skip ID construction and duplicate-warning suppression. The behavior stays the same while lookup cost stays constant as the missing payload list grows.

User Impact

Plugin update repair bookkeeping does less repeated work when many plugin payloads are missing or repaired during an update. User-visible warning behavior is intended to remain unchanged.

Evidence

  • node scripts/run-vitest.mjs src/cli/update-cli.test.ts
  • .agents/skills/autoreview/scripts/autoreview --mode branch --base origin/main --parallel-tests "node scripts/run-vitest.mjs src/cli/update-cli.test.ts"
  • autoreview clean: no accepted/actionable findings reported; tests exit 0

@openclaw-barnacle openclaw-barnacle Bot added cli CLI command changes size: XS labels Jun 26, 2026
@clawsweeper

clawsweeper Bot commented Jun 26, 2026

Copy link
Copy Markdown
Contributor

Codex review: needs real behavior proof before merge. Reviewed June 26, 2026, 5:27 PM ET / 21:27 UTC.

Summary
The PR changes updatePluginsAfterCoreUpdate to collect missing plugin payload IDs into a Set and reuse it for update skip IDs and remaining-payload warning suppression.

Reproducibility: not applicable. this is a performance cleanup rather than a bug report. The source path and tests show the membership behavior, but the external PR still needs real after-fix update or repair proof before merge.

Review metrics: 1 noteworthy metric.

  • Actual merge delta: 1 file, +3/-3 against current main. The live branch contains stale duplicate main changes, but GitHub's potential merge commit shows maintainers only need to review the one-file Set reuse delta.

Stored data model
Persistent data-model change detected: migration/backfill/repair: docs/cli/update.md, persistent cache schema: extensions/memory-core/src/memory/qmd-manager.ts, persistent cache schema: extensions/memory-core/src/memory/qmd-runtime-cache.test.ts, persistent cache schema: extensions/memory-core/src/memory/qmd-runtime-cache.ts, serialized state: extensions/deepinfra/image-generation-provider.test.ts, serialized state: extensions/google/image-generation-provider.test.ts, and 37 more. Confirm migration or upgrade compatibility proof before merge.

Merge readiness
Overall: 🧂 unranked krab
Proof: 🧂 unranked krab
Patch quality: 🐚 platinum hermit
Result: blocked until real behavior proof is added.

Overall follows the weaker of proof and patch quality, so missing proof can cap an otherwise strong patch.

Rank-up moves:

  • [P1] Add redacted after-fix proof from a real openclaw update or post-core plugin repair scenario that exercises the missing-payload path.

Proof guidance:

  • [P1] Needs real behavior proof before merge: The PR body supplies Vitest/autoreview output only; as an external non-doc PR it needs redacted real update or repair output, logs, terminal screenshot, copied live output, recording, or another after-fix artifact before merge. After adding proof, update the PR body; ClawSweeper should re-review automatically. If it does not, the PR author or someone with repository write access can comment @clawsweeper re-review.

Risk before merge

  • [P1] The contributor has not supplied redacted real openclaw update or post-core plugin repair output, logs, screenshot, or copied live output; tests and autoreview alone do not satisfy the external PR proof gate.

Maintainer options:

  1. Decide the mitigation before merge
    Keep the narrow Set reuse, require redacted real update or repair proof, then merge the actual one-file delta once routine checks are green.
  2. Pause or close
    Do not merge this PR until maintainers decide whether the risk is worth taking.

Next step before merge

  • [P1] No automated repair is appropriate; the contributor needs to add real behavior proof and then the narrow PR can receive normal maintainer review.

Security
Cleared: The actual merge result only changes local Set membership bookkeeping in the update CLI path and introduces no dependency, workflow, secret, package, or security-boundary change.

Review details

Best possible solution:

Keep the narrow Set reuse, require redacted real update or repair proof, then merge the actual one-file delta once routine checks are green.

Do we have a high-confidence way to reproduce the issue?

Not applicable; this is a performance cleanup rather than a bug report. The source path and tests show the membership behavior, but the external PR still needs real after-fix update or repair proof before merge.

Is this the best way to solve the issue?

Yes, the actual merge delta is the narrow maintainable fix because the downstream API already consumes a Set and the remaining-payload suppression only needs membership checks. The branch should not be cleared until real behavior proof is added.

AGENTS.md: found and applied where relevant.

Codex review notes: model internal, reasoning high; reviewed against 29680046801d.

Label changes

Label justifications:

  • P3: This is a low-risk internal CLI performance cleanup with no user-facing behavior, config, or compatibility surface change in the actual merge result.
  • rating: 🧂 unranked krab: Overall readiness is 🧂 unranked krab; proof is 🧂 unranked krab and patch quality is 🐚 platinum hermit.
  • status: 📣 needs proof: The PR needs real behavior proof before ClawSweeper can clear the contributor ask. Needs real behavior proof before merge: The PR body supplies Vitest/autoreview output only; as an external non-doc PR it needs redacted real update or repair output, logs, terminal screenshot, copied live output, recording, or another after-fix artifact before merge. After adding proof, update the PR body; ClawSweeper should re-review automatically. If it does not, the PR author or someone with repository write access can comment @clawsweeper re-review.
Evidence reviewed

What I checked:

  • Live PR state: The live PR body still lists only targeted Vitest and autoreview evidence, while the current head is f57c61a311e398fd1897382f0aa7c8c7551bf875 and the PR remains open with proof-needed labeling. (f57c61a311e3)
  • Actual merge result: GitHub's potential merge commit against current main changes only src/cli/update-cli/update-command.ts by +3/-3, so the broad stale branch surface does not survive the actual three-way merge result. (src/cli/update-cli/update-command.ts:1999, eae708ea397a)
  • Current main behavior: Current main still stores collectMissingPayloadWarnings output as an array and later uses missingPayloadIds.includes(entry.pluginId), so the central perf cleanup remains absent on main. (src/cli/update-cli/update-command.ts:1999, 29680046801d)
  • Callee contract: updateNpmInstalledPlugins already accepts skipIds?: Set<string> and checks membership with params.skipIds?.has(pluginId), matching the PR's Set-based shape. (src/plugins/update.ts:1317, 29680046801d)
  • Adjacent test coverage: Existing update CLI coverage exercises the post-core missing-payload path and asserts the npm update call receives a skipIds Set containing the missing plugin id. (src/cli/update-cli.test.ts:1486, 29680046801d)
  • History provenance: Blame ties the current missing-payload warning/skip logic to 7fefc5ff58de020a1eadd7c31d649c9a442a3f98, with nearby ClawHub acknowledgement additions from ec737ee74d9be52101992f0cd5d17f5d3953344b. (src/cli/update-cli/update-command.ts:1952, 7fefc5ff58de)

Likely related people:

  • 849261680: Git blame and GitHub PR metadata tie the current missing-payload warning and skip logic to merged pull request fix: cron stream stalls fail over before job timeout #96096. (role: introduced behavior; confidence: high; commits: 7fefc5ff58de; files: src/cli/update-cli/update-command.ts)
  • velvet-shark: GitHub metadata shows this handle merged fix: cron stream stalls fail over before job timeout #96096 and recently authored adjacent plugin update channel work in fix(cli): sync official plugins during update --all #96831. (role: merger and recent adjacent contributor; confidence: high; commits: 7fefc5ff58de, 0247eab77335; files: src/cli/update-cli/update-command.ts, src/plugins/update.ts)
  • jesse-merhi: Recent current-main history adds ClawHub risk acknowledgement handling in the same update CLI/plugin update path. (role: recent adjacent contributor; confidence: medium; commits: ec737ee74d9b; files: src/cli/update-cli/update-command.ts, src/plugins/update.ts)
  • brokemac79: Recent plugin update history includes adjacent update fallback behavior in src/plugins/update.ts. (role: recent adjacent contributor; confidence: medium; commits: dd0e4f6e61b8; files: src/plugins/update.ts)
What the crustacean ranks mean
  • 🦀 challenger crab: rare, exceptional readiness with strong proof, clean implementation, and convincing validation.
  • 🦞 diamond lobster: very strong readiness with only minor maintainer review expected.
  • 🐚 platinum hermit: good normal PR, likely mergeable with ordinary maintainer review.
  • 🦐 gold shrimp: useful signal, but proof or patch confidence is still limited.
  • 🦪 silver shellfish: thin signal; proof, validation, or implementation needs work.
  • 🧂 unranked krab: not merge-ready because proof is missing/unusable or there are serious correctness or safety concerns.
  • 🌊 off-meta tidepool: rating does not apply to this item.

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 keeps one durable marker-backed review comment per issue or PR.
  • Re-runs edit this comment so the latest verdict, findings, and automation markers stay together instead of adding duplicate bot comments.
  • A fresh review can be triggered by eligible @clawsweeper re-review comments, exact-item GitHub events, scheduled/background review runs, or manual workflow dispatch.
  • PR/issue authors and users with repository write access can comment @clawsweeper re-review or @clawsweeper re-run on an open PR or issue to request a fresh review only.
  • Maintainers can also comment @clawsweeper review to request a fresh review only.
  • Fresh-review commands do not start repair, autofix, rebase, CI repair, or automerge.
  • Maintainer-only repair and merge flows require explicit commands such as @clawsweeper autofix, @clawsweeper automerge, @clawsweeper fix ci, or @clawsweeper address review.
  • Maintainers can comment @clawsweeper explain to ask for more context, or @clawsweeper stop to stop active automation.

@clawsweeper clawsweeper Bot added rating: 🧂 unranked krab Not merge-ready due to missing proof or serious correctness/safety concerns. status: 📣 needs proof The PR needs real behavior proof before ClawSweeper can clear the contributor ask. P3 Low-priority cleanup, docs, polish, ergonomics, or speculative work. labels Jun 26, 2026
@vincentkoc
vincentkoc merged commit a0e9ca1 into openclaw:main Jun 26, 2026
203 of 209 checks passed
@vincentkoc

Copy link
Copy Markdown
Member

Merged via squash.

wangmiao0668000666 pushed a commit to wangmiao0668000666/openclaw that referenced this pull request Jun 27, 2026
* perf(update): reuse missing plugin payload id set

* perf(update): reuse missing plugin payload id set

---------

Co-authored-by: ly-wang19 <[email protected]>
Co-authored-by: Vincent Koc <[email protected]>
github-actions Bot pushed a commit to Desicool/openclaw that referenced this pull request Jun 27, 2026
* perf(update): reuse missing plugin payload id set

* perf(update): reuse missing plugin payload id set

---------

Co-authored-by: ly-wang19 <[email protected]>
Co-authored-by: Vincent Koc <[email protected]>
xydigit-zt pushed a commit to xydigit-zt/xydigit-zt-openclaw that referenced this pull request Jun 28, 2026
* perf(update): reuse missing plugin payload id set

* perf(update): reuse missing plugin payload id set

---------

Co-authored-by: ly-wang19 <[email protected]>
Co-authored-by: Vincent Koc <[email protected]>
QiuYuang pushed a commit to QiuYuang/openclaw that referenced this pull request Jul 1, 2026
* perf(update): reuse missing plugin payload id set

* perf(update): reuse missing plugin payload id set

---------

Co-authored-by: ly-wang19 <[email protected]>
Co-authored-by: Vincent Koc <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

app: web-ui App: web-ui channel: feishu Channel integration: feishu channel: telegram Channel integration: telegram cli CLI command changes commands Command implementations docs Improvements or additions to documentation extensions: deepinfra extensions: fal extensions: google extensions: litellm extensions: memory-core Extension: memory-core extensions: minimax extensions: openai extensions: openrouter extensions: xai gateway Gateway runtime P3 Low-priority cleanup, docs, polish, ergonomics, or speculative work. rating: 🧂 unranked krab Not merge-ready due to missing proof or serious correctness/safety concerns. scripts Repository scripts size: XL status: 📣 needs proof The PR needs real behavior proof before ClawSweeper can clear the contributor ask.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants