@registrystack/client 0.41.0 → 0.42.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -41,8 +41,8 @@ const appointments = new scheduling.SchedulingClient({
41
41
  assertions.
42
42
  - `breg`: Base Registry Engine, records, contracts, writes, lifecycle, and typed
43
43
  applied-request result navigation.
44
- - `casework`: Registry Casework, staff inbox, claims, drafts, decisions,
45
- recovery, history, holdings, and directory bootstrap.
44
+ - `casework`: Registry Casework, pinned review policies, producer requests and
45
+ results, review task staffing, private decision drafts, receipts, and Directory.
46
46
  - `messaging`: Registry Messaging, submit, inspect, cancel, and preview
47
47
  institution-owned messages.
48
48
  - `scheduling`: Registry Scheduling, published offerings, availability,
@@ -91,7 +91,8 @@ for the full rules.
91
91
  A keyed BReg, Casework, Messaging, or Scheduling mutation whose outcome is
92
92
  unknown is resent identically under the same idempotency key up to
93
93
  `maxMutationRetries` times, a client option: 0 to 2, default 2, and 0 sends it
94
- once. Reads, unkeyed calls, and every 4xx refusal are never resent. When the returned error
94
+ once. Casework review-request create and cancel are excluded from this retry.
95
+ Reads, unkeyed calls, and every 4xx refusal are never resent. When the returned error
95
96
  still reports `outcomeUnknown`, the mutation may have taken effect: recover by
96
97
  sending it again under the same key, because a new key could apply it twice.
97
98
  `outcomeUnknown` is false for `410 idempotency.expired`, but there an earlier
@@ -126,21 +127,32 @@ Registry Stack v0.40.0.
126
127
 
127
128
  ## Casework notes
128
129
 
129
- The Casework module is for a trusted server host. Each call takes that request's
130
- bearer token and selected Casework profile; source-reading calls also take the
131
- selected source profile. The client does not retain them. Browsers should send
132
- only the host's session cookie. Claim, release, and decide consume the
133
- caller-filtered action returned on the item, including its exact route and
134
- `ifMatch` revision. Mutations require a caller-controlled idempotency key and
135
- are resent only under the bounded same-key retry above; review request create
136
- and cancel are never resent. After a lost response, use
137
- `recoverDecisionByKey` with the original key so recovery does not depend on the
138
- attempt identifier being received.
139
- Reviewer inboxes accept an `ownership` filter before pagination.
140
- `supervisoryReviewTasks` returns only task and accountability references for
141
- queues the selected supervisor currently serves; its state is a holder-free
142
- string. A single decided-task read
143
- includes `decisionReceipt` only for the caller who recorded that decision.
130
+ The Casework module is for a trusted server host. Producer, reviewer, and
131
+ Directory calls take that request's bearer token and selected Casework profile. Current-source context
132
+ operations also take the selected source profile; submitted-context reviews
133
+ need no provider. Credentials remain the host's responsibility.
134
+
135
+ `reviewPolicy` discovers a compiled closure; admission requires its exact
136
+ `identity` binding, or the binding generated from the reviewed project.
137
+ `casework.submissionDigest(producerId, sourceNamespace, request)` computes the
138
+ canonical expected submission digest locally. Submit with
139
+ `createOrRecoverReviewRequest`, retaining the request and caller-chosen key.
140
+ After a lost response, repeat that same operation with the same binding, body,
141
+ key, and digest. Producer create/cancel calls are never automatically resent.
142
+ Read the accepted request's result with `reviewResult` or resume `reviewResults`.
143
+ A result records a review outcome and grants no external apply or write authority.
144
+
145
+ Reviewers use `reviewTasks`, `nextReviewTask`, and `reviewTaskHoldings`. Claim,
146
+ release, and decision calls take the task UUID, displayed numeric revision,
147
+ and caller-chosen idempotency key. Recover a lost decision response with
148
+ `reviewTask`; `decisionReceipt` is disclosed only to its deciding caller.
149
+ `ownReviewDecisions` discovers that caller's retained receipts after a fresh
150
+ sign-in. `supervisoryReviewTasks` returns bounded task and accountability
151
+ references for currently served queues, with a holder-free state.
152
+
153
+ A changed policy binding requires explicit review before a new submission.
154
+ Keep staffing filters and profiles unchanged across snapshot cursors; restart
155
+ without the cursor after `410 review.result-expired`.
144
156
 
145
157
  ## Documentation
146
158