|
| 1 | +--- |
| 2 | +name: openclaw-landable-bug-sweep |
| 3 | +description: "Find or repair small high-confidence OpenClaw bugfix PRs until five are landable." |
| 4 | +--- |
| 5 | + |
| 6 | +# OpenClaw Landable Bug Sweep |
| 7 | + |
| 8 | +Autonomous maintainer workflow for producing five landable OpenClaw bugfix PR URLs. |
| 9 | +Use for broad issue/PR sweeps where the bar is high and the output is PRs, not notes. |
| 10 | + |
| 11 | +## Target |
| 12 | + |
| 13 | +Return exactly five PR URLs, each with: |
| 14 | + |
| 15 | +- bug summary |
| 16 | +- why the fix is low-risk |
| 17 | +- proof: local/CI/Testbox/live commands or run IDs |
| 18 | +- issue/duplicate cleanup done or still pending |
| 19 | + |
| 20 | +The five URLs may be existing PRs that were reviewed/fixed, or new PRs created from issues/clusters. |
| 21 | + |
| 22 | +## Companion Skills |
| 23 | + |
| 24 | +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. |
| 25 | + |
| 26 | +## Candidate Bar |
| 27 | + |
| 28 | +Accept only when all are true: |
| 29 | + |
| 30 | +- bug or paper cut, not feature/product/support/docs-only |
| 31 | +- root cause is proven in current code |
| 32 | +- dependency behavior checked via upstream docs/source/types when relevant |
| 33 | +- production/runtime diff is small, ideally much smaller than 500 LOC and always below 500 LOC |
| 34 | +- tests may be larger, but focused |
| 35 | +- no new dependency |
| 36 | +- no new config option |
| 37 | +- no backward-incompatible behavior |
| 38 | +- no security/product/owner-boundary decision needed |
| 39 | +- no broad refactor smell |
| 40 | +- focused proof is feasible |
| 41 | + |
| 42 | +Good examples: |
| 43 | + |
| 44 | +- provider parameter mismatch proven against dependency/API contract |
| 45 | +- CLI command diverges from adjacent command behavior |
| 46 | +- narrow runtime state/serialization bug with failing test |
| 47 | +- issue already fixed on current `main`, with proof and closeable duplicates |
| 48 | + |
| 49 | +Reject: |
| 50 | + |
| 51 | +- feature requests, new knobs, migrations, release work, workflow policy, support |
| 52 | +- auth/security boundary changes unless explicitly assigned |
| 53 | +- bugs needing live credentials that are unavailable |
| 54 | +- fixes whose clean shape is a larger architecture move |
| 55 | +- speculative reports without reproducible/provable cause |
| 56 | +- UI/UX changes requiring product judgment |
| 57 | + |
| 58 | +## Sweep Loop |
| 59 | + |
| 60 | +1. Start clean: |
| 61 | + - `git status -sb` |
| 62 | + - `git pull --ff-only` |
| 63 | + - verify branch is expected, usually `main` |
| 64 | +2. Build candidate clusters: |
| 65 | + - `gitcrawl` open issues/PRs, neighbors, and search |
| 66 | + - live `gh issue/pr view` |
| 67 | + - include PRs linked from issues and duplicates |
| 68 | +3. For each cluster: |
| 69 | + - read issue/PR body, comments, labels, linked refs, current source, adjacent tests |
| 70 | + - suppress maintainer-owned queue noise unless it is the best fix path |
| 71 | + - identify opener/author and preserve credit |
| 72 | + - decide: `repair-existing-pr`, `create-new-pr`, `close-fixed-on-main`, `close-duplicate`, or `reject` |
| 73 | +4. Prove before patching: |
| 74 | + - failing test, focused repro, log/source proof, or dependency contract proof |
| 75 | + - if already fixed on `main`, prove with current source/test/commit and close kindly |
| 76 | +5. Patch: |
| 77 | + - prefer existing PR when good and writable |
| 78 | + - if unwritable or wrong shape, create own PR and preserve useful contributor credit |
| 79 | + - if no PR exists, create one |
| 80 | + - add regression test when it fits |
| 81 | + - changelog for user-facing fixes; thank credited human reporter/contributor |
| 82 | +6. Review and publish: |
| 83 | + - run focused proof |
| 84 | + - run `$autoreview` until no accepted/actionable findings remain |
| 85 | + - create/update PR with real body and proof fields |
| 86 | + - push branch |
| 87 | + - get CI green or document exact external blocker; do not count blocked PRs in the five |
| 88 | +7. Hygiene: |
| 89 | + - close duplicates and fixed-on-main issues with proof |
| 90 | + - never mutate more than five associated items in one cluster without explicit confirmation |
| 91 | + - comments must be kind, concrete, and include proof/PR/commit links |
| 92 | +8. Repeat until five landable PR URLs are ready. |
| 93 | + |
| 94 | +## PR Body Proof |
| 95 | + |
| 96 | +Use the repo PR template. Include these exact labels: |
| 97 | + |
| 98 | +```text |
| 99 | +Behavior addressed: |
| 100 | +Real environment tested: |
| 101 | +Exact steps or command run after this patch: |
| 102 | +Evidence after fix: |
| 103 | +Observed result after fix: |
| 104 | +What was not tested: |
| 105 | +``` |
| 106 | + |
| 107 | +## Existing PR Rules |
| 108 | + |
| 109 | +- Review code path beyond the diff before trusting it. |
| 110 | +- If PR is good: fix small issues, run proof, push if writable, get CI green. |
| 111 | +- If PR is not good but has a useful idea: recreate locally, co-author when warranted, close original with thanks and explanation. |
| 112 | +- If PR is duplicate or fixed on `main`: comment proof, close. |
| 113 | +- If maintainer cannot push to contributor branch: create own branch/PR, preserve useful commits or credit. |
| 114 | + |
| 115 | +## Output Ledger |
| 116 | + |
| 117 | +Maintain a running ledger: |
| 118 | + |
| 119 | +```text |
| 120 | +accepted: |
| 121 | +- PR URL: |
| 122 | + source refs: |
| 123 | + bug: |
| 124 | + root cause: |
| 125 | + fix: |
| 126 | + risk: |
| 127 | + proof: |
| 128 | + CI: |
| 129 | + credit/thanks: |
| 130 | + cleanup: |
| 131 | +
|
| 132 | +rejected: |
| 133 | +- ref: |
| 134 | + reason: |
| 135 | +
|
| 136 | +closed: |
| 137 | +- ref: |
| 138 | + reason: |
| 139 | + proof/comment: |
| 140 | +``` |
| 141 | + |
| 142 | +Final answer: |
| 143 | + |
| 144 | +- exactly five accepted PR URLs |
| 145 | +- 2-4 sentence explainer per PR |
| 146 | +- proof/CI state per PR |
| 147 | +- closed duplicates/fixed-on-main refs |
| 148 | +- current branch/status |
0 commit comments