Skip to content

fix: agent turns ignore inactive web search SecretRefs#105536

Closed
abnershang wants to merge 2 commits into
openclaw:mainfrom
abnershang:abs/inactive-web-secretref-command
Closed

fix: agent turns ignore inactive web search SecretRefs#105536
abnershang wants to merge 2 commits into
openclaw:mainfrom
abnershang:abs/inactive-web-secretref-command

Conversation

@abnershang

@abnershang abnershang commented Jul 12, 2026

Copy link
Copy Markdown
Contributor

What Problem This Solves

Fixes an issue where ordinary agent turns could fail during secrets runtime preparation when a disabled or non-selected web-search provider had an unresolved SecretRef configured.

Why This Change Was Made

Plugin capability contracts now travel with config-contract metadata. A lightweight shared mapping identifies the exact provider-owned credential path (webSearch.apiKey), so the generic plugin collector still resolves every other declared SecretInput while provider selection resolves only the enabled, selected provider API key. This preserves strict failures for the provider that is actually selected while inactive provider credentials remain unresolved until needed.

This change is AI-assisted. The implementation and focused proof were reviewed with the repository's structured autoreview workflow.

User Impact

Users can keep credentials configured for alternate or disabled web-search providers without those inactive references blocking unrelated agent turns. A missing credential for the enabled, selected provider still fails explicitly.

Evidence

  • pnpm test src/plugins/config-contracts.test.ts src/secrets/runtime-config-collectors-plugins.test.ts src/secrets/runtime-core-snapshots.test.ts src/secrets/runtime-command-secrets.test.ts src/secrets/target-registry.test.ts
    • 5 files, 45 tests passed across 2 Vitest shards, including the active non-owned sibling SecretInput regression.
  • pnpm check:test-types
    • Passed for core, extensions, and root test projects.
  • node scripts/run-oxlint.mjs <six touched files>
    • 0 warnings and 0 errors.
  • node_modules/.bin/oxfmt --check <six touched files>
    • All files use the correct format.
  • git diff --check
    • Passed.
  • Dependency-file scan against origin/main
    • No dependency graph files changed.
  • .agents/skills/autoreview/scripts/autoreview --mode local --stream-engine-output
    • Clean: no accepted/actionable findings; correctness confidence 0.96.

Real behavior proof

  • Behavior addressed: an unresolved SecretRef for a disabled or non-selected web-search provider no longer blocks ordinary agent-turn preparation; an unresolved ref for the selected provider still fails. A separate active SecretInput under webSearch.* remains owned by the generic strict resolver.
  • Real environment tested: direct GCP Crabbox on Compute Engine, project abs-crabbox, zone us-central1-a, e2-standard-8, provider gcp, lease cbx_874b1d4cba22 (swift-crayfish). The run used a fresh checkout of exact PR head 6459b7b360eeae440851a5f1efc515ea24627610, public networking, no Tailscale, no Actions hydration, an isolated temporary OpenClaw state directory, and a deterministic local mock OpenAI server.
  • Exact steps or command run after this patch:
    • The five-file focused test command above.
    • pnpm check:test-types and the six-file lint/format checks above.
    • pnpm openclaw agent --local --agent main --session-id <isolated-session> --message <redacted-prompt> --thinking off --timeout 60 --json for disabled, non-selected, and selected-provider configurations.
  • Evidence after fix: 45 focused tests passed; the exact-path sibling regression passed; test types and static checks passed; disabled-provider and non-selected-provider CLI agent turns emitted the expected mock response; the selected-provider turn exited nonzero during active secret resolution; the mock model received exactly 2 requests, proving the selected-provider failure did not reach model execution.
  • Observed result after fix: AGENT_TURN_DISABLED=PASS, AGENT_TURN_NONSELECTED=PASS, ACTIVE_SELECTED_PROVIDER_FAILURE=PRESERVED, MOCK_MODEL_REQUESTS=2, and GCP_REVIEW_FIX_EVIDENCE=PASS.
  • What was not tested: live third-party web-search API authentication/network calls, production gateway mutation, and non-Linux platforms.

The exact-head GCP run exited 0 in 11m55.830s. Cleanup completed automatically (leaseStopped=true), and the provider-native inventory reports zero Crabbox-labeled instances with no instance for cbx_874b1d4cba22.

Agent Transcript

