Skip to content

docs(#2872): provider × capability matrix — single source of truth#93

Merged
Skobeltsyn merged 1 commit into
mainfrom
docs/2872-provider-matrix
May 30, 2026
Merged

docs(#2872): provider × capability matrix — single source of truth#93
Skobeltsyn merged 1 commit into
mainfrom
docs/2872-provider-matrix

Conversation

@Skobeltsyn
Copy link
Copy Markdown
Contributor

ChatGPT audit (#2865) P1: capability claims are currently scattered across CHANGELOG entries, multimodal.md, model-and-tools.md, and per-adapter KDoc. A single canonical matrix makes drift visible.

New docs/providers.md — the four columns (Anthropic / OpenAI / Ollama / DeepSeek) match ModelProvider.entries. Six matrices:

  • Modality input — image is shipped on Anthropic / OpenAI / Ollama; DeepSeek shape-tested only; document / audio / video deferred (see the #2868 erratum for the v0.6.5 release-note slip).
  • Reasoning — Anthropic / Ollama / DeepSeek surface text; OpenAI is count-only.
  • Prompt caching — wire-level vs automatic-prefix vs engine-KV; which fields land on TokenUsage.
  • Tool calling — ToolChoice.{Auto, Required, None, Specific} wire shapes per provider; Ollama's best-effort hint + JUL warning.
  • Constrained decoding — all four ship supportsConstrainedDecoding() == true with provider-specific wire shapes.
  • Streaming — SSE / NDJSON, what chunk types each provider emits.

Closing "Updating this matrix" section names the 4-step checklist for adding a fifth provider (enum + adapter + matrix column + caching tests + caching.md update).

Cross-linked from:

  • README.md "Documentation" list (between Skills and Model & Tool Calling).
  • docs/multimodal.md Stage 1 paragraph (modality scope).
  • docs/model-and-tools.md lead-in (capability scope vs DSL scope).

Auditor flagged the scattered claims as: "Agents.KT sells trust. Trust products need unusually clean docs." This concentrates the trust surface into one file.

No code changes. Full ./gradlew test detekt green.

ChatGPT audit (#2865) P1: capability claims are currently scattered
across CHANGELOG entries, multimodal.md, model-and-tools.md, and
per-adapter KDoc. A single canonical matrix makes drift visible.

New `docs/providers.md` — the four columns (Anthropic / OpenAI /
Ollama / DeepSeek) match `ModelProvider.entries`. Six matrices:
- Modality input — image is shipped on Anthropic / OpenAI / Ollama;
  DeepSeek shape-tested only; document / audio / video deferred (see
  the #2868 erratum for the v0.6.5 release-note slip).
- Reasoning — Anthropic / Ollama / DeepSeek surface text; OpenAI is
  count-only.
- Prompt caching — wire-level vs automatic-prefix vs engine-KV; which
  fields land on `TokenUsage`.
- Tool calling — `ToolChoice.{Auto, Required, None, Specific}` wire
  shapes per provider; Ollama's best-effort hint + JUL warning.
- Constrained decoding — all four ship `supportsConstrainedDecoding()
  == true` with provider-specific wire shapes.
- Streaming — SSE / NDJSON, what chunk types each provider emits.

Closing "Updating this matrix" section names the 4-step checklist for
adding a fifth provider (enum + adapter + matrix column + caching
tests + caching.md update).

Cross-linked from:
- README.md "Documentation" list (between Skills and Model & Tool
  Calling).
- docs/multimodal.md Stage 1 paragraph (modality scope).
- docs/model-and-tools.md lead-in (capability scope vs DSL scope).

Auditor flagged the scattered claims as: "Agents.KT sells trust. Trust
products need unusually clean docs." This concentrates the trust
surface into one file.

No code changes. Full `./gradlew test detekt` green.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@Skobeltsyn Skobeltsyn merged commit 460a969 into main May 30, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant