Files
summercms/.planning/phases/14-domain-jobs-and-external-integrations/COVERAGE.md
Jakub Zych 17b2ef1961 docs(14-06): Phase 14 validation signed off, requirements complete, API coverage confirmed, folded todos closed
- 14-VALIDATION.md: per-task map 14-01-T1 to 14-06-T4, all green, the
  measured coverage, validated, Nyquist-compliant, Wave 0 complete, the
  final --all and --removal results
- REQUIREMENTS.md: INTG-02 and API-08 Complete (JOBS-02, JOBS-03, SRCH-02,
  INTG-01, CLI-05 already were)
- COVERAGE.md: every INTEGRATE row's test confirmed by --named
- fetchguard-guarded-http-client and redacting-slog-handler moved to done
2026-10-04 02:47:53 +02:00

90 lines
8.3 KiB
Markdown

# API Coverage — Phase 14 (Discogs, Anthropic Messages, OpenAI-compatible chat completions, G15Office)
> Full coverage by default. Opt-outs are explicit, reasoned decisions.
>
> Scope: Phase 14 is a parity port. The PHP reference (Płytarium's Golem15.Fonoteka, Golem15.Golem and Golem15.Feedback plugins) defines the surface. Every capability the PHP code calls is INTEGRATE. Every capability it never calls is OPT-OUT with the reason "not used by the PHP reference — parity port". The INTEGRATE reason column names the test that proves the capability. Plan 14-06 confirms each named test passes, and `scripts/check-phase14.sh --evidence` refuses a row whose test is missing or failing.
>
> Confirmed 2026-10-04 (plan 14-06): every test an INTEGRATE row names is run by exact name by `scripts/check-phase14.sh --named` and passed in that run; `--evidence` refuses an INTEGRATE row naming a test outside that stage and an OPT-OUT row without a reason. Live vendor calls stay out of the gate (D-15): each INTEGRATE capability is proven against PHP's recorded exchange or a scripted vendor answer.
## Discogs API (api.discogs.com, i.discogs.com)
| capability | decision | reason |
|---|---|---|
| discogs: personal token auth header (Authorization: Discogs token=) | INTEGRATE | test: TestClientGetRelease (14-02) |
| discogs: GET /releases/{id} with curr_abbr | INTEGRATE | test: TestClientGetRelease, row-edit pick parity case (14-02) |
| discogs: GET /database/search by query (type=release) | INTEGRATE | test: TestDiscogsMatchRoute, albums/{id}/match parity cases (14-03) |
| discogs: GET /database/search by barcode (type=release) | INTEGRATE | test: TestDiscogsImportRoute, albums/import/discogs parity cases (14-03) |
| discogs: GET /masters/{id}/versions | INTEGRATE | test: TestDiscogsImportRoute (14-03) |
| discogs: GET /marketplace/price_suggestions/{id} | INTEGRATE | test: TestCoverPriceRoute, cover-price parity cases (14-03) |
| discogs: GET /oauth/identity (token check) | INTEGRATE | test: TestDiscogsCredentialTestRoute (14-03) |
| discogs: cover image download from Discogs image hosts | INTEGRATE | test: TestCoverFetcherHostLock, TestApplyReleaseModes (14-03) |
| discogs: rate-limit headers (X-Discogs-Ratelimit-Remaining, Retry-After) | INTEGRATE | test: TestDiscogsClientStatuses, TestRateLimiterSyncFromHeaders (14-02) |
| discogs: OAuth 1.0a request-token, authorize and access-token flow | OPT-OUT | not used by the PHP reference — parity port |
| discogs: GET /masters/{id} master detail | OPT-OUT | not used by the PHP reference — parity port (only master versions are read) |
| discogs: artist endpoints (/artists/{id}, /artists/{id}/releases) | OPT-OUT | not used by the PHP reference — parity port |
| discogs: label endpoints (/labels/{id}, /labels/{id}/releases) | OPT-OUT | not used by the PHP reference — parity port |
| discogs: release community rating endpoints | OPT-OUT | not used by the PHP reference — parity port |
| discogs: GET /marketplace/stats/{id} | OPT-OUT | not used by the PHP reference — parity port |
| discogs: marketplace listings, orders and fees | OPT-OUT | not used by the PHP reference — parity port |
| discogs: user collection folders and items | OPT-OUT | not used by the PHP reference — parity port |
| discogs: user wantlist | OPT-OUT | not used by the PHP reference — parity port |
| discogs: user lists, profile and submissions | OPT-OUT | not used by the PHP reference — parity port |
| discogs: inventory export and upload | OPT-OUT | not used by the PHP reference — parity port |
## Anthropic Messages API (api.anthropic.com/v1, or a configured base URL)
| capability | decision | reason |
|---|---|---|
| anthropic: POST /messages text completion with x-api-key and anthropic-version | INTEGRATE | test: TestAnthropicAdapterPayload (14-04) |
| anthropic: system prompt and the model system-prompt rule | INTEGRATE | test: TestAnthropicAdapterPayload, TestAIServiceFailures (14-04) |
| anthropic: image blocks from base64 data URLs | INTEGRATE | test: TestRecognizeAlbums, recognize parity cases (14-04) |
| anthropic: image blocks from plain URLs | INTEGRATE | test: TestAnthropicAdapterPayload (14-04) |
| anthropic: document blocks by file_id | INTEGRATE | test: TestAnthropicAdapterPayload (14-04) |
| anthropic: POST /files upload with the files-api beta header | INTEGRATE | test: TestAIServiceFailures files-endpoint cases (14-04) |
| anthropic: streaming responses (server-sent events) | INTEGRATE | test: TestAIServiceStream (14-04) |
| anthropic: usage and stop_reason parsing (max_tokens truncation) | INTEGRATE | test: TestRecognizeAlbums truncation case (14-04) |
| anthropic: error envelope (error.message) | INTEGRATE | test: TestAIServiceFailures (14-04) |
| anthropic: tool use | OPT-OUT | not used by the PHP reference — parity port |
| anthropic: extended thinking | OPT-OUT | not used by the PHP reference — parity port |
| anthropic: prompt caching (cache_control) | OPT-OUT | not used by the PHP reference — parity port |
| anthropic: Message Batches API | OPT-OUT | not used by the PHP reference — parity port |
| anthropic: token counting endpoint | OPT-OUT | not used by the PHP reference — parity port |
| anthropic: models list endpoint | OPT-OUT | not used by the PHP reference — parity port |
| anthropic: citations and search result blocks | OPT-OUT | not used by the PHP reference — parity port |
| anthropic: image generation | OPT-OUT | not used by the PHP reference — parity port (the PHP adapter has no image endpoint) |
## OpenAI-compatible chat completions (api.openai.com/v1, or a configured base URL)
| capability | decision | reason |
|---|---|---|
| openai: POST /chat/completions with a bearer key | INTEGRATE | test: TestOpenAIAdapterPayload, ai-credential/test parity cases (14-04) |
| openai: system message first in the message list | INTEGRATE | test: TestOpenAIAdapterPayload (14-04) |
| openai: image_url content parts | INTEGRATE | test: TestRecognizeAlbums, recognize parity cases (14-04) |
| openai: max_completion_tokens mapping and default reasoning_effort | INTEGRATE | test: TestOpenAIAdapterPayload (14-04) |
| openai: streaming responses (server-sent events) | INTEGRATE | test: TestAIServiceStream (14-04) |
| openai: POST /files upload | INTEGRATE | test: TestAIServiceFailures files-endpoint cases (14-04) |
| openai: POST /images/generations | INTEGRATE | test: TestAIServiceFailures image-model cases (14-04) |
| openai: usage and finish_reason parsing (length truncation) | INTEGRATE | test: TestRecognizeAlbums truncation case (14-04) |
| openai: error envelope | INTEGRATE | test: TestAICredentialTestRoute (14-04) |
| openai: per-credential base URL for compatible servers | INTEGRATE | test: TestSSRFGuard, TestAICredentialTestRoute unsafe and non-allowlisted cases (14-04) |
| openai: response_format structured output | OPT-OUT | not used by the PHP reference — parity port (PHP strips response_format before sending) |
| openai: tool and function calling | OPT-OUT | not used by the PHP reference — parity port |
| openai: Responses API | OPT-OUT | not used by the PHP reference — parity port |
| openai: Assistants API | OPT-OUT | not used by the PHP reference — parity port |
| openai: embeddings | OPT-OUT | not used by the PHP reference — parity port |
| openai: audio speech and transcription | OPT-OUT | not used by the PHP reference — parity port |
| openai: moderation | OPT-OUT | not used by the PHP reference — parity port |
| openai: fine-tuning | OPT-OUT | not used by the PHP reference — parity port |
| openai: batch API | OPT-OUT | not used by the PHP reference — parity port |
| openai: realtime API | OPT-OUT | not used by the PHP reference — parity port |
| openai: models list | OPT-OUT | not used by the PHP reference — parity port |
## G15Office support API (configured base URL)
| capability | decision | reason |
|---|---|---|
| g15office: bearer token auth | INTEGRATE | test: TestSyncG15Office (14-05) |
| g15office: POST /_support/api/v1/projects/{project}/tasks | INTEGRATE | test: TestSyncG15Office with the PHP-recorded job sidecar (14-05) |
| g15office: POST /_support/api/v1/tasks/{hashId}/attachments multipart | INTEGRATE | test: TestSyncG15Office with the PHP-recorded job sidecar (14-05) |
| g15office: task read, update, comment and status endpoints | OPT-OUT | not used by the PHP reference — parity port |