Skip to content

fix(deps): accept ovos-plugin-manager 3 - #1029

Merged
JarbasAl merged 1 commit into
devfrom
fix/accept-opm3
Oct 22, 2026
Merged

JarbasAl merged 1 commit into
devfrom
fix/accept-opm3

Conversation

@openvoiceos-bot

@openvoiceos-bot openvoiceos-bot commented Oct 22, 2026 •

Copy link
Copy Markdown

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

This PR removes the <3.0.0 ceiling on ovos-plugin-manager and keeps the floor pin.

With the ceiling in place, an install of this package cannot get OPM 3. OPM 3 carries TextEmbedder.get_embeddings_batch (ovos-plugin-manager#472) and the OVOS-TOOLS-1 call topic (ovos-plugin-manager#470). The 3.0 major bump comes from the MediaBackend v2 change (ovos-plugin-manager#442). This package imports nothing from the media, audio or agent_tools templates.

What the reviewer needs to decide: merge it, so that a release of this package resolves to OPM 3.

Check Result
Suite on origin/dev, OPM 2.12.5a1 715 passed, 0 failed (test/unittests)
Suite on this branch, OPM overridden to 3.1.0a1 715 passed, 0 failed (test/unittests)
Grep for media, audio and agent_tools template imports no hits

Verified by the model, by running the commands above in fresh uv venvs (Python 3.11). The end2end tests in test/end2end did not run. No human ran these checks.

🤖 Generated with Claude Code

Remove the <3.0.0 ceiling on ovos-plugin-manager and keep the floor.
The unit suite passes unchanged on OPM 3.1.0a1.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented Oct 22, 2026 •

Copy link
Copy Markdown

Review in Change Stack →

Note

Currently processing new changes in this PR. This may take a few minutes, please wait...

⚙️ Run configuration
  • Source mode: Auto
  • Repository: Unavailable
  • Branch: Unavailable
  • File: No configuration file from this repository applied
  • Commit: Unavailable
  • Layers: defaults
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: 205ec3ff-c445-487b-a0a7-f175d8d5e366
📥 Commits

Reviewing files that changed from the base of the PR and between 8ca3cda and 1aa8c71.

📒 Files selected for processing: 1
  • pyproject.toml
+-----------------------------------------------------------------------------------------------------+
| Trained in all forms of code review, from the ancient art of waterfall to the modern ways of agile. |
+-----------------------------------------------------------------------------------------------------+
  \
   \   (\__/)
       (•ㅅ•)
       /   づ
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Commit to this branch
  • Create a new PR
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

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 added the fix label Oct 22, 2026
@github-actions

github-actions Bot commented Oct 22, 2026 •

Copy link
Copy Markdown

Beep! Your PR results are served. 🍽️

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

📚 Docs

Another check completed successfully! 🏁

✅ All required documentation files present.

✅ README.md

📡 Channel Compat — stable

A quick update on the progress of your PR checks. 📈

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

🌍 Locale Build

Evaluating the overall impact of your changes. 📈

✅ Locale properly configured (66 files, 19 languages)

Locale directories found:

  • ovos_core/intent_services/locale

Localization coverage:

  • ovos_core/intent_services/locale: 66 files in 19 languages (uk-ua, kab-DZ, pt-br, fr-fr, nl-be...)

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

  • intent_services/locale/*/*.voc

Build manifest: ✅ 35 locale files included in package

📋 Repo Health

Checking for any potential repo regressions. 🔄

✅ All required files present.

Latest Version: 3.7.4a1

✅ 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

🔒 Security (pip-audit)

Ensuring our cross-site scripting defenses are up. 🛡️

✅ No known vulnerabilities found (113 packages scanned).

📊 Coverage

Ensuring our safety net is wide enough. 🕸️

⚠️ 77.6% 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/intent_services/working_session.py 60.3% 23
ovos_core/__main__.py 66.7% 9
ovos_core/skill_installer.py 67.9% 92
ovos_core/skill_manager.py 69.5% 186
ovos_core/intent_services/dispatcher.py 73.3% 35
ovos_core/intent_services/service.py 77.1% 150

Full report: download the coverage-report artifact.

🔌 Plugin Detection

Ensuring the OpenVoiceOS Plugin Manager can find this gem. 💎

❌ 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 ✅ 1398ms ⊘
ovos-fallback-pipeline-plugin pipeline ✅ 2ms ⊘
ovos-stop-pipeline-plugin pipeline ✅ 66ms ⊘

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

Issues:

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

⚖️ License Check

Verifying the origin of all contributed code. 🌍

✅ No license violations found.

⚠️ No licence metadata found (not blocking):

  • sonopy==0.1.2 — no released version carries licence metadata either

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

🔌 Skill Tests (ovoscope)

Testing the skill's 'peripheral vision' (aka broad intents). 👁️

✅ 43/43 passed

✅ TestActiveHandlersOnlyIsNotPolled — 1/1
✅ TestAdaptIntent — 4/4
✅ TestCancelIntentMidSentence — 1/1
✅ TestCompletionSyncE2E — 3/3
✅ TestContext1EndToEndReachability — 3/3
✅ TestConverse — 1/1
✅ TestDeactivate — 3/3
✅ TestFallback — 1/1
✅ TestGGWaveSkillInstall — 2/2
✅ TestGlobalStopSpec — 1/1
✅ TestIntentPipelineRouting — 5/5
✅ TestLangDisambiguation — 4/4
✅ TestLegacyGlobalStop — 1/1
✅ TestLegacyIntentIdBackCompat — 2/2
✅ TestLegacyTargetedStop — 1/1
✅ TestNoSkills — 2/2
✅ TestPadatiousIntent — 4/4
✅ TestResponseModeHolderStopE2E — 2/2
✅ TestTargetedStopResolves — 1/1
✅ TestTargetedStopSpec — 1/1

🚌 Bus Coverage

Ensuring the skill's internal gears are meshing correctly on the bus. ⚙️

🔴 Coverage Summary

Metric Status Coverage
Listeners █░░░░░░░░░ 15.0% 44/294 handlers
Emitters ██████████ 100% 65/65 observed
Assertions ██████████ 100% 65/65 asserted

📊 Per-Skill Breakdown

Skill Listeners Observed Asserted
AdaptPipeline 0/14 (0.0%) 0/0 0/0
ConverseService 3/4 (75.0%) 0/0 0/0
IntentDispatcher 1/2 (50.0%) 0/0 0/0
IntentManifest 0/10 (0.0%) 0/0 0/0
IntentService 2/4 (50.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/13 (0.0%) 0/0 0/0
StopService 2/2 (100.0%) 0/0 0/0
_LegacyStopBridge 3/3 (100.0%) 0/0 0/0
__core__ 7/51 (13.7%) 11/11 11/11
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 4/23 (17.4%) 9/9 9/9
ovos-skill-hello-world.openvoiceos 1/26 (3.8%) 3/3 3/3
ovos-skill-parrot.openvoiceos 8/35 (22.9%) 12/12 12/12
ovos-stop-pipeline-plugin 0/0 (0.0%) 4/4 4/4
test-adapt-hello-world.openvoiceos 2/23 (8.7%) 9/9 9/9
test-completion-sync.openvoiceos 1/22 (4.5%) 0/0 0/0
test_activation.openvoiceos 8/29 (27.6%) 17/17 17/17
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
    ✅ Covered Listeners:
  • ✅ converse:skill (6x)
  • ✅ intent.service.skills.activate (1x)
  • ✅ intent.service.skills.deactivate (2x)

IntentDispatcher

⚠️ Uncovered Listeners:

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

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
  • ❌ ovos.skill.loaded
  • ❌ ovos.skills.list

IntentService

⚠️ Uncovered Listeners:

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

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
  • ❌ ovos.pip.install.complete
  • ❌ ovos.pip.uninstall.complete
  • ❌ ovos.skills.install.complete
  • ❌ ovos.skills.uninstall.complete
  • ❌ register_intent
  • ❌ skill.converse.get_response.disable
  • ❌ skillmanager.activate
  • ❌ skillmanager.deactivate
  • ❌ skillmanager.keep
  • ❌ skillmanager.list
  • ❌ skillmanager.rescan

StopService

✅ Covered Listeners:

  • ✅ ovos-stop-pipeline-plugin:global_stop (1x)
  • ✅ ovos.utterance.handled (39x)

_LegacyStopBridge

✅ Covered Listeners:

  • ✅ ovos.intent.matched (14x)
  • ✅ stop:global (1x)
  • ✅ stop:skill (1x)

__core__

⚠️ Uncovered Listeners:

  • ❌ ovos-skill-count.openvoiceos:stop (Intent)
  • ❌ ovos.intent.handler.error (Intent)
  • ❌ 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-hello-world.openvoiceos.all_loaded
  • ❌ mycroft.ovos-skill-hello-world.openvoiceos.is_alive
  • ❌ mycroft.ovos-skill-hello-world.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
  • ❌ mycroft.test_activation.openvoiceos.all_loaded
  • ❌ mycroft.test_activation.openvoiceos.is_alive
  • ❌ mycroft.test_activation.openvoiceos.is_ready
  • ❌ ovos-skill-count.openvoiceos.set
  • ❌ ovos-skill-count.openvoiceos.stop.response
  • ❌ ovos-skill-hello-world.openvoiceos.set
  • ❌ ovos-skill-parrot.openvoiceos.set
  • ❌ ovos.ggwave.disable
  • ❌ ovos.ggwave.enable
  • ❌ ovos.pip.install
  • ❌ ovos.pip.uninstall
  • ❌ ovos.session.sync
  • ❌ ovos.session.update_default
  • ❌ ovos.skills.converse.force_timeout
  • ❌ ovos.skills.fallback.deregister
  • ❌ ovos.skills.fallback.register
  • ❌ ovos.skills.install
  • ❌ ovos.skills.uninstall
  • ❌ ovos.stop.pong
  • ❌ remove_context
  • ❌ skill.converse.get_response.enable
  • ❌ test-adapt-hello-world.openvoiceos.set
  • ❌ test-completion-sync.openvoiceos.set
  • ❌ test_activation.openvoiceos.set
    ✅ Covered Listeners:
  • ✅ mycroft.skill.handler.start (11x)
  • ✅ ovos.converse.pong (7x)
  • ✅ ovos.intent.handler.complete (8x)
  • ✅ ovos.intent.handler.start (13x)
  • ✅ ovos.utterance.speak (16x)
  • ✅ skill.converse.pong (7x)
  • ✅ skill.converse.response (5x)

📤 Emitters:

  • ✅ mycroft.audio.play_sound (Asserted ✅)
  • ✅ ovos-skill-hello-world.openvoiceos:greetings.intent (Asserted ✅)
  • ✅ ovos-skill-parrot.openvoiceos.converse.ping (Asserted ✅)
  • ✅ ovos.converse.ping (Asserted ✅)
  • ✅ ovos.intent.unmatched (Asserted ✅)
  • ✅ ovos.utterance.cancelled (Asserted ✅)
  • ✅ ovos.utterance.handle (Asserted ✅)
  • ✅ ovos.utterance.handled (Asserted ✅)
  • ✅ recognizer_loop:utterance (Asserted ✅)
  • ✅ test_activate (Asserted ✅)
  • ✅ test_activation.openvoiceos.converse.ping (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.converse.ping
  • ❌ ovos-skill-count.openvoiceos.set
  • ❌ ovos-skill-count.openvoiceos.stop
  • ❌ ovos.common_query.ping
  • ❌ ovos.skills.settings_changed
    ✅ Covered Listeners:
  • ✅ ovos-skill-count.openvoiceos.stop.ping (1x)
  • ✅ ovos-skill-count.openvoiceos:count_to_n (2x)
  • ✅ ovos.converse.ping (8x)
  • ✅ ovos.stop.ping (1x)

📤 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-skill-count.openvoiceos:stop (Asserted ✅)
  • ✅ ovos.intent.handler.complete (Asserted ✅)
  • ✅ ovos.intent.handler.start (Asserted ✅)
  • ✅ ovos.intent.matched (Asserted ✅)
  • ✅ ovos.utterance.handled (Asserted ✅)

ovos-skill-hello-world.openvoiceos

⚠️ Uncovered Listeners:

  • ❌ ovos-skill-hello-world.openvoiceos:greetings (Intent)
  • ❌ ovos-skill-hello-world.openvoiceos:how_are_you (Intent)
  • ❌ ovos-skill-hello-world.openvoiceos:thank_you_intent (Intent)
  • ❌ question:action (Intent)
  • ❌ question:action.ovos-skill-hello-world.openvoiceos (Intent)
  • ❌ question:query (Intent)
  • ❌ hello.world
  • ❌ homescreen.metadata.get
  • ❌ mycroft.ovos-skill-hello-world.openvoiceos.all_loaded
  • ❌ mycroft.ovos-skill-hello-world.openvoiceos.is_alive
  • ❌ mycroft.ovos-skill-hello-world.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-hello-world.openvoiceos.converse.get_response
  • ❌ ovos-skill-hello-world.openvoiceos.converse.ping
  • ❌ ovos-skill-hello-world.openvoiceos.set
  • ❌ ovos-skill-hello-world.openvoiceos.stop
  • ❌ ovos-skill-hello-world.openvoiceos.stop.ping
  • ❌ ovos.common_query.ping
  • ❌ ovos.skills.settings_changed
  • ❌ ovos.stop.ping
    ✅ Covered Listeners:
  • ✅ ovos.converse.ping (6x)

📤 Emitters:

  • ✅ mycroft.skill.handler.complete (Asserted ✅)
  • ✅ mycroft.skill.handler.start (Asserted ✅)
  • ✅ ovos.utterance.speak (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
  • ❌ 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:
  • ✅ intent.service.skills.activated (1x)
  • ✅ intent.service.skills.deactivated (2x)
  • ✅ 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 (8x)
  • ✅ recognizer_loop:utterance (18x)

📤 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 ✅)

ovos-stop-pipeline-plugin

📤 Emitters:

  • ✅ ovos-stop-pipeline-plugin.activate (Asserted ✅)
  • ✅ ovos-stop-pipeline-plugin:global_stop (Asserted ✅)
  • ✅ ovos.stop (Asserted ✅)
  • ✅ ovos.utterance.handled (Asserted ✅)

test-adapt-hello-world.openvoiceos

⚠️ Uncovered Listeners:

  • ❌ question:action (Intent)
  • ❌ question:action.test-adapt-hello-world.openvoiceos (Intent)
  • ❌ question:query (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.converse.ping
  • ❌ test-adapt-hello-world.openvoiceos.set
  • ❌ test-adapt-hello-world.openvoiceos.stop
  • ❌ test-adapt-hello-world.openvoiceos.stop.ping
    ✅ Covered Listeners:
  • ✅ ovos.converse.ping (6x)
  • ✅ test-adapt-hello-world.openvoiceos:HelloWorldIntent (2x)

📤 Emitters:

  • ✅ mycroft.skill.handler.complete (Asserted ✅)
  • ✅ mycroft.skill.handler.start (Asserted ✅)
  • ✅ ovos.intent.handler.complete (Asserted ✅)
  • ✅ ovos.intent.handler.start (Asserted ✅)
  • ✅ ovos.intent.matched (Asserted ✅)
  • ✅ ovos.utterance.handled (Asserted ✅)
  • ✅ ovos.utterance.speak (Asserted ✅)
  • ✅ test-adapt-hello-world.openvoiceos.activate (Asserted ✅)
  • ✅ test-adapt-hello-world.openvoiceos:HelloWorldIntent (Asserted ✅)

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.converse.ping
  • ❌ test-completion-sync.openvoiceos.stop
  • ❌ test-completion-sync.openvoiceos.stop.ping
    ✅ Covered Listeners:
  • ✅ ovos.converse.ping (6x)

test_activation.openvoiceos

⚠️ Uncovered Listeners:

  • ❌ question:action (Intent)
  • ❌ question:action.test_activation.openvoiceos (Intent)
  • ❌ question:query (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_activation.openvoiceos.all_loaded
  • ❌ mycroft.test_activation.openvoiceos.is_alive
  • ❌ mycroft.test_activation.openvoiceos.is_ready
  • ❌ ovos.common_query.ping
  • ❌ ovos.skills.settings_changed
  • ❌ ovos.stop.ping
  • ❌ test_activation.openvoiceos.converse.get_response
  • ❌ test_activation.openvoiceos.set
  • ❌ test_activation.openvoiceos.stop
  • ❌ test_activation.openvoiceos.stop.ping
  • ❌ test_deactivate
    ✅ Covered Listeners:
  • ✅ intent.service.skills.activated (1x)
  • ✅ intent.service.skills.deactivated (2x)
  • ✅ ovos.converse.ping (8x)
  • ✅ test_activate (1x)
  • ✅ test_activation.openvoiceos.activate (1x)
  • ✅ test_activation.openvoiceos.converse.ping (2x)
  • ✅ test_activation.openvoiceos.converse.request (2x)
  • ✅ test_activation.openvoiceos.deactivate (2x)

📤 Emitters:

  • ✅ converse:skill (Asserted ✅)
  • ✅ intent.service.skills.activate (Asserted ✅)
  • ✅ intent.service.skills.activated (Asserted ✅)
  • ✅ intent.service.skills.deactivate (Asserted ✅)
  • ✅ intent.service.skills.deactivated (Asserted ✅)
  • ✅ mycroft.skill.handler.complete (Asserted ✅)
  • ✅ mycroft.skill.handler.start (Asserted ✅)
  • ✅ ovos.converse.pong (Asserted ✅)
  • ✅ ovos.intent.handler.complete (Asserted ✅)
  • ✅ ovos.intent.handler.start (Asserted ✅)
  • ✅ ovos.intent.matched (Asserted ✅)
  • ✅ ovos.utterance.handled (Asserted ✅)
  • ✅ skill.converse.pong (Asserted ✅)
  • ✅ skill.converse.response (Asserted ✅)
  • ✅ test_activation.openvoiceos.activate (Asserted ✅)
  • ✅ test_activation.openvoiceos.converse.request (Asserted ✅)
  • ✅ test_activation.openvoiceos.deactivate (Asserted ✅)

type

⚠️ Uncovered Listeners:

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

📡 Channel Compat — testing

I've finished my task! Here's the data you need. 📊

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

🔨 Build Tests

Checking the plumbing of your data flows. 🚰

✅ All versions pass

Python Build Install Tests pytest
3.10 ✅ ✅ ✅ 715 passed, 1 warning, 46 subtests passed in 31.44s
3.11 ✅ ✅ ✅ 715 passed, 1 warning, 46 subtests passed in 33.93s
3.12 ✅ ✅ ✅ 715 passed, 1 warning, 46 subtests passed in 37.07s
3.13 ✅ ✅ ✅ 715 passed, 30 warnings, 46 subtests passed in 31.03s
3.14 ✅ ✅ ✅ 715 passed, 30 warnings, 46 subtests passed in 30.24s

May your merges be conflict-free! 🕊️

@github-actions github-actions Bot added fix and removed fix labels Oct 22, 2026
@JarbasAl
JarbasAl marked this pull request as ready for review October 22, 2026 19:01
@JarbasAl
JarbasAl merged commit 61075c9 into dev Oct 22, 2026
24 checks passed
@JarbasAl
JarbasAl deleted the fix/accept-opm3 branch October 22, 2026 19:02
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants