Skip to content

fix: emit destination as a string (OVOS-MSG-1 §3.3) - #205

Merged
JarbasAl merged 1 commit into
devfrom
fix/msg1-33-destination-string
Sep 17, 2026
Merged

JarbasAl merged 1 commit into
devfrom
fix/msg1-33-destination-string

Conversation

@openvoiceos-bot

Copy link
Copy Markdown
Contributor

Disclosure: an AI agent (Claude Opus 5) wrote this change. A human reviews it before merge.

Change

ovoscope/classic_listener.py, listener.py and voice_loop.py: the injected utterance stamps destination as "skills".

The clause

OpenVoiceOS/architecture origin/dev f23dbec, msg-1.md §3.3:

destination — string — opaque identifier of the intended consumer.
Absence means broadcast — every subscriber to the topic is an intended
consumer. A Message addresses one consumer or all of them; there is no
multi-address form. A producer that wants several specific consumers emits
one Message per consumer, or broadcasts.

Compatibility

Every consumer of destination in the fleet was read at its ref. None of them indexes the field or compares it to a list.

A string arrives safely on old and new consumers. The spec-tools reply() swap takes a string as it is. The list branch in ovos-spec-tools stays until all producers are migrated.

Record: knowledge/wiki/audits/spec-adoption/t2279-msg1-33-array-destination-producers.md. The first migration was JarbasHiveMind/HiveMind-core#357.

Tests

A new test in test/unittests/test_voice_loop.py checks that the value is a string. It fails at the base and passes at this branch.

test without e2e: 570 passed, 12 failed, 135 skipped. The same 12 tests fail at origin/dev. Base: 3f82307.

No live bus run.

🤖 Generated with Claude Code

§3.3 gives destination one form, a string, with no multi-address form.
Every value here was a one-item list.

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

coderabbitai Bot commented Sep 17, 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 added the fix label Sep 17, 2026
@github-actions

github-actions Bot commented Sep 17, 2026

Copy link
Copy Markdown
Contributor

Fresh off the press! I've got some check results for you. 🗞️

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

📋 Repo Health

Scanning for any signs of 'copy-paste' obesity. 🍕

✅ All required files present.

Latest Version: 1.8.7a1

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

🔍 Lint

The results have been compiled and are ready for review. 📑

ruff: issues found — see job log

🏷️ Release Preview

I've checked the 'New Features' highlight reel. 📽️

Current: 1.8.7a1Next: 1.8.8a1

Signal Value
Label (none)
PR title fix: emit destination as a string (OVOS-MSG-1 §3.3)
Bump build

✅ PR title follows conventional commit format.


🚀 Release Channel Compatibility

Predicted next version: 1.8.8a1

Channel Status Note Current Constraint
Stable Not in channel -
Testing Too new (must be <1.0.0) ovoscope>=0.7.2,<1.0.0
Alpha Compatible ovoscope>=1.6.15a1

⚖️ License Check

Ensuring our project remains legally compliant. ✅

✅ No license violations found.

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

🔒 Security (pip-audit)

Scanning the horizon for any zero-day threats. 🌅

✅ No known vulnerabilities found (132 packages scanned).

📊 Coverage

Measuring the safety net for your changes. 🥅

⚠️ 63.0% total coverage

Files below 80% coverage (15 files)
File Coverage Missing lines
ovoscope/simple_listener.py 0.0% 63
ovoscope/version.py 0.0% 5
ovoscope/classic_listener.py 18.2% 117
ovoscope/intent_cases.py 22.3% 153
ovoscope/pytest_plugin.py 47.0% 210
ovoscope/cli.py 47.8% 132
ovoscope/ocp.py 47.9% 61
ovoscope/tts_intelligibility.py 49.0% 102
ovoscope/media.py 56.7% 101
ovoscope/e2e.py 57.1% 73
ovoscope/listener.py 57.1% 127
ovoscope/voice_loop.py 59.0% 119
ovoscope/__init__.py 64.3% 430
ovoscope/audio.py 64.4% 126
ovoscope/media_provider.py 67.6% 23

Full report: download the coverage-report artifact.

🔨 Build Tests

Verifying the structural soundness of your build. 🏗️

✅ All versions pass

Python Build Install Tests pytest
3.10 719 passed, 25 skipped, 67 warnings in 189.78s (0:03:09)
3.11 719 passed, 25 skipped, 67 warnings in 183.16s (0:03:03)
3.12 719 passed, 25 skipped, 67 warnings in 193.29s (0:03:13)
3.13 719 passed, 25 skipped, 104 warnings in 192.42s (0:03:12)
3.14 719 passed, 25 skipped, 105 warnings in 192.62s (0:03:12)

Your loyal automated servant. 💂‍♀️

@JarbasAl
JarbasAl marked this pull request as ready for review September 17, 2026 21:12
@JarbasAl
JarbasAl merged commit bddb631 into dev Sep 17, 2026
14 checks passed
@JarbasAl
JarbasAl deleted the fix/msg1-33-destination-string branch September 17, 2026 21:12
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