Skip to content

ci: channel-compat — run the unit tests on the OVOS distro release channels - #504

Open
JarbasAl wants to merge 2 commits into
devfrom
ci/channel-compat
Open

ci: channel-compat — run the unit tests on the OVOS distro release channels#504
JarbasAl wants to merge 2 commits into
devfrom
ci/channel-compat

Conversation

@JarbasAl

@JarbasAl JarbasAl commented Aug 1, 2026

Copy link
Copy Markdown
Member

Adds a thin caller for the new channel-compat reusable workflow: run this repo's unit tests against the package versions an OVOS distro release channel pins, instead of against current dev siblings.

Why

Every gate this repo has looks at the dev edge. None of them looks at what the fleet runs.

The distro publishes one constraints file per channel, and they sit a long way below dev:

Channel ovos-workshop ovos-core ovos-bus-client ovos-padatious
stable >=3.4.0,<3.5.0 >=1.3.1,<1.4.0 >=1.3.4,<1.4.0 >=1.4.2,<1.5.0
testing >=7.0.6,<8.0.0 >=2.1.1,<3.0.0 >=1.3.7,<2.0.0 >=1.4.3,<2.0.0

A change can be green on dev and still break every device on stable. Nothing catches that today.

Three layers, one program

Layer Question it answers
Boundary pins Where did the behavior change? The exact releases either side of one break, so a red cell names the commit range.
Channels (this PR) What does the fleet run today? Pins come from the distro's own constraints files, fetched live, so the gate moves the day the distro moves.
Dev edge Where is the stack going? The existing build/e2e jobs.

Each is useless alone. A boundary pin tells you nothing about whether anyone is on the far side of it. A channel run tells you a clause fails but not since when. Together they qualify a breakage: which behavior, which versions, how many devices.

What this PR does

One matrix, two cells (stable, testing), calling OpenVoiceOS/gh-automations/.github/workflows/channel-compat.yml@dev. The reusable workflow fetches the constraints live, installs every dependency at channel versions, installs this repo from the PR checkout (its own version wins over the channel's published copy — the PR is the thing being judged), and runs the tests. The fetched constraints and a pip freeze are uploaded as artifacts, because a run that goes red weeks later cannot be reproduced from the URL.

Also runs weekly on a schedule: the channels move on the distro's calendar, not on this repo's, and a pin bump would otherwise go unnoticed until the next PR.

Advisory for now

soft_fail: true. A channel is behind dev by construction, so the first runs are expected to fail a pile of tests — that is the finding, not a broken job. Turn it off once the baseline is established, the same way ovos-test-harness#16 did it: check in a per-channel known-gap file, strict-xfail exactly those node ids, and let anything else be red. Known gaps stay visible and green; new breakage is red; a gap the channel has since closed is red too, as the cue to delete the line.

(continue-on-error cannot be used here — GitHub rejects it on a job that calls a reusable workflow — so the advisory mode is an input on the reusable workflow.)

Related


Implemented by Claude (opus), orchestrated by Claude Fable.

🤖 Generated with Claude Code

Adds a thin caller for the gh-automations channel-compat reusable workflow:
a stable and a testing cell, each installing the dependency tree at the
versions that channel pins and running test/unittests against it. Advisory
(soft_fail) until a known-gap baseline exists.
@coderabbitai

coderabbitai Bot commented Aug 1, 2026

Copy link
Copy Markdown
Contributor

Warning

Review limit reached

@JarbasAl, you've reached your PR review limit, so we couldn't start this review.

Next review available in: 39 minutes

Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available.
You're only billed for reviews past your plan's rate limits ($0.25/file).

How can I continue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews.

How do review limits work?

CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability.

For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window.

Please refer docs for additional details.

Review details
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: ab2084ab-5b6e-465b-8820-136d92deb3b3

📥 Commits

Reviewing files that changed from the base of the PR and between aa95bc4 and df5a946.

📒 Files selected for processing (1)
  • .github/workflows/channel_compat.yml

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@github-actions

github-actions Bot commented Aug 1, 2026

Copy link
Copy Markdown
Contributor

Tada! The results of the latest automation run are here. 🎉

I've aggregated the results of the automated checks for this PR below.

📋 Repo Health

Scanning for any signs of repository fatigue. 😫

✅ All required files present.

Latest Version: 9.3.2a2

ovos_workshop/version.py — Version file
README.md — README
LICENSE — License file
pyproject.toml — pyproject.toml
⚠️ setup.py — setup.py
CHANGELOG.md — Changelog
ovos_workshop/version.py has valid version block markers

🔒 Security (pip-audit)

Verifying the integrity of our digital supply chain. ⛓️

✅ No known vulnerabilities found (74 packages scanned).

🔍 Lint

The automated pipeline is running smoothly. 🚂

ruff: issues found — see job log

🔨 Build Tests

The build report has been filed and is ready. 📁

✅ All versions pass

Python Build Install Tests
3.10
3.11
3.12
3.13
3.14

⚖️ License Check

Scanning for any 'no-derivatives' clauses. 🚫

✅ No license violations found.

Policy: Apache 2.0 (universal donor). StrongCopyleft / NetworkCopyleft / WeakCopyleft / Other / Error categories fail. MPL allowed.

📡 Channel Compat — stable

Evaluating the overall progress of your contribution. 📉

🚧 Channel unresolvable with this checkout — the repo's dependency floors exceed what the channel pins (fleet finding; see the install log).

Constraints: https://raw.githubusercontent.com/OpenVoiceOS/OpenVoiceOS/main/constraints-stable.txt
Resolved stack: channel-compat-stable artifact (constraints + pip freeze).

📡 Channel Compat — testing

Just a quick heads-up on the latest check. 🛎️

🚧 Channel unresolvable with this checkout — the repo's dependency floors exceed what the channel pins (fleet finding; see the install log).

Constraints: https://raw.githubusercontent.com/OpenVoiceOS/OpenVoiceOS/main/constraints-testing.txt
Resolved stack: channel-compat-testing artifact (constraints + pip freeze).


From the digital workshop of OpenVoiceOS. 🛠️

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@JarbasAl
JarbasAl marked this pull request as ready for review August 1, 2026 18:01
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