Skip to content

Fix plugin packaging recovery hints#86591

Merged
steipete merged 1 commit into
openclaw:mainfrom
brokemac79:fix/issue-80490-plugin-doctor-hint
May 26, 2026
Merged

Fix plugin packaging recovery hints#86591
steipete merged 1 commit into
openclaw:mainfrom
brokemac79:fix/issue-80490-plugin-doctor-hint

Conversation

@brokemac79

Copy link
Copy Markdown
Contributor

Summary

What problem does this PR solve?

Why does this matter now?

  • ClawSweeper found that installed source-only TypeScript plugin packages should remain blocked unless publishers ship compiled JavaScript, but the recovery hint still implied a local doctor repair.

What is the intended outcome?

  • Plugin packaging / compiled-runtime-output failures keep the packaging diagnostic and show update/reinstall-after-publisher-fix or disable/uninstall guidance instead of openclaw doctor --fix.
  • Normal invalid config failures still show the doctor recovery hint.

What is intentionally out of scope?

  • No doctor auto-build path for arbitrary third-party plugin source.
  • No plugin build-system changes and no changelog edits.

What does success look like?

  • Users with a source-only installed plugin package see packaging-specific remediation in config validation and gateway startup, without losing doctor guidance for unrelated invalid config cases.

What should reviewers focus on?

  • The classifier in src/config/recovery-policy.ts, especially that it only suppresses doctor guidance for compiled-runtime-output packaging diagnostics and same-plugin plugin not found fallout.
Summary guidance

This PR description is the contributor's durable explanation of the change. Write it for human maintainers first; ClawSweeper and Barnacle use the same text to understand intent, proof, risk, and current review state.

Describe the intent and outcome in 2-5 bullets. Avoid restating the diff; reviewers and bots can read the changed files.

If this PR fixes a plugin beta-release blocker, title it fix(<plugin-id>): beta blocker - <summary> and link the matching Beta blocker: <plugin-name> - <summary> issue labeled beta-blocker. Contributors cannot label PRs, so the title is the PR-side signal for maintainers and automation.

Linked context

Which issue does this close?

Closes #80490

Which issues, PRs, or discussions are related?

Related: ClawSweeper guidance in #80490 (comment)

Was this requested by a maintainer or owner?

ClawSweeper guidance requested a focused repair that corrects startup/config guidance without auto-building third-party plugin source.

Linked context guidance

Link the issue, PR, discussion, maintainer request, or owner request that explains why this PR should exist. Maintainer context helps reviewers and automation distinguish intended work from drive-by churn.

Real behavior proof (required for external PRs)

  • Behavior or issue addressed: source-only installed plugin package referenced from config should fail with plugin packaging guidance, not openclaw doctor --fix.
  • Real environment tested: Crabbox local-container Linux proof, disposable Docker image openclaw-issue-80490-proof:local, provider local-container, lease cbx_0b5f611fb5a6, slug silver-shrimp.
  • Exact steps or command run after this patch: created a temporary Linux state dir with an installed @openclaw/source-only-pack package whose manifest points at ./index.ts and no compiled JS, wrote config with plugins.slots.memory="source-only-pack", then ran pnpm openclaw config validate and timeout 30s pnpm openclaw gateway run.
  • Evidence after fix (screenshot, recording, terminal capture, console output, redacted runtime log, linked artifact, or copied live output):
CONFIG_STATUS=1
OpenClaw config is invalid: /tmp/openclaw-issue-80490-state/openclaw.json
  × plugins.slots.memory: plugin not found: source-only-pack

This is a plugin packaging issue, not a local config problem.
Update or reinstall the plugin after the publisher ships compiled JavaScript, or disable/uninstall the plugin until then.
Inspect with openclaw config validate.