Redacted codex session transcript
source: [LOCAL_SESSION]
redaction: local paths, emails, phone-shaped strings, token-shaped strings, auth headers, auth query params
omitted: raw tool outputs, system/developer prompts, local paths, secrets, browser/session/auth details
stats: {"agent":"codex","entries":9,"user":4,"assistant":4,"toolCalls":16,"toolOutputsDropped":16,"web":0,"redactions":4,"omittedUnsafe":0,"rawEntries":22}

[user]
[instructions recap omitted; policy/config text, not task dialogue]

[assistant]
I’m taking this through trace, fix, remote proof, fresh autoreview, and commit. I’m using the repository’s `openclaw-testing` skill for the validation lane and `autoreview` for the mandatory pre-commit review; I’ll first confirm the task branch/worktree and warm the trusted remote test backend while I inspect the failure path.

The delegated Blacksmith backend is unavailable because this host is not authenticated to the OpenClaw org. Per the testing runbook, I’m switching the same trusted maintainer checkout to the coordinator-backed AWS lane and will report that backend explicitly; no local test fallback is being used.

The trace has isolated the ownership bug: `prepareSecretsRuntimeSnapshot` sends enabled plugin config SecretRefs through the generic plugin collector before `resolveRuntimeWebTools` can decide whether web search is disabled or which provider wins. The web resolver already has the correct selection semantics and active-provider failure behavior; the fix is to stop the generic collector from pre-resolving web-provider credential subtrees for plugins that actually declare web search/fetch contracts, leaving those refs exclusively to the web runtime resolver.

The direct AWS fallback is also unavailable: this host has neither broker authentication nor AWS credentials/instance role. The runbook permits a narrow, explicitly reported local fallback when Testbox is unavailable, so I’ll use the repository’s linked-worktree Node test harness only for the focused files and keep broader static proof lightweight.

The focused harness found this task checkout has no `node_modules`. The repository’s missing-dependency rule requires one frozen install and one retry, so I’m doing that in the task checkout; if installation fails, I’ll preserve the first actionable error rather than weakening the proof.

The focused regression now passes: disabled and non-selected provider refs remain unresolved without blocking snapshot preparation, while the selected provider’s unresolved ref still throws the existing `WEB_SEARCH_KEY_UNRESOLVED_NO_FALLBACK` error. I’m tightening the diff now, then I’ll run targeted lint/static checks and the mandatory fresh autoreview before committing.

The mandatory autoreview is still active and inspecting the collector-to-provider handoff; its live interim assessment has no findings so far, but I’m waiting for the helper’s validated final result before treating the review gate as clean.

Autoreview found one valid scope regression: I had generalized the exemption to `webFetch`, whose disabled path short-circuits before producing the same diagnostics. That surface is outside this bug and has different control flow, so I’m narrowing the fix to declared `webSearchProviders` only, then rerunning focused proof and autoreview.

The narrowed patch is clean on the second autoreview: no accepted/actionable findings. Focused tests, targeted lint, formatting, and `git diff --check` are green; I’m committing exactly the three task files now, without pushing or opening a PR.

Implemented and committed the fix on `abs/inactive-web-secretref-command`.

Root cause: the generic plugin SecretRef collector resolved enabled plugin credentials before web-search provider selection. Thus disabled or non-selected provider refs could abort snapshot preparation. Web-search credential paths now remain owned by the web runtime resolver, which resolves only the enabled, selected provider.

Changed:

- `src/plugins/config-contracts.ts:15` — propagates capability contracts with config metadata.
- `src/secrets/runtime-config-collectors-plugins.ts:127` — defers declared `webSearch` provider credentials to provider selection.
- `src/secrets/runtime-core-snapshots.test.ts:285` — regressions for disabled, non-selected, and actively selected providers.

Validation:

- Focused Vitest: 4 files, 36 tests passed.
- Targeted `oxfmt` and `oxlint`: passed.
- `git diff --check`: passed.
- Final autoreview: clean, no actionable findings.
- Remote Testbox/AWS proof was unavailable because this host lacks Blacksmith org authentication, Crabbox broker authentication, and AWS credentials. The documented narrow local fallback was used after `pnpm install --frozen-lockfile`.

Commit: `7efa9c9123b59ce47ca287b6e4d56efd4577be87`  
Working tree is clean and one commit ahead of `origin/main`. Nothing pushed; no PR opened.

::git-stage{cwd="[LOCAL_PATH]"}
::git-commit{cwd="[LOCAL_PATH]"}

