oto curate --help at v0.6.1oto curate
propose, review and apply changes to the curated graph
oto curate [-h] [--from SOURCE] [--text TEXT] [--by BY] [--at AT] [--about ABOUT]
[--dry-run] [--term TERM] [--note NOTE] [--project PROJECT] [--show SHOW]
[--force] [--allow-personal-data]
[{start,add,diff,check,apply,abort,undo,assert,assertions,log,resolve}]
Verbs
starta candidateaddmerges proposal files into itdiffshows what it changescheckvalidates itapplypromotes it (with --by and --note for the ledger)abortdiscards itundorestores the previous graphlogreads the ledgerassertrecords something a person saidassertionslists them
Options
| Option | What it does |
|---|---|
--from SOURCE | a proposal file of nodes and edges, for `add` (repeatable) |
--text TEXT | the statement, for `assert` |
--by BY | who said it (assert), or who applied it (apply): an unattributed change cannot be followed up |
--at AT | the date it refers to, as YYYY-MM-DD. Never defaulted: a correction usually refers to when something became true, not when it was typed |
--about ABOUT | comma-separated node ids this is about |
--dry-run | for add: report what the merge would do, and refuse what it would refuse, without writing the candidate |
--term TERM | for resolve: a label, alias or id to look up in the candidate |
--note NOTE | for apply: what this change made answerable, what it left open; kept in the ledger |
--project PROJECT | project root (default: current directory) |
--show SHOW | how many items to list per section |
--force | overwrite an existing candidate, or apply despite blocking problems |
--allow-personal-data | apply even when the privacy scan finds blocking items |
Where to use it
Edits go in a candidate, never the live graph.
oto curate start --project claimscreates graph.candidate.json; the live graph is untouched until apply
Merge one document's proposal, safely first.
oto curate add --project claims --from claims/proposals/total-loss-procedure.json --dry-run
oto curate add --project claims --from claims/proposals/total-loss-procedure.jsonthe dry run reports what would be added, merged, updated or refused; then the merge
Before applying: what does the candidate change, and is it clean?
oto curate check --project claims
oto curate diff --project claimsblocking problems, contradictions, gaps, personal data; then the diff
Promote it, by name.
oto curate apply --project claims --by "A. Reader, claims operations" --note "Total loss settlement, from the February procedure"the live graph changes, the previous one is kept, the ledger records who and why
That was wrong.
oto curate undo --project claimsrestores the previous graph; the ledger says so
A curator records a spoken correction locally.
oto curate assert --project claims --text "The deductible is 750 since April" --by "R. Osei, claims lead" --at 2026-04-01an entry in the assertions log that a fact can cite as assertion:a-0001
Does the candidate already hold an entity for this label?
oto curate resolve --project claims --term "salvage coordinator"the id to reuse, or nothing
As the terminal prints it
usage: oto curate [-h] [--from SOURCE] [--text TEXT] [--by BY] [--at AT] [--about ABOUT]
[--dry-run] [--term TERM] [--note NOTE] [--project PROJECT] [--show SHOW]
[--force] [--allow-personal-data]
[{start,add,diff,check,apply,abort,undo,assert,assertions,log,resolve}]
positional arguments:
{start,add,diff,check,apply,abort,undo,assert,assertions,log,resolve}
start a candidate; add merges proposal files into it; diff shows what it
changes; check validates it; apply promotes it (with --by and --note for
the ledger); abort discards it; undo restores the previous graph; log
reads the ledger; assert records something a person said; assertions lists
them
options:
-h, --help show this help message and exit
--from SOURCE a proposal file of nodes and edges, for `add` (repeatable)
--text TEXT the statement, for `assert`
--by BY who said it (assert), or who applied it (apply): an unattributed change
cannot be followed up
--at AT the date it refers to, as YYYY-MM-DD. Never defaulted: a correction
usually refers to when something became true, not when it was typed
--about ABOUT comma-separated node ids this is about
--dry-run for add: report what the merge would do, and refuse what it would refuse,
without writing the candidate
--term TERM for resolve: a label, alias or id to look up in the candidate
--note NOTE for apply: what this change made answerable, what it left open; kept in
the ledger
--project PROJECT project root (default: current directory)
--show SHOW how many items to list per section
--force overwrite an existing candidate, or apply despite blocking problems
--allow-personal-data
apply even when the privacy scan finds blocking items