Skip to content

ci: check the alpha channel strictly and drop the unresolvable rows - #974

Draft
JarbasAl wants to merge 1 commit into
devfrom
ci/channel-compat-alpha-row
Draft

ci: check the alpha channel strictly and drop the unresolvable rows#974
JarbasAl wants to merge 1 commit into
devfrom
ci/channel-compat-alpha-row

Conversation

@JarbasAl

@JarbasAl JarbasAl commented Sep 9, 2026

Copy link
Copy Markdown
Member

🤖 Auto-generated by Claude Opus 5 (claude-opus-5) via Claude Code — NOT human-reviewed. Verify before acting.

Channel Compat checks the alpha channel, strictly, and nothing else. CI-only change.

What the removed rows were for, and where that coverage lives

The stable and testing rows asked "does a change that is green on dev still work on the
versions the fleet actually runs". That question is real and it still needs answering. It is
answered in ovos-test-harness, which installs each channel's own stack rather than this
repository against a constraints file, and records the known gaps per channel in
test/channel_gaps/ (269 node ids on stable, 184 on testing) so anything outside the
recorded set turns the job red.

Do not reinstate these rows as "missing compat checks". They cannot work in this shape,
for a structural reason given below.

Why they cannot work here

A channel job installs this repository into one virtual environment alongside the channel's
pins. A released channel caps the very siblings dev already requires, so the resolve is
impossible:

Because ovos-core==3.5.2a1 depends on ovos-workshop>=9.6.9a1,<10.0.0
and ovos-workshop>=3.4.0,<3.5.0, we can conclude that ovos-core==3.5.2a1
cannot be used.

Both rows died there on every run and reported green, because soft_fail converted the
failure into a pass. They were not weak coverage; they were a green check for a comparison
that never ran, and no known-gap file could help because nothing was ever collected.

The harness avoids this by installing the channel's stack instead of this repository, which
is why the coverage belongs there and not here.

Why alpha is strict

Alpha sits at or ahead of dev, so it resolves and runs, and it is the channel the spec lands
in. A spec-adoption change that only works against current dev siblings has to fail
somewhere, and this is that place. The alpha constraints pin ovos-spec-tools>=1.12.0a1,
the first release whose migration map carries the OVOS-FALLBACK-1 renames, which is exactly
the kind of floor this row exists to hold.

Verification

The strict alpha row ran green in this repository's own CI. Locally, against
constraints-alpha.txt fetched from the same URL with the same extras: 618 passed, 39
subtests, resolving ovos-bus-client 2.11.15a1 and ovos-spec-tools 1.12.0a1.

The matching change for ovos-workshop is in OpenVoiceOS/ovos-workshop#625.

@coderabbitai

coderabbitai Bot commented Sep 9, 2026

Copy link
Copy Markdown

Important

Draft PR not reviewed

Draft PRs are not automatically reviewed by default.

  • Trigger a manual review

To automatically review draft PRs, update your CodeRabbit configuration:

reviews:
  auto_review:
    drafts: true

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 Sep 9, 2026

Copy link
Copy Markdown

Stand by... check results incoming! 📡

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

📋 Repo Health

Evaluating the longevity of the project. 🌳

✅ All required files present.

Latest Version: 3.5.2a1

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

🏷️ Release Preview

Coming soon to a stable branch near you! 📽️

Current: 3.5.2a1Next: 3.5.2a2

Signal Value
Label (none)
PR title ci: check the alpha channel strictly and drop the unresolvable rows
Bump alpha

✅ PR title follows conventional commit format.


🚀 Release Channel Compatibility

Predicted next version: 3.5.2a2

Channel Status Note Current Constraint
Stable Too new (must be <1.4.0) ovos-core>=1.3.1,<1.4.0
Testing Too new (must be <3.0.0) ovos-core>=2.1.1,<3.0.0
Alpha Compatible ovos-core>=2.2.4a1

📡 Channel Compat — stable

Checking if we've met all our check criteria. ✅

🚧 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).

📚 Docs

Analysis complete! Check out the details below. 📊

✅ All required documentation files present.

README.md

🌍 Locale Build

Here's the lowdown on the latest automated check. 📉

✅ Locale properly configured (65 files, 18 languages)

