Skip to content

Let an Unattended Worker File a Wording-Only Finding Past the Two-Round Cap Instead of Parking #2353

Open

Description

@ptr727

Problem

local-strict-review says:

Two rounds of edits answer a pass, one budget per push and one per sweep issue. Where an introduced finding is still open after the second round, editing stops and what remains goes to the maintainer with its counts per class, per pr-review-conduct "Escalate to the maintainer when".

In an unattended-handoff worker, "goes to the maintainer" means parking: a decision issue, the blocked label, and a whole run's round trip before the lane moves again. That holds even where the open finding is a comment or message string that changes no behavior and no verdict the change gives.

Observed

In ptr727/HomeAutomation-Config, four unattended runs on 2026-10-03 and 2026-10-04 parked 5 times. All 5 parks were this cap.

The three wording parks each cost a decision issue, the maintainer's attention, and a full extra run, for a change a worker could have filed as a follow-up.

Proposal

In an unattended worker, an introduced finding still open after the second round that touches only comment or message text, and changes no behavior, no verdict, and no text a decision rests on, is filed once as a follow-up issue and the pull request opens. A finding that changes behavior, a verdict, or decision text still parks, as today. The worker's PR body names the follow-up, so the merged text's known gap is visible.

Related: #1311 (prose review has no fixed point).

Activity

  1. added
    decisionA question waiting on the maintainer, alone or beside whatever else the issue carries
    on Oct 4, 2026
  2. ptr727 commented on Oct 4, 2026

    @ptr727
    OwnerAuthor

    Revision after consulting the hub session. It replaces the proposal above.

    The remedy is a deletion, not a filed follow-up. Filing each capped wording finding as an issue is the backlog pump #1311 describes, one more issue per park. Instead, past the second round, a wording-only finding is resolved by an edit that only deletes text: remove the offending clause or comment and add no words. One final pass is recorded so the pre-push receipt matches, and the pull request opens with the hosted reviewers as the next reader. A finding that pass raises against the deletion itself is filed rather than fixed, so the loop still ends deterministically. Deleting text cannot introduce a new claim, which is the mechanism #1311 names: each fix producing the next defect.

    The boundary is judged on the edit, not on the kind of text. Agents read comments as instructions, so a false claim in a comment can be behavioral in effect. A finding qualifies only where a worker can check all three:

    • (a) The round-3 diff only removes text: git diff --word-diff shows no {+...+} beyond a reflow.
    • (b) Nothing matches the removed text. Tests, parsers, gates and watchers are grepped for the string, since a regex-read status line or gate message is behavior.
    • (c) No verdict, exit code, or decision text changes.

    Under this rule a false claim gets the best treatment, since deleting it is always safe. Text that is imprecise but true has no deletion-only fix, so it is declined as style or parks as today. Where a deletion would leave intent undocumented in a way a reviewer has said matters, the finding is not wording-only and parks.

    Scope: attended and unattended alike. This is a disposition rule, so its one home is local-strict-review's budget bullet ("Two rounds of edits answer a pass"). It is written there as maintainer-approved rule text, which also settles the tension with pr-review-conduct "Escalate to the maintainer when"'s bullet that declining a real finding is never the agent's alone: the maintainer decides it once, in the rule, rather than per finding. An unattended-only carve-out would state one rule on two surfaces, and two surfaces drift.

    The two behavioral parks in the data (#756, #766) still park under this version.

  3. ptr727 commented on Oct 4, 2026

    @ptr727
    OwnerAuthor

    Data from an attended hub session on 2026-10-04, four lanes (#2352, #2355, #2356, #2359), each with dispatcher-run strict passes:

    Lane Passes to the cap (findings each) What was open at the cap Class under the revised boundary Maintainer's answer Final pass after one bounded edit
    #2338 (#2355) 1, 3, 1 a digest note naming the token as the cause wording; the edit replaced "the token could not read" with "was unreadable", so it removed words but was not a pure deletion fix, then PR 0
    #1703 (#2356) 5, 2, 4 a README sentence overstating a rerun, plus a test gap mixed: the wording needed added words, and the test gap is behavioral coverage fix, then PR 1 style, declined
    #2348 (#2359) 5, 6, 4 a no-cache host failing per file, a label mismatch, a test gap behavioral fix, then PR 2: one filed as #2358, one style declined
    #2339 (#2352) 0 nothing n/a n/a n/a

    Three of four lanes reached the cap, and the maintainer answered "fix, then PR" each time, including for the behavioral one. In every case one bounded edit, plus one recorded pass whose findings were filed rather than fixed, ended the loop. Under the deletion-only boundary only the #2338 case would have qualified, and only loosely. That suggests the rule's real value may be "one bounded edit with a filed-not-fixed final pass" for every class, keeping the maintainer's answer as the gate, rather than a wording-only exemption from asking.

  4. ptr727 commented on Oct 4, 2026

    @ptr727
    OwnerAuthor

    Maintainer's answer (2026-10-04, at the close of the hub session that wrote #2361): the deletion-only exemption, as the revision above states. Past the second round, a finding resolved by an edit that only deletes text, with no added words, no string a test, parser or watcher matches, and no verdict or decision-text change, is fixed by that deletion. One final pass is recorded, the PR opens, and a finding against the deletion is filed rather than fixed. Anything else still goes to the maintainer. The rule's one home is local-strict-review's budget bullet, and it applies to attended and unattended seats alike. The decision label is removed, and this stays open as the work to write it.

  5. removed
    decisionA question waiting on the maintainer, alone or beside whatever else the issue carries
    on Oct 4, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions