docs: require PR template and complete-file batches in maintenance flows

Maintenance task commands now fill .github/PULL_REQUEST_TEMPLATE.md section by
section instead of inventing their own headings, and follow-up tasks keep the
description true for the final HEAD while preserving hand-added content.

Raise the anti-slop batch window to 60-120 findings and require each selected
file to be finished: remaining findings need an individual specific reason,
shared root causes count once, and difficulty alone no longer justifies a skip.
A half-fixed file otherwise returns as a second pull request over the same code.

Add the maintenance-review command, which reviews every open anti-slop and
react-doctor pull request and fixes the findings directly rather than
commenting, without merging or approving.
This commit is contained in:
Bohdan Triapitsyn
2026-08-16 18:34:02 +03:00
parent 80150aaf0d
commit bfa0f9ee2a
6 changed files with 52 additions and 26 deletions
+4 -4
View File
@@ -46,7 +46,7 @@ const NOISY_RULES = new Set(["no-runtime-typeof", "require-safety-comment-for-ty
function usage(exitCode = 0) {
const out = exitCode === 0 ? console.log : console.error;
out(`Usage:
bun run deslop -- next-batch [--min-issues 25] [--max-issues 60] [--max-files 4]
bun run deslop -- next-batch [--min-issues 60] [--max-issues 120] [--max-files 4]
[--max-active ${DEFAULT_MAX_ACTIVE}] [--claim-ttl ${DEFAULT_CLAIM_TTL_DAYS}] [--include-noisy]
bun run deslop -- check-batch --run <run-id>
bun run deslop -- active [--claim-ttl ${DEFAULT_CLAIM_TTL_DAYS}]
@@ -62,7 +62,7 @@ pipeline. Claims are shared across clones by default. A batch stays active until
it is released.
Examples:
bun run deslop -- next-batch --min-issues 25 --max-issues 60
bun run deslop -- next-batch --min-issues 60 --max-issues 120
bun run deslop -- file packages/ui/src/lib/settings/metadata.ts
bun run deslop -- check-batch --run 2026-08-16T10-12-44Z
bun run deslop -- release --run 2026-08-16T10-12-44Z`);
@@ -311,8 +311,8 @@ function printReportHeader(report) {
}
function commandNextBatch(args) {
const minIssues = asPositiveInt(args["min-issues"], 25, "min-issues");
const maxIssues = asPositiveInt(args["max-issues"], 60, "max-issues");
const minIssues = asPositiveInt(args["min-issues"], 60, "min-issues");
const maxIssues = asPositiveInt(args["max-issues"], 120, "max-issues");
const maxFiles = asPositiveInt(args["max-files"], 4, "max-files");
if (minIssues > maxIssues) throw new Error("--min-issues cannot be greater than --max-issues.");
const maxActive = asPositiveInt(args["max-active"], DEFAULT_MAX_ACTIVE, "max-active");