Skip to content

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

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

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

Important

Review skipped

Draft detected.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 6413bce0-0551-434c-8488-8a6ee2bffbd9

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ 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.

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