You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
feat: orchestrator owns the PIPELINE-1 §9 utterance-terminal events
Complete the orchestrator's ownership of the OVOS-PIPELINE-1 §6.1
per-utterance terminal sequence, on top of the §8 handler-lifecycle
trio:
- §9.2 ovos.intent.matched — emitted by _dispatch_match on every
accepted match, before the dispatch goes out (notification, not a
dispatch). Carries skill_id, intent_name (the full
<skill_id>:<intent_name> match_type), lang, utterance, slots,
pipeline_id.
- §9.3 ovos.intent.unmatched — the no-match / all-filtered terminal,
replacing the legacy complete_intent_failure (the two are bridged by
ovos-spec-tools' MIGRATION_MAP, so emitting the spec topic re-delivers
the legacy one to consumers still on it).
- §6.4 cancellation now emits the spec ovos.utterance.cancelled.
Each utterance terminates with exactly one ovos.utterance.handled
(§9.5): core owns it on the no-match, cancel and §8.3-timeout paths;
on the ordinary matched path the skill framework still emits it (moving
that fully into core is gated on the ovos-workshop reduction).
Rename _emit_match_message -> _dispatch_match (it orchestrates the §6.1
post-match steps then dispatches) and correct the IntentDispatcher
docstring to scope it to §7 dispatch + §8 trio (the §9.2 notification
lives in the service).
Verified on a real minicroft: matched path emits matched/start/
complete/handled exactly once each; no-match path emits
ovos.intent.unmatched + ovos.utterance.handled (no complete_intent_
failure). test_no_skills / test_lang_detect conformance suites green.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
0 commit comments