[PR #210] feat(backport-checker): distinguish merged from released #210

Open
opened 2026-10-27 21:10:39 +00:00 by bsakaguchi · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/Comfy-Org/Comfy-PR/pull/210
Author: @christian-byrne
Created: 7/30/2026
Status: 🔄 Open

Base: main ← Head: cb__backport-checker-released-status


📝 Commits (3)

  • b014732 feat(backport-checker): distinguish merged from released
  • ba208ce fix(backport-checker): verify published releases
  • 5fb4e9d fix(backport-checker): scope isTagOnLine to the tag's core/cloud prefix

📊 Changes

3 files changed (+218 additions, -3 deletions)

View changed files

📝 app/tasks/gh-frontend-backport-checker/index.ts (+106 -3)
➕ app/tasks/gh-frontend-backport-checker/releasedStatus.spec.ts (+62 -0)
➕ app/tasks/gh-frontend-backport-checker/releasedStatus.ts (+50 -0)

📄 Description

The checker marks a bugfix completed the moment its backport merges onto the release branch. That is precisely the state that misled us last week.

#14065 merged onto core/1.47 nineteen hours after v1.47.10 was tagged. The checker said completed, ComfyUI pinned 1.47.10, and the fix reached nobody for a week while five users reported the bug it had already fixed.

Change

  • Resolve which tag, if any, actually contains each backported commit
  • New merged-unreleased status, rendered in the Slack report as "Merged, not released"
  • completed now means a published tag carries it

A backport is a cherry-pick, so the source commit never appears on the release branch. Containment is tested against the backport PR's own merge_commit_sha; testing the source SHA would have reported every backport as unreleased.

Notes

New logic is a separate pure module (releasedStatus.ts) with an imported spec, written test-first. The existing spec re-declares its regexes locally rather than importing them, so it cannot catch drift in the real values. Worth fixing separately.

Release-line matching is exact or dot-delimited, so core/1.4 cannot match v1.40.0. Failed comparisons log a warning rather than silently counting as unreleased, since a false "not shipped" is the worst outcome for this check. listTags is cached per repo instead of refetched per commit per branch.

The blocking guard for this failure mode lives in ComfyUI_frontend CI (Comfy-Org/ComfyUI_frontend#14429) rather than here, since a safety check should not depend on a long-running bot process. This change is the visibility half.


🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.

## 📋 Pull Request Information **Original PR:** https://github.com/Comfy-Org/Comfy-PR/pull/210 **Author:** [@christian-byrne](https://github.com/christian-byrne) **Created:** 7/30/2026 **Status:** 🔄 Open **Base:** `main` ← **Head:** `cb__backport-checker-released-status` --- ### 📝 Commits (3) - [`b014732`](https://github.com/Comfy-Org/Comfy-PR/commit/b014732e418e62b7d02c02cdef1b71a7eb0bfb81) feat(backport-checker): distinguish merged from released - [`ba208ce`](https://github.com/Comfy-Org/Comfy-PR/commit/ba208ced7b7ede80e8fa7597bcf14e4adf4f25df) fix(backport-checker): verify published releases - [`5fb4e9d`](https://github.com/Comfy-Org/Comfy-PR/commit/5fb4e9dd40c91651a214cee72529810a44edc36e) fix(backport-checker): scope isTagOnLine to the tag's core/cloud prefix ### 📊 Changes **3 files changed** (+218 additions, -3 deletions) <details> <summary>View changed files</summary> 📝 `app/tasks/gh-frontend-backport-checker/index.ts` (+106 -3) ➕ `app/tasks/gh-frontend-backport-checker/releasedStatus.spec.ts` (+62 -0) ➕ `app/tasks/gh-frontend-backport-checker/releasedStatus.ts` (+50 -0) </details> ### 📄 Description The checker marks a bugfix `completed` the moment its backport merges onto the release branch. That is precisely the state that misled us last week. #14065 merged onto `core/1.47` nineteen hours after `v1.47.10` was tagged. The checker said completed, ComfyUI pinned `1.47.10`, and the fix reached nobody for a week while five users reported the bug it had already fixed. ## Change - Resolve which tag, if any, actually contains each backported commit - New `merged-unreleased` status, rendered in the Slack report as "Merged, not released" - `completed` now means a published tag carries it A backport is a cherry-pick, so the source commit never appears on the release branch. Containment is tested against the backport PR's own `merge_commit_sha`; testing the source SHA would have reported every backport as unreleased. ## Notes New logic is a separate pure module (`releasedStatus.ts`) with an imported spec, written test-first. The existing spec re-declares its regexes locally rather than importing them, so it cannot catch drift in the real values. Worth fixing separately. Release-line matching is exact or dot-delimited, so `core/1.4` cannot match `v1.40.0`. Failed comparisons log a warning rather than silently counting as unreleased, since a false "not shipped" is the worst outcome for this check. `listTags` is cached per repo instead of refetched per commit per branch. The blocking guard for this failure mode lives in ComfyUI_frontend CI (Comfy-Org/ComfyUI_frontend#14429) rather than here, since a safety check should not depend on a long-running bot process. This change is the visibility half. --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
Comfy-Org/Comfy-PR#210
No description provided.