Merge branch 'wt/review-002-projection-truthfulness'

This commit is contained in:
2026-08-30 23:08:42 +00:00
5 changed files with 493 additions and 115 deletions
+17 -7
View File
@@ -514,20 +514,24 @@ number:
`to_openapi` projects `error_schemas` to the gateway endpoint's
response definitions. The `/call` endpoint's responses are the shared
components-referenced status map: the protocol-level errors, plus any
operation-level errors (keyed by the registry's declared `http_status`;
entries whose codes lack the `HTTP_<status>` prefix carry
operation-level errors (keyed by the registry's declared `http_status`.
Entries whose codes lack the `HTTP_<status>` prefix carry
`x-runtime-behavior: 500` — the runtime mapper is purely code-driven,
see review-001 PRJ-04):
see review-001 PRJ-04. Declarations at a protocol status from
`HTTP_<status>`-prefixed codes are **merged oneOf** into the shared
protocol response instead of overwriting it — the runtime emits both,
see review-002 PRJ-17):
```yaml
# /call endpoint responses
responses:
'200': { $ref: '#/components/schemas/CallOk' } # envelope { request_id, result, output }
'400': { description: plain-text extractor rejection (framework body) }
'401': { $ref: '#/components/responses/Unauthorized' }
'415': { description: plain-text extractor rejection (missing Content-Type, PRJ-19) }
'401': { oneOf: [CallErrorForbidden, CallErrorInvalidOperationType] } # identity split, PRJ-20
'403': { $ref: '#/components/responses/Forbidden' }
'404': { $ref: '#/components/responses/NotFound' }
'422': { oneOf: [CallErrorInvalidInput, CallErrorInvalidOperationType] }
'404': { $ref: '#/components/responses/NotFound' } # merged oneOf when ops declare HTTP_404 (PRJ-17)
'422': { oneOf: [CallErrorInvalidInput, CallErrorInvalidOperationType] } # + plain-text extractor shape rejection (PRJ-19)
'429': { ... } # only when ops declare errors at 429; x-runtime-behavior: 500 for non-HTTP_* codes
'500': { oneOf: [CallErrorInternal, CallFailure] } # INTERNAL + non-HTTP_* operation codes
'503': { ... } # only when ops declare errors at 503
@@ -538,7 +542,13 @@ The operation-declared errors are surfaced on the `/call` and
`/publish` endpoints' responses — the gateway projects the registered
operations' `error_schemas` as response definitions. This makes the
adapter contract from alkcall ADR-022 faithful on the error axis — no
silent dropping of error contracts. See alkcall ADR-016.
silent dropping of error contracts. The `/batch` endpoint documents no
HTTP 500 (review-002 PRJ-21): every per-entry dispatch failure is an
in-band `results[]` entry; the only HTTP error status is the
request-level cap failure (400). `BatchResultEntry.error` references
the `BatchError` component (review-002 PRJ-16b): the serialized
`CallError` as a oneOf over the six protocol-code envelopes plus a
generic arm carrying the operation-declared codes. See alkcall ADR-016.
## Why