> ## Documentation Index
> Fetch the complete documentation index at: https://docs.canary.effectiveai.app/llms.txt
> Use this file to discover all available pages before exploring further.

# Commands

> Every rslc command and option, as the command prints it.

*Generated from the `rslc` compiler.*

The `rslc` command checks, formats, tests and packages RSL. Each section shows a command as `rslc COMMAND --help` prints it.

Every command takes `--json` and then prints one JSON value on standard output.

## `rslc check`

Check a rater or a guideline and print each message.

```text theme={"languages":{"custom":["languages/rsl.tmLanguage.json"]}}
usage: rslc check [-h] [--allow-incomplete] [--json] source

positional arguments:
  source              path to the rater .rsl source

options:
  -h, --help          show this help message and exit
  --allow-incomplete  allow unresolved authoring holes; all other obligations
                      still fail
  --json              emit exactly one JSON value on stdout
```

## `rslc eval`

Run a scenario file and print its values.

```text theme={"languages":{"custom":["languages/rsl.tmLanguage.json"]}}
usage: rslc eval [-h] [--partial] [--axes JSON] [--json] source

positional arguments:
  source       path to a scenario .rsl source

options:
  -h, --help   show this help message and exit
  --partial    inspect computable values in incomplete authoring
  --axes JSON  partial mode only: axis narrowing, e.g. '{"coverage":["BI"]}'
  --json       emit exactly one JSON value on stdout
```

## `rslc export`

Package a rater as a bundle.

```text theme={"languages":{"custom":["languages/rsl.tmLanguage.json"]}}
usage: rslc export [-h] --format {bundle} [--out OUT]
                   [--wasm-runtime WASM_RUNTIME] [--json]
                   source

positional arguments:
  source                path to the rater .rsl source

options:
  -h, --help            show this help message and exit
  --format {bundle}     artifact to generate: a deployable bundle ZIP with a
                        book schema and identity prepare
  --out OUT             output path for the bundle ZIP
  --wasm-runtime WASM_RUNTIME
                        rslc_wasm.wasm to embed as the bundle's engine
                        (default: the one this install ships, or
                        RSLC_WASM_RUNTIME)
  --json                emit exactly one JSON value on stdout
```

## `rslc fmt`

Rewrite a file in the canonical format.

```text theme={"languages":{"custom":["languages/rsl.tmLanguage.json"]}}
usage: rslc fmt [-h] [--check] [--json] source

positional arguments:
  source      path to an .rsl source

options:
  -h, --help  show this help message and exit
  --check     do not write; fail when formatting would change
  --json      emit exactly one JSON value on stdout
```

## `rslc inputs`

Sample or validate the requests a rater accepts.

```text theme={"languages":{"custom":["languages/rsl.tmLanguage.json"]}}
usage: rslc inputs [-h] OPERATION ...

positional arguments:
  OPERATION
    sample    generate requests that the rater accepts
    validate  check one request against the rater's input rules

options:
  -h, --help  show this help message and exit
```

### `rslc inputs sample`

Generate requests that the rater accepts.

```text theme={"languages":{"custom":["languages/rsl.tmLanguage.json"]}}
usage: rslc inputs sample [-h] [--n N] [--seed SEED] [--invalid]
                          [--json-lines OUT] [--json]
                          source

positional arguments:
  source            path to the rater .rsl source

options:
  -h, --help        show this help message and exit
  --n N             number of inputs
  --seed SEED       unsigned 64-bit seed
  --invalid         break one admission form per row (variant, NonEmpty, max,
                    key, [child]) and record the refusal
  --json-lines OUT  also write one versioned row record per line
  --json            emit exactly one JSON value on stdout
```

### `rslc inputs validate`

Check one request against the rater's input rules.

```text theme={"languages":{"custom":["languages/rsl.tmLanguage.json"]}}
usage: rslc inputs validate [-h] [--json] source candidate

positional arguments:
  source      path to the rater .rsl source
  candidate   path to a JSON rate() payload, or - for stdin

options:
  -h, --help  show this help message and exit
  --json      emit exactly one JSON value on stdout
```

## `rslc plan`

Ask a basket of raters' questions, one card at a time.

```text theme={"languages":{"custom":["languages/rsl.tmLanguage.json"]}}
usage: rslc plan [-h] OPERATION ...

positional arguments:
  OPERATION
    start     start a journey file and show the first card
    next      show the next card and the settled raters
    answer    answer a card and show the next
    skip      put a card off and show the next
    dismiss   decline a document card and show the next
    search    search a search card's answers

options:
  -h, --help  show this help message and exit
```

### `rslc plan start`

Start a journey file and show the first card.

```text theme={"languages":{"custom":["languages/rsl.tmLanguage.json"]}}
usage: rslc plan start [-h] --rater ID=BUNDLE [--title ID=NAME]
                       [--section NAME] [--json]
                       JOURNEY

positional arguments:
  JOURNEY            the journey file to write

options:
  -h, --help         show this help message and exit
  --rater ID=BUNDLE  a rater bundle directory and the id the planner names it
                     by (repeat)
  --title ID=NAME    the name a person reads for a rater (repeat)
  --section NAME     section order (repeat)
  --json             emit exactly one JSON value on stdout
```

### `rslc plan next`

Show the next card and the settled raters.

```text theme={"languages":{"custom":["languages/rsl.tmLanguage.json"]}}
usage: rslc plan next [-h] [--json] JOURNEY

positional arguments:
  JOURNEY     the journey file

options:
  -h, --help  show this help message and exit
  --json      emit exactly one JSON value on stdout
```

### `rslc plan answer`

Answer a card and show the next.

```text theme={"languages":{"custom":["languages/rsl.tmLanguage.json"]}}
usage: rslc plan answer [-h] [--json] JOURNEY path value

positional arguments:
  JOURNEY     the journey file
  path        the card's path
  value       the answer as JSON: 12000, true, "2026-01-01", null

options:
  -h, --help  show this help message and exit
  --json      emit exactly one JSON value on stdout
```

### `rslc plan skip`

Put a card off and show the next.

```text theme={"languages":{"custom":["languages/rsl.tmLanguage.json"]}}
usage: rslc plan skip [-h] [--json] JOURNEY path

positional arguments:
  JOURNEY     the journey file
  path        the card's path

options:
  -h, --help  show this help message and exit
  --json      emit exactly one JSON value on stdout
```

### `rslc plan dismiss`

Decline a document card and show the next.

```text theme={"languages":{"custom":["languages/rsl.tmLanguage.json"]}}
usage: rslc plan dismiss [-h] [--json] JOURNEY document

positional arguments:
  JOURNEY     the journey file
  document    the card's document kind

options:
  -h, --help  show this help message and exit
  --json      emit exactly one JSON value on stdout
```

### `rslc plan search`

Search a search card's answers.

```text theme={"languages":{"custom":["languages/rsl.tmLanguage.json"]}}
usage: rslc plan search [-h] [--path PATH] [--list LIST_ID] [--limit LIMIT]
                        [--json]
                        JOURNEY query

positional arguments:
  JOURNEY         the journey file
  query           what the person typed

options:
  -h, --help      show this help message and exit
  --path PATH     the card's path
  --list LIST_ID  the card's list
  --limit LIMIT   the most answers to return
  --json          emit exactly one JSON value on stdout
```

## `rslc explain`

Explain a check message, with an example and the fix.

```text theme={"languages":{"custom":["languages/rsl.tmLanguage.json"]}}
usage: rslc explain [-h] [--json] code

positional arguments:
  code        the code of a message, such as E-PROVENANCE

options:
  -h, --help  show this help message and exit
  --json      emit exactly one JSON value on stdout
```

## `rslc docs`

Read the language reference that ships with this compiler.

```text theme={"languages":{"custom":["languages/rsl.tmLanguage.json"]}}
usage: rslc docs [-h] [--json] [topic]

positional arguments:
  topic       sections, types, functions, annotations, messages, a function
              name or a message code; leave it out for the list

options:
  -h, --help  show this help message and exit
  --json      emit exactly one JSON value on stdout
```

## `rslc examples`

List or save the example raters.

```text theme={"languages":{"custom":["languages/rsl.tmLanguage.json"]}}
usage: rslc examples [-h] [--json] EXAMPLE_COMMAND ...

positional arguments:
  EXAMPLE_COMMAND
    list           list the example raters
    get            save an example rater to a folder

options:
  -h, --help       show this help message and exit
  --json           emit exactly one JSON value on stdout
```

### `rslc examples list`

List the example raters.

```text theme={"languages":{"custom":["languages/rsl.tmLanguage.json"]}}
usage: rslc examples list [-h] [--json]

options:
  -h, --help  show this help message and exit
  --json      emit exactly one JSON value on stdout
```

### `rslc examples get`

Save an example rater to a folder.

```text theme={"languages":{"custom":["languages/rsl.tmLanguage.json"]}}
usage: rslc examples get [-h] [--out OUT] [--json] name

positional arguments:
  name        the example's name, such as dwelling

options:
  -h, --help  show this help message and exit
  --out OUT   the folder to write; the default is a folder named for the
              example
  --json      emit exactly one JSON value on stdout
```

## `rslc submission` and `rslc script`

These commands drive a submission log. [The submission log](https://docs.canary.effectiveai.app/rsl/reference/submission-log.md) explains each one.

```text theme={"languages":{"custom":["languages/rsl.tmLanguage.json"]}}
usage:
  rslc submission open     <log> --program <file.rsl> --as <role>:<name>
  rslc submission answer   <log> <question>=<value>… [--file <facts.json>]
                           [--because <text>] [--from <source>] [--based-on <seq>]
                           [--in <option>] --as <role>:<name>
  rslc submission retract  <log> <question> [--based-on <seq>] [--in <option>]
                           --as <role>:<name>
  rslc submission status   <log> [--at <seq>] [--in <option>]
  rslc submission answers  <log> [--in <option>]
  rslc submission quote    <log> <quote> [--based-on <seq>] [--in <option>]
                           --as <role>:<name>
  rslc submission bind     <log> <quote> [--based-on <seq>] --as <role>:<name>
  rslc submission close    <log> withdrawn|expired|lost|declined [--because <text>]
                           [--based-on <seq>] --as <role>:<name>
  rslc submission history  <log>
  rslc submission copy     <log> <new log>
  rslc submission contract <log> | --program <file.rsl>
  rslc script <file.script> [--keep <log>]
Add --json to any command for one JSON value on standard output.
A log is a `.jsonl` file (one JSON entry per line) or a `.sqlite` database;
its name says which. `copy` writes every entry of a log into a new log, of
either kind, and checks each one.
A question is an input's path (`policy.occurrence_limit`,
`placements[class="clerical"].share`: a list item by its key) or a referral's
name. A value is JSON, or a bare word for a string.
A quote has a name (`q1`). A log holds many quotes; `bind` names the one it binds.
No answer declines an account. When a rule or a sign-off declines the answers,
the stage is Ineligible: correct an answer, or `close declined` (the quote role).
`answers` prints each answer the program reads and who gave it, and each
sign-off.
`contract` prints what the program asks, who may write each answer and act,
and what blocks each act, derived from the compiled program.
--based-on <seq> names the last entry the writer read: the write is refused
STALE when what it reads changed after that entry.
--in <option> answers, retracts, quotes or shows a quote option: the shared
answers with the option's answers over them. An option answers only an input
the program marks `per quote`; every other answer is shared by all quotes.
```


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.