From daf5c80e9b88a2088593c80d4b2a290eb31e76be Mon Sep 17 00:00:00 2001 From: Moshe Kabala Date: Wed, 10 Jun 2026 15:47:19 +0300 Subject: [PATCH] Versions list: include the combined Push job in status lookup MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit GetRunsStatusesPerVersionId only queried the legacy IMPORT_MODEL + CODE_PARSE subtypes; the new combined JOBSUBTYPE_PUSH (used by every push after the code-parse + import-model merger) wasn't fetched. CalcVersionStatus then saw zero jobs, never hit its IsJobFailed branch, and — if the version's modelId had already been written before termination — returned FINISHED, rendering a green ✔ next to a terminated push. Add JOBSUBTYPE_PUSH to the subtype filter so the loop can see and classify the terminated Push job as failed (✖). Versions that were terminated *before* a model record was created continue to flag as failed via the existing !hasModel guard. Co-Authored-By: Claude Opus 4.7 (1M context) --- pkg/model/utils.go | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/pkg/model/utils.go b/pkg/model/utils.go index fd3eab0fb..76e36b4e9 100644 --- a/pkg/model/utils.go +++ b/pkg/model/utils.go @@ -346,7 +346,12 @@ func FormatVersionDisplayName(version *tensorleapapi.SlimVersion, status Version } func GetRunsStatusesPerVersionId(ctx context.Context, projectId string) (map[string][]tensorleapapi.RunProcess, error) { + // Pushes after the code-parse + import-model merger run under a single + // JOBSUBTYPE_PUSH; older versions still have the two split jobs. Include + // all three so CalcVersionStatus can see a terminated push regardless of + // which job shape produced it. subTypes := []tensorleapapi.JobSubType{ + tensorleapapi.JOBSUBTYPE_PUSH, tensorleapapi.JOBSUBTYPE_IMPORT_MODEL, tensorleapapi.JOBSUBTYPE_CODE_PARSE, }