Some checks failed
ClawSweeper Dispatch / dispatch (push) Has been cancelled
CodeQL / Security High (actions) (push) Has been cancelled
CodeQL / Security High (channel-runtime-boundary) (push) Has been cancelled
CodeQL / Security High (core-auth-secrets) (push) Has been cancelled
CodeQL / Security High (mcp-process-tool-boundary) (push) Has been cancelled
CodeQL / Security High (network-ssrf-boundary) (push) Has been cancelled
CodeQL / Security High (plugin-trust-boundary) (push) Has been cancelled
CodeQL / Security High (process-exec-boundary) (push) Has been cancelled
Docs Sync Publish Repo / sync-publish-repo (push) Has been cancelled
Docs / docs (push) Has been cancelled
OpenClaw Stable Main Closeout / Resolve stable release closeout inputs (push) Has been cancelled
OpenClaw Stable Main Closeout / Verify stable main closeout (push) Has been cancelled
Workflow Sanity / no-tabs (push) Has been cancelled
Workflow Sanity / actionlint (push) Has been cancelled
Workflow Sanity / generated-doc-baselines (push) Has been cancelled
CI / runner-admission (push) Has been cancelled
CI / preflight (push) Has been cancelled
CI / security-fast (push) Has been cancelled
CI / pnpm-store-warmup (push) Has been cancelled
CI / build-artifacts (push) Has been cancelled
CI / native-i18n (push) Has been cancelled
CI / ${{ matrix.check_name }} (push) Has been cancelled
CI / ${{ matrix.checkName }} (push) Has been cancelled
CI / checks-node-compat-node22 (push) Has been cancelled
CI / check-bundled-channel-config-metadata (push) Has been cancelled
CI / check-dependencies (push) Has been cancelled
CI / check-guards (push) Has been cancelled
CI / check-lint (push) Has been cancelled
CI / check-prod-types (push) Has been cancelled
CI / check-shrinkwrap (push) Has been cancelled
CI / check-test-types (push) Has been cancelled
CI / check-additional-boundaries-a (push) Has been cancelled
CI / check-additional-boundaries-bcd (push) Has been cancelled
CI / check-additional-extension-bundled (push) Has been cancelled
CI / check-additional-extension-channels (push) Has been cancelled
CI / check-additional-extension-package-boundary (push) Has been cancelled
CI / check-additional-runtime-topology-architecture (push) Has been cancelled
CI / check-session-accessor-boundary (push) Has been cancelled
CI / check-session-transcript-reader-boundary (push) Has been cancelled
CI / check-docs (push) Has been cancelled
CI / skills-python (push) Has been cancelled
CI / macos-swift (push) Has been cancelled
CI / ios-build (push) Has been cancelled
CI / ci-timings-summary (push) Has been cancelled
Native App Locale Refresh / Refresh native fa (push) Has been cancelled
Native App Locale Refresh / Refresh native fr (push) Has been cancelled
Native App Locale Refresh / Refresh native hi (push) Has been cancelled
Native App Locale Refresh / Refresh native id (push) Has been cancelled
Native App Locale Refresh / Refresh native it (push) Has been cancelled
Native App Locale Refresh / Refresh native ja-JP (push) Has been cancelled
Control UI Locale Refresh / plan (push) Has been cancelled
Control UI Locale Refresh / Refresh ${{ matrix.locale }} (push) Has been cancelled
Control UI Locale Refresh / Commit control UI locale refresh (push) Has been cancelled
Live Media Runner Image / Build live media runner image (push) Has been cancelled
Native App Locale Refresh / Refresh native ar (push) Has been cancelled
Native App Locale Refresh / Refresh native de (push) Has been cancelled
Native App Locale Refresh / Refresh native es (push) Has been cancelled
Native App Locale Refresh / Refresh native ko (push) Has been cancelled
Native App Locale Refresh / Refresh native nl (push) Has been cancelled
Native App Locale Refresh / Refresh native pl (push) Has been cancelled
Native App Locale Refresh / Refresh native pt-BR (push) Has been cancelled
Native App Locale Refresh / Refresh native ru (push) Has been cancelled
Native App Locale Refresh / Refresh native sv (push) Has been cancelled
Native App Locale Refresh / Refresh native th (push) Has been cancelled
Native App Locale Refresh / Refresh native tr (push) Has been cancelled
Native App Locale Refresh / Refresh native uk (push) Has been cancelled
Native App Locale Refresh / Refresh native vi (push) Has been cancelled
Native App Locale Refresh / Refresh native zh-CN (push) Has been cancelled
Native App Locale Refresh / Refresh native zh-TW (push) Has been cancelled
Native App Locale Refresh / Commit native locale refresh (push) Has been cancelled
Plugin Init Scaffold Validation / Validate provider scaffold (push) Has been cancelled
Plugin NPM Release / preview_plugins_npm (push) Has been cancelled
Plugin NPM Release / Validate release publish approval (push) Has been cancelled
Plugin NPM Release / preview_plugin_pack (push) Has been cancelled
Plugin NPM Release / publish_plugins_npm (push) Has been cancelled
Sandbox Common Smoke / sandbox-common-smoke (push) Has been cancelled
Website Installer Sync / static (push) Has been cancelled
Website Installer Sync / linux-docker (push) Has been cancelled
Website Installer Sync / macos-installer (push) Has been cancelled
Website Installer Sync / windows-installer (push) Has been cancelled
Website Installer Sync / sync-website (push) Has been cancelled
Adolf is a fork/vendored clone of github.com/openclaw/openclaw (v2026.6.11), free to diverge. Tree copied sans upstream .git; upstream remote added for future syncs. Node pinned to 24 (.nvmrc); engines already require >=22.19. Preserves docs/ARCHITECTURE.md. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LeqyaxJF2nbRXJtae2kNB2
169 lines
7.3 KiB
Markdown
169 lines
7.3 KiB
Markdown
---
|
|
name: openclaw-landable-bug-sweep
|
|
description: "Find or repair a requested batch of small high-confidence non-SDK-boundary OpenClaw bugfix PRs until they are landable."
|
|
---
|
|
|
|
# OpenClaw Landable Bug Sweep
|
|
|
|
Autonomous maintainer workflow for producing a requested batch of landable OpenClaw bugfix PR URLs.
|
|
Use for broad issue/PR sweeps where the bar is high and the output is PRs, not notes.
|
|
Do not use for plugin SDK/API boundary work; those need separate architecture review.
|
|
|
|
## Target
|
|
|
|
Use `batch_size` from the request, defaulting to `5` and capped at `20`.
|
|
Return up to that many qualified PR URLs, each with:
|
|
|
|
- bug summary
|
|
- why the fix is low-risk
|
|
- proof: rebased-head local/Testbox/live commands or run IDs
|
|
- autoreview: clean result on the exact head being shown
|
|
- CI green on the exact pushed PR head
|
|
- issue/duplicate cleanup done or still pending
|
|
|
|
The URLs may be existing PRs that were reviewed/fixed, or new PRs created from issues/clusters.
|
|
Do not present a PR URL to the maintainer until it has been refreshed on current `main`, left-tested, autoreviewed clean, pushed, and verified green in live GitHub CI.
|
|
If code, tests, changelog, PR body, or branch base changes after autoreview, rerun autoreview before showing the URL.
|
|
Do not pad a batch when the bounded search yields fewer qualified PRs.
|
|
|
|
## Inputs
|
|
|
|
- `batch_size`: requested number of landable PRs; default `5`, maximum `20`.
|
|
- `source_mode`: `discovery` or `provided-prs`; default `discovery`.
|
|
- `provided_prs`: explicit PR refs when `source_mode=provided-prs`.
|
|
|
|
In `provided-prs` mode, inspect only the supplied PRs plus directly linked duplicate/canonical refs unless broader discovery is required to prove the best fix.
|
|
|
|
## Companion Skills
|
|
|
|
Use `$gitcrawl` for discovery/clustering, `$openclaw-pr-maintainer` for live GitHub mutation rules, `$github-author-context` when contributor trust matters, `$openclaw-testing` for proof choice, `$autoreview` before publishing/landing, and `$crabbox` for broad/E2E/live proof.
|
|
|
|
## Candidate Bar
|
|
|
|
Accept only when all are true:
|
|
|
|
- bug or paper cut, not feature/product/support/docs-only
|
|
- root cause is proven in current code
|
|
- dependency behavior checked via upstream docs/source/types when relevant
|
|
- production/runtime diff is small, ideally much smaller than 500 LOC and always below 500 LOC
|
|
- tests may be larger, but focused
|
|
- no new dependency
|
|
- no new config option
|
|
- no backward-incompatible behavior
|
|
- no security/product/owner-boundary decision needed
|
|
- no plugin SDK, public plugin API, or `src/plugin-sdk/**` boundary change
|
|
- no broad refactor smell
|
|
- focused proof is feasible
|
|
- branch can be rebased/refreshed and pushed, or a replacement PR can be created
|
|
|
|
Good examples:
|
|
|
|
- provider parameter mismatch proven against dependency/API contract
|
|
- CLI command diverges from adjacent command behavior
|
|
- narrow runtime state/serialization bug with failing test
|
|
- issue already fixed on current `main`, with proof and closeable duplicates
|
|
|
|
Reject:
|
|
|
|
- feature requests, new knobs, migrations, release work, workflow policy, support
|
|
- plugin SDK/API boundary changes, including compatibility shims, new SDK methods, SDK exports, or plugin-facing channel/provider seams
|
|
- auth/security boundary changes unless explicitly assigned
|
|
- bugs needing live credentials that are unavailable
|
|
- PRs with red CI unless you fix, rebase, push, and recheck them green
|
|
- PRs you only reviewed locally but did not refresh/push/check live
|
|
- PRs whose final head has not passed `$autoreview`
|
|
- fixes whose clean shape is a larger architecture move
|
|
- speculative reports without reproducible/provable cause
|
|
- UI/UX changes requiring product judgment
|
|
|
|
## Sweep Loop
|
|
|
|
1. Start clean:
|
|
- `git status -sb`
|
|
- `git pull --ff-only`
|
|
- verify branch is expected, usually `main`
|
|
2. Build candidate clusters:
|
|
- `gitcrawl` open issues/PRs, neighbors, and search
|
|
- live `gh issue/pr view`
|
|
- include PRs linked from issues and duplicates
|
|
3. For each cluster:
|
|
- read issue/PR body, comments, labels, linked refs, current source, adjacent tests
|
|
- suppress maintainer-owned queue noise unless it is the best fix path
|
|
- identify opener/author and preserve credit
|
|
- decide: `repair-existing-pr`, `create-new-pr`, `close-fixed-on-main`, `close-duplicate`, or `reject`
|
|
4. Prove before patching:
|
|
- failing test, focused repro, log/source proof, or dependency contract proof
|
|
- if already fixed on `main`, prove with current source/test/commit and close kindly
|
|
5. Patch:
|
|
- prefer existing PR when good and writable
|
|
- if unwritable or wrong shape, create own PR and preserve useful contributor credit
|
|
- if no PR exists, create one
|
|
- add regression test when it fits
|
|
- release-note context for user-facing fixes in PR body or commit message; credit human reporter/contributor when known
|
|
6. Review, refresh, and publish:
|
|
- rebase or otherwise refresh the PR branch on current `origin/main`
|
|
- resolve drift, including newly exposed CI failures, rather than counting the PR as ready
|
|
- do not add `CHANGELOG.md` during normal sweep PRs; release automation generates it from PRs and commits
|
|
- left-test the rebased head with the smallest meaningful local/Testbox/live command that proves the bug
|
|
- run `$autoreview` until no accepted/actionable findings remain before creating, updating, or presenting the PR URL
|
|
- create/update PR with real body and proof fields
|
|
- push the exact reviewed head
|
|
- verify live GitHub CI is green for that pushed head; do not count pending, red, dirty, conflicting, or externally blocked PRs in the five
|
|
7. Hygiene:
|
|
- close duplicates and fixed-on-main issues/PRs with proof as soon as you notice them during the sweep
|
|
- never mutate more than five associated items in one cluster without explicit confirmation
|
|
- comments must be kind, concrete, and include proof/PR/commit links
|
|
8. Repeat until `batch_size` landable PR URLs are ready or the bounded qualified queue is exhausted.
|
|
|
|
## PR Body Proof
|
|
|
|
Use the repo PR template. Include authored `## What Problem This Solves` and
|
|
`## Evidence` sections. Keep the body focused on intent and the most useful
|
|
validation evidence; inspect the code, tests, and CI before judging correctness.
|
|
|
|
## Existing PR Rules
|
|
|
|
- Review code path beyond the diff before trusting it.
|
|
- If PR is good: rebase/refresh on current `main`, fix small issues, left-test, autoreview clean, push, and get CI green before showing or counting it.
|
|
- If PR is not good but has a useful idea: recreate locally, co-author when warranted, close original with thanks and explanation.
|
|
- If PR is duplicate or fixed on `main`: comment proof, close.
|
|
- If maintainer cannot push to contributor branch: create own branch/PR, preserve useful commits or credit.
|
|
- If CI turns red after local proof, treat that as normal work: inspect the failing job, fix or reject, rerun, and only count the PR once green.
|
|
|
|
## Output Ledger
|
|
|
|
Maintain a running ledger:
|
|
|
|
```text
|
|
accepted:
|
|
- PR URL:
|
|
source refs:
|
|
bug:
|
|
root cause:
|
|
fix:
|
|
risk:
|
|
rebase/head:
|
|
left-test:
|
|
autoreview:
|
|
CI:
|
|
credit/thanks:
|
|
cleanup:
|
|
|
|
rejected:
|
|
- ref:
|
|
reason:
|
|
|
|
closed:
|
|
- ref:
|
|
reason:
|
|
proof/comment:
|
|
```
|
|
|
|
Final answer:
|
|
|
|
- the requested number of accepted PR URLs, or the smaller qualified count with the exhausted-search reason
|
|
- 2-4 sentence explainer per PR
|
|
- proof/CI state per PR
|
|
- closed duplicates/fixed-on-main refs
|
|
- current branch/status
|