spec: session-1.md — register user-preference fields; one-purpose-per-field language taxonomy - #122
spec: session-1.md — register user-preference fields; one-purpose-per-field language taxonomy#122JarbasAl wants to merge 1 commit into
Conversation
|
Warning Review limit reached
Next review available in: 36 minutes You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository. How can I continue?After more reviews become available, a review can be triggered using the 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 configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (2)
✨ Finishing Touches🧪 Generate unit tests (beta)
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. Comment |
…-field language taxonomy Squashed from: - spec: session-1.md — audit rework: resolution classes, cite unification, closed value spaces - feat: OVOS-SESSION-1 v2 — user-preference fields, one-purpose language taxonomy, transient-state disclaimer Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
1136993 to
afe708c
Compare
OVOS-SESSION-1 v2
Raises OVOS-SESSION-1 to version 2 and folds in the audit rework of the
whole document. Two groups of change: new normative surface, and repairs to
what version 1 already said.
New normative surface
location(object),system_unit,time_format,date_format(strings) — the sessionorigin's presentation preferences, so a component answering a remote
participant renders times, dates, units, and place-relative answers for
the user's locale rather than the device's. The three string fields have
closed value spaces (
metric/imperial,full/half,DMY/MDY);locationstates its full nested key shape (city,coordinate,timezone) as §2.2 requires of any object claim. All four are overridefields: absence resolves to deployment configuration.
is_speaking/is_recordingdescribe the device at an instant, not the session, and arestale by the time a propagated session is read. Such a field is therefore
not a field of
session(§2.3); a consumer tolerates it under §2.4 andSHOULD NOT act on its value. The authoritative surface is OVOS-AUDIO-1
— the §5.1–§5.2 output-lifecycle signals and the §5.3
ovos.audio.is_speakingquery for on-demand status.summary table and an explicit split into preference (
lang,secondary_langs,output_lang) and per-utterance observation(
stt_lang,request_lang,detected_lang).fields are the current reading and a consumer MUST NOT read a surviving
value as a description of an older utterance.
wire-equivalent to omission, on the same grounds as the existing
empty-array case. State-record fields are excluded — for those the empty
value is the owner-specified resolution, not a deferral.
identity of its own SHOULD send that identifier rather than
"default"for its own conversational traffic.
Repairs to version 1
§2.5 already argued from this rule; no section stated it.
to deployment configuration. State-record fields (
active_handlers,converse_handlers,response_mode,intent_context) fall back to theempty value their owner names —
[],{}, "no holder" — never todeployment configuration, which v1 wrongly implied for all fields.
numberwith theconstraint in the claiming spec's value space (JSON has one numeric type);
array claims state element type, object claims state every key.
discharged only by a SHOULD. The record is now a MUST to set
data.langto the language actually rendered in.verbatim. v1's local restatement dropped the "after bridge processing"
precondition and so banned the override that BRIDGE-1 §3.3 step 1 requires.
explicitly, with its rationale, instead of applied silently.
the phantom quotation ("any device-local fields the implementation
chooses", which appears nowhere in MSG-1) is dropped.
no-default-substitution guarantee is not lost on the routing path.
(was §6).
request_langhint cites itsobservable source,
ovos.listener.wakeword(OVOS-AUDIO-IN-1 §6.5).§5.1–§5.3; intro reconciled with §2.2 (the registry is the closed set, §3
enumerates it at publication); §1 no longer disclaims the ~200 lines of
field semantics this spec owns itself; RFC key-word list completed with
OPTIONAL / RECOMMENDED and the RFC 8174 caveat; descriptive residue in
§3.1, §3.2.3, and §3.4 cut or labelled informative.
registry cite (§2.1 → §2.2/§3) and roster description corrected.
Dropped from the original PR
{"session_id": ...}on intermediate emissions. SESSION-2 §3.2 states nosuch rule; it says the opposite ("every assistant-emitted Message carries
an updated session"). If the allowance is wanted it must land in SESSION-2
first. The twin hunk is dropped from the SESSION-2 PR too.
participant SHOULD use a distinct
session_id" contradicted the survivingparagraph calling remote use of
"default""equally valid", and pushedagainst §2.1's MUST NOT to treat absence as an untrusted origin. It is now
scoped to participants that have a session identity of their own, and the
layer-2 gate is back to MAY.
dev.Dependencies
belongs to spec: README.md — spec-index titles match the spec headers #128 (README), which should land after this.