Skip to content

ci: weekly check for new Kokoro model releases#24

Merged
StuBehan merged 1 commit intomainfrom
ci/kokoro-model-check
Apr 30, 2026
Merged

ci: weekly check for new Kokoro model releases#24
StuBehan merged 1 commit intomainfrom
ci/kokoro-model-check

Conversation

@StuBehan
Copy link
Copy Markdown
Collaborator

Summary

Adds `.github/workflows/check-kokoro-model.yml` — a weekly job that watches `thewh1teagle/kokoro-onnx` for new `model-files-v*` releases. When the upstream tag is ahead of what's pinned in `stackvox/engine.py`, it opens a single labelled `model-upgrade` issue with a maintainer checklist.

Why an issue, not a PR

Model upgrades can change:

  • The ONNX schema → silent runtime breakage
  • The output sample rate → distorted audio
  • The voice roster → downstream code with hardcoded voice names breaks

A blind URL bump could ship broken audio. A maintainer needs to evaluate manually before bumping.

Behaviour

  • Schedule: 09:00 UTC every Monday + `workflow_dispatch` for manual runs.
  • Idempotent: if a `model-upgrade` issue is already open, the next run won't open a second one.
  • Self-bootstrapping label: `gh label create --force model-upgrade ...` runs first so the workflow doesn't fail on a missing label.
  • Filter for model-files-v* tags: kokoro-onnx publishes both Python-package (`v*`) and model-file (`model-files-v*`) releases; we only care about the latter.
  • Permissions are minimal: `contents: read` + `issues: write`.
  • Failure mode: if engine.py contains zero or multiple distinct `model-files-v*` references, the workflow fails fast (so the two URLs can't silently drift).

Heads-up

stackvox is currently pinned to `model-files-v1.0`. Upstream has `model-files-v1.1` already published. The first run of this workflow will open a real upgrade issue — that's expected, not a bug. Treat it as the first natural test of the pipeline.

Test plan

  • CI's `Validate PR title` and `commit message lint` pass.
  • After merge: trigger via `gh workflow run check-kokoro-model.yml` from the Actions tab. Expect: a new `model-upgrade` issue titled "Kokoro model upgrade available: model-files-v1.0 → model-files-v1.1".
  • Run it again with that issue open. Expect: workflow logs "an open model-upgrade issue already exists" and exits without opening a duplicate.
  • Once the model URL bump lands and the issue is closed, next run logs "stackvox is pinned to the latest upstream model release".

Adds a workflow that watches thewh1teagle/kokoro-onnx for new
`model-files-v*` releases. When the upstream tag is ahead of what's
pinned in stackvox/engine.py, opens a single labelled `model-upgrade`
issue with a maintainer checklist (URL bump, filename check, voice
roster diff, sample-rate sanity, smoke test).

Schedule: 09:00 UTC every Monday + workflow_dispatch.

Deliberately opens an issue, not a PR. Model upgrades can change the
ONNX schema, sample rate, or voice roster — a blind URL bump could
ship broken audio. Maintainer evaluates manually.

Idempotent: skips creation when a model-upgrade issue is already open,
so the weekly run won't pile up duplicates.

Notes:
 - kokoro-onnx publishes both Python-package (`v*`) and model-file
   (`model-files-v*`) releases. The action filters for the latter so
   package releases don't trigger false positives.
 - The version regex matches multiple identical hits in engine.py
   (one for the model URL, one for the voices URL) and de-dupes; if
   the two URLs ever drift to different tags, the workflow fails fast
   and a maintainer notices.
 - Pinned actions to SHAs per StackOne security policy. `gh` CLI is
   pre-installed on Ubuntu runners, no SHA needed.

Heads-up: upstream is currently at model-files-v1.1, stackvox is
pinned to model-files-v1.0 — the first run of this workflow will
open a real upgrade issue.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@StuBehan StuBehan merged commit f62c91b into main Apr 30, 2026
9 checks passed
StuBehan added a commit that referenced this pull request Apr 30, 2026
…26)

The original tag-name-only filter shipped in #24 would have flagged
`model-files-v1.1` as an upgrade candidate even though that release
ships only a Mandarin variant (`kokoro-v1.1-zh.onnx` /
`voices-v1.1-zh.bin`). Bumping engine.py URLs to it would silently
swap the multilingual model for a Chinese-focused one.

Tightens the jq filter to require both `kokoro-vX.Y.onnx` and
`voices-vX.Y.bin` assets to be present in the release before treating
it as a successor. With this in place the workflow currently resolves
`model-files-v1.0` (== pinned) and reports up-to-date, as it should.
A future general release (with non-suffixed asset names) will surface
correctly.

This was meant to land as a follow-up commit on #24 but the squash
merge captured only the first commit on that branch. Filing as its
own PR.

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
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.

1 participant