Skip to content

Commit 7bd01a6

Browse files
committed
fix(changeset): the two unreleased /packages-door notes enumerate all three filters that door reads
`GET /api/v1/packages` reads three query filters — `status`, `type` and `enabled` (`readEnabledFilter`, `packages/runtime/src/domains/packages.ts`). Two pending changesets still enumerate two of them, and both publish into the same release that carries the correction of that same sentence. Incomplete, not wrong, and only the enumeration moves: the load-bearing claim — no page was ever withheld and no continuation token was ever minted — stays true, because `enabled` filters rows and does not paginate. The surrounding argument is byte-identical. Claude-Session: https://claude.ai/code/session_01AmH9bKvGoLjiY86Q4Z3og2 Co-authored-by: Claude <noreply@anthropic.com>
1 parent 5c5b67f commit 7bd01a6

2 files changed

Lines changed: 3 additions & 3 deletions

File tree

‎.changeset/17667-packages-query-contract.md‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,8 @@ with the reads, per the maintainer-approved ruling of 2026-09-13 (decision batch
1212
**BREAKING** — `limit` and `cursor` no longer parse on
1313
`ListInstalledPackagesRequestSchema`, and `limit`'s `.default(50)` is gone with
1414
them. Both were declared here and read by nothing: the serving door filters on
15-
`status` / `type` and then returns every remaining row, so no page was ever
16-
withheld and no continuation token was ever minted. The response half's
15+
`status` / `type` / `enabled` and then returns every remaining row, so no page
16+
was ever withheld and no continuation token was ever minted. The response half's
1717
`nextCursor` has never been emitted, so a caller looping "until the cursor runs
1818
out" re-read the first and only page forever, with no error and no `400`.
1919

‎.changeset/scoped-packages-dispatcher-door.md‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ fix(runtime): mount the scoped `/api/v1/environments/:id/packages*` door, and re
1010

1111
**The wire.** Two responses gained the key their own declared schema requires (contract review of #16628, finding F2). Both additions are **additive** — no key left either payload:
1212

13-
- `GET /packages` now sends **`hasMore`** (`ListInstalledPackagesResponseSchema`). It is `false`: this door applies its `status` / `type` filters and returns every remaining row, reading no `limit` and no `cursor`, so there is no next page to announce.
13+
- `GET /packages` now sends **`hasMore`** (`ListInstalledPackagesResponseSchema`). It is `false`: this door applies its `status` / `type` / `enabled` filters and returns every remaining row, reading no `limit` and no `cursor`, so there is no next page to announce.
1414
- `DELETE /packages/:id` now sends **`packageId`** (`UninstallPackageApiResponseSchema`). `registryRemoved` and `persisted` stay on the wire unchanged.
1515

1616
A client that reads only the keys it read before is unaffected; a client parsing either payload against the published schema stops being refused.

0 commit comments

Comments
 (0)