Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 0 additions & 13 deletions .changeset/grant-evaluation-fixtures.md

This file was deleted.

14 changes: 14 additions & 0 deletions packages/conformance-fixtures/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,19 @@
# @haverstack/conformance-fixtures

## 0.31.0

### Minor Changes

- [#320](https://github.com/haverstack/core/pull/320) [`f99ab6b`](https://github.com/haverstack/core/commit/f99ab6b990721ed3f12893d53570762c8e0383c1) Thanks [@cuibonobo](https://github.com/cuibonobo)! - Pin the grantee arms and the evaluation-time refusals that the fixtures only described.

Two fixtures covered a grant with no grantee at all and a group arm with no role, and both said in prose that the other arms "are refused the same way" — a rule stated in a fixture and checked by nothing. Nine fixtures now stand behind it: each incomplete arm (`entity` with no `entityId`, `group` with no `groupId`), an empty `entityId` as distinct from an absent one, the listing-only `role: 'any'` that a `listGrants()` query may ask for and a stored grantee may never carry, an unrecognized `kind`, and a `null` grantee reported as the missing field it is rather than read as absent-then-defaulted.

Two more pin the half of the rule no request shape can show: that a grant reaching storage unvetted confers nothing when it is read back. A grant naming `_app@1` still answers 403 on a create, and a mutate verb with no read companion in the same grant conveys neither the write nor a read — so it answers 404, not 403. Both are states `grant()` refuses and a server mapping a request body, an import, or a foreign server's response can still produce.

Also pins that an `anyone` element labelled anything but `read` is refused, which is load-bearing beyond the element: stored, it would read as world read _and_ satisfy the `read` a `write` element needs beside it, silencing write-implies-read for every grantee on the record.

No behavior change — every rule here is already in `docs/spec/access-control.md`. A consumer holding these fixtures to a coverage gate will see the new names and need to dispatch or skip them.

## 0.30.0

### Minor Changes
Expand Down
2 changes: 1 addition & 1 deletion packages/conformance-fixtures/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@haverstack/conformance-fixtures",
"version": "0.30.0",
"version": "0.31.0",
"description": "Request/response fixtures for the Stack API wire protocol, shared between adapter-api and server implementations",
"type": "module",
"exports": {
Expand Down
Loading