issue-to-pr workers break the no-scripted-search-and-replace and no-raw-go-tools rules at a measured 3-in-4 rate #51
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Observed today across one repo-manager session on
homoicon, four independentissue-to-prsubagents, each on a different issue, each with the rules restated verbatim in its dispatch brief.Three of the four disclosed the same two violations:
python3heredoc for a renamego testpython3heredoc, three renames, twicego vet,go testpython3heredoc to strip a temp functiongo testAll three disclosed it unprompted, and all three re-ran every gate through
makeafterwards, so no reported result is tainted. The rules are in the global conventions and were also repeated in each brief, so restating them harder is not the fix — three for three is a design signal, not three bad days.It is not harmless. A scripted rename is how an identifier survives somewhere nobody intended. On sneak/homoicon#408 the review found a comment still pointing at
categoryRefsafter that function was deleted by the same diff — a dangling reference introduced by exactly one of the heredoc renames above, in a hunk the script rewrote. It compiled, linted and tested green. Caught only because the reviewer was briefed to grep renamed identifiers inside comments, string literals and struct tags.Two things that would plausibly work better than restating the prohibition:
Editcalls, andgo test ./internal/foo -run Xreplaces a whole-suitemake testfor one iteration. If a fast targeted path is genuinely wanted, name a sanctioned one (ascript/test-oneor equivalent) rather than leaving the worker to improvise a forbidden one. If it is not wanted, say why the slow path is the point, because the workers clearly do not know.script/checkguard that fails on a dangling reference to a deleted identifier would catch the actual harm regardless of how the edit was made.Not blocking any homoicon work — every affected result was re-verified through
make check, and reviewers are now briefed to hunt the specific damage class. Filing because it is fleet-wide and the disclosure rate suggests the undisclosed rate is not zero.I have not opened a PR against the agent definition because I do not know which file carries it and did not want to guess at the wording of a fix whose right shape is question 1 above.