INTENT-1: union slot sets for .intent files#56
Conversation
|
Warning Review limit reached
More reviews will be available in 38 minutes and 38 seconds. Learn how PR review limits work. Your organization has run out of usage credits. Purchase more credits in the billing tab to continue. ⌛ How to resolve this issue?After more reviews become available, a review can be triggered using the To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based credits. 🚦 How do rate limits work?CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability. For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window. Please see our Fair Usage Limits Policy for further information. ✨ 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 |
c58c9dc to
1fe29fc
Compare
|
Merge-ready (MERGEABLE, 0 commits behind dev). Fix applied: §5.4 (Suppression/.blacklist) in INTENT-3 was a duplicate heading — renumbered to §5.5 to match the cross-references that already used §5.5. All internal §-references across INTENT-3 and INTENT-4 are consistent. Version headers left at v2/v1/v1 per the Draft-freeze policy (commit 1fe29fc). Note: after #55 merges, GLOSSARY.md in this branch will need |
…p version §11 adds session-scoped registration. Make the spec internally consistent: - §8.1 keyed intent replacement by a 4-element tuple missing 'method', contradicting the §11.1/§12 quintuple. State it as the quintuple (session_id, skill_id, intent_name, lang, method) for intents; entities keep the quadruple (no method axis). - Unify the session-id reference to context.session.session_id (was the bracket form in §8.1/§11.1; §12 already used the dot form). - Bump the spec header Version 1 -> 2 and reorder the CHANGELOG block newest-first as ### 2 (was a duplicate ### 1). Note: #56 also bumps INTENT-4; whichever lands second renumbers to v3. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…isten field Consolidates the PIPELINE-1 companion edits previously bundled into the union-slots (#56), FALLBACK-1 (#39), COMMON-QUERY-1 (#40) and AUDIO-1 (#38) feature PRs into a single one-file change to ovos-pipeline-1.md. - §6.1/§6.2 — orchestrator backstop for required_slots (INTENT-3 §5.3): the orchestrator treats a Match as declined if any required slot is absent. Second line of defense behind engine-side enforcement. - §7.3 — reserve intent_names "fallback" (FALLBACK-1 §6.3) and "common_query" (COMMON-QUERY-1 §3). COMMON-QUERY-1 asserted the reservation but never registered the row; this closes that gap. - §9.6 — add the OPTIONAL listen field to ovos.utterance.speak; the output-side behaviour is owned by AUDIO-1. All additions are backwards-compatible. PIPELINE-1 is already V2 (its namespaced topics replace the pre-spec names); these refinements do not change the class, so the Version stays 2. Adds the missing PIPELINE-1 CHANGELOG section. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
fa8c97a to
4430976
Compare
4430976 to
71667bd
Compare
This PR relaxes the strict slot-consistency rule for
.intentfiles and introduces an optionalrequired_slotsmechanism for template intents.Changes
OVOS-INTENT-1
.dialogonly..intentfiles now allow templates with different slot sets (union semantics). The engine extracts only the slots declared by the template that best matches..dialog; accept differing slot sets for.intent.OVOS-INTENT-3
required_slots: an optional list of slot names the engine MUST extract for a match to be valid. When present, handlers MAY rely on those slots being populated. A required slot must be declared by at least one template; otherwise the definition is malformed.required_slots; all other slots remain optional and must be defensively handled.OVOS-INTENT-4
required_slotsas an optional array-of-strings field to theovos.intent.register.templatepayload.required_slotsmalformed rule: a required slot not declared by any template is malformed.OVOS-PIPELINE-1
required_slots. After the denylist check, the orchestrator verifies the match's slot map contains every required slot; if absent, it treats the match as declined. Primary enforcement remains engine-side duringmatch(); the orchestrator is a second line of defense.appendix/patterns.md
required_slots, including practical examples (one intent with multiple phrasing shapes, guaranteeing a slot, optional phrasings, and the.dialogstrictness distinction).Design rationale
required_slots?required_slotscontains technical slot identifiers, not localized natural-language data. It is intent metadata, not a translatable resource, so it belongs in the bus registration payload (consistent with handler binding, enable/disable state, and other non-locale metadata).requiredvocabularies (§4.2) that serve an analogous role.required_slotsis the template-intent counterpart, mirroring how.blacklistis template-only.blacklisted_skills/blacklisted_intents;required_slotsbackstop is the same shape. This gives handlers the strongest guarantee regardless of engine bugs.Cross-references updated
Companion design record: #57