Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 6 additions & 4 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,11 @@
# Changelog

Each entry records a versioned change to a specification in this repository.
Each specification is versioned independently, starting at version 1. Every
pull request that alters normative content bumps the affected spec's `Version`
field and adds an entry here.
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.

## OVOS-INTENT-1 — Sentence Template Grammar

Expand Down
40 changes: 20 additions & 20 deletions GLOSSARY.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,23 +16,23 @@ open a PR adding it.

| Term | Meaning |
|------|---------|
| **Template** | A string in the OVOS-INTENT-1 grammar describing a set of sentences ([INTENT-1 §3](ovos-intent-1.md)). |
| **Expansion** | Resolving `(a\|b)` / `[x]` into a finite set of concrete sentences ([INTENT-1 §4](ovos-intent-1.md)). |
| **Sample / sample set** | A concrete sentence produced by expansion; the set of all of them for a template ([INTENT-1 §4](ovos-intent-1.md)). |
| **Slot** | A named placeholder `{name}` filled with a value rather than written out ([INTENT-1 §3.4, §5](ovos-intent-1.md)). |
| **Capture map** | The names→values mapping a match produces — slot names or vocabulary names as keys ([INTENT-3 §7](ovos-intent-3.md)). |
| **Resource file / role** | A skill's plain-text files: `.intent`, `.dialog`, `.entity`, `.voc`, `.blacklist` ([INTENT-2 §1](ovos-intent-2.md)). |
| **Vocabulary** | A named slot-free phrase set; the unit a keyword intent constrains over ([INTENT-3 §4.1](ovos-intent-3.md)). |
| **Occurrence** | A phrase appearing in an utterance as a contiguous whole-word subsequence ([INTENT-2 §4.3](ovos-intent-2.md), [INTENT-3 §4.1](ovos-intent-3.md)). |
| **Skill** | An app — a self-contained unit of assistant functionality ([INTENT-3 §1, §3](ovos-intent-3.md)). |
| **Skill id** | A skill's identifier, unique across the assistant ([INTENT-3 §3](ovos-intent-3.md)). |
| **Intent** | A developer-defined binding from a natural-language command to one handler ([INTENT-3 §1](ovos-intent-3.md)). |
| **Intent name / qualified name** | The intent's name, unique within its skill / the `skill_id:intent_name` pair ([INTENT-3 §3](ovos-intent-3.md)). |
| **Keyword intent / template intent** | The two definition methods — keyword constraints, or sentence templates ([INTENT-3 §2](ovos-intent-3.md)). |
| **Handler** | The code an intent triggers when its command is recognized ([INTENT-3 §1, §6](ovos-intent-3.md)). |
| **Intent engine** | A classifier + slot extractor: consumes definitions, identifies the triggered intent ([INTENT-3 §6.2](ovos-intent-3.md)). |
| **Orchestrator** | The component that coordinates intent matching and dispatch — owns the engines / pipeline plugins and routes match results to handlers ([INTENT-3 §6.1](ovos-intent-3.md)). Distinct from the messagebus (transport) and from individual engines / plugins. |
| **Registration** | Submitting an intent's definition and handler together, as one unit ([INTENT-3 §6.1](ovos-intent-3.md)). |
| **Message** | The unit of communication on the bus: a JSON object with `type`, `data`, `context` ([MSG-1 §2](ovos-msg-1.md)). |
| **Context** | The assistant-metadata object on a Message; an extensible JSON object whose keys are defined by companion specs ([MSG-1 §2.3](ovos-msg-1.md)). |
| **Session** | The per-conversation carrier in `context.session`; carries `session_id` (with `"default"` reserved for "originates from the device itself") and `lang` (the user's preferred language, distinct from any `data.lang` describing the payload's own language) ([MSG-1 §4](ovos-msg-1.md)). |
| **Template** | A string in the OVOS-INTENT-1 grammar describing a set of sentences ([INTENT-1 §3](intent-1.md)). |
| **Expansion** | Resolving `(a\|b)` / `[x]` into a finite set of concrete sentences ([INTENT-1 §4](intent-1.md)). |
| **Sample / sample set** | A concrete sentence produced by expansion; the set of all of them for a template ([INTENT-1 §4](intent-1.md)). |
| **Slot** | A named placeholder `{name}` filled with a value rather than written out ([INTENT-1 §3.4, §5](intent-1.md)). |
| **Capture map** | The names→values mapping a match produces — slot names or vocabulary names as keys ([INTENT-3 §7](intent-3.md)). |
| **Resource file / role** | A skill's plain-text files: `.intent`, `.dialog`, `.entity`, `.voc`, `.blacklist` ([INTENT-2 §1](intent-2.md)). |
| **Vocabulary** | A named slot-free phrase set; the unit a keyword intent constrains over ([INTENT-3 §4.1](intent-3.md)). |
| **Occurrence** | A phrase appearing in an utterance as a contiguous whole-word subsequence ([INTENT-2 §4.3](intent-2.md), [INTENT-3 §4.1](intent-3.md)). |
| **Skill** | An app — a self-contained unit of assistant functionality ([INTENT-3 §1, §3](intent-3.md)). |
| **Skill id** | A skill's identifier, unique across the assistant ([INTENT-3 §3](intent-3.md)). |
| **Intent** | A developer-defined binding from a natural-language command to one handler ([INTENT-3 §1](intent-3.md)). |
| **Intent name / qualified name** | The intent's name, unique within its skill / the `skill_id:intent_name` pair ([INTENT-3 §3](intent-3.md)). |
| **Keyword intent / template intent** | The two definition methods — keyword constraints, or sentence templates ([INTENT-3 §2](intent-3.md)). |
| **Handler** | The code an intent triggers when its command is recognized ([INTENT-3 §1, §6](intent-3.md)). |
| **Intent engine** | A classifier + slot extractor: consumes definitions, identifies the triggered intent ([INTENT-3 §6.2](intent-3.md)). |
| **Orchestrator** | The component that coordinates intent matching and dispatch — owns the engines / pipeline plugins and routes match results to handlers ([INTENT-3 §6.1](intent-3.md)). Distinct from the messagebus (transport) and from individual engines / plugins. |
| **Registration** | Submitting an intent's definition and handler together, as one unit ([INTENT-3 §6.1](intent-3.md)). |
| **Message** | The unit of communication on the bus: a JSON object with `type`, `data`, `context` ([MSG-1 §2](msg-1.md)). |
| **Context** | The assistant-metadata object on a Message; an extensible JSON object whose keys are defined by companion specs ([MSG-1 §2.3](msg-1.md)). |
| **Session** | The per-conversation carrier in `context.session`; carries `session_id` (with `"default"` reserved for "originates from the device itself") and `lang` (the user's preferred language, distinct from any `data.lang` describing the payload's own language) ([MSG-1 §4](msg-1.md)). |
52 changes: 33 additions & 19 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -87,33 +87,48 @@ below). Adoption is voluntary; conformance, once adopted, is not.

