Where an act happens
The region a reserved act needs comes from its rules row and the job's facts. '*' takes any admission, regions says where a row is ratified, and flags mark jobs whose facts straddle two places.
A reserved act happens somewhere, and the person who performs it must hold the credential there. The rules row says whose region counts. The job's facts say which region that is.
where: 'client' means the client's region, not the governing law's. The order names it, and check reads the row aloud:
npx services.dev check bounds reserved advise to bar admission where the client is, in US-CA, US-NY and US-TX only · the attorney sells the fee · open send · refused litigatewhere | The region is | The order sends |
|---|---|---|
'client' | the client's | client_region, or client_jurisdiction |
'recipient' | the recipient's | recipient_region, or recipient_jurisdiction |
'governing' | the governing law's | governing_law, governing_region or governing_jurisdiction |
'*' | any admission: federal scope | nothing |
| a function | what your rule returns from the job | what your rule reads |
A role can narrow it, with where set to a jurisdiction input, '*' or a function. Left out, the row's holds. The record prints the region the act happened in, beside the credential that performed it:
→ POST /reviews/tsk_7Hq2/attest {"checklist":["the claims read on the disclosure","every inventor is named","a reasonable inquiry was made"]} # as mbr_7Hq2 14:02 · step.committed · sign · person · patent agent · * · mbr_7Hq2regions lists where counsel has ratified the row, in ISO 3166: US-CA for one state, US for every state. A bare CA is Canada. The legal example ratifies contract advice in three states:
grep regions rules.ts advise: { reserved: 'bar admission', where: 'client', regions: ['US-CA', 'US-NY', 'US-TX'], kind: 'advice', rail: 'member', position: 'Advice on a contract is legal advice in the client\'s state.' },An order from anywhere else answers 403 region_not_ratified, charges nothing, and names the waitlist to join:
→ POST /matters {"service":"contract-review","contract":{"url":"data:text/plain,A%20lease.","name":"lease.pdf"},"client":{"name":"Ada Lovelace","email":"ada@example.com"},"client_region":"US-FL","max_usd":99,"key":"lease-fl"}{
"type": "BLOCKED",
"category": "unavailable",
"code": "region_not_ratified",
"reason": "advise is ratified in US-CA, US-NY, US-TX under rules 2026-10, and this order's region is US-FL.",
"param": "client_region",
"act": "advise",
"region": "US-FL",
"regions": [
"US-CA",
"US-NY",
"US-TX"
],
"rule": {
"version": "2026-10",
"at": "services['contract-review'].advise",
"position": "Advice on a contract is legal advice in the client's state."
},
"next": {
"do": "waitlist",
→ POST /contract-review/waitlist {"email":"ada@example.com"} # the next the refusal named← 200 {"object":"waitlist","service":"contract-review","status":"live","position":1,"simulated":true}→ POST /matters {"service":"contract-review","contract":{"url":"data:text/plain,A%20lease.","name":"lease.pdf"},"client":{"name":"Ada Lovelace","email":"ada@example.com"},"client_region":"US-CA","max_usd":99,"key":"lease-ca"}← 202 · job_7Hq2 · working · $99.00 heldflags attach advisory signals when the job's facts cross a line, such as a letter to a recipient in another state. They never block. They ride on the Task, so the member sees them before they claim it:
→ POST /reviews/tsk_7Hq3/attest {"checklist":["every claim is supported","no threat the client cannot carry out"]} # as mbr_7Hq3← 200 tsk_7Hq3 · done · attorney · sign · US-NY · $75.00 · signals collections, recipient_elsewhere · attested · 30 min · $150.00 an hour · due 2026-10-27 14:02
14:02 · step.committed · sign · person · bar admission · US-NY · mbr_7Hq3
14:02 · pay.accrued · mbr_7Hq3 · attest · $75.00| Code | When |
|---|---|
input_invalid | The order doesn't name the region a reserved act needs. The answer names the input to send. Nothing is charged |
region_not_ratified | The order's region is outside the row's regions. Nothing is charged |
where_unresolved | check: the row reads a party's region, and the Service takes no input that names it |
region_unqualified | check: a regions entry isn't an ISO 3166 code |
ineligible | A member not admitted in the job's region claims its Task |