Each entry records a change to a specification in this repository. Each
specification carries a Version field equal to its V0/V1/V2 compatibility
class (VERSIONING.md): 1 for a formalization compatible with the pre-spec
status quo, 2 once it is not backwards compatible. Entries are grouped under
the spec's current class. Every pull request that alters normative content adds
an entry here.
Breaking change. Version 2 adds the <name> inline vocabulary reference
token. A template using <name> is not valid version-1 syntax — a version-1
tool does not recognize the token and cannot expand the template.
- §3.7 (new) — the
<name>inline vocabulary reference: a token replaced during expansion by a named slot-free vocabulary (a.voc, OVOS-INTENT-2). - §3 —
<name>added to the grammar token table; §1 lists it under the expansion facet. - §2 —
<and>added to the structural metacharacters that cannot occur as literal input. - §4.1 — expansion gains a first step that resolves
<name>references recursively, before the[x]/()steps. - §3.6 — new malformed forms: a reference to an undefined vocabulary, and a
cyclic reference chain;
<and>join the unbalanced-metacharacter rule. - §7 — the Expander conformance role MUST resolve inline vocabulary references.
- Initial draft.
- The locale folder layout and the plain-text resource file formats
(
.intent,.dialog,.entity,.voc,.blacklist). - §1, §4.3 — the
.vocrole is a named set of localized phrasings, consumed as a keyword vocabulary and/or referenced inline via<name>(OVOS-INTENT-1 §3.7), and may itself contain such references. - §4.4 — the
.promptresource role: a whole-file verbatim string delivered to a language model. Not a template grammar file: no expansion, no line filtering, every character literal. Author-only HTML-style comments (<!-- … -->) are stripped before delivery; a malformed comment (unmatched<!--) MUST be reported. Optional{name}substitution fills only names the caller provides; unfilled slots remain literal text, and slots inside fenced code blocks are never substituted. Follows the §2.1 locale-override precedence.
- Initial draft.
- Initial draft. Formalizes existing OVOS bus behaviour as a single
specification covering: the on-the-wire JSON envelope (
type/data/context); the routing keyssourceanddestinationthat mark the OVOS / handler-code boundary (the attachment point layer-2 systems like HiveMind build on top of); thesessioncarrier with two normative internal fields —session_id(where"default"is reserved for "the Message originates from the device itself", already used byovos-audioto decide whether to play TTS locally; an absentsessionis treated as equivalent tosession_id: "default", andforward/reply/responseMAY materialize the default during derivation) andlang(the user's preferred language, distinct from per-payloaddata.langdescribing the message's data language, usually but not necessarily matching); theforward/reply/responseMessage derivations; the topic+session correlation model for.responsematching; and UTF-8 JSON serialization rules. No new fields are introduced; every key and derivation defined already exists in current OVOS code paths (ovos-bus-client.Messagefor the envelope,Message.replyfor source/destination swap,context["session"]for the session carrier,ovos-audiofor thesession_id == "default"policy hook). Encryption, transport, authentication, authorization, retry, delivery and ordering guarantees, session lifecycle, and the internal shape ofsessionbeyondsession_idandlangare explicitly out of scope.
- Initial draft. Bus contract for declaring intents and entities, the
wire companion to OVOS-INTENT-3. Defines registration topics
(
ovos.intent.register.keyword/.template,ovos.entity.register), deregistration / enable / disable, and orchestrator-owned manifest introspection (ovos.intent.list/.describe). Atomic keyword registration with inlinerequired/optional/one_of/excludedvocabulary descriptors. Structured identity via the(skill_id, intent_name, lang)triple plus amethodaxis for manifest indexing — a single intent MAY be registered under both keyword and template methods as two training-data representations. Fire-and-forget broadcast model: no.responseacknowledgements; manifest presence is the only success signal. Consuming plugins MUST log malformed-payload rejections at WARN with full identifiers and the rejecting topic. File paths never cross the bus — INTENT-2 locale files are a producer-side authoring convenience expanded inline by the skill loader before emission.
- §6 (new) — listening lifecycle signals. The audio input service
emits
ovos.listener.record.started/ovos.listener.record.endedaround voice-command capture, acceptsovos.listener.sleepto enter sleep mode and suspend capture, and emitsovos.listener.awokenon the sleep→awake transition. These replace the legacyrecognizer_loop:record_begin/recognizer_loop:record_end/recognizer_loop:sleep/mycroft.awokentopics. All carry no payload; the session is identified bycontext.session.session_id. - §6.5 — bus surface table for the listener role, including the
consumer-side
ovos.mic.listenrow (defined in OVOS-AUDIO-1 §4.4). - See-also — cross-references OVOS-AUDIO-1 §4.4 as the defining spec
for
ovos.mic.listen.