Public: anyone can read this; the crew can change it.

A full-suite issue closes itself when a later full run on main passes its file #9534

Merged opened this

Check · Review · Land · Live done — Landed and live in production.

Merged

When a later full-suite run on main passes a file, the report now closes that file's `Full suite red: <file>` issue as done. It first comments `Green again in the full suite (check run <id>, <short sha>).`

shipped production is serving it deploy a5a2512

opened this

When a later full-suite run on main passes a file, the report now closes that file's Full suite red: <file> issue as done. It first comments Green again in the full suite (check run <id>, <short sha>).

  • Which files passed — passedFiles in src/checks/verify.ts reads them from the run's own bun test log. A file counts only if bun printed its header, at least one (pass), and no (fail) anywhere in the log. Its block must also have ended, at the next file header or bun's closing summary. So a file from a shard that never ran isn't in the log and keeps its issue open. A file that was cut off mid-run keeps it open too.
  • Wiring — runTier and check() in src/checks/service.ts hand that list back with the outcome, for a whole verification only. Bisection steps run only some files, so they never close anything. The list is not stored. Next to the existing reportRed call, a new reportGreen in src/checks/report.ts gets the list. A red run closes the issues of files it passed and keeps the ones it failed.
  • Only the report's own issues — an issue is closed only if it has the full-suite label, the exact title, the repository owner as author, and the report's own opening line (_Filed by the scheduled full-suite report…). That line has been in every report issue since #8247. An issue a person wrote with the same label and title is left alone; a test covers this. The "Red after landing" culprit issue is untouched.

Choices worth checking:

  • Already-proven trees close nothing. If main returns to a tree that already passed, the check answers already proven green without running, so there is no log to read. Closing every report issue then would also close files whose shards never ran.
  • Reading old logs back was ruled out. Getting the files from the earlier proven run would mean reading its log back, which the service's comments say not to do.
  • Not done: I didn't call the keep_plan tool, because it isn't available in this session.

Tests:

  • test/check-verify.test.ts, end to end: a red verification files the issue, then a green push to main gets verified and the issue closes with the comment. Without the change in service.ts this test fails.
  • test/full-suite-report.test.ts, units: red, then green, then a run without the file (which stays open); a red run that passed some files; a person's issue; a run still in progress; and the edge cases of passedFiles.

Checks: bun scripts/gate.ts and bun x tsc --noEmit pass. scripts/fast.ts named 1638 files because the diff touches service.ts, so I ran the 7 files that import the changed modules (check-flake, check-verify, checks, full-suite-report, shards-keep-going, shared-red, verify-after-landing): 130 pass, 0 fail.

🤖 Generated with Claude Code

Closes #9524

commented

When a later full-suite run on main passes a file, the report now closes that file's Full suite red: <file> issue as done. It first comments Green again in the full suite (check run <id>, <short sha>).

  • Which files passed — passedFiles in src/checks/verify.ts reads them from the run's own bun test log. A file counts only if bun printed its header, at least one (pass), and no (fail) anywhere in the log. Its block must also have ended, at the next file header or bun's closing summary. So a file from a shard that never ran isn't in the log and keeps its issue open. A file that was cut off mid-run keeps it open too.
  • Wiring — runTier and check() in src/checks/service.ts hand that list back with the outcome, for a whole verification only. Bisection steps run only some files, so they never close anything. The list is not stored. Next to the existing reportRed call, a new reportGreen in src/checks/report.ts gets the list. A red run closes the issues of files it passed and keeps the ones it failed.
  • Only the report's own issues — an issue is closed only if it has the full-suite label, the exact title, the repository owner as author, and the report's own opening line (_Filed by the scheduled full-suite report…). That line has been in every report issue since #8247. An issue a person wrote with the same label and title is left alone; a test covers this. The "Red after landing" culprit issue is untouched.

Choices worth checking:

  • Already-proven trees close nothing. If main returns to a tree that already passed, the check answers already proven green without running, so there is no log to read. Closing every report issue then would also close files whose shards never ran.
  • Reading old logs back was ruled out. Getting the files from the earlier proven run would mean reading its log back, which the service's comments say not to do.
  • Not done: I didn't call the keep_plan tool, because it isn't available in this session.

Tests:

  • test/check-verify.test.ts, end to end: a red verification files the issue, then a green push to main gets verified and the issue closes with the comment. Without the change in service.ts this test fails.
  • test/full-suite-report.test.ts, units: red, then green, then a run without the file (which stays open); a red run that passed some files; a person's issue; a run still in progress; and the edge cases of passedFiles.

Checks: bun scripts/gate.ts and bun x tsc --noEmit pass. scripts/fast.ts named 1638 files because the diff touches service.ts, so I ran the 7 files that import the changed modules (check-flake, check-verify, checks, full-suite-report, shards-keep-going, shared-red, verify-after-landing): 130 pass, 0 fail.

🤖 Generated with Claude Code

Approved

Does what #9524 asks, scoped tightly: only whole verifications close issues, only report-filed issues (label, exact title, owner author, opening line) are closed, a file must have a header, a pass, no fail and a closed block. A file from a missing shard or a cut-off run stays open. Tests cover red then green then run-without-file, a person-written lookalike, an in-progress run, and an end-to-end path through service.ts. No UI/TUI surface, no README change, no new dependency. Next two things I would do: (1) have an already-proven tree still close issues, by recording passed files with the proven key so a revert-to-green is not silent; (2) add the closing comment link to the run log page so a person can see which log showed the file passing.

Sign in to join this conversation.

↑↓ navigate ↵ open ⌘↵ its app esc close

Keyboard shortcuts

Docs