diff --git a/plugins/pstack/skills/poteto-mode/references/bugbot-triage.md b/plugins/pstack/skills/poteto-mode/references/bugbot-triage.md index b2fc7d35..a30fb94a 100644 --- a/plugins/pstack/skills/poteto-mode/references/bugbot-triage.md +++ b/plugins/pstack/skills/poteto-mode/references/bugbot-triage.md @@ -140,3 +140,28 @@ Append new candidate learnings here during or after babysitting when they look t exists for a missing dependency rather than a failed operation. - Source: one CLI-rename PR whose fallback existed for a missing binary rather than a failed command. + +### Accept the premise, decline a remedy that mutates state the component does not own + +- Confidence: candidate +- Skip when: Never skip the finding itself; it is real and gets fixed. Decline + only the remedy, and only when it would have the component edit, adopt, or + ignore state written outside its own lifecycle. +- Do not skip when: Reviewers agree a component reports a wrong or misleading + state, and propose making it edit or ignore a row it did not create so the + run passes. The tell is a remedy phrased as "skip the X rows" or "treat X as + ours", where X is written by someone outside the component's lifecycle. + Suppressing it converts a loud failure into a quiet wrong answer, which is + usually the failure the change existed to remove. Fix the attribution + instead: report the same condition with the cause named and the remedy the + operator owns, and split the message when the remedies differ, such as + converging the component versus changing state only a human can change. +- Example signal: Three independent reviewers proposed suppressing + organisation-wide default rows in a seed's post-condition so the seed would + pass. That would have published a receipt saying the persona is not exempt + while the desktop exempted them. +- Source: one seeding PR where the same ownership confusion, reading + `is_default=False` as "this row is mine", produced both a stale-detach bug + and a wedged run. The next fix replaced it with "some scenario declares this + key", which orphaned the seed's own rows once a key was renamed. Only + recording provenance on the row itself closed it.