spec: OVOS-COMMON-QUERY-1 — contest correlation, deterministic selection, responder identity - #136
spec: OVOS-COMMON-QUERY-1 — contest correlation, deterministic selection, responder identity#136JarbasAl wants to merge 1 commit into
Conversation
…ion, responder identity Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
Warning Review limit reached
Next review available in: 41 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)
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 |
Audit pass over
common-query.md. The spec stays class 2 — the newquery_idfield is tolerated-absent, so skills written against the currentprotocol keep participating unchanged.
Behavior changes
Three changes alter what a conformant implementation does, not just how the
text reads:
query_idcorrelation (§6.4). Every contest carries aplugin-generated identifier in the ping and the full-answer request;
skills echo it in the pong and the response, and mismatches are discarded.
Session + utterance was not a sufficient key: a repeated question, or a
deployment where several clients share the default session, produce
contests that key alone cannot tell apart. A pong or response with no
query_idis still accepted on utterance + session (SHOULD), which iswhat keeps the compatibility class.
"proceed as soon as one claims". That made answer choice a race between
skills' response latencies. Early close is now allowed only on an
order-independent sufficiency condition — every known subscriber has
answered — and otherwise the plugin waits out the window.
broken by any deployer-defined heuristic". It is now
confdescending,then
skill_idlexicographic ascending. Deployer keys are admitted onlywhen they are deterministic functions of the response set, and a
configured reranker MUST be deterministic. The opt-in, default-off
fast-win rule remains the single sanctioned exception.
Identity and message hygiene
skill_idvalidated against the envelopesourcewhere the substrate provides it; response payload
skill_idMUST equal thetopic prefix.
ovos.common_query.pongis a shared topic with a free-formidentity field, and the response prefix was never bound to the payload, so
every downstream decision keyed on
skill_id(denylist, dedup, tie-break)was acting on an unverified claim.
skill_idper contest, first wins.including
confoutside[0, 1]— discarded, never clamped.contest.
.common_query.infix, so a dottedskill_id(wiki.test) parsesunambiguously. MSG-1 §2.1.1 separator hygiene binds only the structural
infix in this family.
Language
pre-resolution tag is provisional, never published in
Match.lang, andthe cached contest is void unless it equals the
langargument theorchestrator later passes to
match.langargument replacescontext.session.langas thenormative language source in §6.1, §7.1 and §9.
Match.langis now thatargument.
Early start
not transparent in invocation: a skill a later stage blacklists has
already run its network and database calls. Deployments where invocation is
privacy-sensitive or billable SHOULD NOT enable early start.
ended) MUST evict its cache entry, with a wall-clock backstop.
utterance, which is also
Match.utterance, consistent with PIPELINE-1§4.1's fallback rule.
Windows, denylist, Match
initial value toward the ceiling only while a claimant is outstanding;
otherwise selection happens at the initial window.
latency_msis a hint —implausible values ignored, never pushes past the ceiling.
§5.3 orchestrator backstop can never fire here, because
Match.skill_idisthe plugin's
pipeline_id. The answering skill is surfaced asslots.skill_id(§9).Match.updated_sessionis omitted, not an echo of the inboundsession (PIPELINE-1 §4.1).
Editorial
the accept/reject examples are informative.
MUST list, matching their normative text.
Not in this PR
pipeline-1.md:308citation of CQ §2.1 (should be §7.2) and the §7.3suppression-rationale wording belong to the PIPELINE-1 PR.
🤖 Generated with Claude Code