From c4c09661cc91e4bee8f4df6fecd8b07e32e88708 Mon Sep 17 00:00:00 2001 From: Claude Date: Sat, 1 Aug 2026 07:40:10 +0000 Subject: [PATCH 1/2] docs(client): drop the retired validateOnly batch option from the README (#4052) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The README still promised `validateOnly` as a working dry-run, but the key was retired in #4052 precisely because no batch surface ever read it — a caller sending it to preview a mutation got it executed. Point readers at the upgrade-guide tombstone instead of re-documenting a flag that lies. Evaluated under objectstack#4372 (write-path validate-only mode): closed as not planned — no current consumer justifies the surface. Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_016zx2NHsRkFzpKoefPEWZxD --- packages/client/README.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/packages/client/README.md b/packages/client/README.md index 76cd9c7946..400abc4bad 100644 --- a/packages/client/README.md +++ b/packages/client/README.md @@ -134,7 +134,10 @@ Batch operations support the following options: - `atomic`: If true, rollback entire batch on any failure (default: true). - `returnRecords`: If true, return full record data in response (default: false). - `continueOnError`: If true (and atomic=false), continue processing remaining records after errors. -- `validateOnly`: If true, validate records without persisting changes (dry-run mode). + +> `validateOnly` was retired in #4052 — it was never implemented and batch surfaces persisted +> regardless, so there is no batch dry-run today. Drop the key; see +> `docs/protocol-upgrade-guide.md` (`batch-options-validate-only-retired`). ### Error Handling The client provides standardized error handling with machine-readable error codes: From efa23a1ff7adb02ac36a031c75fa30b4f5ca0770 Mon Sep 17 00:00:00 2001 From: Claude Date: Sat, 1 Aug 2026 07:49:30 +0000 Subject: [PATCH 2/2] chore(changeset): declare the client README fix as a patch release The Check Changeset gate requires an explicit declaration, and this one is a real patch rather than release-nothing: README.md is in @objectstack/client's `files`, so the corrected text only reaches npmjs.com readers if it ships. Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_016zx2NHsRkFzpKoefPEWZxD --- .../client-readme-retired-validate-only.md | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 .changeset/client-readme-retired-validate-only.md diff --git a/.changeset/client-readme-retired-validate-only.md b/.changeset/client-readme-retired-validate-only.md new file mode 100644 index 0000000000..467545f344 --- /dev/null +++ b/.changeset/client-readme-retired-validate-only.md @@ -0,0 +1,25 @@ +--- +'@objectstack/client': patch +--- + +docs(client): drop the retired `validateOnly` batch option from the README (#4052) + +The Batch Options section still documented `validateOnly` as a working dry-run — +"validate records without persisting changes" — but the key was retired in #4052 +precisely because nothing ever read it. Every batch surface (`updateManyData` / +`deleteManyData` / `batchData`) persisted regardless, so a caller who sent it to +preview a mutation got that mutation **executed**. + +`BatchOptionsSchema` has carried a `retiredKey(...)` tombstone since #4052, so the +schema already refuses the key loudly. The README was the last place still +promising it — declared-but-not-enforced in prose rather than in code, aimed at +exactly the readers who cannot see the tombstone. + +Released as a patch rather than declared release-nothing because `README.md` is in +this package's `files`: the corrected text only reaches the people who hit the +problem — readers on npmjs.com — if the package ships. + +Replaced with a pointer to `docs/protocol-upgrade-guide.md` +(`batch-options-validate-only-retired`). No behaviour change; there is no batch +dry-run today. Write-path validate-only was evaluated in #4372 and closed as not +planned — no current consumer justifies the surface.