[user]
[$autoreview]([LOCAL_PATH])

[assistant]
I’m using the requested `autoreview` skill against the committed task change, so the target will be commit `HEAD` rather than an empty local-worktree review. I’ll report the structured findings exactly and won’t mutate the branch unless a verified in-scope blocker appears.

The commit review is still healthy and actively reading downstream provider-resolution paths. Its interim structured state has no findings; I’m waiting for the helper’s final validated exit rather than treating the preliminary output as complete.

Autoreview passed cleanly for commit `7efa9c9123b59ce47ca287b6e4d56efd4577be87`.

- Command: `.agents/skills/autoreview/scripts/autoreview --mode commit --commit HEAD --stream-engine-output`
- Result: no accepted/actionable findings
- Correctness: patch is correct, confidence `0.88`
- Prior proof: 36 focused tests passed, targeted lint/format and `git diff --check` passed
- No changes made; branch remains unpushed and one commit ahead of `origin/main`

[user]
open pr

[assistant]
I’ll publish the committed task branch and open a takeover-ready PR with the repository template and exact proof. I’m using the required `agent-transcript` skill first to determine whether a sanitized Codex transcript should be offered or attached; then I’ll verify live GitHub state, push, and create the PR without adding unsolicited labels.

A high-confidence local Codex session was found for this fix. The skill requires your consent before any sanitized transcript is included; I can still prepare the remote branch now while leaving the PR body undecided.

Branch pushed. Include a redacted agent transcript in the PR? It helps reviewers and prioritization; I can preview it locally first if you prefer.

::git-push{cwd="[LOCAL_PATH]" branch="abs/inactive-web-secretref-command"}

[user]
OK, include a redacted transcript

[assistant]
I’m applying the `agent-transcript` skill now: rendering the selected local session through its redaction filter, checking the sanitized output for task-only scope, and appending it to the completed PR template before creation. Raw logs will not be uploaded.

[tool summary]
16 other; raw tool outputs dropped: 16

@abnershang
abnershang requested a review from a team as a code owner July 12, 2026 16:56
@abnershang
abnershang force-pushed the abs/inactive-web-secretref-command branch from 7efa9c9 to deb0a74 Compare July 12, 2026 17:17
@abnershang

Copy link
Copy Markdown
Contributor Author

Branch update / CI verification:

  • Rebasing onto current origin/main updated the PR head to deb0a747fb88d065062e026d8fa3489d16eb682a.
  • The prior check-test-types failure was unrelated to this PR. It came from extensions/qa-lab/src/live-transports/slack/slack-live.runtime.test.ts reporting string | undefined tuple elements.
  • Current main already fixes that issue in 9ebf9a2e897099e328b84051b38024d1f41f5404 (fix(qa-lab): tuple-narrow Slack progress markers in live test types), which the rebased branch now includes.
  • Refreshed-head proof: check-test-types passed on CI run 29201728043, job 86674165548: https://github.com/openclaw/openclaw/actions/runs/29201728043/job/86674165548
  • The refreshed CI run has no failing jobs at this point; remaining test shards are still in progress.

No unrelated PR code change was needed beyond updating the branch.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: deb0a747fb

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread src/secrets/runtime-config-collectors-plugins.ts Outdated
@clawsweeper clawsweeper Bot added rating: 🦪 silver shellfish Thin PR readiness signal; proof, validation, or implementation needs work. status: 📣 needs proof The PR needs real behavior proof before ClawSweeper can clear the contributor ask. P2 Normal backlog priority with limited blast radius. merge-risk: 🚨 compatibility 🚨 May break existing users, config, migrations, defaults, or upgrade paths. merge-risk: 🚨 auth-provider 🚨 May break OAuth, tokens, provider routing, model choice, or credentials. labels Jul 12, 2026
@clawsweeper

clawsweeper Bot commented Jul 12, 2026

Copy link
Copy Markdown
Contributor

Codex review: needs maintainer review before merge. Reviewed July 13, 2026, 3:03 PM ET / 19:03 UTC.

Summary
The PR propagates plugin capability contracts into SecretRef collection and defers only the exact web-search provider API-key path to active-provider selection, with regression coverage for inactive, non-selected, selected, and sibling secret inputs.

PR surface: Source +52, Tests +153. Total +205 across 6 files.

Reproducibility: yes. —the failure path is high-confidence from source: configure an unresolved webSearch.apiKey on an enabled plugin whose provider is disabled or not selected, then prepare an agent turn. The submitted proof establishes the corrected after-fix behavior, though it does not include a separate recorded pre-fix live run.

