Skip to content

spec: INTENT-4 — absent-key = empty list, context-only session scoping, cold-start re-emission#113

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

spec: INTENT-4 — absent-key = empty list, context-only session scoping, cold-start re-emission#113
JarbasAl wants to merge 1 commit into
devfrom
spec/intent-4

Conversation

@JarbasAl

@JarbasAl JarbasAl commented Jul 4, 2026

Copy link
Copy Markdown
Member

Internal-purity refinement of OVOS-INTENT-4.

Changes

  • Absent list-valued key ≡ empty list (§5.2, §6.1): consumers MUST NOT treat a payload as malformed merely because a list-valued key is omitted; the "all four keys, shape-stable, positional semantics" producer requirement is dropped — the §5.3 validity rules operate on resolved values either way.
  • Unknown payload fields (§5.3, §6.3): ignored and preserved, never malformed. This is the mechanism that lets companion specifications (e.g. OVOS-CONTEXT-1 requires_context/excludes_context) ride on registration payloads.
  • Manifest observability (§2): non-gating scoped precisely to registration processing; other specifications MAY consult the manifest read-only during the utterance lifecycle without making it a gate.
  • Session scoping from context only (§8.4, §11.1, §11.3): the session_id for deregistration — including ovos.skill.deregister — is read exclusively from context.session.session_id, never from Message.data; the payload-level session_id field is removed. One rule for every message in the spec.
  • Enable/disable no-ops (§8.5): enabling/disabling an unregistered intent is a no-op, uniform with deregistration; whether a consumer's disabled-state record survives a plugin reload is out of scope (recover via the manifest, whose enabled field is authoritative).
  • Cold-start recovery (§10, §13): fire-and-forget plus a late-starting orchestrator would leave the manifest permanently empty; a skill SHOULD re-emit its registration set on observing the deployment's readiness announcement — idempotent by §8.1 implicit replacement.
  • §10.2 describe: entries are self-identifying by method; consumers MUST key on it, with keyword-then-template ordering RECOMMENDED rather than a MUST enabling positional access.
  • Topic rule: all registration-surface topics remain dotted (ovos.intent.register.template, .deregister, .enable, .disable, ovos.intent.list) — none are dispatch topics, so none take the reserved colon shape (MSG-1 §2.1.1).
  • Citation hygiene: §3.2 identity triple corrected to INTENT-3 §3; language-fallback "future spec" deferral restated as a timeless out-of-scope statement.

CHANGELOG entry appended under the spec's current class. Version field unchanged: per VERSIONING.md it is a V1/V2 compatibility class, and these refinements do not change class.

🤖 Generated with Claude Code

…context-only session scoping, cold-start recovery

- Absent list-valued keys equal empty lists; all-four-keys shape
  requirement dropped (§5.2, §6.1).
- Unknown payload fields ignored and preserved, never malformed
  (§5.3, §6.3) — the carrier for companion-spec fields.
- Manifest is observability-only for registration processing;
  read-only consultation by other specs permitted (§2).
- Deregistration session scoping reads exclusively from
  context.session.session_id; payload session_id removed (§8.4, §11).
- Enable/disable of unregistered intents is a no-op; reload-state
  survival out of scope (§8.5).
- Cold-start recovery: skills SHOULD re-emit registrations on the
  deployment readiness announcement; idempotent per §8.1 (§10).
- describe responses keyed on method, ordering RECOMMENDED (§10.2).
- Orchestrator passivity qualified by the §3.2 reserved-name
  exclusion; citations corrected; timeless out-of-scope wording.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@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: 52 minutes

Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available.
You're only billed for reviews past your plan's rate limits ($0.25/file).

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

Run ID: d4f7a901-0631-4fcb-8ef8-1757bc67cef5

📥 Commits

Reviewing files that changed from the base of the PR and between 9003dcd and 6a34b6e.

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

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