[PR #15] [CLOSED] ci: auto-heal spec-sync PRs by regenerating the models #22

Closed
opened 2026-10-26 22:40:44 +00:00 by bsakaguchi · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/Comfy-Org/comfy-python-sdk/pull/15
Author: @wei-hai
Created: 7/23/2026
Status: ❌ Closed

Base: main ← Head: ci/spec-sync-autoheal


📝 Commits (1)

  • 1a656ed ci: auto-heal spec-sync PRs by regenerating the client

📊 Changes

1 file changed (+74 additions, -0 deletions)

View changed files

➕ .github/workflows/sync-autoheal.yml (+74 -0)

📄 Description

What

Adds a Sync spec auto-heal workflow that eliminates the manual generate step on the automated spec-sync PRs.

Why

The spec-sync automation opens a PR that updates only the vendored spec/openapi.yaml, not the generated client. The drift check then fails on every sync PR until a maintainer checks out the branch, regenerates, and commits. This makes that automatic.

How

  • Triggers only on chore/sync-v2-spec-* branches (ordinary PRs untouched).
  • Regenerates the low layer and, if it changed, commits and pushes back onto the PR branch — so CI re-runs and the drift check goes green.
  • No drift ⇒ nothing pushed ⇒ cannot loop.
  • Push uses a SPEC_SYNC_TOKEN secret (contents:write) instead of the default GITHUB_TOKEN, because a GITHUB_TOKEN push does not re-trigger required checks (GitHub's recursive-run guard). Workflow-level permissions stay contents: read.

Setup required

Add a SPEC_SYNC_TOKEN repo secret — a fine-grained PAT (or app token) with contents:write on this repo. Until it exists, the job fails fast with an actionable message and nothing else changes.

Verified

Hygiene scanner + YAML parse pass. The regen command mirrors the drift check exactly (byte-for-byte), so it produces precisely what the check expects.

🤖 Generated with Claude Code


🔄 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-python-sdk/pull/15 **Author:** [@wei-hai](https://github.com/wei-hai) **Created:** 7/23/2026 **Status:** ❌ Closed **Base:** `main` ← **Head:** `ci/spec-sync-autoheal` --- ### 📝 Commits (1) - [`1a656ed`](https://github.com/Comfy-Org/comfy-python-sdk/commit/1a656ed04852cad90b0adcc354b7ce8370045f6d) ci: auto-heal spec-sync PRs by regenerating the client ### 📊 Changes **1 file changed** (+74 additions, -0 deletions) <details> <summary>View changed files</summary> ➕ `.github/workflows/sync-autoheal.yml` (+74 -0) </details> ### 📄 Description ## What Adds a `Sync spec auto-heal` workflow that eliminates the manual `generate` step on the automated spec-sync PRs. ## Why The spec-sync automation opens a PR that updates only the vendored `spec/openapi.yaml`, not the generated client. The drift check then fails on **every** sync PR until a maintainer checks out the branch, regenerates, and commits. This makes that automatic. ## How - Triggers only on `chore/sync-v2-spec-*` branches (ordinary PRs untouched). - Regenerates the low layer and, if it changed, commits and pushes back onto the PR branch — so CI re-runs and the drift check goes green. - No drift ⇒ nothing pushed ⇒ cannot loop. - Push uses a `SPEC_SYNC_TOKEN` secret (contents:write) instead of the default `GITHUB_TOKEN`, because a `GITHUB_TOKEN` push does not re-trigger required checks (GitHub's recursive-run guard). Workflow-level permissions stay `contents: read`. ## Setup required Add a `SPEC_SYNC_TOKEN` repo secret — a fine-grained PAT (or app token) with `contents:write` on this repo. Until it exists, the job fails fast with an actionable message and nothing else changes. ## Verified Hygiene scanner + YAML parse pass. The regen command mirrors the drift check exactly (byte-for-byte), so it produces precisely what the check expects. 🤖 Generated with [Claude Code](https://claude.com/claude-code) --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
bsakaguchi 2026-10-26 22:40:44 +00:00
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-python-sdk#22
No description provided.