Skip to content

Commit 57913a3

Browse files
committed
docs(spec): say who refuses a request carrying both recordId and recordIds
The contract lets an implementation ignore recordIds, so the refusal is not a property of the contract: the wire schema refuses it at the REST explain route and the reference security service refuses it. A direct caller of explain sends one spelling. Claude-Session: https://claude.ai/code/session_01ADHkmQS1wrCba8FkVowBLy Co-authored-by: Claude <noreply@anthropic.com>
1 parent 29000bb commit 57913a3

1 file changed

Lines changed: 4 additions & 1 deletion

File tree

‎packages/spec/src/contracts/security-service.ts‎

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -171,7 +171,10 @@ export interface ExplainAccessRequest {
171171
* records of one `(object, operation)` pair, in one call. The type is the
172172
* wire schema's own member ({@link ExplainRequest}), so the two cannot drift.
173173
*
174-
* - Mutually exclusive with `recordId`: a request carrying both is refused.
174+
* - Mutually exclusive with `recordId`. The wire schema refuses a request
175+
* carrying both at the REST explain route, and the reference security
176+
* service refuses it too; an implementation that ignores `recordIds` does
177+
* not. A direct caller of `explain` sends one spelling, never both.
175178
* - At least one and at most {@link EXPLAIN_BATCH_MAX_RECORD_IDS} ids; the
176179
* wire schema refuses an empty or a longer array.
177180
* - Answered by `ExplainDecision.records` in the same order: `records[i]`

0 commit comments

Comments
 (0)