---
title: "The rules table"
url: https://services.dev/docs/examples/legal/rules
captured: [legal-boundary.txt, legal-build.txt, legal-refused.txt, legal-region.txt]
---
# The rules table

URL: https://services.dev/docs/examples/legal/rules

> Who may perform each act in the legal brand's six Services, per Service, frozen under a version. Every row is illustrative and records its position; a brand's counsel writes its real table.

*legal's words: matter is a job, asset is a subject, review is a task, signer is a member, network is a pool, outcome is a end (examples/legal/brand.ts).*

Every row on this page is illustrative. A brand's counsel writes its real table, and [law.org.ai](https://law.org.ai) is where positions like these are set out and argued. The model reads a row the same way whatever it says: an act is reserved to a credential, open to the brand, the client's alone, or refused, and each row records the position it rests on. [Rules](https://services.dev/docs/people/rules.md) explains the key.

```bash
cat rules.ts
```

```txt title="magic values: none"
  version: '2026-10',
      second_look: { reserved: practitioner, where: '*', rail: 'brand', position: 'Judgment on a draft the review still flags is the practitioner\'s.' },
      sign: { reserved: practitioner, where: '*', self: true, rail: 'brand', position: 'Signed by a registered practitioner, or by the applicant for themselves.' },
      file: { reserved: practitioner, where: '*', self: true, rail: 'brand', position: 'Filing for another is practice before the office.' },
      respond: { reserved: 'bar admission', where: '*', rail: 'member', position: 'A response for the applicant is signed by an attorney admitted in any state.' },
      file: { reserved: 'bar admission', where: '*', rail: 'member', position: 'Filing the response for the applicant is practice before the office.' },
      fee: { open: true, position: 'Paying the office its fee is a delivery act.' },
      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.' },
      send: { open: true, position: 'Sending a signed memo to its client is a delivery act.' },
        reserved: 'bar admission', where: 'client', rail: 'member', position: 'A letter on counsel\'s letterhead is signed by counsel.',
      send: { open: true, position: 'Delivering a signed letter is a delivery act.' },
      courier: { open: true, position: 'Delivering it by courier is a delivery act.' },
      settle: { client: true, position: 'Whether to settle, and for how much, is the client\'s decision alone.' },
      ack: { open: true, position: 'Acknowledging a date on the docket is a delivery act; the response is its own Service.' },
      advise_entity_choice: { reserved: 'bar admission', where: 'client', kind: 'advice', rail: 'member', position: 'Which entity to form is advice.' },
      form_entity: { open: true, position: 'The brand files the certificate as a filing service.' },
      advise_83b: { reserved: 'bar admission', where: 'client', kind: 'advice', rail: 'member', position: 'Whether to make the election is advice.' },
  shared: { litigate: { refused: true, route: 'https://referrals.example.test/litigation', position: 'Litigation is retained directly, never ordered here.' } },
```

[The whole file](https://services.dev/docs/examples/legal/build.md#rulests), and `check` after it.

## Each row

| Service | Act | Who performs it | Where | Who sells the fee | Position |
|---|---|---|---|---|---|
| provisional-patent | `second_look` | a patent attorney or agent | anywhere | the brand | Judgment on a draft the review still flags is the practitioner's. |
| provisional-patent | `sign` | a patent attorney or agent, or the applicant for themselves | anywhere | the brand | Signed by a registered practitioner, or by the applicant for themselves. |
| provisional-patent | `file` | a patent attorney or agent, or the applicant for themselves | anywhere | the brand | Filing for another is practice before the office. |
| trademark-response | `respond` | an attorney | admitted in any state | the attorney | A response for the applicant is signed by an attorney admitted in any state. |
| trademark-response | `file` | an attorney | admitted in any state | the attorney | Filing the response for the applicant is practice before the office. |
| trademark-response | `fee` | the brand: open | | | Paying the office its fee is a delivery act. |
| contract-review | `advise` | an attorney: advice | where the client is, in US-CA, US-NY and US-TX | the attorney | Advice on a contract is legal advice in the client's state. |
| contract-review | `send` | the brand: open | | | Sending a signed memo to its client is a delivery act. |
| demand-letter | `sign` | an attorney, flagged when the recipient is elsewhere | where the client is | the attorney | A letter on counsel's letterhead is signed by counsel. |
| demand-letter | `send` | the brand: open | | | Delivering a signed letter is a delivery act. |
| demand-letter | `courier` | the brand: open | | | Delivering it by courier is a delivery act. |
| demand-letter | `settle` | the client, alone | | | Whether to settle, and for how much, is the client's decision alone. |
| docket-watch | `ack` | the brand: open | | | Acknowledging a date on the docket is a delivery act; the response is its own Service. |
| formation | `advise_entity_choice` | an attorney: advice | where the client is | the attorney | Which entity to form is advice. |
| formation | `form_entity` | the brand: open | | | The brand files the certificate as a filing service. |
| formation | `advise_83b` | an attorney: advice | where the client is | the attorney | Whether to make the election is advice. |
| every Service | `litigate` | refused, and routed to a referral | | | Litigation is retained directly, never ordered here. |

An `advice` row reserves a class of answer as well as a step: an answer in that class waits in the matter's thread until the attorney on the matter adopts it. A new position is a new `version`, and each matter keeps the version it was ordered under.

## What check reads back

Each Service's boundary, as `check` says it:

```bash
npx services.dev check   # each Service's bounds line
```

```txt title="magic values: none"
services/contract-review.ts
  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 litigate
services/demand-letter.ts
  bounds  reserved sign to bar admission where the client is · the attorney sells the fee · open send and courier · the client decides settle, alone · refused litigate
services/docket-watch.ts
  bounds  open ack · refused litigate
services/formation.ts
  bounds  reserved advise_entity_choice and advise_83b to bar admission where the client is · the attorney sells the fee · open form_entity · refused litigate
services/provisional-patent.ts
  bounds  reserved second_look, sign and file to patent attorney or agent · refused litigate
          self: reserved second_look to patent attorney or agent · the applicant performs sign and file, in their own name · refused litigate
services/trademark-response.ts
  bounds  reserved respond and file to bar admission · the attorney sells the fee · open fee · refused litigate
```

A buyer reads the same boundary on the Service's page, each act with its position:

```bash
open http://localhost:8787/contract-review
```

```txt title="magic values: none"
The boundary
  advise: reserved to bar admission where the client is, in US-CA, US-NY and US-TX only · Advice on a contract is legal advice in the client's state.
  send: the brand performs it · Sending a signed memo to its client is a delivery act.
  litigate: never performed here · Litigation is retained directly, never ordered here.
```

## A refused act

An order for an act the table refuses answers with the row it rests on, and the referral as `next`. Nothing is charged:

```bash
npx services.dev litigate
```

```txt title="magic values: none"
litigate is never performed here: Litigation is retained directly, never ordered here.
  cites   rules 2026-10 · shared.litigate
  next    hand https://referrals.example.test/litigation to the person it asks
  docs    https://api.lawyer/docs/errors/act_refused
```

## A state the row doesn't cover

An advice row with `regions` answers in those states only. An order from anywhere else is refused before any work, with the waitlist as `next`:

```txt
→ 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"}
```

```json title="403 · magic values: none"
{
  "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",
    "service": "contract-review",
    "arguments": {
      "email": null
    },
    "tool": null,
    "http": "POST http://localhost:8787/contract-review/waitlist",
    "url": "http://localhost:8787/contract-review"
  },
  "doc_url": "https://api.lawyer/docs/errors/region_not_ratified",
  "request_id": "req_cXmV9f",
  "simulated": true
}
```

[Where an act happens](https://services.dev/docs/people/where.md) covers `where` and `regions`, and [Refusals and cures](https://services.dev/docs/people/refusals.md) every refusal a row can bring.

---

- Up: [The legal example](https://services.dev/docs/examples/legal.md)
- Previous: [What the brand gets](https://services.dev/docs/examples/legal/surfaces.md)
- Next: [The attorneys' Pool](https://services.dev/docs/examples/legal/pool.md)
