fix: clarify pinned plugin dry-run updates#97282
Conversation
|
Codex review: needs maintainer review before merge. Reviewed June 27, 2026, 1:53 PM ET / 17:53 UTC. Summary PR surface: Source +64, Tests +56, Docs +2. Total +122 across 3 files. Reproducibility: yes. Current main and v2026.6.10 send recorded exact npm specs through the dry-run probe and report Review metrics: 1 noteworthy metric.
Stored data model Root-cause cluster Members:
Proposal only: this assessment does not dispatch repair, suppress jobs, mutate sibling items, close, or merge anything. Merge readiness Overall follows the weaker of proof and patch quality, so missing proof can cap an otherwise strong patch. Next step before merge
Security Review detailsBest possible solution: Land this PR after normal maintainer and check gates if maintainers accept the advisory wording; it preserves sticky exact pins while surfacing newer registry default-line releases during dry-run planning. Do we have a high-confidence way to reproduce the issue? Yes. Current main and v2026.6.10 send recorded exact npm specs through the dry-run probe and report Is this the best way to solve the issue? Yes. The PR fixes the dry-run outcome boundary without stripping or floating the recorded exact pin, and the rejected alternative of probing the default line by changing the install spec would conflict with the documented sticky-pin contract. AGENTS.md: found and applied where relevant. Codex review notes: model internal, reasoning high; reviewed against 1bdde6695030. Label changesLabel justifications:
Evidence reviewedPR surface: Source +64, Tests +56, Docs +2. Total +122 across 3 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
|
|
Addressed the leading- Live CLI proof, redacted local paths: OPENCLAW_STATE_DIR=<proof-state>/state \
OPENCLAW_CONFIG_PATH=<proof-state>/openclaw.json \
OPENCLAW_WORKSPACE_DIR=<proof-state>/workspace \
COREPACK_ENABLE_DOWNLOAD_PROMPT=0 \
node scripts/run-node.mjs plugins install npm:@openclaw/[email protected]Output snippet: Then: OPENCLAW_STATE_DIR=<proof-state>/state \
OPENCLAW_CONFIG_PATH=<proof-state>/openclaw.json \
OPENCLAW_WORKSPACE_DIR=<proof-state>/workspace \
COREPACK_ENABLE_DOWNLOAD_PROMPT=0 \
node scripts/run-node.mjs plugins update voice-call --dry-runOutput snippet: DB record check after the dry run, showing the exact pin remained unchanged: sqlite3 <proof-state>/state/state/openclaw.sqlite \
"select json_extract(install_records_json, '$.\"voice-call\".spec'), json_extract(install_records_json, '$.\"voice-call\".resolvedVersion'), json_extract(install_records_json, '$.\"voice-call\".resolvedSpec'), json_extract(install_records_json, '$.\"voice-call\".version') from installed_plugin_index;"Output: Focused checks run: node scripts/run-vitest.mjs src/plugins/update.test.ts --testNamePattern "reports newer registry default releases"
node_modules/.bin/oxfmt --check src/plugins/update.ts src/plugins/update.test.ts
git diff --check
.agents/skills/autoreview/scripts/autoreview --mode localResults: @clawsweeper re-review |
|
🦞🧹 I asked ClawSweeper to review this item again. |
* fix: clarify pinned plugin dry-run updates * fix(plugins): normalize pinned npm dry-run versions
* fix: clarify pinned plugin dry-run updates * fix(plugins): normalize pinned npm dry-run versions
* fix: clarify pinned plugin dry-run updates * fix(plugins): normalize pinned npm dry-run versions
* fix: clarify pinned plugin dry-run updates * fix(plugins): normalize pinned npm dry-run versions
* fix: clarify pinned plugin dry-run updates * fix(plugins): normalize pinned npm dry-run versions (cherry picked from commit f3bcee8)
* fix: clarify pinned plugin dry-run updates * fix(plugins): normalize pinned npm dry-run versions (cherry picked from commit f3bcee8)
Closes #92183
What Problem This Solves
Fixes an issue where users running
openclaw plugins update <id> --dry-runon an exact pinned npm plugin would only see anup to dateresult, even when the registry default line had a newer release available.Why This Change Was Made
Exact pinned plugin-id updates still stay pinned, preserving the existing sticky-pin contract. The dry-run path now adds a best-effort registry default-line check for exact pinned npm installs and, when a newer default is resolvable, reports the pin plus an explicit
@latestpackage update command instead of silently implying there is no newer registry default.The exact-version comparison now normalizes accepted leading-
vexact selectors such as@[email protected], so those supported pins receive the same default-line advisory as@[email protected].User Impact
Operators can keep reproducible exact pins while still seeing when a newer registry default release exists during dry-run planning. Users who want to leave the pin get clear confirmation that the install is pinned; users who want to follow the default line get a command that avoids plugin-id/package-name ambiguity.
Evidence
node scripts/run-vitest.mjs src/plugins/update.test.ts --testNamePattern "reports newer registry default releases"(1 file passed; 2 tests passed, covering@acme/[email protected]and@acme/[email protected])node_modules/.bin/oxfmt --check src/plugins/update.ts src/plugins/update.test.tsgit diff --check.agents/skills/autoreview/scripts/autoreview --mode local(clean: no accepted/actionable findings; overall patch correct)Live after-fix CLI proof:
npm:@openclaw/[email protected]into an isolated redacted proof state.node scripts/run-node.mjs plugins update voice-call --dry-runagainst that installed exact pin.voice-call is pinned to @openclaw/[email protected] (installed 2026.6.9); registry default resolves to 2026.6.10. Pass \openclaw plugins update @openclaw/voice-call@latest` to follow the registry default line.`@openclaw/[email protected], with resolved version2026.6.9.