T3 — contract parity
Captured 2026-10-19 on
feat/issue-496-gateway, fromcli/withTHE_LOOP_CLI_CONFIGunset (this machine's own instance sets it; one unrelated lifecycle test reads it).
text
cd cli && uv run python -m pytest -q tests/test_api_contract_parity.py tests/test_config_schema_parity.py
10 passed in 2.20sThe served OpenAPI surface of the gateway app equals docs/api-specs/openapi/the-loop-gateway.v1.yaml (path, method, operationId), every stored envelope validates against its Envelope component, the instance's the-loop.v1.yaml carries GET /api/v1/gateway, and the packaged gateway-config.schema.json is byte-identical to the authored one.
the-loop-gateway.v1.yaml
DELETE /api/v1/gateway/claims—gatewayReleaseGET /api/v1/gateway/health—gatewayHealthGET /api/v1/gateway/instances—gatewayInstancesGET /api/v1/gateway/queues—gatewayQueuesGET /api/v1/gateway/subjects—gatewaySubjectsPOST /api/v1/gateway/bindings—gatewayBindPOST /api/v1/gateway/commit—gatewayCommitPOST /api/v1/gateway/fetch—gatewayFetchPOST /gh-webhook—githubWebhookPOST /jira-webhook—jiraWebhookPOST /slack/commands—slackCommandsPOST /slack/events—slackEventsPOST /slack/interactions—slackInteractionsPUT /api/v1/gateway/actors—gatewayRegisterActorsPUT /api/v1/gateway/claims—gatewayClaim
the-loop.v1.yaml, the operation this work item adds
GET /api/v1/gateway—gateway