GATEWAY_STATUS=1
Gateway failed to start: Invalid config at /tmp/openclaw-issue-80490-state/openclaw.json.
plugins.slots.memory: plugin not found: source-only-pack
This is a plugin packaging issue, not a local config problem.
Update or reinstall the plugin after the publisher ships compiled JavaScript, or disable/uninstall the plugin until then.. Run openclaw gateway status --deep for diagnostics.
REAL_PROOF_OK issue-80490 plugin packaging startup/config validation hints
  • Observed result after fix: both real CLI entrypoints failed for the source-only installed plugin package with packaging-specific remediation; grep checks confirmed openclaw doctor --fix was absent from both outputs.
  • What was not tested: live VPS, live channels, provider accounts, or real third-party plugin registry state.
  • Proof limitations or environment constraints: the normal Crabbox local-container sync path failed on this Windows host because rsync was unavailable in the sync shell, and AWS Crabbox was blocked by missing AWS credentials. I used Crabbox local-container with --no-sync and a disposable Docker image containing the patched checkout to keep the proof in a real Linux/container lane without touching live runtime state.
  • Before evidence (optional but encouraged): ClawSweeper source-level repro in doctor --fix does not auto-build unbuilt plugins (validator error misdirects users) #80490 showed gateway startup still appended formatInvalidConfigRecoveryHint() for this failure shape before the patch.
Real behavior proof guidance

External contributors must show after-fix evidence from a real OpenClaw setup. Unit tests, mocks, lint, typechecks, snapshots, and CI are supplemental only.

Screenshots are encouraged even for CLI, console, text, or log changes. Terminal screenshots, copied live output, redacted runtime logs, recordings, and linked artifacts count.

If your environment cannot produce the ideal proof, explain that under Proof limitations or environment constraints so reviewers and ClawSweeper can direct the next step properly.

Be mindful of private information like IP addresses, API keys, phone numbers, non-public endpoints, or other private details when providing evidence.

Tests and validation

Which commands did you run?

node scripts/run-vitest.mjs src/gateway/server-startup-config.recovery.test.ts src/commands/config-validation.test.ts src/cli/config-cli.test.ts src/plugins/discovery.test.ts src/config/recovery-policy.test.ts
pnpm exec oxfmt --check --threads=1 src/cli/config-cli.ts src/cli/config-cli.test.ts src/cli/config-recovery-hints.ts src/commands/config-validation.ts src/commands/config-validation.test.ts src/config/recovery-policy.ts src/config/recovery-policy.test.ts src/gateway/server-startup-config.ts src/gateway/server-startup-config.recovery.test.ts src/plugins/discovery.test.ts
git diff --check
node scripts/run-oxlint.mjs --tsconfig config/tsconfig/oxlint.core.json src/cli/config-cli.ts src/cli/config-cli.test.ts src/cli/config-recovery-hints.ts src/commands/config-validation.ts src/commands/config-validation.test.ts src/config/recovery-policy.ts src/config/recovery-policy.test.ts src/gateway/server-startup-config.ts src/gateway/server-startup-config.recovery.test.ts src/plugins/discovery.test.ts
node scripts/run-tsgo.mjs -p tsconfig.core.json --incremental --tsBuildInfoFile .artifacts/tsgo-cache/core.issue-80490.rebased.tsbuildinfo
node scripts/run-tsgo.mjs -p test/tsconfig/tsconfig.test.src.json --incremental --tsBuildInfoFile .artifacts/tsgo-cache/test-src.issue-80490.rebased.tsbuildinfo
codex review --uncommitted

What regression coverage was added or updated?

  • Added recovery-policy coverage for plugin packaging snapshots, mixed core invalidity, and unrelated missing-plugin cases.
  • Added/updated config validation, config CLI, gateway startup recovery, and plugin discovery tests proving packaging guidance remains while openclaw doctor --fix is absent for source-only installed plugin packaging failures.
  • Kept normal invalid config coverage proving the doctor hint remains for ordinary invalid configs.

What failed before this fix, if known?

  • Gateway startup and config validation recovery paths could still append or print openclaw doctor --fix for this packaging failure shape.

If no test was added, why not?

  • Tests were added and updated.
Testing guidance

List focused commands, not every incidental check. CI is useful support, but external PRs still need real behavior proof above when behavior changes.