## Specifications

The **Version** column carries the V0/V1/V2 compatibility class
([VERSIONING.md](VERSIONING.md)): `1` for a formalization compatible with the
pre-spec status quo, `2` for one that is not backwards compatible.

### Intent stack — what a skill defines

| ID | Document | Version | Status |
|----|----------|---------|--------|
| OVOS-INTENT-1 | [Sentence Template Grammar](ovos-intent-1.md) | 2 | Draft |
| OVOS-INTENT-2 | [Locale Resource Formats](ovos-intent-2.md) | 2 | Draft · [v3 in review (PR #4)](https://github.com/OpenVoiceOS/architecture/pull/4) |
| OVOS-INTENT-3 | [Intent Definition](ovos-intent-3.md) | 1 | Draft |
| OVOS-INTENT-4 | [Intent and Entity Registration](ovos-intent-4.md) | 2 | [Draft — in review (PR #9)](https://github.com/OpenVoiceOS/architecture/pull/9) |
| OVOS-INTENT-1 | [Sentence Template Grammar](intent-1.md) | 1 | Draft |
| OVOS-INTENT-2 | [Locale Resource Formats](intent-2.md) | 1 | Draft |
| OVOS-INTENT-3 | [Intent Definition](intent-3.md) | 1 | Draft |
| OVOS-INTENT-4 | [Intent and Entity Registration](intent-4.md) | 2 | Draft |

### Bus stack — how components talk

| ID | Document | Version | Status |
|----|----------|---------|--------|
| OVOS-MSG-1 | [Bus Message](ovos-msg-1.md) | 2 | Draft |
| OVOS-SESSION-1 | [Session Carrier Wire Shape](ovos-session-1.md) | 1 | Draft |
| OVOS-SESSION-2 | [Session Lifecycle and State Ownership](ovos-session-2.md) | 1 | Draft |
| OVOS-MSG-1 | [Bus Message](msg-1.md) | 1 | Draft |
| OVOS-SESSION-1 | [Session Carrier Wire Shape](session-1.md) | 1 | Draft |
| OVOS-SESSION-2 | [Session Lifecycle and State Ownership](session-2.md) | 1 | Draft |
| OVOS-BRIDGE-1 | [Bus Bridge and Opaque Relay](bridge-1.md) | 2 | Draft |

### Orchestrator stack — what processes utterances

| ID | Document | Version | Status |
|----|----------|---------|--------|
| OVOS-PIPELINE-1 | [Utterance Lifecycle and Pipeline](ovos-pipeline-1.md) | 2 | Draft |
| OVOS-TRANSFORM-1 | [Transformer Plugins](transformer.md) | 1 | [Draft — in review (PR #20)](https://github.com/OpenVoiceOS/architecture/pull/20) |
| OVOS-CONTEXT-1 | [Intent Context](intent-context.md) | 1 | [Draft — in review (PR #18)](https://github.com/OpenVoiceOS/architecture/pull/18) |
| OVOS-CONVERSE-1 | [Active Handlers and Interactive Response](converse.md) | 1 | [Draft — in review (PR #25)](https://github.com/OpenVoiceOS/architecture/pull/25) |
| OVOS-STOP-1 | [Stop Pipeline Plugin](ovos-stop-1.md) | 1 | [Draft — in review (PR #33)](https://github.com/OpenVoiceOS/architecture/pull/33) |
| OVOS-AUDIO-IN-1 | [Audio Input Service](ovos-audio-in-1.md) | 1 | Draft |
| OVOS-PIPELINE-1 | [Utterance Lifecycle and Pipeline](pipeline-1.md) | 2 | Draft |
| OVOS-TRANSFORM-1 | [Transformer Plugins](transformer.md) | 1 | Draft |
| OVOS-CONTEXT-1 | [Intent Context](intent-context.md) | 2 | Draft |
| OVOS-CONVERSE-1 | [Active Handlers and Interactive Response](converse.md) | 2 | Draft |
| OVOS-STOP-1 | [Stop Pipeline Plugin](stop-1.md) | 2 | Draft |
| OVOS-PERSONA-1 | [Persona Pipeline Plugin](persona.md) | 2 | Draft |
| OVOS-FALLBACK-1 | [Fallback Pipeline Plugin](fallback.md) | 2 | Draft |
| OVOS-COMMON-QUERY-1 | [Common Query Pipeline Plugin](common-query.md) | 2 | Draft |

### I/O stack — input and output surfaces

| ID | Document | Version | Status |
|----|----------|---------|--------|
| OVOS-AUDIO-IN-1 | [Audio Input Service](audio-in.md) | 2 | Draft |
| OVOS-AUDIO-1 | [Audio Output Service](audio-out.md) | 2 | Draft |
| OVOS-GUI-1 | [GUI Display Subsystem](gui-1.md) | 1 | Draft |

Each spec carries its own scope statement, design rationale, and
conformance section in its header. Open the document for the full
Expand Down Expand Up @@ -157,12 +172,11 @@ request, never committed directly.

Each PR that alters normative content **MUST**:

- bump the spec's `Version` field in its header;
- add a corresponding entry to [CHANGELOG.md](CHANGELOG.md).

A version identifies an exact, citable state of a document, so
implementations and conformance results can name the version they
target.
- add a corresponding entry to [CHANGELOG.md](CHANGELOG.md);
- set the spec's `Version` field to its V0/V1/V2 compatibility class
(`1` for a backwards-compatible formalization, `2` once any change makes
the spec incompatible with the pre-spec status quo). The field is the
compatibility class, not a per-revision counter (VERSIONING.md).

PRs that touch only the non-normative material —
[APPENDIX.md](APPENDIX.md) and [appendix/](appendix/) files,
Expand Down
33 changes: 33 additions & 0 deletions VERSIONING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
# Spec versioning policy

Version numbers in this repository carry compatibility semantics anchored to
the pre-specification behavior of the OVOS stack:

| Version | Meaning |
| --- | --- |
| **V0** | The de facto, undocumented status quo — the behavior the stack ships before a subsystem is formalized. V0 is never written down as a spec; it is the reference point. |
| **V1** | A formalization of behavior that is **compatible with V0**. A V0 component keeps working against a V1 implementation, even if degraded (missing optional fields, reduced guarantees, legacy namespaces honored). |
| **V2** | Behavior that is **not backwards compatible** with V0. Adopting it requires coordinated migration (e.g. the `legacy_namespace` configuration gate). |

Until launch day, every spec in this repository MUST be classified as V1 or
V2. The classification is part of the spec header. Rules of thumb:

- A spec that documents existing message flows, adds optional fields, or
introduces parallel namespaces while the legacy ones keep working → **V1**.
- A spec that renames or removes message types, changes payload semantics, or
requires consumers to change before producers (or vice versa) → **V2**.
- A single spec MAY contain V1 sections and V2 sections only if the V2 parts
are explicitly gated (configuration flag) and the ungated behavior is V1.

Within a class, editorial revisions bump the spec's own revision number in
its header; compatibility class changes (V1 → V2) are a new spec version, not
a revision.

## The 1.0 definition

The compatibility classes define the project roadmap. The stack starts at V0
(the undocumented status quo — beta). Each subsystem is formalized as V1, then
migrated to V2 where the spec demands incompatible change. **OVOS is fully
spec compliant when every subsystem operates on V2 — that state is the
"breakthrough" in "from beta to breakthrough", and it is the 1.0 release
criterion.**
2 changes: 1 addition & 1 deletion ovos-audio-in-1.md → audio-in.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Audio Input Service Specification

**Spec ID:** OVOS-AUDIO-IN-1 · **Version:** 1 · **Status:** Draft
**Spec ID:** OVOS-AUDIO-IN-1 · **Version:** 2 · **Status:** Draft

This specification defines the **audio input service** — the component
that acquires audio, runs the pre-STT transformer chain, transcribes
Expand Down
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
Binary file modified ngi.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
File renamed without changes.
File renamed without changes.
File renamed without changes.
2 changes: 1 addition & 1 deletion ovos-stop-1.md → stop-1.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Stop Pipeline Plugin Specification

**Spec ID:** OVOS-STOP-1 · **Version:** 1 · **Status:** Draft
**Spec ID:** OVOS-STOP-1 · **Version:** 2 · **Status:** Draft

This specification defines the **stop pipeline plugin** — a pipeline
plugin that matches utterances expressing the user's intention to
Expand Down