From 7156b25957889c8d4bf7a6f9bc48c45f72e69c8f Mon Sep 17 00:00:00 2001 From: Vuong Hoang Date: Sun, 5 Jul 2026 17:10:44 -0700 Subject: [PATCH] docs(proposals): note assistant-first provider constraint (#347 rev 1.1 validation) Worldtree accepted the v1 wire validation green; contract rev 1.1 folds all three consumer flags. Flag #1 surfaced a real provider constraint: first-message makes the assistant seq 0 -> vLLM/openai_compat tolerate it (sindra unaffected), but Anthropic-family providers 400 on an assistant-first array. Consumer must gate first-message on provider compat; provider-agnostic normalization deferred. --- docs/proposals/authored-message-injection.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/docs/proposals/authored-message-injection.md b/docs/proposals/authored-message-injection.md index b56f677..c0b36ea 100644 --- a/docs/proposals/authored-message-injection.md +++ b/docs/proposals/authored-message-injection.md @@ -169,6 +169,15 @@ consumer side MUST tolerate per-tenant absence: undiscoverable in `/capabilities` for ungranted tenants (same hide-existence posture as the R27-V1A cross-owner pattern). +**Provider constraint (first-message specifically).** A create-time first-message +makes the assistant turn `seq 0`. Assistant-first-tolerant providers (vLLM / +`openai_compat` — what our Tier-3 characters, incl. sindra, run) accept it out of +the box. **Anthropic-family providers reject an assistant-first array** ("first +message must use the user role") → the next generation `400`s. So the consumer +must **gate first-message on provider compatibility** (or treat it as +vLLM/`openai_compat`-only for v1). Sindra = `openai_compat` → unaffected; +provider-agnostic normalization is a deferred engine follow-up. + --- *This brief was cold-read-pressure-tested by a cross-frontier panel (Grok /