Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,10 @@ checkpoint, and status-only commits are intentionally omitted.
- Added a light privacy reminder and stronger screenshot-or-video nudge to real behavior proof review guidance.
- Added agent-led real behavior proof judgement so ClawSweeper can inspect linked screenshots, videos, logs, and terminal output with a read-only GitHub token, explain the proof verdict in the review comment, tell contributors how to trigger a fresh review after adding proof, and sync `proof: sufficient` when the evidence is convincing.
- Added a real behavior proof assessment to PR reviews so missing, mock-only, or insufficient contributor proof blocks pass/automerge markers and asks for screenshots, terminal output, redacted logs, recordings, linked artifacts, or copied live output instead.
- Added advisory issue labels for reproduction, linked-PR, work-lane,
missing-info, product-decision, and security-review routing states, projected
from existing review report fields without changing repair, merge, or close
behavior.
- Added `config/automation-limits.json` plus docs and a drift check so review,
commit-review, repair, and issue-implementation capacity defaults have one
checked-in source of truth.
Expand Down
8 changes: 8 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,14 @@ hidden verdict/action markers so trusted repair and automerge flows can continue
without scraping visible prose. See
[`docs/pr-review-comments.md`](docs/pr-review-comments.md).

For open issues with complete, current kept-open reviews, ClawSweeper also
projects selected structured review conclusions into advisory GitHub labels for
maintainer filtering and project views. These labels expose states such as
current-main reproduction, source reproduction, linked open PRs, queueable
fixes, missing info, and product/security review needs. They are advisory only
and do not trigger repair, merge, or close behavior. See
[`docs/work-lane.md`](docs/work-lane.md).

### Apply and State

Apply mode re-fetches live GitHub state, checks labels, maintainer authorship,
Expand Down
33 changes: 33 additions & 0 deletions docs/work-lane.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,39 @@ dashboard links both the source report and the generated coding plan so
maintainers can promote from a concise implementation view without editing the
durable report.

For open issues with complete, current kept-open reviews, apply/comment-sync
also projects a small owned set of advisory GitHub labels from the same
structured fields. Comments explain the evidence; labels expose routing state
for GitHub issue lists, searches, and project views. These labels do not
dispatch repair, merge, or close work, and they do not replace maintainer-owned
action labels such as `clawsweeper:autofix` or `clawsweeper:automerge`.
Failed or stale reports are skipped so outdated review conclusions do not mutate
live issue labels.
Close proposals are not label-mutated during apply, so advisory label writes do
not advance an issue's `updated_at` before close eligibility gates have finished.

| Label | Source condition |
| ------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------- |
| `clawsweeper:current-main-repro` | `type: issue`, `reproduction_status: reproduced`, and `reproduction_confidence: high` |
| `clawsweeper:source-repro` | `type: issue`, `reproduction_status: source_reproducible`, and `reproduction_confidence: high` |
| `clawsweeper:not-repro-on-main` | `type: issue`, `reproduction_status: not_reproduced`, and `reproduction_confidence: high` |
| `clawsweeper:needs-live-repro` | `type: issue`, `reproduction_status: source_reproducible`, and reproduction confidence below high |
| `clawsweeper:needs-info` | `type: issue`, `reproduction_status: unclear`, and reproduction confidence below high |
| `clawsweeper:linked-pr-open` | the live issue has an open GitHub closing-PR reference |
| `clawsweeper:no-new-fix-pr` | an open linked PR, manual-review lane, product decision, or security review means a new automated fix PR should not be queued |
| `clawsweeper:queueable-fix` | `work_candidate: queue_fix_pr`, `work_status: candidate`, and `work_confidence: high` |
| `clawsweeper:fix-shape-clear` | high-confidence `queue_fix_pr` or `manual_review` work includes a repair prompt, likely files, or validation |
| `clawsweeper:needs-maintainer-review` | `work_candidate: manual_review` or `work_status: manual_review` |
| `clawsweeper:needs-product-decision` | `requires_product_decision: true` |
| `clawsweeper:needs-security-review` | `item_category: security` or a `securityReview` status of `needs_attention` |

The advisory-label sync owns only this label group. Reruns add labels that match
the latest report, remove stale labels from this group, and preserve unrelated
labels plus action/proof labels such as `clawsweeper:autofix`,
`clawsweeper:automerge`, `clawsweeper:human-review`,
`clawsweeper:merge-ready`, `proof: sufficient`, and
`mantis: telegram-visible-proof`.

Plan artifacts are generated state. They are removed when the item closes,
archives, becomes stale, or is reclassified away from `queue_fix_pr`; regenerate
them from the source report instead of editing them by hand.
Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@
"check:active-surface": "node scripts/check-active-surface.ts",
"check:limits": "node scripts/check-limits.ts",
"lint": "pnpm run lint:src && pnpm run lint:repair && pnpm run lint:scripts",
"lint:src": "oxlint src/*.ts --tsconfig tsconfig.json --type-aware --deny-warnings --report-unused-disable-directives -D correctness",
"lint:src": "oxlint src --ignore-pattern \"src/repair/**\" --tsconfig tsconfig.json --type-aware --deny-warnings --report-unused-disable-directives -D correctness",
"lint:repair": "oxlint src/repair --tsconfig tsconfig.repair.json --deny-warnings --report-unused-disable-directives -D correctness",
"lint:scripts": "oxlint scripts test --deny-warnings --report-unused-disable-directives -D correctness",
"format": "oxfmt --write src scripts test package.json tsconfig.json tsconfig.repair.json .oxfmtrc.json config schema .github/actions .github/workflows",
Expand Down
5 changes: 3 additions & 2 deletions scripts/check-active-surface.ts
Original file line number Diff line number Diff line change
Expand Up @@ -90,15 +90,16 @@ function scan(absolute: string): void {
}
if (!stat.isFile() || !isTextFile(absolute)) return;
const relative = path.relative(root, absolute);
if (relative === "scripts/check-active-surface.ts") return;
const canonicalRelative = relative.split(path.sep).join("/");
if (canonicalRelative === "scripts/check-active-surface.ts") return;
const text = fs.readFileSync(absolute, "utf8");
const lines = text.split(/\r?\n/);
lines.forEach((line, index) => {
for (const retired of retiredPatterns) {
const match = retired.pattern.exec(line);
if (!match) continue;
findings.push({
file: relative,
file: canonicalRelative,
line: index + 1,
column: match.index + 1,
label: retired.label,
Expand Down
Loading