Skip to content

spec: INTENT-3 — dual-method registrations, method-keyed replacement, precise required-slot semantics - #121

Open
JarbasAl wants to merge 1 commit into
devfrom
spec/intent-3
Open

spec: INTENT-3 — dual-method registrations, method-keyed replacement, precise required-slot semantics#121
JarbasAl wants to merge 1 commit into
devfrom
spec/intent-3

Conversation

@JarbasAl

@JarbasAl JarbasAl commented Jul 4, 2026

Copy link
Copy Markdown
Member

🤖 Auto-generated by Claude Fable 5 (claude-fable-5) via Claude Code — NOT human-reviewed. Verify before acting. Cross-spec citations were model-verified against dev source; behavior-change sections need owner judgment.

Internal-purity refinement of OVOS-INTENT-3, aligning the intent model with the OVOS-INTENT-4 wire contract.

Changes

  • Dual-method intents (§2): an intent is defined by one or both of the two methods. Each individual registration still uses exactly one method — the shapes are never mixed within one registration — and an intent MAY carry one registration per method, as two training-data representations of the same handler (INTENT-4 §3.2). This removes the contradiction where INTENT-3 said "exactly one method" while INTENT-4 keys registration and replacement by method.
  • Method-keyed replacement (§6.1): replacement is keyed on the (skill id, intent name, language, method) quadruple; registering one method leaves the other method's registration for the same triple untouched.
  • Quadruple identity (§3): an intent definition's identity is restated as the (skill id, intent name, language, method) quadruple — matching the §6.1 replacement key and the §2 dual-method allowance — rather than the stale (skill id, intent name, language) triple. A dual-method intent is two definitions sharing the first three components, both bound to the same handler.
  • §1 forward pointer: the "one unit" invariant now forward-points to the §2 dual-method allowance, so a dual-method intent (two registered units, one handler) reads as an instance of the invariant rather than an apparent exception to it.
  • Required-slot failure (§5.3): stated precisely — when a required slot is absent from the match result, the engine MUST treat the intent as unmatched for that utterance; it MAY internally consider other templates of the same intent before concluding the intent is unmatched.
  • Wording hygiene: "slots map" normalized to "slot map" throughout; the slot-typing deferral restated as out of scope alongside the normalization it depends on (matching the INTENT-1 companion change); the "this one — the last —" dependency-order aside dropped.

Version class

Version field unchanged: per VERSIONING.md this is a V1/V2 compatibility class, and none of the above changes class. The dual-method allowance is the one change worth arguing explicitly, since it looks additive:

Dual-method registration is not new behavior — it is the V0 status quo restated as spec. Under V0, an adapt skill and a padatious skill could and did coexist registering the same intent name against the same handler: one engine consuming keyword constraints, the other consuming templates, both bound to one piece of code. INTENT-4 §3.2 already keys registration and replacement by method for exactly this reason. INTENT-3 §2's old "exactly one method" line was the actual divergence from the ecosystem's real, already-shipped behavior — this PR removes that divergence, it does not introduce new behavior. No implementation that already supports adapt+padatious coexistence needs to change to stay conformant. Hence V1, not V2.

CHANGELOG entry appended under the spec's current class, extended to cover the §3 quadruple-identity and §1 forward-pointer fixes.

🤖 Generated with Claude Code

@coderabbitai

coderabbitai Bot commented Jul 4, 2026

Copy link
Copy Markdown

Warning

Review limit reached

@JarbasAl, you've reached your PR review limit, so we couldn't start this review.

Next review available in: 36 minutes

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

How can I continue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

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 reviews.

How do review 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 refer docs for additional details.

Review details
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 8c8063fe-9803-4528-ac7f-bc2af6afe0ab

📥 Commits

Reviewing files that changed from the base of the PR and between 1d3622b and ae2c9c3.

📒 Files selected for processing (2)
  • CHANGELOG.md
  • intent-3.md
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch spec/intent-3

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.

@JarbasAl
JarbasAl marked this pull request as ready for review July 16, 2026 07:21
… precise required-slot semantics

Squashed from:
- spec: OVOS-INTENT-3 — name the entity-level .blacklist role as distinct
- spec: OVOS-INTENT-3 — quadruple identity in §3; §1 forward pointer
- docs: INTENT-3 consistency review — dual-method registrations, method-keyed replacement, required-slot semantics

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant