Skip to content

feat: emit spec bus messages alongside legacy (PIPELINE-1 §8/§9.6, STOP-1 §4.2)#415

Draft
JarbasAl wants to merge 5 commits into
devfrom
feat/spec-bus-messages
Draft

feat: emit spec bus messages alongside legacy (PIPELINE-1 §8/§9.6, STOP-1 §4.2)#415
JarbasAl wants to merge 5 commits into
devfrom
feat/spec-bus-messages

Conversation

@JarbasAl

@JarbasAl JarbasAl commented Jun 5, 2026

Copy link
Copy Markdown
Member

What

Introduce a deployment-wide legacy_namespace config flag (default True) that
selects the bus-topic namespace during the mycroft.* → ovos.* transition. A skill
emits exactly one namespace (never both), so subscribers never see duplicate
messages — and skills subscribe on both so they work whichever namespace a producer
uses.

Logical event legacy (legacy_namespace: true) spec (legacy_namespace: false)
handler trio (PIPELINE-1 §8) mycroft.skill.handler.start/.complete/.error ovos.intent.handler.start/.complete/.error
speak (PIPELINE-1 §9.6) speak ovos.utterance.speak
stop pong (STOP-1 §4.2) skill.stop.pong ovos.stop.pong
stop subscribe (§4.2/§4.3/§5.3) {skill}.stop.ping, mycroft.stop, {skill}.stop also ovos.stop.ping, ovos.stop, {skill}:stop

Selection reads Configuration().get("legacy_namespace", True) per emit. No double-emit
(this avoids hacks like audio receiving speak twice).

Why first

Companion to ovos-core; merges first so core CI sees the skill-side behaviour. See also
ovos-dinkum-listener, ovos-simple-listener, ovos-audio companion PRs.

Tests

test/unittests/test_spec_bus_messages.py — both namespaces for the trio, speak and pong
(6 passed). Also exercised end-to-end by the ovos-core conformance suites.

🤖 Generated with Claude Code

@coderabbitai

coderabbitai Bot commented Jun 5, 2026

Copy link
Copy Markdown
Contributor

Important

Review skipped

Draft detected.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 834b964b-9d60-4e49-b263-d8e9a5f06286

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat/spec-bus-messages

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 Jun 5, 2026

Copy link
Copy Markdown
Contributor

Standard verification protocol finished. 📋

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

📋 Repo Health

Ensuring the repo's skin is clear (aka linting errors). ✨

✅ All required files present.

Latest Version: 8.2.1a1

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

🔍 Lint

Generic report status: Complete and verified. ✅

ruff: issues found — see job log

🔒 Security (pip-audit)

Ensuring our cookies are secure and fresh. 🍪

✅ No known vulnerabilities found (72 packages scanned).

🔨 Build Tests

Compiling thoughts and code into something real. 🧠

Python Build Install Tests
3.10 ⚠️
3.11 ⚠️
3.12 ⚠️
3.13 ⚠️
3.14 ⚠️

❌ 3.10: Install OK, tests failed
❌ 3.11: Install OK, tests failed
❌ 3.12: Install OK, tests failed
❌ 3.13: Install OK, tests failed
❌ 3.14: Install OK, tests failed
Check job logs for details.

⚖️ License Check

I've checked the genealogical tree of your licenses. 🌳

✅ No license violations found.

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


Crafting quality through automation. 🧪

@JarbasAl JarbasAl force-pushed the feat/spec-bus-messages branch from 8c5774e to c75b624 Compare June 5, 2026 14:12
… §4.2)

A skill emits either the legacy mycroft.* topics or the OVOS spec ovos.*
topics, chosen by the deployment 'legacy_namespace' config (default True) —
never both, so a subscriber never sees duplicate messages. Skills subscribe
on BOTH namespaces. Covers:
- handler-lifecycle trio: mycroft.skill.handler.* <-> ovos.intent.handler.* (§8)
- speak <-> ovos.utterance.speak (§9.6)
- stop ping/pong: {skill}.stop.ping/skill.stop.pong <-> ovos.stop.ping/ovos.stop.pong (§4.2)
- stop dispatch: also subscribe ovos.stop and {skill}:stop (§4.3/§5.3)

Adds dual-namespace unit tests (test/unittests/test_spec_bus_messages.py).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@JarbasAl JarbasAl force-pushed the feat/spec-bus-messages branch from c75b624 to cccd290 Compare June 5, 2026 14:43
@github-actions github-actions Bot added feature and removed feature labels Jun 5, 2026
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.

1 participant