Skip to content

fix: don't double-emit ovos.utterance.handled from fallback/converse when core owns it#453

Merged
JarbasAl merged 1 commit into
feat/intent-4-producerfrom
fix/core-owns-utterance-handled-fallback-converse
Jul 3, 2026
Merged

fix: don't double-emit ovos.utterance.handled from fallback/converse when core owns it#453
JarbasAl merged 1 commit into
feat/intent-4-producerfrom
fix/core-owns-utterance-handled-fallback-converse

Conversation

@JarbasAl

@JarbasAl JarbasAl commented Jul 3, 2026

Copy link
Copy Markdown
Member

What

The matched-intent path already guards its ovos.utterance.handled emission on
_core_owns_utterance_handled() (PIPELINE-1 §9.5 — ovos-core >=2.3.0a1 owns the
universal end-marker on every terminal path). FallbackSkill and
ConversationalSkill still emitted it unconditionally, so against a core that
owns it the end-marker fired twice (skill + orchestrator). This guards both
on the same version check.

Why

Surfaced by ovos-test-harness conformance suites against the spec-adoption
stack: test_fallback1 TestSec6QueryResponse.test_exactly_one_handled,
test_converse1 TestSec4ConverseRoundTrip.test_followup_terminates_once, and
test_common_query1 TestSec9NoWinnerReachesFallback.test_non_question_terminates_once
each saw 2 end-markers instead of 1.

Stacked on feat/intent-4-producer (#431) so the harness combo can pin one
workshop branch carrying both the INTENT-4 producer and this fix.

🤖 Generated with Claude Code

…se when core owns it

The matched-intent path already guards its ovos.utterance.handled emission on
_core_owns_utterance_handled() (PIPELINE-1 §9.5 — ovos-core >=2.3.0a1 owns the
universal end-marker on every terminal path). The FallbackSkill and
ConversationalSkill terminal paths still emitted it unconditionally, so against
a core that owns it the end-marker fired twice (skill + orchestrator). Guard
both on the same version check so exactly one ovos.utterance.handled terminates
the utterance; keep emitting for an older/absent core during the migration
window.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented Jul 3, 2026

Copy link
Copy Markdown
Contributor

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

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: 6bbe5ce2-c5aa-4261-88ea-95e7282a2130

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 fix/core-owns-utterance-handled-fallback-converse

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 Jul 3, 2026
@JarbasAl JarbasAl marked this pull request as ready for review July 3, 2026 14:54
@JarbasAl JarbasAl merged commit 7c45b6d into feat/intent-4-producer Jul 3, 2026
2 checks passed
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