Risk checklist

Did user-visible behavior change? (Yes/No)

Yes.

Did config, environment, or migration behavior change? (Yes/No)

No config schema or migration behavior changed; only recovery guidance selection changed.

Did security, auth, secrets, network, or tool execution behavior change? (Yes/No)

No.

What is the highest-risk area?

Over-suppressing the generic doctor hint for mixed or unrelated invalid configs.

How is that risk mitigated?

The classifier requires a compiled-runtime-output plugin packaging diagnostic and only permits same-plugin plugin not found fallout; tests cover mixed core invalidity and unrelated missing plugins retaining doctor guidance.

Risk guidance

Use this for author judgment that is not obvious from the diff. ClawSweeper can see touched files, but it cannot know which behavior you think is risky, why the risk is acceptable, or what mitigation reviewers should verify.

Current review state

What is the next action?

Review and CI.

What is still waiting on author, maintainer, CI, or external proof?

CI is pending after PR creation; external proof is included above.

Which bot or reviewer comments were addressed?

Addresses ClawSweeper guidance on #80490 by correcting diagnostics/recovery hints rather than auto-building third-party plugin source.

Review state guidance

Keep this as the durable state for review progress. If useful information appears in comments, fold the current next action or blocker back here so maintainers and ClawSweeper do not need to reconstruct state from comment history.

@openclaw-barnacle openclaw-barnacle Bot added gateway Gateway runtime cli CLI command changes commands Command implementations size: M proof: supplied External PR includes structured after-fix real behavior proof. labels May 25, 2026
@clawsweeper

clawsweeper Bot commented May 25, 2026

Copy link
Copy Markdown
Contributor

Codex review: needs maintainer review before merge. Reviewed May 25, 2026, 7:48 PM ET / 23:48 UTC.

Summary
The PR routes plugin packaging compiled-runtime-output failures away from generic doctor recovery hints across config validation, CLI guards, daemon preflights, gateway startup, and tests.

PR surface: Source +128, Tests +333. Total +461 across 14 files.

Reproducibility: yes. Current main source still appends generic doctor hints on invalid-config startup and guard paths, while plugin discovery can emit a compiled-runtime-output packaging diagnostic plus same-plugin plugin-not-found fallout; I did not rerun live commands in this read-only review.

Review metrics: 1 noteworthy metric.

  • Recovery-hint entrypoints: 5 patched. The diff updates config validate, config CLI loading, the global config guard, daemon lifecycle preflight, and gateway startup, which are the user-visible places the misleading hint can surface.

Merge readiness
Overall: 🐚 platinum hermit
Proof: 🦞 diamond lobster
Patch quality: 🐚 platinum hermit
Result: ready for maintainer review.

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

Rank-up moves:

  • Wait for current-head required checks to finish before merge.

Risk before merge

  • Current-head GitHub state was still mergeable but unstable/pending after the latest force-push, so merge should wait for required checks to finish.

Maintainer options:

  1. Decide the mitigation before merge
    Land after current-head CI passes, keeping installed package loading strict and preserving doctor guidance for ordinary invalid configs while using packaging-specific remediation for compiled-runtime-output plugin failures.
  2. Pause or close
    Do not merge this PR until maintainers decide whether the risk is worth taking.

Next step before merge
No automated repair lane is needed; this PR is already the implementation candidate for the linked issue and needs current-head CI plus maintainer review.

Security
Cleared: The diff changes recovery-message selection and tests only; it does not touch dependencies, workflows, lockfiles, credentials, package execution, or release scripts.

Review details

Best possible solution:

Land after current-head CI passes, keeping installed package loading strict and preserving doctor guidance for ordinary invalid configs while using packaging-specific remediation for compiled-runtime-output plugin failures.

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

Yes. Current main source still appends generic doctor hints on invalid-config startup and guard paths, while plugin discovery can emit a compiled-runtime-output packaging diagnostic plus same-plugin plugin-not-found fallout; I did not rerun live commands in this read-only review.

