INTENT-1 v3 / INTENT-3 v2 / INTENT-4 v2: union slot sets + optional required_slots#56
INTENT-1 v3 / INTENT-3 v2 / INTENT-4 v2: union slot sets + optional required_slots#56JarbasAl wants to merge 5 commits into
Conversation
- INTENT-1 v3: narrow §5.5 to .dialog only; .intent allows templates with different slot sets (union semantics) - INTENT-3 v2: remove template slot-consistency obligation; add §5.3 required_slots; update §7.1 handler guarantee - INTENT-4 v2: add required_slots to template registration payload; replace slot-consistency malformed rule with required_slots check - README: bump versions in spec index table
|
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 |
…dix examples - PIPELINE-1 v3: add orchestrator MUST backstop for required_slots after the denylist check. Primary enforcement remains engine-side during match(); orchestrator is second line of defense. - appendix/patterns.md §3.4: add authoring patterns for union slot sets and required_slots with practical examples.
…rst stable release
c58c9dc to
1fe29fc
Compare
§5.3 Required slots was inserted without renumbering the following section. §5.4 Suppression is now §5.5 to match cross-references. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
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 |
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