diff --git a/CHANGELOG.md b/CHANGELOG.md index dffd84e..db59699 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -79,6 +79,23 @@ tool does not recognize the token and cannot expand the template. guarantees, session lifecycle, and the internal shape of `session` beyond `session_id` and `lang` are explicitly out of scope. +## OVOS-SESSION-1 — Session Carrier Wire Shape + +### 1 + +- The `context.session` carrier wire shape: the `session_id` and `lang` + core fields, the language field family (§3.2), the §2.1 field-registry + mechanism by which other specifications claim OPTIONAL session fields, + and the propagation and wire-weight rules. +- §2.1 — registered fields and their owning specifications: + `converse_handlers` (OVOS-CONVERSE-1 §2.1), `fallback_handlers` + (OVOS-FALLBACK-1 §4), and `persona_id` (OVOS-PERSONA-1 §3). +- §3.3 — `site_id` is defined by OVOS-BRIDGE-1 §3.3; this section states + the consumer constraints that apply within the orchestrator pipeline. +- See also — each field's owning specification, including + `session.active_handlers` (OVOS-PIPELINE-1 §7.1) and + `session.converse_handlers` (OVOS-CONVERSE-1 §2.1). + ## OVOS-INTENT-4 — Intent and Entity Registration Bus Contract ### 1 diff --git a/session-1.md b/session-1.md index 54537ae..cb33108 100644 --- a/session-1.md +++ b/session-1.md @@ -193,7 +193,10 @@ session and persist across utterances. | `pipeline` | array of string | OVOS-PIPELINE-1 §5 | | `intent_context` | object | OVOS-CONTEXT-1 §2 | | `active_handlers` | array of object `{skill_id, activated_at, ...}` | OVOS-PIPELINE-1 §7.1 | +| `converse_handlers` | array of object `{skill_id, activated_at}` | OVOS-CONVERSE-1 §2.1 | | `response_mode` | object `{skill_id, expires_at}` | OVOS-CONVERSE-1 §2.2 | +| `fallback_handlers` | array of string | OVOS-FALLBACK-1 §4 | +| `persona_id` | string | OVOS-PERSONA-1 §3 | | `audio_transformers` | array of string | OVOS-TRANSFORM-1 §5 | | `utterance_transformers` | array of string | OVOS-TRANSFORM-1 §5 | | `metadata_transformers` | array of string | OVOS-TRANSFORM-1 §5 | @@ -209,7 +212,7 @@ session and persist across utterances. | `blacklisted_intent_transformers` | array of string | OVOS-TRANSFORM-1 §5.2 | | `blacklisted_dialog_transformers` | array of string | OVOS-TRANSFORM-1 §5.2 | | `blacklisted_tts_transformers` | array of string | OVOS-TRANSFORM-1 §5.2 | -| `site_id` | string | §3.3 (this spec) | +| `site_id` | string | OVOS-BRIDGE-1 §3.3 | Every field above is OPTIONAL on the wire. A producer that sets a field **MUST** use the wire type listed and the value space defined @@ -465,31 +468,16 @@ A consumer that needs the payload's content language reads ### 3.3 `site_id` -`site_id` is an **opaque group identifier** for the session. It -names the group or physical location the session belongs to; the -grouping criterion (physical site, room, device cluster, -organisational unit, deployment tenant) is chosen by the deployer -and is not fixed by this specification. - -The primary consumer is **routing and output-locality policy**: a -component that routes audio, selects a TTS sink, or decides which -device speaks **MAY** use `site_id` to scope its decision to the -appropriate physical or logical group. A layer-2 system **MAY** -enforce that sessions from a given `site_id` are served only by -components registered to that site. - -Constraints: - -- **Opaque string.** A consumer **MUST NOT** parse or ascribe - structure to `site_id` beyond string equality. -- **No reserved value.** Unlike `session_id`, no specific string - value carries spec-defined meaning. In particular, the value - `"unknown"` — a value some implementations use as a placeholder — - carries no normative meaning under this specification. -- **Set by the session origin.** `site_id` SHOULD be populated by - the client or device that initiates the session, not by the - orchestrator. A component that forwards or derives a Message MUST - NOT overwrite an existing `site_id`. +`site_id` is an opaque group identifier. Its full normative +definition — assignment rules, bridge behaviour, and consumer +constraints — is owned by **OVOS-BRIDGE-1 §3.3**. This section is +a registry pointer only. + +Consumers of `site_id` within the orchestrator pipeline (audio +routing, output-locality policy) **MAY** use it to scope decisions +to a physical or logical group. They **MUST NOT** parse or ascribe +structure beyond string equality, and **MUST NOT** overwrite a +`site_id` already present on an inbound Message. ### 3.4 Wire weight @@ -665,9 +653,13 @@ any field not claimed under §2.2 by a normative specification. - **OVOS-MSG-1** — defines `Message.context` as the carrier and the `forward` / `reply` / `response` derivations that propagate `session` unchanged. -- **OVOS-PIPELINE-1** — owns `session.pipeline`. +- **OVOS-PIPELINE-1** — owns `session.pipeline` and + `session.active_handlers`. - **OVOS-CONTEXT-1** — owns `session.intent_context`. -- **OVOS-CONVERSE-1** — owns `session.active_handlers` and +- **OVOS-CONVERSE-1** — owns `session.converse_handlers` and `session.response_mode`. - **OVOS-TRANSFORM-1** — owns the six `session.*_transformers` fields. +- **OVOS-FALLBACK-1** — owns `session.fallback_handlers`. +- **OVOS-PERSONA-1** — owns `session.persona_id`. +- **OVOS-BRIDGE-1** — owns `session.site_id`.