4 months ago
7047647The old comment counted rules ("tripped 1 of 8 rules" — meaningless to a
stranger), buried the run button in a "for maintainers" dropdown (but the run
page is the contributor's appeal surface now, §10), and told everyone to "fix and
push" even when the failing rule was account age, which no commit clears.
- never count rules: the comment speaks the failing rules' summarize() one-liners
— max 2 inline (each with its wait-hint appended, "your account is 2 days old —
it clears in 5 days"), 3+ collapse to "<first>, plus N other things."
- the run button renders VISIBLY, outside any <details>; the "for maintainers"
wrapper is gone.
- the "how do i fix this?" body is chosen by the failing rules' remedies:
all-revise / nothing-revisable / mixed; the appeal sentence rides along
whenever anything is non-revise.
- @-mention the contributor on blocked + sent-to-review; drop the "tripwire:"
prefix everywhere (the bot name carries it). the review stamp is one line:
"blocked — {first reason}.".
- reasons are built in the worker (comment-reasons.ts) — the only legal core
importer — from each step's stored envelope via the rule's own summarize/
remedy/waitHint; emitPrSurface takes reasons and drops the stats rule-count.
- adjusted the rule one-liners to speak TO the contributor (this account → your
account; found N → it adds N; percentage → "the title isn't in latin script").
not a version bump — summaries are stored at persist time, so historical runs
keep their text and stay interpretable (replay unchanged: 2 flips).
- regenerated the comment snapshots; replaced the condensedness test with
assertions that matter (verdict line, visible button, no rule count, no prefix,
contributor @-mentioned).
Checks: biome clean, typecheck 0, boundaries ok, 201 tests, replay 2 flips.Parentff0fa8f