Is this the best way to solve the issue?

Yes. The PR keeps third-party installed package loading strict and fixes only recovery-hint selection across the affected CLI and gateway surfaces, with tests preserving doctor guidance for ordinary invalid config.

AGENTS.md: found and applied where relevant.

Codex review notes: model gpt-5.5, reasoning high; reviewed against 719ce7f96f42.

Label changes

Label changes:

  • add proof: sufficient: Contributor real behavior proof is sufficient. The PR body provides copied Crabbox local-container live output showing after-fix config validate and gateway run behavior for the source-only plugin scenario, with the generic doctor hint absent.

Label justifications:

  • P2: This is a normal-priority plugin onboarding and gateway startup recovery bug with limited blast radius and focused code changes.
  • rating: 🐚 platinum hermit: Overall readiness is 🐚 platinum hermit; proof is 🦞 diamond lobster and patch quality is 🐚 platinum hermit.
  • status: 👀 ready for maintainer look: ClawSweeper has no concrete contributor-facing blocker left for this PR. Sufficient (live_output): The PR body provides copied Crabbox local-container live output showing after-fix config validate and gateway run behavior for the source-only plugin scenario, with the generic doctor hint absent.
  • proof: sufficient: Contributor real behavior proof is sufficient. The PR body provides copied Crabbox local-container live output showing after-fix config validate and gateway run behavior for the source-only plugin scenario, with the generic doctor hint absent.
Evidence reviewed

PR surface:

Source +128, Tests +333. Total +461 across 14 files.

View PR surface stats
Area Files Added Removed Net
Source 7 149 21 +128
Tests 7 390 57 +333
Docs 0 0 0 0
Config 0 0 0 0
Generated 0 0 0 0
Other 0 0 0 0
Total 14 539 78 +461

What I checked:

  • Repository policy applied: Root AGENTS.md was read fully; its ClawSweeper policy treats config loading, startup checks, fallback behavior, and plugin boundaries as compatibility-sensitive review surfaces. (AGENTS.md:19, 719ce7f96f42)
  • Scoped plugin/gateway policy applied: The scoped plugin and gateway AGENTS.md files were read; they reinforce preserving manifest-first plugin behavior and avoiding broad runtime loading on gateway startup paths. (src/plugins/AGENTS.md:5, 719ce7f96f42)
  • Current main still has the generic gateway hint: Current main appends formatInvalidConfigRecoveryHint whenever includeDoctorHint is set, with no plugin-packaging classifier. (src/gateway/server-startup-config.ts:390, 719ce7f96f42)
  • Current main still has the generic global config guard hint: Current main prints openclaw doctor --fix from the global config guard for invalid config snapshots. (src/cli/program/config-guard.ts:123, 719ce7f96f42)
  • Current main emits the packaging diagnostic: Current main's installed-plugin package entry validation emits compiled-runtime-output packaging guidance for source-only TypeScript package entries. (src/plugins/package-entry-resolution.ts:90, 719ce7f96f42)
  • PR classifier is narrow: The PR head adds isPluginPackagingRuntimeOutputInvalidConfigSnapshot, requiring a compiled-runtime-output plugin diagnostic and limiting accepted fallout to same-plugin plugin-not-found issues. (src/config/recovery-policy.ts:63, 3b3ce73d0ff1)