Review metrics: 1 noteworthy metric.

  • Secret path ownership: 1 exact path deferred; 1 sibling path proven strict. The narrow count demonstrates that the patch does not exempt the broader webSearch.* config subtree from active SecretRef validation.

Stored data model
Persistent data-model change detected: vector/embedding metadata: src/secrets/runtime-config-collectors-plugins.ts. Confirm migration or upgrade compatibility proof before merge.

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

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

Risk before merge

  • [P1] Provider capability metadata now participates in deciding which plugin SecretInput is deferred, so maintainers should confirm the contract metadata is preserved consistently for bundled, configured, and installed external plugin discovery paths.
  • [P1] The branch is behind current main; its focused proof is strong for exact head 6459b7b360eeae440851a5f1efc515ea24627610, but the refreshed merge result should retain the exact-path handoff and sibling strict-resolution coverage.

Maintainer options:

  1. Refresh and verify the ownership seam (recommended)
    Rebase onto current main, confirm bundled and external plugin contract metadata reaches the collector, and rerun the focused exact-head tests before merge.
  2. Accept the bounded credential-routing risk
    Merge after ordinary review while accepting that live third-party search authentication was not exercised, relying on the exact-head CLI, mock-provider, and selected-provider failure proof.

Next step before merge

  • No automated repair is indicated; refresh the branch and perform ordinary compatibility-aware maintainer merge review.

Security
Cleared: The patch changes credential-resolution ownership but adds no permissions, dependency execution, network surface, persistence, or secret exposure, and it preserves fail-closed resolution for the selected provider.

Review details

Best possible solution:

Land the shared exact-path ownership handoff after refreshing onto current main, preserving generic strict resolution for every non-provider-owned SecretInput and explicit failure for the selected provider's unresolved credential.

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

Yes—the failure path is high-confidence from source: configure an unresolved webSearch.apiKey on an enabled plugin whose provider is disabled or not selected, then prepare an agent turn. The submitted proof establishes the corrected after-fix behavior, though it does not include a separate recorded pre-fix live run.

Is this the best way to solve the issue?

Yes—the exact-path handoff is narrower and more maintainable than plugin-id checks or subtree exemptions because it reuses manifest capability ownership while keeping all sibling SecretInputs on the generic strict path.

AGENTS.md: found and applied where relevant.

Codex review notes: model internal, reasoning high; reviewed against 72b42f0ed751.

Label changes

Label changes:

  • add rating: 🦞 diamond lobster: Overall readiness is 🦞 diamond lobster; proof is 🦞 diamond lobster and patch quality is 🦞 diamond lobster.
  • remove rating: 🐚 platinum hermit: Current PR rating is rating: 🦞 diamond lobster, so this older rating label is no longer current.

Label justifications:

  • P2: This is a bounded runtime bug that can block agent turns for users retaining alternate web-search credentials, with strong proof and limited blast radius.
  • merge-risk: 🚨 compatibility: The patch changes activation-time SecretRef ownership for plugin configuration and depends on capability-contract metadata across plugin discovery origins.
  • merge-risk: 🚨 auth-provider: The merge changes which resolver materializes web-search provider credentials and must preserve strict failure for the actively selected provider.
  • rating: 🦞 diamond lobster: Overall readiness is 🦞 diamond lobster; proof is 🦞 diamond lobster and patch quality is 🦞 diamond lobster.
  • status: 👀 ready for maintainer look: ClawSweeper has no concrete contributor-facing blocker left for this PR. Sufficient (live_output): Exact-head GCP Crabbox CLI evidence demonstrates successful disabled and non-selected agent turns plus preserved selected-provider failure, supported by live output, mock request counts, focused tests, and static checks.
  • proof: sufficient: Contributor real behavior proof is sufficient. Exact-head GCP Crabbox CLI evidence demonstrates successful disabled and non-selected agent turns plus preserved selected-provider failure, supported by live output, mock request counts, focused tests, and static checks.
Evidence reviewed

PR surface:

Source +52, Tests +153. Total +205 across 6 files.

View PR surface stats
Area Files Added Removed Net
Source 4 60 8 +52
Tests 2 153 0 +153
Docs 0 0 0 0
Config 0 0 0 0
Generated 0 0 0 0
Other 0 0 0 0
Total 6 213 8 +205

