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

8.3 KiB

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