Skip to content

fix: address Bugbot round-5 findings on the release (doctor ready, task label, e2e gate)#383

Merged
LukasWodka merged 3 commits into
developfrom
fix/release-bugbot-round5
Jul 21, 2026
Merged

fix: address Bugbot round-5 findings on the release (doctor ready, task label, e2e gate)#383
LukasWodka merged 3 commits into
developfrom
fix/release-bugbot-round5

Conversation

@LukasWodka

@LukasWodka LukasWodka commented Jul 21, 2026

Copy link
Copy Markdown
Contributor

Summary

The three Medium findings from Bugbot's re-scan of release PR #377 (head 685cf0b):

  1. doctor: summarizeDoctor only special-cased Node capacity Fail, so a can't-check Warn (RESOURCE_REQUESTS unreadable / nodes unlistable) fell through to ✔ Ready to run training — readiness asserted without a capacity probe. Can't-check now rolls up to the honest · can't-check line (mirroring the Pod-health list-failure case); the GPU-soft Warn intentionally stays Ready (CPU fallback).
  2. data list: applyTaskLabels used MAX(task) — a lexicographic max, so --overwrite with a different --task could keep the old grouping. Now picks the task of the latest run (join on MAX(started_at) per table; started_at ships in the journal's CREATE, and a missing column just degrades to the existing inferred-modality path).
  3. e2e workflow: if the PR paths probe fails, its outputs read empty and unlabeled PRs skipped both suites — fail-open. The gates now also run on needs.changes.result == 'failure' (fail closed).

Related

Ref #377 — Bugbot round 5. Threads answered there.

Type of change

  • Bug fix

Test plan

Checklist

  • Tests added / updated and passing locally
  • go build ./..., go vet, and the Lint job's checks pass locally
  • Terminal output follows STYLE.md — bash scripts/check-style.sh passes
  • No secrets / credentials in the diff

🤖 Generated with Claude Code


Note

Low Risk
Targeted bug fixes in doctor messaging, a MySQL label query, and CI job conditions; no auth, secrets, or core training paths changed.

Overview
Addresses three Bugbot findings on release readiness: honest doctor rollups, correct data list task labels, and a safer e2e pre-merge gate.

tracebloc doctor no longer shows ✔ Ready to run training when Node capacity is only a Warn because capacity could not be verified (unlistable nodes or unreadable RESOURCE_REQUESTS). Those cases now roll up to a neutral couldn't check free compute line, matching the existing Pod-health list-failure behavior. GPU-soft capacity Warns still count as ready (CPU fallback).

data list task enrichment now uses the latest ingest run per table (MAX(started_at) join) instead of MAX(task), so re-ingest with --overwrite and a different --task is not stuck on the old lexicographic task string.

Integration e2e (integration and delete-teardown) now also run when the PR changes paths job fails, so a broken probe does not skip both suites with empty outputs (fail-closed).

Tests cover the new doctor rollups (can't-check → Unknown; GPU-soft → still Ready).

Reviewed by Cursor Bugbot for commit 8e8bf8e. Bugbot is set up for automated code reviews on this repo. Configure here.

LukasWodka and others added 3 commits July 21, 2026 16:39
…acity probe

checkNodeFit's StatusWarn covers two different situations: a can't-check
(RESOURCE_REQUESTS unreadable, nodes unlistable) and the soft GPU
fallback. The rollup only special-cased StatusFail, so a can't-check
Warn fell through to ✔ Ready — the same false-green class already
special-cased for Pod-health list failures. Can't-check now rolls up to
the honest · can't-check line; the GPU-soft Warn stays Ready (CPU
fallback).

Bugbot round 5 on the release PR (#377).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
MAX(task) is a lexicographic string max: after --overwrite with a
different --task, data list could keep grouping the dataset under the
old task. Join on MAX(started_at) per table instead — started_at ships
in the same DDL that creates the journal, so it exists whenever the
table does; on a missing column the query errors and the listing
degrades to inferred modality (existing best-effort path).

Bugbot round 5 on the release PR (#377).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The suite gates used !cancelled() + the probe's outputs; when the
changes job itself fails, outputs read empty and unlabeled PRs skipped
both suites — a flaky detector silently dropped the pre-merge e2e gate
this workflow restores. Run the suites on needs.changes.result ==
'failure'.

Bugbot round 5 on the release PR (#377).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@LukasWodka LukasWodka self-assigned this Jul 21, 2026
@LukasWodka
LukasWodka requested a review from saadqbal July 21, 2026 14:39
@LukasWodka

Copy link
Copy Markdown
Contributor Author

bugbot run

@cursor cursor 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.

✅ Bugbot reviewed your changes and found no new issues!

Comment @cursor review or bugbot run to trigger another review on this PR

Reviewed by Cursor Bugbot for commit 8e8bf8e. Configure here.

@LukasWodka
LukasWodka merged commit 716891f into develop Jul 21, 2026
26 checks passed
@LukasWodka
LukasWodka deleted the fix/release-bugbot-round5 branch July 21, 2026 14:44
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.

2 participants