Locale directories found:

  • ovos_core/intent_services/locale

Localization coverage:

  • ovos_core/intent_services/locale: 65 files in 18 languages (pt-br, it-it, gl-es, de-de, pt-pt...)

pyproject.toml:[tool.setuptools.package-data.ovos_core] includes locale

  • intent_services/locale/*/*.voc

Build manifest: ✅ 32 locale files included in package

📡 Channel Compat — testing

Analysis complete! Check out the details below. 📊

🚧 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).

🔒 Security (pip-audit)

Checking for any insecure data transmissions. 📡

✅ No known vulnerabilities found (113 packages scanned).

🔎 Type Check

I've checked the vitals of this contribution. 🩺

mypy: 367 error(s) found

test/unittests/test_main.py:13:1: error: Skipping analyzing "ovos_bus_client": module is installed, but missing library stubs or py.typed marker [import-untyped]

Errors (showing first 10/367)
test/unittests/test_skill/__init__.py:15:1: error: Skipping analyzing "ovos_workshop.skills.ovos": module is installed, but missing library stubs or py.typed marker  [import-untyped]
test/end2end/conftest.py:10:1: error: Cannot find implementation or library stub for module named "pytest"  [import-not-found]
ovos_core/transformers.py:3:1: error: Skipping analyzing "ovos_config": module is installed, but missing library stubs or py.typed marker  [import-untyped]
ovos_core/transformers.py:4:1: error: Skipping analyzing "ovos_plugin_manager.intent_transformers": module is installed, but missing library stubs or py.typed marker  [import-untyped]
ovos_core/transformers.py:5:1: error: Skipping analyzing "ovos_plugin_manager.metadata_transformers": module is installed, but missing library stubs or py.typed marker  [import-untyped]
ovos_core/transformers.py:6:1: error: Skipping analyzing "ovos_plugin_manager.templates.transformers": module is installed, but missing library stubs or py.typed marker  [import-untyped]
ovos_core/transformers.py:7:1: error: Skipping analyzing "ovos_plugin_manager.text_transformers": module is installed, but missing library stubs or py.typed marker  [import-untyped]
ovos_core/transformers.py:8:1: error: Skipping analyzing "ovos_plugin_manager.transformer_services": module is installed, but missing library stubs or py.typed marker  [import-untyped]
ovos_core/transformers.py:13:1: error: Skipping analyzing "ovos_plugin_manager.typed_slots_transformers": module is installed, but missing library stubs or py.typed marker  [import-untyped]
ovos_core/transformers.py:14:1: error: Skipping analyzing "ovos_utils.log": module is installed, but missing library stubs or py.typed marker  [import-untyped]

🔌 Plugin Detection

Checking for any potential plugin conflicts. ⚔️

Plugin Status: ERRORS (1)

Plugin Info:

  • Name: ovos-core
  • Description: The spiritual successor to Mycroft AI, OVOS is flexible voice assistant software that can be run almost anywhere!

OPM Detection:

Plugin Type Wheel Editable
pipeline

Entry Point Validation:

Entry Point Type Import Interface
ovos-converse-pipeline-plugin pipeline ✅ 1459ms
ovos-fallback-pipeline-plugin pipeline ✅ 2ms
ovos-stop-pipeline-plugin pipeline ✅ 106ms

⊘ No settingsmeta.json
requires-python >=3.10 — running Python 3.11

Issues:

  • ❌ Import time for ovos-converse-pipeline-plugin exceeds 500ms (1459ms)
  • ⚠️ No settingsmeta.json found
  • ⚠️ No settingsmeta.json found

📡 Channel Compat — alpha

The latest findings are now at your fingertips. ⌨️

✅ Test suite passes on the alpha channel.

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

📊 Coverage

Measuring the depth of our automated validation. 🌊

⚠️ 74.3% total coverage

Files below 80% coverage (10 files)
File Coverage Missing lines
ovos_core/__init__.py 0.0% 7
ovos_core/intent_services/__init__.py 0.0% 1
ovos_core/version.py 0.0% 18
ovos_core/transformers.py 50.0% 32
ovos_core/skill_installer.py 50.4% 134
ovos_core/intent_services/working_session.py 60.3% 23
ovos_core/skill_manager.py 63.3% 160
ovos_core/__main__.py 69.0% 9
ovos_core/intent_services/dispatcher.py 73.3% 35
ovos_core/intent_services/service.py 76.6% 135

Full report: download the coverage-report artifact.

🔨 Build Tests

A thorough inspection of the build process. 🔍

✅ All versions pass

Python Build Install Tests
3.10
3.11
3.12
3.13
3.14

🔌 Skill Tests (ovoscope)

Simulating real-world interactions with your skill. 🤖

18/42 passed

TestActiveHandlersOnlyIsNotPolled — 1/1

❌ **TestAdaptIntent** — 0/4
Test Result
test_intent_blacklist ❌ subtests passed
test_padatious_no_match ❌ subtests passed
test_adapt_match ❌ subtests passed
test_skill_blacklist ❌ subtests passed

test_intent_blacklist failure:

[gw1] linux -- Python 3.11.16 /opt/hostedtoolcache/Python/3.11.16/x64/bin/python

test_padatious_no_match failure:

[gw2] linux -- Python 3.11.16 /opt/hostedtoolcache/Python/3.11.16/x64/bin/python

test_adapt_match failure:

[gw2] linux -- Python 3.11.16 /opt/hostedtoolcache/Python/3.11.16/x64/bin/python
❌ **TestCancelIntentMidSentence** — 0/1
Test Result
test_cancel_match ❌ subtests passed

test_cancel_match failure:

[gw0] linux -- Python 3.11.16 /opt/hostedtoolcache/Python/3.11.16/x64/bin/python
✅ **TestCompletionSyncE2E** — 3/3 ✅ **TestContext1EndToEndReachability** — 3/3
❌ **TestConverse** — 0/1
Test Result
test_parrot_mode ❌ subtests passed

test_parrot_mode failure:

[gw1] linux -- Python 3.11.16 /opt/hostedtoolcache/Python/3.11.16/x64/bin/python
❌ **TestDeactivate** — 2/3
Test Result
test_activate ✅ passed
test_deactivate_inside_converse ❌ subtests passed
test_deactivate ✅ passed

test_deactivate_inside_converse failure:

[gw2] linux -- Python 3.11.16 /opt/hostedtoolcache/Python/3.11.16/x64/bin/python
❌ **TestFallback** — 0/1
Test Result
test_fallback_match ❌ subtests passed

test_fallback_match failure:

[gw0] linux -- Python 3.11.16 /opt/hostedtoolcache/Python/3.11.16/x64/bin/python
✅ **TestGGWaveSkillInstall** — 2/2 ✅ **TestGlobalStopSpec** — 1/1
❌ **TestIntentPipelineRouting** — 0/4
Test Result
test_blacklisted_skill_falls_through_to_failure ❌ subtests passed
test_padatious_intent_matched ❌ subtests passed
test_no_match_produces_intent_failure ❌ subtests passed
test_high_priority_stage_handles_before_low ❌ subtests passed

test_blacklisted_skill_falls_through_to_failure failure:

[gw3] linux -- Python 3.11.16 /opt/hostedtoolcache/Python/3.11.16/x64/bin/python

test_padatious_intent_matched failure:

[gw1] linux -- Python 3.11.16 /opt/hostedtoolcache/Python/3.11.16/x64/bin/python

test_no_match_produces_intent_failure failure:

[gw3] linux -- Python 3.11.16 /opt/hostedtoolcache/Python/3.11.16/x64/bin/python
❌ **TestLangDisambiguation** — 0/4
Test Result
test_lang_text_detection ❌ subtests passed
test_stt_lang ❌ subtests passed
test_metadata_preferred_over_text_detection ❌ subtests passed
test_invalid_lang_detection ❌ subtests passed

test_lang_text_detection failure:

[gw3] linux -- Python 3.11.16 /opt/hostedtoolcache/Python/3.11.16/x64/bin/python

test_stt_lang failure:

[gw1] linux -- Python 3.11.16 /opt/hostedtoolcache/Python/3.11.16/x64/bin/python

test_metadata_preferred_over_text_detection failure:

[gw2] linux -- Python 3.11.16 /opt/hostedtoolcache/Python/3.11.16/x64/bin/python
✅ **TestLegacyGlobalStop** — 1/1
❌ **TestLegacyIntentIdBackCompat** — 0/2
Test Result
test_legacy_blacklist_id_suppresses ❌ subtests passed
test_legacy_dispatch_topic_fires_handler ❌ subtests passed

test_legacy_blacklist_id_suppresses failure:

[gw0] linux -- Python 3.11.16 /opt/hostedtoolcache/Python/3.11.16/x64/bin/python

test_legacy_dispatch_topic_fires_handler failure:

[gw0] linux -- Python 3.11.16 /opt/hostedtoolcache/Python/3.11.16/x64/bin/python
✅ **TestLegacyTargetedStop** — 1/1
❌ **TestNoSkills** — 0/2
Test Result
test_complete_failure ❌ subtests passed
test_routing ❌ subtests passed

test_complete_failure failure:

[gw2] linux -- Python 3.11.16 /opt/hostedtoolcache/Python/3.11.16/x64/bin/python

test_routing failure:

[gw1] linux -- Python 3.11.16 /opt/hostedtoolcache/Python/3.11.16/x64/bin/python
❌ **TestPadatiousIntent** — 0/4
Test Result
test_skill_blacklist ❌ subtests passed
test_padatious_match ❌ subtests passed
test_adapt_no_match ❌ subtests passed
test_intent_blacklist ❌ subtests passed

test_skill_blacklist failure:

[gw2] linux -- Python 3.11.16 /opt/hostedtoolcache/Python/3.11.16/x64/bin/python

test_padatious_match failure:

[gw0] linux -- Python 3.11.16 /opt/hostedtoolcache/Python/3.11.16/x64/bin/python

test_adapt_no_match failure:

[gw2] linux -- Python 3.11.16 /opt/hostedtoolcache/Python/3.11.16/x64/bin/python
✅ **TestResponseModeHolderStopE2E** — 2/2 ✅ **TestTargetedStopResolves** — 1/1 ✅ **TestTargetedStopSpec** — 1/1

🚌 Bus Coverage

Ensuring no event path is left in the shadows. 🌑

🔴 Coverage Summary

Metric Status Coverage
Listeners ░░░░░░░░░░ 9.3% 19/205 handlers
Emitters ██████████ 100% 27/27 observed
Assertions ██████████ 100% 27/27 asserted

📊 Per-Skill Breakdown

Skill Listeners Observed Asserted
AdaptPipeline 0/14 (0.0%) 0/0 0/0
ConverseService 1/4 (25.0%) 0/0 0/0
IntentDispatcher 1/2 (50.0%) 0/0 0/0
IntentManifest 0/8 (0.0%) 0/0 0/0
IntentService 1/4 (25.0%) 0/0 0/0
PadaciosoPipeline 0/11 (0.0%) 0/0 0/0
PadatiousPipeline 0/15 (0.0%) 0/0 0/0
SkillManager 0/8 (0.0%) 0/0 0/0
StopService 1/2 (50.0%) 0/0 0/0
_LegacyStopBridge 1/3 (33.3%) 0/0 0/0
__core__ 5/30 (16.7%) 7/7 7/7
keyword-templates 0/2 (0.0%) 0/0 0/0
ovos-ahocorasick-ner-plugin 0/1 (0.0%) 0/0 0/0
ovos-skill-count.openvoiceos 1/21 (4.8%) 8/8 8/8
ovos-skill-parrot.openvoiceos 6/35 (17.1%) 12/12 12/12
test-adapt-hello-world.openvoiceos 0/21 (0.0%) 0/0 0/0
test-completion-sync.openvoiceos 0/20 (0.0%) 0/0 0/0
type 2/4 (50.0%) 0/0 0/0
🔍 Detailed Message Type Breakdown

AdaptPipeline

⚠️ Uncovered Listeners:

  • ovos.intent.deregister (Intent)
  • ovos.intent.disable (Intent)
  • ovos.intent.enable (Intent)
  • ovos.intent.register.keyword (Intent)
  • detach_intent
  • detach_skill
  • intent.service.adapt.get
  • intent.service.adapt.manifest.get
  • intent.service.adapt.vocab.manifest.get
  • ovos.entity.deregister
  • ovos.entity.register
  • ovos.skill.deregister
  • register_intent
  • register_vocab

ConverseService

⚠️ Uncovered Listeners:

  • intent.service.active_skills.get
  • intent.service.skills.activate
  • intent.service.skills.deactivate
    ✅ Covered Listeners:
  • converse:skill (4x)

IntentDispatcher

⚠️ Uncovered Listeners:

  • mycroft.skill.handler.error
    ✅ Covered Listeners:
  • mycroft.skill.handler.complete (10x)

IntentManifest

⚠️ Uncovered Listeners:

  • ovos.intent.deregister (Intent)
  • ovos.intent.describe (Intent)
  • ovos.intent.disable (Intent)
  • ovos.intent.enable (Intent)
  • ovos.intent.list (Intent)
  • ovos.intent.register.keyword (Intent)
  • ovos.intent.register.template (Intent)
  • ovos.skill.deregister

IntentService

⚠️ Uncovered Listeners:

  • intent.service.intent.get (Intent)
  • intent.service.pipelines.reload
  • intent.service.skills.deactivate
    ✅ Covered Listeners:
  • ovos.utterance.handle (10x)

PadaciosoPipeline

⚠️ Uncovered Listeners:

  • ovos.intent.deregister (Intent)
  • ovos.intent.disable (Intent)
  • ovos.intent.enable (Intent)
  • ovos.intent.register.template (Intent)
  • padatious:register_entity (Intent)
  • padatious:register_intent (Intent)
  • detach_intent
  • detach_skill
  • ovos.entity.deregister
  • ovos.entity.register
  • ovos.skill.deregister

PadatiousPipeline

⚠️ Uncovered Listeners:

  • ovos.intent.deregister (Intent)
  • ovos.intent.disable (Intent)
  • ovos.intent.enable (Intent)
  • ovos.intent.register.template (Intent)
  • padatious:register_entity (Intent)
  • padatious:register_intent (Intent)
  • detach_intent
  • detach_skill
  • intent.service.padatious.entities.manifest.get
  • intent.service.padatious.get
  • intent.service.padatious.manifest.get
  • mycroft.skills.train
  • ovos.entity.deregister
  • ovos.entity.register
  • ovos.skill.deregister

SkillManager

⚠️ Uncovered Listeners:

  • padatious:register_intent (Intent)
  • mycroft.skills.trained
  • register_intent
  • skill.converse.get_response.disable
  • skillmanager.activate
  • skillmanager.deactivate
  • skillmanager.keep
  • skillmanager.list

StopService

⚠️ Uncovered Listeners:

  • ovos-stop-pipeline-plugin:global_stop (Intent)
    ✅ Covered Listeners:
  • ovos.utterance.handled (20x)

_LegacyStopBridge

⚠️ Uncovered Listeners:

  • stop:global (Intent)
  • stop:skill (Intent)
    ✅ Covered Listeners:
  • ovos.intent.matched (10x)

__core__

⚠️ Uncovered Listeners:

  • add_context
  • clear_context
  • message
  • mycroft.ovos-skill-count.openvoiceos.all_loaded
  • mycroft.ovos-skill-count.openvoiceos.is_alive
  • mycroft.ovos-skill-count.openvoiceos.is_ready
  • mycroft.ovos-skill-parrot.openvoiceos.all_loaded
  • mycroft.ovos-skill-parrot.openvoiceos.is_alive
  • mycroft.ovos-skill-parrot.openvoiceos.is_ready
  • mycroft.test-adapt-hello-world.openvoiceos.all_loaded
  • mycroft.test-adapt-hello-world.openvoiceos.is_alive
  • mycroft.test-adapt-hello-world.openvoiceos.is_ready
  • mycroft.test-completion-sync.openvoiceos.all_loaded
  • mycroft.test-completion-sync.openvoiceos.is_alive
  • mycroft.test-completion-sync.openvoiceos.is_ready
  • ovos-skill-count.openvoiceos.set
  • ovos-skill-parrot.openvoiceos.set
  • ovos.session.sync
  • ovos.skills.converse.force_timeout
  • ovos.skills.fallback.deregister
  • ovos.skills.fallback.register
  • remove_context
  • skill.converse.get_response.enable
  • test-adapt-hello-world.openvoiceos.set
  • test-completion-sync.openvoiceos.set
    ✅ Covered Listeners:
  • ovos.converse.pong (3x)
  • ovos.session.update_default (2x)
  • ovos.utterance.speak (18x)
  • skill.converse.pong (3x)
  • skill.converse.response (2x)

📤 Emitters:

  • mycroft.audio.play_sound (Asserted ✅)
  • ovos-skill-parrot.openvoiceos.converse.ping (Asserted ✅)
  • ovos.converse.ping (Asserted ✅)
  • ovos.intent.unmatched (Asserted ✅)
  • ovos.utterance.handle (Asserted ✅)
  • ovos.utterance.handled (Asserted ✅)
  • recognizer_loop:utterance (Asserted ✅)

keyword-templates

⚠️ Uncovered Listeners:

  • ovos.intent.register.template (Intent)
  • padatious:register_intent (Intent)

ovos-ahocorasick-ner-plugin

⚠️ Uncovered Listeners:

  • padatious:register_entity (Intent)

ovos-skill-count.openvoiceos

⚠️ Uncovered Listeners:

  • question:action (Intent)
  • question:action.ovos-skill-count.openvoiceos (Intent)
  • question:query (Intent)
  • homescreen.metadata.get
  • mycroft.ovos-skill-count.openvoiceos.all_loaded
  • mycroft.ovos-skill-count.openvoiceos.is_alive
  • mycroft.ovos-skill-count.openvoiceos.is_ready
  • mycroft.skill.disable_intent
  • mycroft.skill.enable_intent
  • mycroft.skill.remove_cross_context
  • mycroft.skill.set_cross_context
  • mycroft.skills.settings.changed
  • mycroft.stop
  • ovos-skill-count.openvoiceos.converse.get_response
  • ovos-skill-count.openvoiceos.set
  • ovos-skill-count.openvoiceos.stop
  • ovos-skill-count.openvoiceos.stop.ping
  • ovos.common_query.ping
  • ovos.skills.settings_changed
  • ovos.stop.ping
    ✅ Covered Listeners:
  • ovos-skill-count.openvoiceos:count_to_n (4x)

📤 Emitters:

  • mycroft.skill.handler.complete (Asserted ✅)
  • mycroft.skill.handler.start (Asserted ✅)
  • ovos-skill-count.openvoiceos.activate (Asserted ✅)
  • ovos-skill-count.openvoiceos:count_to_n (Asserted ✅)
  • ovos.intent.handler.complete (Asserted ✅)
  • ovos.intent.handler.start (Asserted ✅)
  • ovos.intent.matched (Asserted ✅)
  • ovos.utterance.handled (Asserted ✅)

ovos-skill-parrot.openvoiceos

⚠️ Uncovered Listeners:

  • ovos-skill-parrot.openvoiceos:did_you_hear_me (Intent)
  • ovos-skill-parrot.openvoiceos:repeat_stt (Intent)
  • ovos-skill-parrot.openvoiceos:repeat_tts (Intent)
  • ovos-skill-parrot.openvoiceos:speak (Intent)
  • ovos-skill-parrot.openvoiceos:stop_parrot (Intent)
  • question:action (Intent)
  • question:action.ovos-skill-parrot.openvoiceos (Intent)
  • question:query (Intent)
  • homescreen.metadata.get
  • intent.service.skills.activated
  • intent.service.skills.deactivated
  • mycroft.ovos-skill-parrot.openvoiceos.all_loaded
  • mycroft.ovos-skill-parrot.openvoiceos.is_alive
  • mycroft.ovos-skill-parrot.openvoiceos.is_ready
  • mycroft.skill.disable_intent
  • mycroft.skill.enable_intent
  • mycroft.skill.remove_cross_context
  • mycroft.skill.set_cross_context
  • mycroft.skills.settings.changed
  • mycroft.stop
  • ovos-skill-parrot.openvoiceos.converse.get_response
  • ovos-skill-parrot.openvoiceos.deactivate
  • ovos-skill-parrot.openvoiceos.set
  • ovos-skill-parrot.openvoiceos.stop
  • ovos-skill-parrot.openvoiceos.stop.ping
  • ovos.common_query.ping
  • ovos.skills.settings_changed
  • ovos.stop.ping
  • speak
    ✅ Covered Listeners:
  • ovos-skill-parrot.openvoiceos.activate (2x)
  • ovos-skill-parrot.openvoiceos.converse.ping (6x)
  • ovos-skill-parrot.openvoiceos.converse.request (4x)
  • ovos-skill-parrot.openvoiceos:start_parrot (2x)
  • ovos.converse.ping (6x)
  • recognizer_loop:utterance (8x)

📤 Emitters:

  • converse:skill (Asserted ✅)
  • mycroft.skill.handler.complete (Asserted ✅)
  • mycroft.skill.handler.start (Asserted ✅)
  • ovos-skill-parrot.openvoiceos.activate (Asserted ✅)
  • ovos-skill-parrot.openvoiceos.converse.request (Asserted ✅)
  • ovos-skill-parrot.openvoiceos:start_parrot (Asserted ✅)
  • ovos.converse.pong (Asserted ✅)
  • ovos.intent.matched (Asserted ✅)
  • ovos.utterance.handled (Asserted ✅)
  • ovos.utterance.speak (Asserted ✅)
  • skill.converse.pong (Asserted ✅)
  • skill.converse.response (Asserted ✅)

test-adapt-hello-world.openvoiceos

⚠️ Uncovered Listeners:

  • question:action (Intent)
  • question:action.test-adapt-hello-world.openvoiceos (Intent)
  • question:query (Intent)
  • test-adapt-hello-world.openvoiceos:HelloWorldIntent (Intent)
  • homescreen.metadata.get
  • mycroft.skill.disable_intent
  • mycroft.skill.enable_intent
  • mycroft.skill.remove_cross_context
  • mycroft.skill.set_cross_context
  • mycroft.skills.settings.changed
  • mycroft.stop
  • mycroft.test-adapt-hello-world.openvoiceos.all_loaded
  • mycroft.test-adapt-hello-world.openvoiceos.is_alive
  • mycroft.test-adapt-hello-world.openvoiceos.is_ready
  • ovos.common_query.ping
  • ovos.skills.settings_changed
  • ovos.stop.ping
  • test-adapt-hello-world.openvoiceos.converse.get_response
  • test-adapt-hello-world.openvoiceos.set
  • test-adapt-hello-world.openvoiceos.stop
  • test-adapt-hello-world.openvoiceos.stop.ping

test-completion-sync.openvoiceos

⚠️ Uncovered Listeners:

  • question:action (Intent)
  • question:action.test-completion-sync.openvoiceos (Intent)
  • question:query (Intent)
  • test-completion-sync.openvoiceos:ConfirmIntent (Intent)
  • test-completion-sync.openvoiceos:DeleteIntent (Intent)
  • test-completion-sync.openvoiceos:RearmConfirmIntent (Intent)
  • test-completion-sync.openvoiceos:RearmIntent (Intent)
  • homescreen.metadata.get
  • mycroft.skill.disable_intent
  • mycroft.skill.enable_intent
  • mycroft.skill.remove_cross_context
  • mycroft.skill.set_cross_context
  • mycroft.skills.settings.changed
  • mycroft.stop
  • ovos.common_query.ping
  • ovos.skills.settings_changed
  • ovos.stop.ping
  • test-completion-sync.openvoiceos.converse.get_response
  • test-completion-sync.openvoiceos.stop
  • test-completion-sync.openvoiceos.stop.ping

type

⚠️ Uncovered Listeners:

  • recognizer_loop:record_begin (Intent)
  • recognizer_loop:record_end (Intent)
    ✅ Covered Listeners:
  • recognizer_loop:audio_output_end (16x)
  • recognizer_loop:audio_output_start (18x)

⚖️ License Check

Checking the pedigree of your dependencies. 🐕

✅ No license violations found.

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


Keeping the repository healthy and happy. 😊

@JarbasAl JarbasAl changed the title ci: gate channel compat on the alpha channel ci: check the alpha channel strictly and drop the unresolvable rows Sep 9, 2026
@JarbasAl
JarbasAl force-pushed the ci/channel-compat-alpha-row branch from 4ea3d9a to f48ef80 Compare September 9, 2026 12:03
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