Repository navigation
File labelled issues for failing tests and slipping coverage - #49
Merged
Merged
Conversation
A maintained run now opens an issue on a repository whose tests fail, on main or after one of its tasks: what failed, the commit, Go version, command and shuffle seed to reproduce it, the change that broke it, the commits left unpushed, and how to resolve it, for an agent to pick up. A fingerprint of repository, task and failing tests, kept in a comment at the top, stops a later run from filing the same failure twice while the issue is open. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01M6xJuQgmRd19QozaQDD3tk
Issues are now filed through ghrepo's issue methods rather than a client of devtool's own. Each carries the label devtool and one saying what it is about: coverage, failing on main, dependency update breaks build or tests, or devtool breaks build or tests, created where a repository lacks it. Coverage below the floor gets an issue too. The comment that identifies a failure no longer hashes the repository, which the issue is on anyway, and a run that finds the issue open refreshes it. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01M6xJuQgmRd19QozaQDD3tk
A broken build fails every package that imports the broken one, so the issue now names the packages go test reports compile errors for, under their "# package" header, and its title gives them by their path in the module. lso's build failure, as Telegram reported it, is the test, and a FAIL line's separator may be a space as well as a tab. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01M6xJuQgmRd19QozaQDD3tk
# Conflicts: # go.mod
This was referenced Nov 12, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
A maintained run now opens a GitHub issue on a repository when its tests fail, whether on
mainor after one of the run's tasks, and when its coverage slips below its floor. Issues are filed through ghrepo's issue methods (ghrepo#5), and ghrepo is bumped to thatmain.Labels. Every issue carries
devtool, plus one label for what it's about. A repository that lacks a label gets it created, with a colour and description:coveragefailing on maindependency update breaks build/testsupdate dependenciestask's change breaks the build ([build failed]) or the testsdevtool breaks build/testsdevtool update,go generate,go fix, lint fix, …) breaks the build or the testsOne issue per problem. The body starts with a hidden comment that identifies the problem:
main) and the failing tests (packages where no test is named), leaving out timings and seeds;fellorpublic.Before filing, devtool looks for an open
devtool-labelled issue holding that comment. If it finds one, it updates that issue with the latest output, commit and time instead of filing another.What an issue holds (
internal/run/issue_tests.md.tmpl,issue_coverage.md.tmpl), written for an agent to act on:Failing tests:
mainitself, or a task's change that wasn't committed and was discarded;go test's output with the passing packages left out (gorepo#7);main's commit, the Go version, the exact command, the shuffle seed, andmake test-race;The title says "Build fails" or "Tests fail", "on main" or
after "<task>", then the failing tests.Coverage: the old and new figures and the floor; how to measure (
make coveruses the same-coverpkg=./..., and a one-liner lists the least-covered functions); and a warning against tests that execute code without checking anything.Both: read
AGENTS.md, passmake ready, and reference the issue withFixesin the pull request.Failing to file is logged and never fails the run.
GITHUB_TOKENneeds permission to write issues and labels on the maintained repositories.Checks
mainover two runs: one issue, refreshed by the second run, labelleddevtoolandfailing on main;devtool breaks tests, anddependency update breaks build, each with its title and change;go versionitself. Run for real against a temporaryHOME, it downloaded a toolchain and wrote Go telemetry after the test ended, which made cleanup fail now and then. Five clean runs in a row since.docs/architecture.mddescribes it.make cipasses.Not in this PR
Fixesreference in the fixing PR closes it.🤖 Generated with Claude Code
https://claude.ai/code/session_01M6xJuQgmRd19QozaQDD3tk