Likely related people:

  • steipete: Recent history ties this handle to plugin package repair, daemon lifecycle preflight, recovery-policy-adjacent config work, and the current PR was assigned to and force-pushed by this user. (role: recent area contributor; confidence: high; commits: b3e2f3b2610b, 6369bf64cd2b, d8fb1aa84ca9; files: src/plugins/package-entry-resolution.ts, src/cli/daemon-cli/lifecycle-core.ts, src/config/recovery-policy.ts)
  • vincentkoc: Recent plugin package-entry and discovery commits adjusted linked source checkout versus installed-package TypeScript fallback behavior next to this recovery path. (role: recent adjacent contributor; confidence: medium; commits: 793e300cc52b, 88b21427f8ad; files: src/plugins/package-entry-resolution.ts, src/plugins/discovery.ts, src/plugins/discovery.test.ts)
  • RomneyDa: Recent gateway/plugin metadata snapshot and source-only package diagnostic work touched central surfaces involved in this PR. (role: recent gateway/plugin contributor; confidence: medium; commits: 8ccb11cbfca7, cdc00614cc9a; files: src/gateway/server-startup-config.ts, src/plugins/package-entry-resolution.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 the rating: 🌊 off-meta tidepool PR readiness rating does not apply to this item. label May 25, 2026
@clawsweeper

clawsweeper Bot commented May 25, 2026

Copy link
Copy Markdown
Contributor

ClawSweeper PR egg

✨ Hatched: 🥚 common Frosted Proofling

Hatch command

Comment @clawsweeper hatch when this PR is hatchable.

Hatchability rules:

  • Merged PRs are hatchable.
  • Open PRs are hatchable when they are status: 👀 ready for maintainer look, status: 🚀 automerge armed, or labeled clawsweeper:automerge.
  • Closed unmerged PRs are hatchable only when one of those hatchable labels is still present in the durable record.

Rarity: 🥚 common.
Trait: keeps receipts.
Image traits: location flaky test forest; accessory little merge flag; palette seafoam, black, and opal; mood bright-eyed; pose holding its accessory up for inspection; shell polished stone shell; lighting subtle sparkle highlights; background delicate sparkle particles.
Share on X: post this hatch
Copy: My PR egg hatched a 🥚 common Frosted Proofling in ClawSweeper.

What is this egg doing here?
  • Eggs appear after the PR passes real-behavior proof. It is here for vibes, not verdicts: it does not change labels, ratings, merge decisions, or automation.
  • The shell reacts to review momentum: open follow-up work warms it up, re-review makes it wobble, and a clean final review lets it hatch.
  • Hatchability usually comes from sufficient real-behavior proof, no blocking P0/P1/P2 findings, no security attention needed, and clean correctness. A merged PR is already final, so merge makes the egg hatchable independently.
  • The hatch is seeded from this repository and PR number, so the same PR keeps the same creature; the reviewed head SHA can only change safe visual details.
  • Rarity is just collectible sparkle: 🥚 common, 🌱 uncommon, 💎 rare, ✨ glimmer, and 🌈 legendary.

@brokemac79

Copy link
Copy Markdown
Contributor Author

@clawsweeper re-review

@clawsweeper

clawsweeper Bot commented May 25, 2026

Copy link
Copy Markdown
Contributor

🦞🧹
ClawSweeper re-review requested.

I asked ClawSweeper to review this item again.
Action: item re-review queued (workflow sweep.yml, event repository_dispatch).
Result: the existing ClawSweeper review comment will be edited in place when the review finishes.

Re-review progress:

@clawsweeper clawsweeper Bot added proof: sufficient ClawSweeper judged the real behavior proof convincing. rating: 🦐 gold shrimp Decent PR readiness signal, but merge confidence is limited. status: ⏳ waiting on author ClawSweeper has contributor-facing work open and is waiting for author action. P2 Normal backlog priority with limited blast radius. and removed rating: 🌊 off-meta tidepool PR readiness rating does not apply to this item. labels May 25, 2026
@openclaw-barnacle openclaw-barnacle Bot removed the proof: sufficient ClawSweeper judged the real behavior proof convincing. label May 25, 2026
@brokemac79

Copy link
Copy Markdown
Contributor Author

@clawsweeper re-review

@clawsweeper

clawsweeper Bot commented May 25, 2026

Copy link
Copy Markdown
Contributor

🦞🧹
ClawSweeper re-review requested.

I asked ClawSweeper to review this item again.
Action: item re-review queued (workflow sweep.yml, event repository_dispatch).
Result: the existing ClawSweeper review comment will be edited in place when the review finishes.

Re-review progress:

@clawsweeper clawsweeper Bot added the proof: sufficient ClawSweeper judged the real behavior proof convincing. label May 25, 2026
@brokemac79
brokemac79 force-pushed the fix/issue-80490-plugin-doctor-hint branch from aa1cb07 to b2448ac Compare May 25, 2026 21:35
@openclaw-barnacle openclaw-barnacle Bot removed the proof: sufficient ClawSweeper judged the real behavior proof convincing. label May 25, 2026
@clawsweeper clawsweeper Bot added proof: sufficient ClawSweeper judged the real behavior proof convincing. rating: 🐚 platinum hermit Good normal PR readiness with ordinary maintainer review expected. status: 👀 ready for maintainer look ClawSweeper has no concrete contributor-facing blocker left for this PR. and removed rating: 🦐 gold shrimp Decent PR readiness signal, but merge confidence is limited. status: ⏳ waiting on author ClawSweeper has contributor-facing work open and is waiting for author action. labels May 25, 2026
@steipete steipete self-assigned this May 25, 2026
@steipete
steipete force-pushed the fix/issue-80490-plugin-doctor-hint branch from b2448ac to 3b3ce73 Compare May 25, 2026 23:42
@openclaw-barnacle openclaw-barnacle Bot removed the proof: sufficient ClawSweeper judged the real behavior proof convincing. label May 25, 2026
@clawsweeper clawsweeper Bot added the proof: sufficient ClawSweeper judged the real behavior proof convincing. label May 25, 2026
@steipete

steipete commented May 26, 2026

Copy link
Copy Markdown
Contributor

Maintainer update before landing:

Behavior addressed: source-only installed plugin packages now report a plugin packaging remediation instead of sending users to openclaw doctor --fix.

Real environment tested: Blacksmith Testbox through Crabbox on Linux, plus focused local Vitest shards.

Exact steps or command run after this patch:

  • Rebased the PR onto current origin/main and reduced the branch to one contributor-authored commit: 3b3ce73.
  • Ran focused tests: pnpm test src/config/recovery-policy.test.ts src/commands/config-validation.test.ts src/gateway/server-startup-config.recovery.test.ts src/cli/config-cli.test.ts src/cli/program/config-guard.test.ts src/cli/daemon-cli/lifecycle-core.config-guard.test.ts src/plugins/discovery.test.ts.
  • Ran autoreview on the branch diff: autoreview --mode branch --base origin/main.
  • Ran Crabbox/Testbox E2E with an isolated OPENCLAW_STATE_DIR containing an installed source-only package plugin and config slot memory=source-only-pack; exercised pnpm openclaw config validate and pnpm openclaw gateway run.

Evidence after fix:

  • Focused Vitest: 5 shards passed, 7 files, 217 tests.
  • Autoreview: clean; no accepted/actionable findings.
  • Crabbox/Testbox: tbx_01ksgr80tnvvc13kv6t126yv78, REAL_PROOF_OK issue-80490 plugin packaging hints config+gateway.
  • Fresh PR CI on 3b3ce73: green; Security High rerun 26424251220 completed successfully after GitHub cancelled the first network-ssrf-boundary attempt.

Observed result after fix: both config validate and gateway startup fail with plugin not found: source-only-pack, include the plugin packaging guidance, and omit openclaw doctor --fix.

What was not tested: no live third-party plugin package was fetched from npm; the E2E used a disposable local installed-package fixture to reproduce the reported packaging shape.

@steipete
steipete merged commit 56633e4 into openclaw:main May 26, 2026
115 of 116 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

cli CLI command changes commands Command implementations gateway Gateway runtime P2 Normal backlog priority with limited blast radius. proof: sufficient ClawSweeper judged the real behavior proof convincing. proof: supplied External PR includes structured after-fix real behavior proof. rating: 🐚 platinum hermit Good normal PR readiness with ordinary maintainer review expected. size: L status: 👀 ready for maintainer look ClawSweeper has no concrete contributor-facing blocker left for this PR.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

doctor --fix does not auto-build unbuilt plugins (validator error misdirects users)

2 participants