Skip to content

docs(bugbot-triage): record declining a remedy without declining the premise - #76

Draft
rustanacexd wants to merge 2 commits into
ericlitman:mainfrom
rustanacexd:docs/triage-decline-remedy-not-premise
Draft

rustanacexd wants to merge 2 commits into
ericlitman:mainfrom
rustanacexd:docs/triage-decline-remedy-not-premise

Conversation

@rustanacexd

Copy link
Copy Markdown

Adds one entry to references/bugbot-triage.md, under Candidate learnings.

What the entry is for

The rubric classifies a thread as fix, dismiss, or ask. A real case does
not always land on one of the three. A panel can be right that a component
reports the wrong state and wrong about what to do about it, and the remedy
that tempts several reviewers at once is to let the component edit or ignore
rows it never created so the run goes green.

That is worth naming because the wrong remedy is the appealing one. It makes
the failure go away, and the failure going away is indistinguishable from the
bug being fixed until someone reads the receipt.

Where it came from

A seeding change whose post-condition asserted that a set of personas receive
exactly the exemptions the scenario declares. Three reviewers, running
independently, each proposed skipping organisation-wide default rows in that
check. Skipping them would have let the seed report the persona as not exempt
while the application exempted them, which is the silent failure the change
existed to remove.

The premise was right and got fixed. The same confusion, reading a
non-default flag as "this row is mine", had also produced a real bug in the
other direction: the seed detached exemptions an administrator had granted by
hand. What got declined was only the proposed remedy for the assertion, which
was replaced by naming the cause and splitting the message, because converging
the component and changing state only an operator can change are different
asks.

Confidence is candidate, per the format's rule for one example.

🤖 Generated with Claude Code

…premise

The rubric classifies a whole thread as fix, dismiss, or ask. A panel can be
right that a component reports the wrong state and wrong about what to do, and
the remedy that tempts three reviewers at once is to let the component edit or
ignore rows it never created. That trades a loud failure for a quiet wrong
answer, so it needs its own entry rather than sitting between the three verbs.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@mergify

mergify Bot commented Sep 17, 2026

Copy link
Copy Markdown

This pull request does not currently match the merge queue conditions, so it cannot be queued from here. The box comes back if it matches again.

@greptile-apps

greptile-apps Bot commented Sep 17, 2026

Copy link
Copy Markdown

RetriggerConfidence Score: 4/5

The PR is safe to merge, though aligning the candidate-learning format and producing workflow would prevent contradictory agent guidance.

Findings

  1. P2 Conflicting candidate entry format

Summary

This documentation-only PR adds a candidate Bugbot-triage learning for cases where a finding is valid but reviewers propose an unsafe remedy.

  • Advises fixing misleading state reporting without mutating or ignoring state owned outside the component.
  • Records a seeding example involving organization-wide default rows and exemption receipts.
  • The new fix-oriented pattern is not yet aligned with the dismissal-oriented candidate workflow and entry schema.

Reviews (1) · Last reviewed commit: "docs(bugbot-triage): record declining a ..."

Comment on lines +147 to +149
- Skip when: n/a — this is a partial accept, not a dismissal. The finding is
real and gets fixed. What gets declined is the remedy.
- Do not skip when: Reviewers agree a component reports a wrong or misleading

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Conflicting candidate entry format

This entry says it is not a dismissal, but the workflow that populates this section only directs agents to record dismissal-pattern candidates. The documented format also requires actual conditions under Skip when, while this entry uses n/a. This leaves conflicting guidance about whether partial-accept learnings belong here and may cause agents to classify similar cases inconsistently. Please extend the candidate-learning contract or place this guidance in a section for fix and remedy patterns.

Note: If this suggestion doesn't match your team's coding style, reply to this and let me know. I'll remember it for next time!

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed in 7a2952b. Skip when now states a condition: never skip the finding, and decline the remedy only when it would have the component edit, adopt, or ignore state outside its own lifecycle. I kept the entry in this section. Two entries above it already record non-dismissals ("Practically never" and "Never skip the verification itself"), so the section already holds more than dismissal patterns.

@openswebot openswebot Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Open SWE Review found 1 potential issue.

Open in Web

Comment on lines +144 to +148
### Accept the premise, decline a remedy that mutates state the component does not own

- Confidence: candidate
- Skip when: n/a — this is a partial accept, not a dismissal. The finding is
real and gets fixed. What gets declined is the remedy.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Keep unverified behavior change in draft

This adds new triage behavior to the shared Claude Code/Codex skill tree, but the PR is currently non-draft and its description contains no live-evidence receipt. AGENTS.md and .github/pull_request_template.md require the exact candidate to be installed and exercised from every affected real user surface, with the installed version, action, and observed result recorded; without that evidence, the PR must remain a draft. Please record the required Claude Code and Codex runs, or convert the PR back to draft until they are complete.

(Refers to lines 144-148)


Your feedback helps Open SWE learn. React with 👍 or 👎 to tell us if this review comment was useful.

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Agreed. AGENTS.md requires live evidence from every affected harness before this leaves draft, and the description has none, so I have converted the PR back to draft. It will stay a draft until Claude Code and Codex runs with the candidate installed are recorded under "Live evidence".

Greptile noted the entry's `Skip when: n/a` breaks the format every other
candidate keeps. It now states when to decline: never the finding, and the
remedy only when it would have the component edit, adopt, or ignore state
written outside its own lifecycle. Two entries in the same section already
record non-dismissals, so the entry stays where it is.

The source line also records the next step of the same case. The fix that
replaced `is_default=False` with "some scenario declares this key" orphaned
the seed's own rows after a rename, and only recording provenance on the
row closed it.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@rustanacexd
rustanacexd marked this pull request as draft September 23, 2026 15:27
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant