feat: emit spec bus messages alongside legacy (PIPELINE-1 §8/§9.6, STOP-1 §4.2)#415
feat: emit spec bus messages alongside legacy (PIPELINE-1 §8/§9.6, STOP-1 §4.2)#415JarbasAl wants to merge 7 commits into
Conversation
|
Important Review skippedDraft detected. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
✨ Finishing Touches🧪 Generate unit tests (beta)
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. Comment |
Standard verification protocol finished. 📋I've aggregated the results of the automated checks for this PR below. 📋 Repo HealthScanning for any signs of 'deprecated' acne. 🧴 ✅ All required files present. Latest Version: ✅ 🔍 LintA quick update on the progress of your PR checks. 📈 ❌ ruff: issues found — see job log 🔒 Security (pip-audit)I've audited the access control lists. 📋 ✅ No known vulnerabilities found (72 packages scanned). 🔨 Build TestsI've finished the digital carpentry on this PR. 🔨
❌ 3.10: Build OK, install failed ⚖️ License CheckI'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. 🧪 |
c75b624 to
cccd290
Compare
… §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>
Drop the legacy_namespace flag and all hand-rolled dual-emit. OVOSSkill now emits
exactly the ovos.* spec topic (from ovos_spec_tools.SpecMessage) for the
PIPELINE-1 §8 handler trio, §9.6 speak, and STOP-1 §4.2 pong; the bus
(NamespaceTranslator, driven by ovos_spec_tools.MIGRATION_MAP) bridges each to its
legacy counterpart so subscribers on either namespace still receive it. The only
remaining direct legacy subscription is the per-skill placeholder
{skill_id}.stop.ping, which the broadcast ovos.stop.ping replaces and which cannot
be a static bus rename. Requires the trio/stop entries in MIGRATION_MAP
(ovos-spec-tools). Tests rewritten to assert one spec emit is observed on BOTH
namespaces via the bridge.
fce8897 to
75c610a
Compare
What
Introduce a deployment-wide
legacy_namespaceconfig flag (defaultTrue) thatselects the bus-topic namespace during the
mycroft.* → ovos.*transition. A skillemits exactly one namespace (never both), so subscribers never see duplicate
messages — and skills subscribe on both so they work whichever namespace a producer
uses.
legacy_namespace: true)legacy_namespace: false)mycroft.skill.handler.start/.complete/.errorovos.intent.handler.start/.complete/.errorspeakovos.utterance.speakskill.stop.pongovos.stop.pong{skill}.stop.ping,mycroft.stop,{skill}.stopovos.stop.ping,ovos.stop,{skill}:stopSelection reads
Configuration().get("legacy_namespace", True)per emit. No double-emit(this avoids hacks like audio receiving
speaktwice).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