2026-09-11 05:14:13 -07:00
|
|
|
|
# Source CLI
|
|
|
|
|
|
|
|
|
|
|
|
Use `arcadia` to check or update local `.arcadia` projects without opening Studio
|
|
|
|
|
|
or starting a server. Pass the entry file explicitly; its relative include paths
|
|
|
|
|
|
resolve from their containing source files.
|
|
|
|
|
|
|
|
|
|
|
|
Build with `cargo build --locked -p oa-cli --bin arcadia`. The resulting command
|
|
|
|
|
|
is `target/debug/arcadia.exe` on Windows or `target/debug/arcadia` on Linux unless
|
|
|
|
|
|
your Cargo configuration chooses another target directory. A workspace release
|
|
|
|
|
|
build also includes it. Use the platform's usual executable path prefix when
|
|
|
|
|
|
running these examples.
|
|
|
|
|
|
|
|
|
|
|
|
```sh
|
|
|
|
|
|
arcadia check project.arcadia
|
|
|
|
|
|
arcadia check project.arcadia --json
|
|
|
|
|
|
arcadia stabilize project.arcadia
|
|
|
|
|
|
arcadia stabilize project.arcadia --write
|
|
|
|
|
|
arcadia rename-alias project.arcadia old_alias new_alias
|
|
|
|
|
|
arcadia rename-alias project.arcadia old_alias new_alias --write --json
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
`lint` is an alias for `check`. Checks accept incomplete engineering models with
|
|
|
|
|
|
warnings; syntax errors and structural violations fail. Located diagnostics
|
|
|
|
|
|
refer to the named file and coordinate space. Line and column numbers are
|
|
|
|
|
|
one-based and columns count Unicode scalar values; byte ranges are half-open
|
|
|
|
|
|
UTF-8 offsets.
|
|
|
|
|
|
|
|
|
|
|
|
`stabilize` previews missing persistent identities and any supported source
|
|
|
|
|
|
migration. `rename-alias` changes one existing global alias and its typed
|
|
|
|
|
|
references while preserving comments, strings and unrelated source. Pass alias
|
|
|
|
|
|
names without `@`. The command does not rename an element's display name.
|
|
|
|
|
|
|
|
|
|
|
|
Both editing commands preview by default. Human output writes unified file
|
|
|
|
|
|
diffs to stdout and diagnostics to stderr. `--json` writes one versioned report
|
|
|
|
|
|
with diagnostics, migration information, exact before/after text for every
|
|
|
|
|
|
changed file, diffs and the write result. Unchanged files are not included in
|
|
|
|
|
|
that report. They are still checked for conflicts before a write.
|
|
|
|
|
|
|
|
|
|
|
|
Add `--write` to save the candidate prepared by that invocation. Even an empty
|
|
|
|
|
|
diff checks the captured files and pending-save state before returning. A failed
|
|
|
|
|
|
write reports `written: false` and retains its proposed diff. This does not
|
|
|
|
|
|
guarantee rollback; the reported conflict or recovery outcome determines the
|
|
|
|
|
|
next step. A pending save
|
|
|
|
|
|
requires explicit recovery through the existing project recovery workflow;
|
|
|
|
|
|
the CLI does not recover it automatically.
|
|
|
|
|
|
|
|
|
|
|
|
Missing IDs in a separate earlier preview remain provisional. A later command
|
|
|
|
|
|
may allocate different IDs until you save them. This CLI does not persist a
|
|
|
|
|
|
review plan for later application. It does not canonicalize the whole project
|
|
|
|
|
|
or delete detached files. Source versions 3–7 use the core's supported migration
|
|
|
|
|
|
rules; invalid source is not rewritten.
|
|
|
|
|
|
|
|
|
|
|
|
| Exit code | Meaning |
|
|
|
|
|
|
| --- | --- |
|
|
|
|
|
|
| 0 | Valid check or successful preview/write; warnings may remain |
|
|
|
|
|
|
| 1 | Invalid source or refused semantic alias change |
|
|
|
|
|
|
| 2 | Invalid command arguments |
|
|
|
|
|
|
| 3 | File/path, conflict, pending-save or output failure |
|
|
|
|
|
|
|
|
|
|
|
|
Admission bounds match the desktop: 256 files, include depth 32, 1024 include
|
|
|
|
|
|
edges, 64 MiB total UTF-8, 100,000 graph objects, 250,000 records and 500,000
|
|
|
|
|
|
ordered references. `arcadia --help` lists the commands and bounds. These limits
|
|
|
|
|
|
are not a claim of interactive performance at the maximum project size.
|
|
|
|
|
|
|
|
|
|
|
|
For the notation itself, start with [the text-first examples](../examples/text-first/README.md)
|
|
|
|
|
|
and the [language contract](language.rst).
|
2026-09-24 21:57:06 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## Read-only mixed source8 checking
|
|
|
|
|
|
|
|
|
|
|
|
```sh
|
|
|
|
|
|
arcadia check-mixed path/to/main.arcadia --json
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
Use `check-mixed` for source8 containing ordinary declarations and typed analysis
|
|
|
|
|
|
(quantity kinds, units, calculations, properties, checks and cases). Every
|
|
|
|
|
|
project, ordinary declaration, typed definition and scoped parameter must have
|
|
|
|
|
|
an explicit UUID. This command does not migrate older headers, allocate UUIDs,
|
|
|
|
|
|
format, preview edits or save. `--write` is a usage error. Existing `check`,
|
|
|
|
|
|
`lint`, `stabilize` and `rename-alias` retain their ordinary-source behavior.
|
|
|
|
|
|
|
|
|
|
|
|
The loader discovers actual includes with the source grammar and existing
|
|
|
|
|
|
portable-path, regular-file, bounded-read and pending-journal checks. It captures
|
|
|
|
|
|
original bytes, runs a bounded discovery syntax pass, then checks the complete
|
|
|
|
|
|
borrowed bundle in a separate bounded verification pass. A discovery diagnostic
|
|
|
|
|
|
prevents complete verification; the first mixed syntax/work failure stops
|
|
|
|
|
|
further discovery parsing. Both passes derive limits from the same CLI policy;
|
|
|
|
|
|
numeric work is bounded per pass, not once across the whole command. Logical
|
|
|
|
|
|
producer limits are not a bound on all allocations or process memory.
|
|
|
|
|
|
|
|
|
|
|
|
The format-1 JSON envelope uses operation `check-mixed`, status `checked` or
|
|
|
|
|
|
`invalid` for completed source checking, and existing `rejected` for direct disk
|
|
|
|
|
|
errors. `changes` is empty, `written` is false, `identities_to_stabilize` is zero,
|
|
|
|
|
|
`migration` is null and `notes` is empty. Located diagnostics refer to original
|
|
|
|
|
|
`input` bytes, with half-open UTF-8 byte spans and one-based Unicode-scalar
|
|
|
|
|
|
line/column coordinates. Direct filesystem failures use the existing operation
|
|
|
|
|
|
coordinate space. Engineering warnings permit exit 0; invalid source/semantics
|
|
|
|
|
|
exit 1, usage exits 2, and disk/path/missing-file/pending-journal failures exit 3.
|
|
|
|
|
|
Invalid UTF-8 discovery diagnostics retain the existing source-error exit 1.
|
|
|
|
|
|
|
|
|
|
|
|
Human output goes to stderr and ends with `checked: mixed source8 check; no files
|
|
|
|
|
|
changed` on success, after any warnings. No source bytes or directory entries
|
|
|
|
|
|
are written, and pending saves are never recovered implicitly. Checking captured
|
|
|
|
|
|
bytes does not establish an atomic multi-file snapshot against concurrent writers.
|
|
|
|
|
|
This command provides validation only; mixed editing, adoption, GUI and history
|
|
|
|
|
|
integration remain outside this interface.
|