roborev exclusion patterns match the whole commit message, causing silent skips #24

Open
opened 2026-08-24 00:23:44 -04:00 by jared · 1 comment
Owner

excluded_commit_patterns in .roborev.toml are plain substring matches
tested against the entire commit message, not just the subject line. roborev
says so itself when you ask for the review explicitly:

$ roborev review cd1af67
Skipped: commit message matches an excluded pattern

How this was found

cd1af67 ("fix(packaging): exclude scoped chore and docs commits from roborev")
excluded itself. Its subject contains none of the patterns, but its body quotes
chore:, chore(, and docs( while explaining what the commit changes. The
commit was silently never reviewed, and there is no override flag on
roborev review to force it.

A probe commit with a clean body queued a review immediately, which rules out the
hook or the daemon as the cause.

Why it matters

The failure is silent. There is no skipped-job record — roborev status
reports 0 skipped — so a commit that is never reviewed looks identical to one
that had nothing to say. Any future commit whose body discusses an excluded
prefix ("reverts the docs: change", "replaces the chore(ci) workflow") drops out
of review with no signal.

Current patterns

excluded_commit_patterns = ['WIP', 'chore:', 'chore(', 'docs:', 'docs(', 'Merge ']

The chore(/docs( forms are deliberate — this project's cadence rule mandates
type(ws): subject, so the bare chore: form never matches a real commit here.
The trade-off was made knowingly: scoped chore and docs commits stop consuming
reviews, at the cost of this rare silent-skip case.

What to do

Nothing urgent. This issue exists so the next silent skip is diagnosable in
minutes. If it happens more than once, the options are:

  1. Ask upstream roborev for subject-anchored matching, or a --force flag on
    roborev review.
  2. Drop the paren forms and accept a review on every scoped chore/docs commit.
  3. Avoid quoting exclusion patterns verbatim in commit bodies -- backticks do not
    help, since matching is on raw text.

Also unreviewed

cd1af67 itself was never reviewed as a result. It is a two-line config change
plus a documentation paragraph in AGENTS.md; recovering it was judged not worth
temporarily editing the config.

`excluded_commit_patterns` in `.roborev.toml` are plain substring matches tested against the **entire commit message**, not just the subject line. roborev says so itself when you ask for the review explicitly: ``` $ roborev review cd1af67 Skipped: commit message matches an excluded pattern ``` ## How this was found `cd1af67` ("fix(packaging): exclude scoped chore and docs commits from roborev") excluded itself. Its subject contains none of the patterns, but its body quotes `chore:`, `chore(`, and `docs(` while explaining what the commit changes. The commit was silently never reviewed, and there is no override flag on `roborev review` to force it. A probe commit with a clean body queued a review immediately, which rules out the hook or the daemon as the cause. ## Why it matters The failure is **silent**. There is no skipped-job record — `roborev status` reports `0 skipped` — so a commit that is never reviewed looks identical to one that had nothing to say. Any future commit whose body discusses an excluded prefix ("reverts the docs: change", "replaces the chore(ci) workflow") drops out of review with no signal. ## Current patterns ```toml excluded_commit_patterns = ['WIP', 'chore:', 'chore(', 'docs:', 'docs(', 'Merge '] ``` The `chore(`/`docs(` forms are deliberate — this project's cadence rule mandates `type(ws): subject`, so the bare `chore:` form never matches a real commit here. The trade-off was made knowingly: scoped chore and docs commits stop consuming reviews, at the cost of this rare silent-skip case. ## What to do Nothing urgent. This issue exists so the next silent skip is diagnosable in minutes. If it happens more than once, the options are: 1. Ask upstream roborev for subject-anchored matching, or a `--force` flag on `roborev review`. 2. Drop the paren forms and accept a review on every scoped chore/docs commit. 3. Avoid quoting exclusion patterns verbatim in commit bodies -- backticks do not help, since matching is on raw text. ## Also unreviewed `cd1af67` itself was never reviewed as a result. It is a two-line config change plus a documentation paragraph in `AGENTS.md`; recovering it was judged not worth temporarily editing the config.
jared added the
origin
roborev
ws
packaging
type
chore
labels 2026-08-24 00:23:44 -04:00
Author
Owner

Related trap found while closing out this issue's session.

The probe commit mentioned above (cb4c158) was cancelled and reset away, but
its job record — job 18 — is permanently counted as an open finding:

  • roborev close 18 returns 404 review not found for job. close marks a
    review resolved, and a job cancelled before it ran never produced one.
  • roborev compact only discovers completed jobs, so it skips it.
  • There is no per-job delete. roborev repo delete would take the repo's whole
    review history with it.

So scripts/roborev.py will report job 18 as an open finding in every future
wrap
, pointing at a commit that is on no branch. It is noise, not a real
finding — a comment on the job records that, though roborev show 18 also 404s
for the same reason.

If you are reading this in a later session: job 18 is expected and can be
ignored. Do not spend time trying to close it.

Two things would fix this upstream: cancel should mark the job closed, and
list --open should not count cancelled jobs.

Related trap found while closing out this issue's session. The probe commit mentioned above (`cb4c158`) was cancelled and reset away, but its job record — **job 18** — is permanently counted as an open finding: - `roborev close 18` returns `404 review not found for job`. `close` marks a *review* resolved, and a job cancelled before it ran never produced one. - `roborev compact` only discovers *completed* jobs, so it skips it. - There is no per-job delete. `roborev repo delete` would take the repo's whole review history with it. So `scripts/roborev.py` will report job 18 as an open finding in **every future wrap**, pointing at a commit that is on no branch. It is noise, not a real finding — a comment on the job records that, though `roborev show 18` also 404s for the same reason. **If you are reading this in a later session:** job 18 is expected and can be ignored. Do not spend time trying to close it. Two things would fix this upstream: `cancel` should mark the job closed, and `list --open` should not count cancelled jobs.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: Civilytics/civilyticsR#24