What I checked:

Likely related people:

  • joshavant: Introduced and maintained adjacent SecretRef runtime, external plugin-contract, active-surface, and web-search resolution behavior, including the merged contract-loading work in pull request 76449. (role: feature owner and recent area contributor; confidence: high; commits: b1f8172867f3; files: src/secrets/runtime-config-collectors-plugins.ts, src/secrets/target-registry-data.ts, src/plugins/config-contracts.ts)
  • steipete: Recent history on the canonical secrets documentation defines the active/inactive resolution contract against which this patch should be reviewed. (role: recent contract and documentation contributor; confidence: medium; files: docs/gateway/secrets.md)
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.
Review history (4 earlier review cycles)
  • reviewed 2026-07-12T17:43:41.736Z sha deb0a74 :: needs real behavior proof before merge. :: [P2] Narrow deferral to provider credential paths
  • reviewed 2026-07-12T18:01:34.314Z sha deb0a74 :: needs changes before merge. :: [P2] Narrow deferral to provider-owned secret paths
  • reviewed 2026-07-13T14:35:28.573Z sha 6459b7b :: needs maintainer review before merge. :: none
  • reviewed 2026-07-13T14:53:14.809Z sha 6459b7b :: needs maintainer review before merge. :: none

@abnershang

abnershang commented Jul 12, 2026

Copy link
Copy Markdown
Contributor Author

ClawSweeper follow-up evidence for exact head 6459b7b360eeae440851a5f1efc515ea24627610:

  • Rebased onto current origin/main before the fix.
  • Replaced subtree-prefix deferral with a lightweight exact-path mapping for webSearch.apiKey.
  • Added an active sibling regression proving webSearch.headers.authorization still uses generic strict SecretRef resolution.
  • Direct GCP Crabbox: provider gcp, project abs-crabbox, zone us-central1-a, machine e2-standard-8, lease cbx_874b1d4cba22 (swift-crayfish), fresh PR checkout, public networking, no Tailscale, no hydration.
  • Focused proof: 5 files / 45 tests passed across 2 Vitest shards; pnpm check:test-types passed; six-file oxlint and oxfmt checks passed.
  • Agent-turn proof: AGENT_TURN_DISABLED=PASS, AGENT_TURN_NONSELECTED=PASS, ACTIVE_SELECTED_PROVIDER_FAILURE=PRESERVED, MOCK_MODEL_REQUESTS=2, GCP_REVIEW_FIX_EVIDENCE=PASS.
  • Fresh local autoreview: clean, no accepted/actionable findings, correctness confidence 0.96.
  • Cleanup: run exit 0, leaseStopped=true, provider inventory count 0.

The durable Evidence section in the PR body is updated, and the addressed review conversation is resolved.

@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. and removed rating: 🦪 silver shellfish Thin PR readiness signal; proof, validation, or implementation needs work. status: 📣 needs proof The PR needs real behavior proof before ClawSweeper can clear the contributor ask. labels Jul 12, 2026
@abnershang
abnershang force-pushed the abs/inactive-web-secretref-command branch from deb0a74 to 6459b7b Compare July 13, 2026 13:48
@abnershang

Copy link
Copy Markdown
Contributor Author

@clawsweeper re-review

@clawsweeper

clawsweeper Bot commented Jul 13, 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 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. rating: 🦞 diamond lobster Very strong PR readiness with only minor maintainer review expected. 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. rating: 🐚 platinum hermit Good normal PR readiness with ordinary maintainer review expected. labels Jul 13, 2026
@steipete

Copy link
Copy Markdown
Contributor

Closing as superseded by #108485, landed in 92075dd.

The deeper current-main trace shows the remaining collector change is not needed:

Unknown provider ownership remains fail-closed in the landed command resolver. Thanks @abnershang for tracing this family and for the exact-path narrowing work; the canonical fix now covers the observed user behavior without adding another metadata/collector ownership path.

@steipete steipete closed this Jul 16, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

merge-risk: 🚨 auth-provider 🚨 May break OAuth, tokens, provider routing, model choice, or credentials. merge-risk: 🚨 compatibility 🚨 May break existing users, config, migrations, defaults, or upgrade paths. P2 Normal backlog priority with limited blast radius. proof: sufficient ClawSweeper judged the real behavior proof convincing. rating: 🦞 diamond lobster Very strong PR readiness with only minor maintainer review expected. size: M 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.

2 participants