Portable provider implementation requirements
These requirements track the live implementation of the portable provider implementation specification.
| ID | Requirement | Implementation | Verification | Documentation | Evidence |
|---|---|---|---|---|---|
| PPI-001 | Substantial provider packages expose a transport-focused provider plus independently owned optional provider extensions and package metadata. | Implemented | Automated | Documented | Anthropic provider plus independent tools, reasoning, reasoning-controls, usage, and caching extensions |
| PPI-002 | Providers own credential consumption, request transport, native conversion, ordinary/streaming calls, full native history, cancellation, and raw error mapping without interactive login logic. | Implemented | Automated | Documented | Anthropic provider unit, stack, Ollama, and application tests |
| PPI-003 | Provider-specific extensions own interpretation, native history, metadata, tests, and docs; config/UI/request shaping may use the generic request-options contract when the feature maps directly to versioned provider request keys. | Implemented | Automated | Documented | Anthropic splits compatible reasoning interpretation from official controls and retains raw request options as final override |
| PPI-004 | Model discovery preserves authoritative capabilities and uses conservative behavior when capabilities are absent or discovery fails. | Implemented | Automated | Documented | Anthropic preserves raw capabilities, normalizes feature-owned details, uses documented fallback rules, and returns [] on discovery failure |
| PPI-005 | Compatible endpoints share explicit tested baseline protocol tags, reserve boolean capabilities for non-baseline optional extension tags, and use ordinary inspectable configuration presets without silently falling back to another provider or requiring hidden request filtering. | Implemented | Automated | Documented | Anthropic official controls/caching are explicitly gated while Ollama retains baseline reasoning and raw request options |
| PPI-006 | Streaming partials are chunk-local, completed native history contains no raw chunks/scratch state, and non-streaming and streaming finals share one contract. | Implemented | Automated | Documented | Anthropic reducer, stack, and Ollama streaming tests |
| PPI-007 | Tool schemas, calls, and results use the request-bound interop registry and preserve provider-native identity and display metadata across reload. | Implemented | Automated | Documented | Anthropic extension unit, stack, and Ollama tool tests |
| PPI-008 | Structured provider errors retain stable categories, retryability, request IDs, and redacted details through application events while provider retries and auth lifecycle remain plugin-owned. | Not started | Unverified | Pending | tasks/20260824-direct-claude-provider-and-plugin-login/019-portable-provider-request-errors.md |
| PPI-009 | Provider conformance includes deterministic contracts, public application integration, supported local-compatible configurations, and selective hosted verification with explicit marker/skip rules. | Implemented | Automated | Documented | Anthropic deterministic, application-loaded Duration/TPS, Qwen 3.5 compatibility, Granite effort-effectiveness, and bounded hosted tests pass |
| PPI-010 | Each substantial provider package documents configuration, credentials, models, extensions, compatibility, errors, cancellation, verification, and limitations. | Implemented | Inspected | Documented | Anthropic README and development implementation guide |
| PPI-011 | Providers with token usage expose normalized formatted per-message, turn-cumulative, and session-cumulative usage that survives reload and interoperates with duration/TPS calculation. | Implemented | Automated | Documented | Anthropic usage supplies stable turn metadata; application-loaded ordinary and tool-turn Duration/TPS tests pass |
| PPI-012 | Provider cost estimation uses maintained public model-pricing catalogs, explicit reported-versus-estimated provenance, conservative cached-token estimation, and shared calculation helpers without inventing values for unknown models. | Not started | Unverified | Documented | tasks/20260824-direct-claude-provider-and-plugin-login/018-provider-cost-estimation-and-pricing-catalog.md; public usage/cost/performance standard |
| PPI-013 | Providers claiming reasoning and tools pass the canonical bank-file continuity test in ordinary and streaming modes; profiles claiming cross-request reasoning preservation also satisfy the interrupted-user reasoning-size contract or record an explicit negative profile. | In progress | Automated | Documented | direct Anthropic Haiku ordinary/streaming and Sonnet keep-all hosted tests pass; Anthropic latest-turn-only reports cleared reasoning and OpenRouter Claude interrupted-user is a strict expected failure |
| PPI-014 | Provider-specific controls may be isolated from compatible response interpretation through a capability-gated extension that enriches model descriptors, owns exact settings/UI/request mapping, preserves raw request-option precedence, and documents equivalent copyable configuration for model fallbacks. | Implemented | Automated | Documented | Anthropic reasoning controls extension, official capability tests, regex fallback tests, and package $variants guide |
| PPI-015 | Providers expose selectable string models through one searchable custom-capable dropdown with nested validation/label settings and ordinary override mutation; provider-owned settings may add self-contained dropdown/toggle composer presentation without changing request contracts; containing config elements retain ordinary/fallback labels and icons while rich options may override compact appearance; semantic option icon/tone permutations are verified through an opt-in dummy plugin; mobile and desktop render the portable contract without provider-specific UI types. | Implemented | Automated | Documented | Provider model UI tests, Anthropic reasoning UI tests, dummy-rich-config-ui, public backend integration, mobile/desktop suites, iOS/Android Detox, and macOS XCUITest |
Current-state note
Existing providers implement portions of this target but are not declared fully conformant by this requirements file. Package-specific requirements and tests remain authoritative for delivered behavior until conformance evidence is recorded.