Five surfaces, every guide topic, every command and every rule — generated from the CLI itself, so what is on this page is what your terminal answers.
Handing this to an agent instead of reading it? The same reference, in plain markdown: /product/cli.md
Install the CLI. No account is needed to begin — the first call mints an anonymous session, and everything on this page works from a cold install.
macOS / Linux
curl -LsSf https://deepcell.net/install.sh | shWindows (PowerShell)
irm https://deepcell.net/install.ps1 | iexThen check the install in one call: version, whether the service is reachable, who you are, and which project is active.
deepcell doctorRead the guided walkthrough, then list what is in your project. If the second one prints, you are connected.
deepcell guide orient/start
deepcell lsSigning in is optional and belongs after your first file, not before it. It keeps your work beyond the anonymous session, lifts the anonymous limits, and lets you share what you build.
deepcell loginThe reference is split by the question you are asking at that instant, because each kind of material has a different shape, a different read frequency, and a different risk of going stale. Reach for the one that matches your question rather than reading the set.
| Surface | The question you are asking | What it answers |
|---|---|---|
| deepcell help | How do I invoke this exactly? | Every command, flag, exit code and example as one document. |
| deepcell rules | What must always hold? | The invariants applicable to a .deepcell work shape. |
| deepcell guide | What is the procedure for this stage? | Explain how DeepCell itself works. |
| deepcell ref | What values are legal here? | Look up legal values, and resolve any typed id — the format's or a document's. |
| deepcell example get | What does a correct one look like? | Write an example document to a local file. |
Two of them — the invocation reference and the legal-values reference — are derived from the implementation, so they cannot drift from it. The other three are written by hand and tied back mechanically: every id they cite has to resolve, and CI fails when one does not.
This page is not a sixth surface. It is a rendering of those five, built from the same manifest the CLI serves, so the two cannot describe different commands. Manifest version: 0.7.4
Topics are ordered procedure, grouped by the stage of the work they belong to. Read the one for the stage you are in rather than the whole index. Print any of them from a terminal:
deepcell guide orient/start| Topic | Stage | What it covers |
|---|---|---|
| orient/start | orient | Inspect the environment and existing work before choosing a route |
| orient/how-to-work | orient | Shared working contract for connected, challengeable DeepCell work |
| orient/surface-ownership | orient | Know which surface owns each fact, judgment, explanation, and takeaway |
| orient/concepts | orient | Understand the six core concepts used by the Spreadsheet surface |
| orient/choose-shape | orient | Choose the decision, evidence, and work surfaces the question needs |
| ingest/tabular | ingest | Bring external tables in faithfully without inventing projections |
| ingest/model-workbook | ingest | Convert a formula-bearing model workbook without flattening its logic |
| ingest/presentation | ingest | Convert a deck or PDF beside a model into a bound Deck that reproduces its pages |
| generate/first-file | generate | Create one valid file for the selected surfaces and build on it |
| generate/structure | generate | Define Spreadsheet items, contexts, statuses, and dimensions |
| generate/calcs | generate | Encode derived Spreadsheet values as dependency-tracked calculations |
| generate/values | generate | Author input values and provenance at their exact coordinates |
| generate/whole-doc | generate | Use one whole-document write when the complete initial shape is known |
| revise/premise-change | revise | Change a premise, recompute calculations, and reassess every connected surface |
| revise/values | revise | Change existing values with the narrowest typed operation |
| revise/structure | revise | Change definitions while preserving references and dependent work |
| revise/scenarios | revise | Compare what-if overlays without copying the underlying work |
| revise/reasoning | revise | Record claims and premises incrementally and preserve their lifecycle |
| revise/questions | revise | Answer follow-ups into the file, and prepare the questions a reviewer will ask |
| revise/history | revise | Review and preserve the versioned history of the work |
| verify/lint | verify | Run describe --lint — structural and reasoning rules — as the first verification move |
| verify/query-back | verify | Read calculated outputs back and catch an empty or misaddressed grid |
| verify/review | verify | Audit every selected surface before calling the work complete |
| present/layout | present | Lay out Spreadsheet results for inspection and delivery |
| present/prose | present | Author long-form explanation with resolvable same-file references |
| present/charts | present | Turn selected Spreadsheet ranges into charts without copying values |
| present/decks | present | A Deck for its reader, every figure and claim bound to the document |
| present/deck-style | present | Decide the deck's CSS for its reader — a pack is a preset, not a shape — and apply it before writing slides |
| present/deliver | present | Share or export finished work within the active transport limits |
| role/model-builder | role | Builds or revises the Spreadsheet surface of one document — structure, drivers, calculations — and proves the grid populated. |
| role/deck-author | role | Authors or restyles the Deck surface over a model that already exists. |
| role/researcher | role | Answers a question that leaves the project — research, diligence, a proposal — and records source-backed findings in the file. |
| role/deliverable-reviewer | role | Judges whether passages still say something true after an upstream change; proposes edits, never writes them. |
| overview | reference | Template — three-statement model architecture: sheet layout, item order ranges, and the IS/BS/CF golden loop |
| assumptions | reference | Template — assumptions sheet: driver categories, order ranges, and why drivers are Values while anything derived is a CalcDef |
| income-statement | reference | Template — income statement items and formulas, revenue through net income |
| balance-sheet | reference | Template — balance sheet items and formulas, plus the assets = liabilities + equity check |
| cash-flow | reference | Template — cash flow statement: operating/investing/financing sections and the cash reconciliation |
| dcf | reference | Template — DCF valuation: free cash flow build, WACC, terminal value, and the equity bridge |
| scenarios | reference | Template — worked bull/base/bear setup: which variables to override and by how much (for the mechanics, read revise/scenarios) |
| validation | reference | Template — integrity check items every model should carry (balance check, cash reconciliation, coverage ratios) |
| orchestrator | reference | How to run DeepCell work — what the job is, when it is done, and how to look things up instead of guessing |
| bank | reference | Template — bank / NIM model: rate × balance grid, net interest income, efficiency ratio, provision |
| insurance | reference | Template — insurance model: earned premium, loss/expense ratios, combined ratio, underwriting result |
| reit | reference | Template — REIT model: NOI, FFO, AFFO, real-estate depreciation add-back |
| build-from-scratch | reference | Build playbook — starting with no existing .deepcell file, from empty project to a valid model |
| account-categorization | reference | Mapping a company's own statement labels onto a standard chart of accounts, without editing the extraction |
| chart-of-accounts-gaap | reference | Template — US GAAP standard chart of accounts (order 4000-4299), item ids matching the statement templates |
| chart-of-accounts-ifrs | reference | Template — IFRS standard chart of accounts, and where it diverges from US GAAP |
| chart-of-accounts-cas | reference | Template — Chinese Accounting Standards (企业会计准则) chart of accounts for A-share filers |
| non-gaap-metrics | reference | Template — non-GAAP adjusted metrics (order 4300-4399): adjusted EBITDA, net income, and EPS |
| schema-matching | reference | Mapping external data (xlsx/csv) to .deepcell item and context dimensions |
| house-rules | reference | House rules — the non-negotiable invariants every model must satisfy |
| review-dimensions | reference | Review dimensions — the model audit checklist (integrity, formulas, coverage, sanity, grounding, reasoning, intent, presentation) |
| model-scopes | reference | Choosing model scope — P&L+DCF default, 3-statement triggers, industry models |
| sec-extraction | reference | SEC extraction — raw historical layer, model mapping layer, provenance rules |
| cn-extraction | reference | A-share (cninfo) extraction — CAS statements from report PDFs, #page deep links, canonical item map |
| excel-import | reference | Excel import — dimension mapping, formula conversion, excel_import provenance |
Every command, with the shape of its invocation, the arguments and flags it takes and what each of them has to be, what each exit code means, and one runnable example. The whole catalog is also one call away as machine-readable data — worth caching once instead of paying for a round trip per command:
deepcell helporient
look at what exists before adding to it
Print file content (XML) to stdout.
deepcell cat <filename>
deepcell cat model.deepcell| Argument | Type | Required |
|---|---|---|
| filename | text | required |
| Flag | Type | Default | What it does |
|---|---|---|---|
| --revision <revision> | text | — | Show file at specific revision. |
| --workspace <workspace_slug> | text | — | Override active workspace. |
Exit codes: 0 — completed
Show metadata for a single cell (formula, dependencies, data source).
deepcell cell-meta <filename> [item_ref_pos] [context_ref_pos]
deepcell cell-meta model.deepcell Revenue FY2026E| Argument | Type | Required |
|---|---|---|
| filename | text | required |
| item_ref_pos | text | optional |
| context_ref_pos | text | optional |
| Flag | Type | Default | What it does |
|---|---|---|---|
| --item <item_opt> | text | — | Item ref (alternative to the ITEM_REF positional). |
| --context <context_opt> | text | — | Context ref (alternative to the CONTEXT_REF positional). |
| --status <status_ref> | text | — | Status reference (e.g. 'actual'). A CONSTRAINT, not a hint: the read may answer from that bucket or the untagged one, never from a third. Omit to let the document decide which status answers. |
| --scenario <scenario_ref> | text | — | Scenario dimension (omit for the base cell). |
| --custom-dimensions <custom_dimensions> | text | — | Custom dimensions as 'dim:member;dim:member', e.g. 'geography:na'. |
| --cells <cells_spec> | text | — | Several cells in one call, spelled as `query --cells` spells them (`WACC@FY2026E,EV@FY2026E#projected`, `Item[CTX]` too; `Dep_Years` or `Dep_Years@` for a scalar). Replaces the positional coordinate. |
Exit codes: 0 — completed
Show a document's shape: sheets, the five dimensions, documents, decks.
deepcell describe <filename>
deepcell describe model.deepcell --lint| Argument | Type | Required |
|---|---|---|
| filename | text | required |
| Flag | Type | Default | What it does |
|---|---|---|---|
| --include-reasoning | boolean | — | Append the reasoning: counts and the reading path. With --full, also each argument claim's body and every cell it cites, read back as `address = value` with the status and world it was read under. |
| --scenario <scenario_id> | text | — | Scenario ID whose value overrides to apply. |
| --lint | boolean | — | Include canonical structural findings; exit 1 on error-level ones. Warn-level findings print and exit 0 — read them. |
| --since <since_revision> | text | — | With --lint: mark each finding pre-existing or new against this revision. Use `HEAD~1` for the commit before yours, or a SHA from `deepcell log`. |
| --sheet <sheet_id> | text | — | One sheet in full: its blocks, and every item it renders with label, type and units. Plain output only. |
| --full | boolean | — | Everything listed at once — every item, block, heading, slide and source — instead of the frame. Plain output only. |
| --measure | boolean | — | With --lint: measure every deck slide that has no fit measurement yet (one browser pass per slide in the export service) before reporting. Slides are measured on the write that changes them; use this for a deck that arrived by sync or import, or was restyled. |
| --fail-on <fail_on> | any | introduced | any | With --lint --since: which error-level findings set the exit code. `any` is the whole model, as always. `introduced` exits 1 only on findings the baseline did not have — a scoped edit stops failing on a slide it never touched. A finding whose provenance is unknown (a slide unmeasured at the baseline) prints but does not gate. |
| --workspace <workspace_slug> | text | — | Override active workspace. |
Exit codes: 0 — completed · 1 — read-only-check
Search the XML of .deepcell files for a regular expression.
deepcell grep <pattern> [files...]
deepcell grep Revenue| Argument | Type | Required |
|---|---|---|
| pattern | text | required |
| files... | text | optional |
| Flag | Type | Default | What it does |
|---|---|---|---|
| --file <file_opts> | text | — | Search within a specific file (repeatable; same as a FILE argument). |
| --ignore-case | boolean | — | Case-insensitive search. |
Exit codes: 0 — completed
List files in the active workspace.
deepcell lsExit codes: 0 — completed
Query a .deepcell file.
deepcell query <filename> [item_ref] [context_ref] [status_ref]
deepcell query model.deepcell Revenue FY2026E| Argument | Type | Required |
|---|---|---|
| filename | text | required |
| item_ref | text | optional |
| context_ref | text | optional |
| status_ref | text | optional |
| Flag | Type | Default | What it does |
|---|---|---|---|
| --status <status_opt> | text | — | Status dimension — the same thing as the third positional. `edit`, `defs add-calc` and `cell-meta` all spell it this way; accepted here so the four agree. |
| --scenario <scenario_ref> | text | — | Scenario dimension (omit for default scenario). |
| --custom-dimensions <custom_dimensions> | text | — | Custom dimensions as 'dim:member;dim:member', e.g. 'geography:na'. |
| --cells <cells_arg> | text | — | Read several cells that do NOT share a row, in one call: 'ITEM@CONTEXT,ITEM@CONTEXT,...' (add a third '@STATUS' segment per cell to pin its status; the link spelling ITEM[CONTEXT]#STATUS, or ITEM@CONTEXT#STATUS, names the same cell). A bare ITEM reads by the item's shape: a scalar's one cell, or every period of a period item. This is the check-my-outputs form — a comma-separated CONTEXT_REF only walks one item. |
| --sheet <sheet_id> | text | — | Render a full sheet as markdown table. |
| --block <block_id> | text | — | Render a specific block within a sheet. |
| --chart-details | boolean | — | Return structured chart values, annotation bindings and diagnostics (requires --sheet). |
| --chart-width <chart_width> | integer range | — | Validate shared chart layout at this CSS-pixel width; requires --chart-height, --chart-details and --block. |
| --chart-height <chart_height> | integer range | — | Target CSS-pixel height for --chart-width layout validation. |
| --offset <offset> | integer range | — | An item read's page: the first cell to show (0-based). A page that leaves cells out ends with the command for the next one. |
| --limit <limit> | integer range | — | An item read's page size (default 20). |
| --workspace <workspace_slug> | text | — | Override active workspace. |
Exit codes: 0 — completed
ingest
external data in (skip for from-scratch work)
Import an xlsx or csv file into a .deepcell document.
deepcell import <file> --items <items> --contexts <contexts>
deepcell import variance.xlsx --name variance_import --items '[{"id":"Revenue","name":"Revenue","level":0,"row":2,"sheet":"Variance"}]' --contexts '[{"id":"FY25A","name":"FY25 actual","period_type":"annual","status":"actual","column":"B"}]'| Argument | Type | Required |
|---|---|---|
| file | path | required |
| Flag | Type | Default | What it does |
|---|---|---|---|
| --items <items> | text | required | Items JSON string or path to JSON file. |
| --contexts <contexts> | text | required | Contexts JSON string or path to JSON file. |
| --name <name> | text | — | Name for the .deepcell file (default: the input file's stem). A file of that name is replaced. |
| --workspace <workspace> | text | — | Target workspace slug. |
| --aggregations <aggregations> | text | — | Aggregation rules JSON string or path to JSON file. |
| --keep-raw | boolean | — | Store raw values alongside aggregated results. |
Exit codes: 0 — completed · 1 — partial
Extract one statement's table — rows, canonical items, and the <Source> to record.
deepcell ingest cn extract <pdf_url>
deepcell ingest cn extract https://static.cninfo.com.cn/finalpage/2026-03-28/1224567890.PDF --statement income --persist| Argument | Type | Required |
|---|---|---|
| pdf_url | text | required |
| Flag | Type | Default | What it does |
|---|---|---|---|
| --statement <statement> | text | 合并利润表 | Chinese heading or income | balance | cash_flow |
| --persist | boolean | — | Store the source PDF once in DeepCell storage and list it in the active project, so a viewer there opens it even after the cninfo link moves. The file name comes back as `mirror_file`, for the <Source> <Mirror>. --no-persist skips it (faster); the <Locator> is the cninfo original either way. |
Exit codes: 0 — completed
List annual / interim reports with PDF permalinks.
deepcell ingest cn filings <code>
deepcell ingest cn filings 600519 --type annual --count 5| Argument | Type | Required |
|---|---|---|
| code | text | required |
| Flag | Type | Default | What it does |
|---|---|---|---|
| --type <filing_type> | text | annual | annual | interim | semiannual | q1 | q3 |
| --count <count> | integer range | 5 | number of reports (1-30) |
Exit codes: 0 — completed
Resolve a 6-digit code, company name (中文简称), or pinyin.
deepcell ingest cn search <keywords>
deepcell ingest cn search 600519| Argument | Type | Required |
|---|---|---|
| keywords | text | required |
Exit codes: 0 — completed
Locate the financial statements inside a report PDF (page + scale).
deepcell ingest cn statements <pdf_url>
deepcell ingest cn statements https://static.cninfo.com.cn/finalpage/2026-03-28/1224567890.PDF| Argument | Type | Required |
|---|---|---|
| pdf_url | text | required |
Exit codes: 0 — completed
List recent filings: accession, period end, primary-document URL.
deepcell ingest sec filings <ticker>
deepcell ingest sec filings AMD --type quarterly --count 4| Argument | Type | Required |
|---|---|---|
| ticker | text | required |
| Flag | Type | Default | What it does |
|---|---|---|---|
| --type <filing_type> | annual | quarterly | annual | annual (10-K / 20-F) or quarterly (10-Q) |
| --count <count> | integer range | 5 | number of filings (1-20) |
Exit codes: 0 — completed
Statements for N years as an ops file and a values file, sources attached.
deepcell ingest sec pull <ticker>| Argument | Type | Required |
|---|---|---|
| ticker | text | required |
| Flag | Type | Default | What it does |
|---|---|---|---|
| --years <years> | integer range | 3 | Closed fiscal years of statements to pull. |
| --quarter | boolean | — | Also the latest 10-Q filed after the last 10-K (default on). |
| --filename <filename> | text | — | The .deepcell the result is for: ids it already declares are reused instead of re-added. |
| --model-layer | boolean | — | Also write the standard model layer (Revenue_Model … CFO_Model, subtotals, check rows, a Financial Model sheet) mapped by XBRL concept, as a third ops payload applied after the values. |
| --out-dir <out_dir> | directory | — | Where the payload files go (default: the current directory). |
| --inline | boolean | — | Write no files: return the ops and the value batches in the output, for `defs apply --ops` and `edit --batch` (the MCP server always uses this, since its disk is not yours). |
Exit codes: 0 — completed
One report as rows: label as filed, XBRL concept, values.
deepcell ingest sec report <ticker> <accession> <file>
deepcell ingest sec report AMD 0000002488-26-000018 R4.htm| Argument | Type | Required |
|---|---|---|
| ticker | text | required |
| accession | text | required |
| file | text | required |
Exit codes: 0 — completed
List a filing's XBRL reports — statements, notes and their detail tables.
deepcell ingest sec reports <ticker> <accession>
deepcell ingest sec reports AMD 0000002488-26-000018 --grep segment| Argument | Type | Required |
|---|---|---|
| ticker | text | required |
| accession | text | required |
| Flag | Type | Default | What it does |
|---|---|---|---|
| --grep <pattern> | text | — | Only reports whose name contains this text (e.g. segment). |
Exit codes: 0 — completed
Resolve a company name, ticker or CIK to its EDGAR ticker and CIK.
deepcell ingest sec search <keywords>
deepcell ingest sec search AMD| Argument | Type | Required |
|---|---|---|
| keywords | text | required |
Exit codes: 0 — completed
Convert one font glyph into self-contained checkbox geometry.
deepcell ingest symbol-font --font <font> --state <state>
deepcell ingest symbol-font --font symbols.ttf --character ★ --state 42| Flag | Type | Default | What it does |
|---|---|---|---|
| --attribution <attribution> | text | — | Source or license note preserved with the converted symbol. |
| --font <font> | text | required | Local TTF/OTF/TTC file, - for binary stdin, or base64:DATA. |
| --state <state> | integer range | required | Spreadsheet integer selecting this symbol. |
| --character <character> | text | — | One Unicode character; select this or --glyph-name. |
| --glyph-name <glyph_name> | text | — | Exact font glyph name; select this or --character. |
| --font-index <font_index> | integer range | 0 | Collection member; zero for a standalone font. |
| --format-ref <format_ref> | text | — | Existing Format for symbol paint; otherwise inherit the checkbox Format. |
| --variations <variations> | text | {} | JSON map of font variation axis tags to design-space values. |
Exit codes: 0 — completed
Convert a named icon into self-contained checkbox geometry.
deepcell ingest symbol-icon --name <name> --state <state>
deepcell ingest symbol-icon --name trending-up --state 42| Flag | Type | Default | What it does |
|---|---|---|---|
| --attribution <attribution> | text | — | Source or license note preserved with the converted symbol. |
| --name <name> | text | required | Exact name from deepcell ref icon. |
| --state <state> | integer range | required | Spreadsheet integer selecting this symbol. |
| --format-ref <format_ref> | text | — | Existing Format for symbol paint; otherwise inherit the checkbox Format. |
Exit codes: 0 — completed
Convert SVG into a self-contained checkbox symbol and Format operations.
deepcell ingest symbol-svg --svg <svg> --state <state> --format-prefix <format_prefix>
deepcell ingest symbol-svg --svg symbol.svg --state 42 --format-prefix imported| Flag | Type | Default | What it does |
|---|---|---|---|
| --attribution <attribution> | text | — | Source or license note preserved with the converted symbol. |
| --svg <svg> | text | required | Inline SVG, a local UTF-8 SVG file path, or - for stdin. |
| --state <state> | integer range | required | Spreadsheet integer selecting this symbol. |
| --format-prefix <format_prefix> | text | required | Unused Format identifier prefix for imported paints. |
Exit codes: 0 — completed
Check every cited cell of FILENAME against WORKBOOK, and how much of WORKBOOK the document carries.
deepcell verify-import <filename> <workbook>
deepcell verify-import variance_import.deepcell variance.xlsx --min-coverage 0.9| Argument | Type | Required |
|---|---|---|
| filename | text | required |
| workbook | path | required |
| Flag | Type | Default | What it does |
|---|---|---|---|
| --workspace <workspace> | text | — | Workspace slug the document lives in. |
| --rel-tol <rel_tol> | float | 0.000001 | Relative tolerance a cell may differ by and still match. |
| --min-coverage <min_coverage> | float | 0.5 | Floor each sheet's inputs-cited ratio and the formulas-carried ratio are held to. |
Exit codes: 0 — completed · 1 — read-only-check
generate
create one file, then build only the surfaces the work needs
Add a Deck to a .deepcell file.
deepcell deck add <filename> --name <name>
deepcell deck add model.deepcell --name <name>| Argument | Type | Required |
|---|---|---|
| filename | text | required |
| Flag | Type | Default | What it does |
|---|---|---|---|
| --deck-id <deck_id> | text | — | Deck id. Omit to have one assigned. |
| --name <name> | text | required | Display name for the deck. |
| --aspect-ratio <aspect_ratio> | aspect_ratio | — | Slide aspect ratio as W:H, between 1:3 and 3:1 — 16:9, 4:3, 9:16, 1:1. Omit for the format default (16:9), the recommended shape. Fixed at creation: slides do not reflow to another ratio. |
| --style <style_pack> | text | — | Open the deck on a style pack — institutional, consulting, editorial, product (`deepcell ref deck-style`). Its CSS becomes the deck's <Style>. |
| --index <index> | integer | — | Position among decks (0-based). |
| --revision <revision> | text | — | Expected revision SHA for optimistic locking. |
| --workspace <workspace_slug> | text | — | Override active workspace. |
| --rationale <rationale> | text | — | Why this edit was made. Becomes the commit message body, so the history reads as the decision rather than the coordinates the diff already shows. `-m` and `--message` are aliases of `--rationale`. |
| --title <title> | text | — | Short commit subject (e.g. 'Q3 actuals update'). Combined with --rationale as 'title: rationale'. The mechanical summary the server would have written is kept as a Summary trailer either way. |
| --dry-run | boolean | — | Validate only: run the full server-side pipeline (per-op validation, formula parse, post-apply cycle check + recompute) and report errors without persisting anything — no commit, no revision bump. |
| --plan-delivery <plan_delivery> | none | cache | inline | — | What the server does with the post-edit render plan: `cache` (default) builds it after answering, into the cache the next describe or viewer read uses — except a batch touching a slide, binding or deck style, whose plan is built before answering to measure fit; `inline` builds it before answering and returns it (slower). A write that built its plan prints the orphan / status-clash warnings and only the conversion warnings it introduced; otherwise the next `describe` reports them. `none` builds nothing. |
| --measure-fit | boolean | — | Measure the slides this batch touched with the deck exporter (default on; never under --plan-delivery none). --no-measure-fit skips the round trip. |
Exit codes: 0 — completed
Add an empty slide to a deck.
deepcell deck add-slide <filename> --deck <deck_id> --name <name>
deepcell deck add-slide model.deepcell --deck <deck_id> --name <name>| Argument | Type | Required |
|---|---|---|
| filename | text | required |
| Flag | Type | Default | What it does |
|---|---|---|---|
| --deck <deck_id> | text | required | Deck to add the slide to. |
| --slide-id <slide_id> | text | — | Slide id. Omit to have one assigned. |
| --name <name> | text | required | Display name for the slide. |
| --index <index> | integer | — | Position within the deck (0-based). |
| --revision <revision> | text | — | Expected revision SHA for optimistic locking. |
| --workspace <workspace_slug> | text | — | Override active workspace. |
| --rationale <rationale> | text | — | Why this edit was made. Becomes the commit message body, so the history reads as the decision rather than the coordinates the diff already shows. `-m` and `--message` are aliases of `--rationale`. |
| --title <title> | text | — | Short commit subject (e.g. 'Q3 actuals update'). Combined with --rationale as 'title: rationale'. The mechanical summary the server would have written is kept as a Summary trailer either way. |
| --dry-run | boolean | — | Validate only: run the full server-side pipeline (per-op validation, formula parse, post-apply cycle check + recompute) and report errors without persisting anything — no commit, no revision bump. |
| --plan-delivery <plan_delivery> | none | cache | inline | — | What the server does with the post-edit render plan: `cache` (default) builds it after answering, into the cache the next describe or viewer read uses — except a batch touching a slide, binding or deck style, whose plan is built before answering to measure fit; `inline` builds it before answering and returns it (slower). A write that built its plan prints the orphan / status-clash warnings and only the conversion warnings it introduced; otherwise the next `describe` reports them. `none` builds nothing. |
| --measure-fit | boolean | — | Measure the slides this batch touched with the deck exporter (default on; never under --plan-delivery none). --no-measure-fit skips the round trip. |
Exit codes: 0 — completed
Point a slide at a live value, or update an existing binding.
deepcell deck bind <filename> --deck <deck_id> --binding-id <binding_id> --binding-kind <binding_kind>
deepcell deck bind model.deepcell --deck <deck_id> --binding-id <binding_id> --binding-kind <binding_kind>| Argument | Type | Required |
|---|---|---|
| filename | text | required |
| Flag | Type | Default | What it does |
|---|---|---|---|
| --deck <deck_id> | text | required | Deck the binding lives on. |
| --binding-id <binding_id> | text | required | Binding id. Reusing one updates it in place. |
| --binding-kind <binding_kind> | value | series | chart | table | reasoning | source | htmlblock | derived | label | required | What the binding renders. Decides which address flag it takes. |
| --field <field> | text | — | Which text of the addressed thing to render, not an address itself. |
| --op <op> | sum | avg | min | max | delta | pct_change | share | cagr | — | What a `derived` binding computes over its --refs, in order: sum, avg, min, max over all of them; delta (second minus first); pct_change ((second - first) / first); share (first / second); cagr over the run. |
| --ref <ref> | text | — | Single coordinate the binding reads. |
| --refs <refs> | text | — | Comma-separated coordinates — the address a `series` or `derived` binding takes. Single-quote an item id that contains a comma. |
| --number-format <number_format> | text | — | Excel-style number pattern the value renders with, all three sections — `#,##0.0;(#,##0.0);"-"`, `0.0%;(0.0%);"-"` (`deepcell ref format/pattern`). It labels the stored value and never divides it. |
| --prefix <prefix> | text | — | Text rendered before the value. |
| --suffix <suffix> | text | — | Text rendered after the value. |
| --rows <rows> | text | — | Which item rows a `table` shows, the way a block's itemOrders picks them: item ids, @order values and low-high order ranges, comma-separated (`Revenue,EBITDA`, `1040-1070`). Omitted, every row. |
| --columns <columns> | text | — | Which value columns a `table` shows, by whatever the block's column axis holds: context ids with A..B ranges (`FY2027..FY2029`), or scenario / status ids when the block lays those out as columns. Omitted, every column. |
| --transpose | boolean | — | Turn a `table`: each period or scenario becomes a row, the item labels the header. |
| --max-rows <max_rows> | integer range | — | Rows a `table` shows before the plan says how many it left out (default 40). |
| --caption <caption> | text | — | Plain text drawn as a `table`'s <caption>. |
| --revision <revision> | text | — | Expected revision SHA for optimistic locking. |
| --workspace <workspace_slug> | text | — | Override active workspace. |
| --rationale <rationale> | text | — | Why this edit was made. Becomes the commit message body, so the history reads as the decision rather than the coordinates the diff already shows. `-m` and `--message` are aliases of `--rationale`. |
| --title <title> | text | — | Short commit subject (e.g. 'Q3 actuals update'). Combined with --rationale as 'title: rationale'. The mechanical summary the server would have written is kept as a Summary trailer either way. |
| --dry-run | boolean | — | Validate only: run the full server-side pipeline (per-op validation, formula parse, post-apply cycle check + recompute) and report errors without persisting anything — no commit, no revision bump. |
| --plan-delivery <plan_delivery> | none | cache | inline | — | What the server does with the post-edit render plan: `cache` (default) builds it after answering, into the cache the next describe or viewer read uses — except a batch touching a slide, binding or deck style, whose plan is built before answering to measure fit; `inline` builds it before answering and returns it (slower). A write that built its plan prints the orphan / status-clash warnings and only the conversion warnings it introduced; otherwise the next `describe` reports them. `none` builds nothing. |
| --measure-fit | boolean | — | Measure the slides this batch touched with the deck exporter (default on; never under --plan-delivery none). --no-measure-fit skips the round trip. |
Exit codes: 0 — completed
Recolour a deck, or change its faces, by ROLE without touching its stylesheet.
deepcell deck brand <filename> --deck <deck_id>
deepcell deck brand model.deepcell --deck <deck_id>| Argument | Type | Required |
|---|---|---|
| filename | text | required |
| Flag | Type | Default | What it does |
|---|---|---|---|
| --deck <deck_id> | text | required | Deck to recolour. |
| --set <assignments> | text | — | Role override, repeatable: --set accent=#0A5C3B --set font-display=Cambria. Colour roles are the pack's colour names — accent, ink, series-1 … (`deepcell ref deck-style/hooks`); font-display (titles, figures) and font-text take a safe face (`deepcell ref deck-style/fonts`); font-cjk (East Asian text) one of Microsoft YaHei, SimSun, SimHei, DengXian, Microsoft JhengHei. |
| --clear | boolean | — | Remove the brand; the pack's own palette shows again. |
| --revision <revision> | text | — | Expected revision SHA for optimistic locking. |
| --workspace <workspace_slug> | text | — | Override active workspace. |
| --rationale <rationale> | text | — | Why this edit was made. Becomes the commit message body, so the history reads as the decision rather than the coordinates the diff already shows. `-m` and `--message` are aliases of `--rationale`. |
| --title <title> | text | — | Short commit subject (e.g. 'Q3 actuals update'). Combined with --rationale as 'title: rationale'. The mechanical summary the server would have written is kept as a Summary trailer either way. |
| --dry-run | boolean | — | Validate only: run the full server-side pipeline (per-op validation, formula parse, post-apply cycle check + recompute) and report errors without persisting anything — no commit, no revision bump. |
| --plan-delivery <plan_delivery> | none | cache | inline | — | What the server does with the post-edit render plan: `cache` (default) builds it after answering, into the cache the next describe or viewer read uses — except a batch touching a slide, binding or deck style, whose plan is built before answering to measure fit; `inline` builds it before answering and returns it (slower). A write that built its plan prints the orphan / status-clash warnings and only the conversion warnings it introduced; otherwise the next `describe` reports them. `none` builds nothing. |
| --measure-fit | boolean | — | Measure the slides this batch touched with the deck exporter (default on; never under --plan-delivery none). --no-measure-fit skips the round trip. |
Exit codes: 0 — completed
Delete a deck and every slide on it.
deepcell deck delete <filename> <deck_id>
deepcell deck delete model.deepcell <deck_id>| Argument | Type | Required |
|---|---|---|
| filename | text | required |
| deck_id | text | required |
| Flag | Type | Default | What it does |
|---|---|---|---|
| --revision <revision> | text | — | Expected revision SHA for optimistic locking. |
| --workspace <workspace_slug> | text | — | Override active workspace. |
| --rationale <rationale> | text | — | Why this edit was made. Becomes the commit message body, so the history reads as the decision rather than the coordinates the diff already shows. `-m` and `--message` are aliases of `--rationale`. |
| --title <title> | text | — | Short commit subject (e.g. 'Q3 actuals update'). Combined with --rationale as 'title: rationale'. The mechanical summary the server would have written is kept as a Summary trailer either way. |
| --dry-run | boolean | — | Validate only: run the full server-side pipeline (per-op validation, formula parse, post-apply cycle check + recompute) and report errors without persisting anything — no commit, no revision bump. |
| --plan-delivery <plan_delivery> | none | cache | inline | — | What the server does with the post-edit render plan: `cache` (default) builds it after answering, into the cache the next describe or viewer read uses — except a batch touching a slide, binding or deck style, whose plan is built before answering to measure fit; `inline` builds it before answering and returns it (slower). A write that built its plan prints the orphan / status-clash warnings and only the conversion warnings it introduced; otherwise the next `describe` reports them. `none` builds nothing. |
| --measure-fit | boolean | — | Measure the slides this batch touched with the deck exporter (default on; never under --plan-delivery none). --no-measure-fit skips the round trip. |
Exit codes: 0 — completed
Delete one slide, and the HTML on it.
deepcell deck delete-slide <filename> <slide_id> --deck <deck_id>
deepcell deck delete-slide model.deepcell <slide_id> --deck <deck_id>| Argument | Type | Required |
|---|---|---|
| filename | text | required |
| slide_id | text | required |
| Flag | Type | Default | What it does |
|---|---|---|---|
| --deck <deck_id> | text | required | Deck the slide belongs to. |
| --revision <revision> | text | — | Expected revision SHA for optimistic locking. |
| --workspace <workspace_slug> | text | — | Override active workspace. |
| --rationale <rationale> | text | — | Why this edit was made. Becomes the commit message body, so the history reads as the decision rather than the coordinates the diff already shows. `-m` and `--message` are aliases of `--rationale`. |
| --title <title> | text | — | Short commit subject (e.g. 'Q3 actuals update'). Combined with --rationale as 'title: rationale'. The mechanical summary the server would have written is kept as a Summary trailer either way. |
| --dry-run | boolean | — | Validate only: run the full server-side pipeline (per-op validation, formula parse, post-apply cycle check + recompute) and report errors without persisting anything — no commit, no revision bump. |
| --plan-delivery <plan_delivery> | none | cache | inline | — | What the server does with the post-edit render plan: `cache` (default) builds it after answering, into the cache the next describe or viewer read uses — except a batch touching a slide, binding or deck style, whose plan is built before answering to measure fit; `inline` builds it before answering and returns it (slower). A write that built its plan prints the orphan / status-clash warnings and only the conversion warnings it introduced; otherwise the next `describe` reports them. `none` builds nothing. |
| --measure-fit | boolean | — | Measure the slides this batch touched with the deck exporter (default on; never under --plan-delivery none). --no-measure-fit skips the round trip. |
Exit codes: 0 — completed
Set the deck's folio template, so no slide types its own page number.
deepcell deck footer <filename> --deck <deck_id>
deepcell deck footer model.deepcell --deck <deck_id>| Argument | Type | Required |
|---|---|---|
| filename | text | required |
| Flag | Type | Default | What it does |
|---|---|---|---|
| --deck <deck_id> | text | required | Deck whose folio to set. |
| --set <template> | text | — | The folio, one line: literal text plus {n} (slide position), {count}, {name} (slide name), {deck}, {text:BINDING} / {value:BINDING} (a binding's display string), and one `|` splitting left from right. |
| --clear | boolean | — | Remove the template; slides keep only footers of their own. |
| --revision <revision> | text | — | Expected revision SHA for optimistic locking. |
| --workspace <workspace_slug> | text | — | Override active workspace. |
| --rationale <rationale> | text | — | Why this edit was made. Becomes the commit message body, so the history reads as the decision rather than the coordinates the diff already shows. `-m` and `--message` are aliases of `--rationale`. |
| --title <title> | text | — | Short commit subject (e.g. 'Q3 actuals update'). Combined with --rationale as 'title: rationale'. The mechanical summary the server would have written is kept as a Summary trailer either way. |
| --dry-run | boolean | — | Validate only: run the full server-side pipeline (per-op validation, formula parse, post-apply cycle check + recompute) and report errors without persisting anything — no commit, no revision bump. |
| --plan-delivery <plan_delivery> | none | cache | inline | — | What the server does with the post-edit render plan: `cache` (default) builds it after answering, into the cache the next describe or viewer read uses — except a batch touching a slide, binding or deck style, whose plan is built before answering to measure fit; `inline` builds it before answering and returns it (slower). A write that built its plan prints the orphan / status-clash warnings and only the conversion warnings it introduced; otherwise the next `describe` reports them. `none` builds nothing. |
| --measure-fit | boolean | — | Measure the slides this batch touched with the deck exporter (default on; never under --plan-delivery none). --no-measure-fit skips the round trip. |
Exit codes: 0 — completed
Change a deck's display NAME.
deepcell deck rename <filename> <deck_id> <new_name>
deepcell deck rename model.deepcell <deck_id> <new_name>| Argument | Type | Required |
|---|---|---|
| filename | text | required |
| deck_id | text | required |
| new_name | text | required |
| Flag | Type | Default | What it does |
|---|---|---|---|
| --revision <revision> | text | — | Expected revision SHA for optimistic locking. |
| --workspace <workspace_slug> | text | — | Override active workspace. |
| --rationale <rationale> | text | — | Why this edit was made. Becomes the commit message body, so the history reads as the decision rather than the coordinates the diff already shows. `-m` and `--message` are aliases of `--rationale`. |
| --title <title> | text | — | Short commit subject (e.g. 'Q3 actuals update'). Combined with --rationale as 'title: rationale'. The mechanical summary the server would have written is kept as a Summary trailer either way. |
| --dry-run | boolean | — | Validate only: run the full server-side pipeline (per-op validation, formula parse, post-apply cycle check + recompute) and report errors without persisting anything — no commit, no revision bump. |
| --plan-delivery <plan_delivery> | none | cache | inline | — | What the server does with the post-edit render plan: `cache` (default) builds it after answering, into the cache the next describe or viewer read uses — except a batch touching a slide, binding or deck style, whose plan is built before answering to measure fit; `inline` builds it before answering and returns it (slower). A write that built its plan prints the orphan / status-clash warnings and only the conversion warnings it introduced; otherwise the next `describe` reports them. `none` builds nothing. |
| --measure-fit | boolean | — | Measure the slides this batch touched with the deck exporter (default on; never under --plan-delivery none). --no-measure-fit skips the round trip. |
Exit codes: 0 — completed
Change a slide's display NAME.
deepcell deck rename-slide <filename> <slide_id> <new_name> --deck <deck_id>
deepcell deck rename-slide model.deepcell <slide_id> <new_name> --deck <deck_id>| Argument | Type | Required |
|---|---|---|
| filename | text | required |
| slide_id | text | required |
| new_name | text | required |
| Flag | Type | Default | What it does |
|---|---|---|---|
| --deck <deck_id> | text | required | Deck the slide belongs to. |
| --revision <revision> | text | — | Expected revision SHA for optimistic locking. |
| --workspace <workspace_slug> | text | — | Override active workspace. |
| --rationale <rationale> | text | — | Why this edit was made. Becomes the commit message body, so the history reads as the decision rather than the coordinates the diff already shows. `-m` and `--message` are aliases of `--rationale`. |
| --title <title> | text | — | Short commit subject (e.g. 'Q3 actuals update'). Combined with --rationale as 'title: rationale'. The mechanical summary the server would have written is kept as a Summary trailer either way. |
| --dry-run | boolean | — | Validate only: run the full server-side pipeline (per-op validation, formula parse, post-apply cycle check + recompute) and report errors without persisting anything — no commit, no revision bump. |
| --plan-delivery <plan_delivery> | none | cache | inline | — | What the server does with the post-edit render plan: `cache` (default) builds it after answering, into the cache the next describe or viewer read uses — except a batch touching a slide, binding or deck style, whose plan is built before answering to measure fit; `inline` builds it before answering and returns it (slower). A write that built its plan prints the orphan / status-clash warnings and only the conversion warnings it introduced; otherwise the next `describe` reports them. `none` builds nothing. |
| --measure-fit | boolean | — | Measure the slides this batch touched with the deck exporter (default on; never under --plan-delivery none). --no-measure-fit skips the round trip. |
Exit codes: 0 — completed
Move a deck to TO_INDEX in the deck order (0-based).
deepcell deck reorder <filename> <deck_id> <to_index>
deepcell deck reorder model.deepcell <deck_id> <to_index>| Argument | Type | Required |
|---|---|---|
| filename | text | required |
| deck_id | text | required |
| to_index | integer | required |
| Flag | Type | Default | What it does |
|---|---|---|---|
| --revision <revision> | text | — | Expected revision SHA for optimistic locking. |
| --workspace <workspace_slug> | text | — | Override active workspace. |
| --rationale <rationale> | text | — | Why this edit was made. Becomes the commit message body, so the history reads as the decision rather than the coordinates the diff already shows. `-m` and `--message` are aliases of `--rationale`. |
| --title <title> | text | — | Short commit subject (e.g. 'Q3 actuals update'). Combined with --rationale as 'title: rationale'. The mechanical summary the server would have written is kept as a Summary trailer either way. |
| --dry-run | boolean | — | Validate only: run the full server-side pipeline (per-op validation, formula parse, post-apply cycle check + recompute) and report errors without persisting anything — no commit, no revision bump. |
| --plan-delivery <plan_delivery> | none | cache | inline | — | What the server does with the post-edit render plan: `cache` (default) builds it after answering, into the cache the next describe or viewer read uses — except a batch touching a slide, binding or deck style, whose plan is built before answering to measure fit; `inline` builds it before answering and returns it (slower). A write that built its plan prints the orphan / status-clash warnings and only the conversion warnings it introduced; otherwise the next `describe` reports them. `none` builds nothing. |
| --measure-fit | boolean | — | Measure the slides this batch touched with the deck exporter (default on; never under --plan-delivery none). --no-measure-fit skips the round trip. |
Exit codes: 0 — completed
Move a slide to TO_INDEX within its deck (0-based).
deepcell deck reorder-slide <filename> <slide_id> <to_index> --deck <deck_id>
deepcell deck reorder-slide model.deepcell <slide_id> <to_index> --deck <deck_id>| Argument | Type | Required |
|---|---|---|
| filename | text | required |
| slide_id | text | required |
| to_index | integer | required |
| Flag | Type | Default | What it does |
|---|---|---|---|
| --deck <deck_id> | text | required | Deck the slide belongs to. |
| --revision <revision> | text | — | Expected revision SHA for optimistic locking. |
| --workspace <workspace_slug> | text | — | Override active workspace. |
| --rationale <rationale> | text | — | Why this edit was made. Becomes the commit message body, so the history reads as the decision rather than the coordinates the diff already shows. `-m` and `--message` are aliases of `--rationale`. |
| --title <title> | text | — | Short commit subject (e.g. 'Q3 actuals update'). Combined with --rationale as 'title: rationale'. The mechanical summary the server would have written is kept as a Summary trailer either way. |
| --dry-run | boolean | — | Validate only: run the full server-side pipeline (per-op validation, formula parse, post-apply cycle check + recompute) and report errors without persisting anything — no commit, no revision bump. |
| --plan-delivery <plan_delivery> | none | cache | inline | — | What the server does with the post-edit render plan: `cache` (default) builds it after answering, into the cache the next describe or viewer read uses — except a batch touching a slide, binding or deck style, whose plan is built before answering to measure fit; `inline` builds it before answering and returns it (slower). A write that built its plan prints the orphan / status-clash warnings and only the conversion warnings it introduced; otherwise the next `describe` reports them. `none` builds nothing. |
| --measure-fit | boolean | — | Measure the slides this batch touched with the deck exporter (default on; never under --plan-delivery none). --no-measure-fit skips the round trip. |
Exit codes: 0 — completed
Set a deck's stylesheet: a PACK by name, or a CSS file, whole.
deepcell deck style <filename> --deck <deck_id>
deepcell deck style model.deepcell --deck <deck_id>| Argument | Type | Required |
|---|---|---|
| filename | text | required |
| Flag | Type | Default | What it does |
|---|---|---|---|
| --deck <deck_id> | text | required | Deck to restyle. |
| --pack <pack> | text | — | A style pack — institutional, consulting, editorial, product (`deepcell ref deck-style`). The server writes its CSS. |
| --css-file <css_file> | file | — | The deck's own stylesheet, whole (use '-' for stdin). Replaces, never merges. |
| --keep-own-rules | boolean | — | With --pack: keep the rules written after the old pack (the deck's own) and replace only the pack. |
| --revision <revision> | text | — | Expected revision SHA for optimistic locking. |
| --workspace <workspace_slug> | text | — | Override active workspace. |
| --rationale <rationale> | text | — | Why this edit was made. Becomes the commit message body, so the history reads as the decision rather than the coordinates the diff already shows. `-m` and `--message` are aliases of `--rationale`. |
| --title <title> | text | — | Short commit subject (e.g. 'Q3 actuals update'). Combined with --rationale as 'title: rationale'. The mechanical summary the server would have written is kept as a Summary trailer either way. |
| --dry-run | boolean | — | Validate only: run the full server-side pipeline (per-op validation, formula parse, post-apply cycle check + recompute) and report errors without persisting anything — no commit, no revision bump. |
| --plan-delivery <plan_delivery> | none | cache | inline | — | What the server does with the post-edit render plan: `cache` (default) builds it after answering, into the cache the next describe or viewer read uses — except a batch touching a slide, binding or deck style, whose plan is built before answering to measure fit; `inline` builds it before answering and returns it (slower). A write that built its plan prints the orphan / status-clash warnings and only the conversion warnings it introduced; otherwise the next `describe` reports them. `none` builds nothing. |
| --measure-fit | boolean | — | Measure the slides this batch touched with the deck exporter (default on; never under --plan-delivery none). --no-measure-fit skips the round trip. |
Exit codes: 0 — completed
Remove one or more bindings, leaving whatever the slide's HTML says in their place.
deepcell deck unbind <filename> [binding_ids...] --deck <deck_id>
deepcell deck unbind model.deepcell --deck <deck_id>| Argument | Type | Required |
|---|---|---|
| filename | text | required |
| binding_ids... | text | optional |
| Flag | Type | Default | What it does |
|---|---|---|---|
| --binding-id <binding_id_flags> | text | — | A binding to remove — the same as naming it positionally. Repeatable. |
| --deck <deck_id> | text | required | Deck the bindings live on. |
| --revision <revision> | text | — | Expected revision SHA for optimistic locking. |
| --workspace <workspace_slug> | text | — | Override active workspace. |
| --rationale <rationale> | text | — | Why this edit was made. Becomes the commit message body, so the history reads as the decision rather than the coordinates the diff already shows. `-m` and `--message` are aliases of `--rationale`. |
| --title <title> | text | — | Short commit subject (e.g. 'Q3 actuals update'). Combined with --rationale as 'title: rationale'. The mechanical summary the server would have written is kept as a Summary trailer either way. |
| --dry-run | boolean | — | Validate only: run the full server-side pipeline (per-op validation, formula parse, post-apply cycle check + recompute) and report errors without persisting anything — no commit, no revision bump. |
| --plan-delivery <plan_delivery> | none | cache | inline | — | What the server does with the post-edit render plan: `cache` (default) builds it after answering, into the cache the next describe or viewer read uses — except a batch touching a slide, binding or deck style, whose plan is built before answering to measure fit; `inline` builds it before answering and returns it (slower). A write that built its plan prints the orphan / status-clash warnings and only the conversion warnings it introduced; otherwise the next `describe` reports them. `none` builds nothing. |
| --measure-fit | boolean | — | Measure the slides this batch touched with the deck exporter (default on; never under --plan-delivery none). --no-measure-fit skips the round trip. |
Exit codes: 0 — completed
Add a row or a column to a Block.
deepcell defs add-axis-member <filename> --sheet <sheet_id> --block <block_id> --axis <axis> --member <member> --ref <ref>
deepcell defs add-axis-member model.deepcell --sheet variance --block revenue_table --axis rows --member item --ref Gross_Profit| Argument | Type | Required |
|---|---|---|
| filename | text | required |
| Flag | Type | Default | What it does |
|---|---|---|---|
| --sheet <sheet_id> | text | required | Sheet containing the block. |
| --block <block_id> | text | required | blockId to edit. |
| --axis <axis> | rows | columns | required | Which axis to edit: 'rows' (the block's @itemOrders) or 'columns' (its @contextRefs). |
| --member <member> | item | context | required | What kind of id --ref is. Pair 'item' with rows, 'context' with columns. |
| --ref <ref> | text | required | The item id or context id to add. On --axis columns, a range 'A..B' adds every context from A to B inclusive, in context order (e.g. 'D2017_05_18..D2021_05_18' for a daily series); delete-axis-member removes it whole. |
| --index <index> | integer range | — | 0-based position on the axis (default: append at the end). |
| --revision <revision> | text | — | Expected revision SHA for optimistic locking. |
| --workspace <workspace_slug> | text | — | Override active workspace. |
| --rationale <rationale> | text | — | Why this edit was made. Becomes the commit message body, so the history reads as the decision rather than the coordinates the diff already shows. `-m` and `--message` are aliases of `--rationale`. |
| --title <title> | text | — | Short commit subject (e.g. 'Q3 actuals update'). Combined with --rationale as 'title: rationale'. The mechanical summary the server would have written is kept as a Summary trailer either way. |
| --dry-run | boolean | — | Validate only: run the full server-side pipeline (per-op validation, formula parse, post-apply cycle check + recompute) and report errors without persisting anything — no commit, no revision bump. |
| --plan-delivery <plan_delivery> | none | cache | inline | — | What the server does with the post-edit render plan: `cache` (default) builds it after answering, into the cache the next describe or viewer read uses — except a batch touching a slide, binding or deck style, whose plan is built before answering to measure fit; `inline` builds it before answering and returns it (slower). A write that built its plan prints the orphan / status-clash warnings and only the conversion warnings it introduced; otherwise the next `describe` reports them. `none` builds nothing. |
| --measure-fit | boolean | — | Measure the slides this batch touched with the deck exporter (default on; never under --plan-delivery none). --no-measure-fit skips the round trip. |
Exit codes: 0 — completed · 1 — nothing-changed
Add a presentation Block (table or chart) to a sheet.
deepcell defs add-block <filename> --sheet <sheet_id> --block-type <block_type> --name <name>
deepcell defs add-block model.deepcell --sheet variance --block-type table --name 'Revenue vs budget' --item-orders Revenue,COGS --context-refs FY2025,FY2026| Argument | Type | Required |
|---|---|---|
| filename | text | required |
| Flag | Type | Default | What it does |
|---|---|---|---|
| --sheet <sheet_id> | text | required | Sheet to add the block to. |
| --block-type <block_type> | text | required | One of the types `deepcell ref block-type` lists — table, key_value, chart, sensitivity, text. Any other value is refused: the renderer would skip the block, so it would be written and never drawn. |
| --name <name> | text | required | Display name / section heading. |
| --item-orders <item_orders> | text | — | Rows, in order — item ids, @order values, or lo-hi order ranges, comma separated (e.g. 'revenue,cogs,gross_profit' or '4000-4099'; 'lo:hi' is the same range as a formula writes it). Stored verbatim as @itemOrders; a number or a range matches @order, anything else must be a defined itemId. Every list of items reads this grammar. Omit and the block renders empty — see the note above. |
| --context-refs <context_refs> | text | — | Comma-separated context ids forming the block's columns, in order (e.g. 'FY2024,FY2025'); 'A..B' is a range, every context from A to B inclusive in context order (e.g. 'FY2024,D2017_05_18..D2021_05_18'). Omit to show every context. |
| --index <index> | integer | — | Insertion index within the sheet (default: append at the end). |
| --format-ref <format_ref> | text | — | FormatDefinitions id this block resolves against. Omit and the block takes the document default (the Format named default_format, else the first one defined). See `deepcell ref format`. |
| --chart-type <chart_type> | text | — | — |
| --category-axis <category_axis> | text | — | — |
| --chart-spec <chart_spec> | text | — | The chart, as a JSON object (chart blocks; a chart block written without one draws its selection as grouped columns). Compact: {"family":"line","series":[{"itemRef":"Revenue"}]} over the block's contexts, with categoryAxis, arrangement, totalItemRefs and the Block's ref attributes; {} charts the block's selection. Families: column (vertical), bar (horizontal), line, area, waterfall, range_bar, scatter, pie, doughnut, funnel, radar. Explicit: with "data". Inspect with `deepcell query --chart-details`. |
| --clear-chart-spec | boolean | — | — |
| --chart-annotations <chart_annotations> | text | — | — |
| --total-item-refs <total_item_refs> | text | — | — |
| --revision <revision> | text | — | Expected revision SHA for optimistic locking. |
| --workspace <workspace_slug> | text | — | Override active workspace. |
| --rationale <rationale> | text | — | Why this edit was made. Becomes the commit message body, so the history reads as the decision rather than the coordinates the diff already shows. `-m` and `--message` are aliases of `--rationale`. |
| --title <title> | text | — | Short commit subject (e.g. 'Q3 actuals update'). Combined with --rationale as 'title: rationale'. The mechanical summary the server would have written is kept as a Summary trailer either way. |
| --dry-run | boolean | — | Validate only: run the full server-side pipeline (per-op validation, formula parse, post-apply cycle check + recompute) and report errors without persisting anything — no commit, no revision bump. |
| --plan-delivery <plan_delivery> | none | cache | inline | — | What the server does with the post-edit render plan: `cache` (default) builds it after answering, into the cache the next describe or viewer read uses — except a batch touching a slide, binding or deck style, whose plan is built before answering to measure fit; `inline` builds it before answering and returns it (slower). A write that built its plan prints the orphan / status-clash warnings and only the conversion warnings it introduced; otherwise the next `describe` reports them. `none` builds nothing. |
| --measure-fit | boolean | — | Measure the slides this batch touched with the deck exporter (default on; never under --plan-delivery none). --no-measure-fit skips the round trip. |
Exit codes: 0 — completed · 1 — nothing-changed
Add a CalculationDefinition (formula).
deepcell defs add-calc <filename> --item <item_id> --formula <formula>
deepcell defs add-calc model.deepcell --item Revenue --calc-id calc_revenue --formula 'Units_Sold[CURRENT] * Unit_Price[CURRENT]' --status projected| Argument | Type | Required |
|---|---|---|
| filename | text | required |
| Flag | Type | Default | What it does |
|---|---|---|---|
| --item <item_id> | text | required | Item the calc resolves into (itemId). |
| --calc-id <calc_id> | text | — | Stable calcId for the new calc (e.g. 'calc_stress_low'). Errors if the id is already taken, unless --replace. Omit to have one assigned — but an auto id is what `defs delete-calc` and `reasoning add-claim --calc-ref` must then quote, so choose your own when the calc has to be citable. |
| --formula <formula> | text | required | Jingwei formula, e.g. "Revenue[PREVIOUS] * 1.1". |
| --context <context_ref> | text | — | Pin calc to one or more contextRefs. Pass a CSV (e.g. 'FY25,FY26,FY27') or a range ('FY25..FY27', every period from the first to the last in context order) to pin a roll-forward chain to several periods in one call — omit the seed period so its literal is kept. Omit entirely to fan out across every period: a literal there is overwritten, except that a formula reading its own item skips the periods holding one (its seeds). |
| --scenario <scenario_ref> | text | — | Limit calc to this scenarioRef. |
| --status <status_ref> | text | — | Pin calc to a statusRef (e.g. 'projected'). Strongly recommended for forecast formulas so they coexist with the historical actuals in the same item/context slots — without it the projection stores one untagged cell that answers every status, leaving the actuals nowhere to sit. Not enforced: omitting it succeeds, and the cost shows up later as an actual you cannot store. |
| --replace | boolean | — | With --calc-id naming a calc that exists: overwrite it in place (same id, same position) instead of refusing the duplicate id. |
| --revision <revision> | text | — | Expected revision SHA for optimistic locking. |
| --workspace <workspace_slug> | text | — | Override active workspace. |
| --rationale <rationale> | text | — | Why this edit was made. Becomes the commit message body, so the history reads as the decision rather than the coordinates the diff already shows. `-m` and `--message` are aliases of `--rationale`. |
| --title <title> | text | — | Short commit subject (e.g. 'Q3 actuals update'). Combined with --rationale as 'title: rationale'. The mechanical summary the server would have written is kept as a Summary trailer either way. |
| --dry-run | boolean | — | Validate only: run the full server-side pipeline (per-op validation, formula parse, post-apply cycle check + recompute) and report errors without persisting anything — no commit, no revision bump. |
| --plan-delivery <plan_delivery> | none | cache | inline | — | What the server does with the post-edit render plan: `cache` (default) builds it after answering, into the cache the next describe or viewer read uses — except a batch touching a slide, binding or deck style, whose plan is built before answering to measure fit; `inline` builds it before answering and returns it (slower). A write that built its plan prints the orphan / status-clash warnings and only the conversion warnings it introduced; otherwise the next `describe` reports them. `none` builds nothing. |
| --measure-fit | boolean | — | Measure the slides this batch touched with the deck exporter (default on; never under --plan-delivery none). --no-measure-fit skips the round trip. |
Exit codes: 0 — completed · 1 — nothing-changed
Add a ContextDefinition — a period, or a non-temporal axis member.
deepcell defs add-context <filename>
deepcell defs add-context model.deepcell --name FY2025 --context FY2025 --kind period --state closed --status actual| Argument | Type | Required |
|---|---|---|
| filename | text | required |
| Flag | Type | Default | What it does |
|---|---|---|---|
| --name <name> | text | — | The context IDENTIFIER (@contextId), e.g. 'Low_Rent' — not a display label. Must satisfy the reference-id grammar. Set the readable name afterwards with `defs update-context --label`. |
| --status <status_ref> | text | — | statusRef (optional). |
| --context <context_ref> | text | — | The context IDENTIFIER (@contextId) under the op's wire name — the same thing as --name. If both are given, --context wins; with neither, an opaque `<kind>_N` id (e.g. `period_6`) is assigned. |
| --kind <kind> | text | — | Context kind. Omit (or 'period' / temporal alias) for time columns; pass 'program', 'segment', 'fund', 'region', 'entity', 'product', 'other' (or any snake_case label, ≤32 chars) for non-temporal axes. Always written as @kind on the <Context> element. |
| --state <state> | text | — | Period state: closed | open | future. This is what says whether the period is over — never the A/E suffix on a context id. Only meaningful for --kind period. |
| --as-of <as_of> | text | — | ISO YYYY-MM-DD the period's numbers are stated as of. Documentation and lint input only; never consulted when rendering. |
| --granularity <granularity> | text | — | Period length: annual | semiannual | quarterly | monthly (written as <Type>). Growth, margin and CAGR checks compare only periods of one granularity. |
| --start-date <start_date> | text | — | First day of the period (<StartDate>). |
| --end-date <end_date> | text | — | Last day of the period (<EndDate>). |
| --parent <parent_context> | text | — | The enclosing period's id, e.g. FY2026 for Q1_2026 (@parentContext); SUM_CHILDREN sums over it. |
| --index <index> | integer | — | Position in contexts list (omit to append at end). |
| --revision <revision> | text | — | Expected revision SHA for optimistic locking. |
| --workspace <workspace_slug> | text | — | Override active workspace. |
| --rationale <rationale> | text | — | Why this edit was made. Becomes the commit message body, so the history reads as the decision rather than the coordinates the diff already shows. `-m` and `--message` are aliases of `--rationale`. |
| --title <title> | text | — | Short commit subject (e.g. 'Q3 actuals update'). Combined with --rationale as 'title: rationale'. The mechanical summary the server would have written is kept as a Summary trailer either way. |
| --dry-run | boolean | — | Validate only: run the full server-side pipeline (per-op validation, formula parse, post-apply cycle check + recompute) and report errors without persisting anything — no commit, no revision bump. |
| --plan-delivery <plan_delivery> | none | cache | inline | — | What the server does with the post-edit render plan: `cache` (default) builds it after answering, into the cache the next describe or viewer read uses — except a batch touching a slide, binding or deck style, whose plan is built before answering to measure fit; `inline` builds it before answering and returns it (slower). A write that built its plan prints the orphan / status-clash warnings and only the conversion warnings it introduced; otherwise the next `describe` reports them. `none` builds nothing. |
| --measure-fit | boolean | — | Measure the slides this batch touched with the deck exporter (default on; never under --plan-delivery none). --no-measure-fit skips the round trip. |
Exit codes: 0 — completed · 1 — nothing-changed
Declare a custom Dimension (a third axis such as geography or product line), optionally with its members.
deepcell defs add-dimension <filename> <dimension_id>
deepcell defs add-dimension model.deepcell <dimension_id>| Argument | Type | Required |
|---|---|---|
| filename | text | required |
| dimension_id | text | required |
| Flag | Type | Default | What it does |
|---|---|---|---|
| --label <label> | text | — | Display label for the dimension. |
| --member <members> | text | — | Declare a member with it; repeat in expansion order (--member na=North America --member eu). |
| --revision <revision> | text | — | Expected revision SHA for optimistic locking. |
| --workspace <workspace_slug> | text | — | Override active workspace. |
| --rationale <rationale> | text | — | Why this edit was made. Becomes the commit message body, so the history reads as the decision rather than the coordinates the diff already shows. `-m` and `--message` are aliases of `--rationale`. |
| --title <title> | text | — | Short commit subject (e.g. 'Q3 actuals update'). Combined with --rationale as 'title: rationale'. The mechanical summary the server would have written is kept as a Summary trailer either way. |
| --dry-run | boolean | — | Validate only: run the full server-side pipeline (per-op validation, formula parse, post-apply cycle check + recompute) and report errors without persisting anything — no commit, no revision bump. |
| --plan-delivery <plan_delivery> | none | cache | inline | — | What the server does with the post-edit render plan: `cache` (default) builds it after answering, into the cache the next describe or viewer read uses — except a batch touching a slide, binding or deck style, whose plan is built before answering to measure fit; `inline` builds it before answering and returns it (slower). A write that built its plan prints the orphan / status-clash warnings and only the conversion warnings it introduced; otherwise the next `describe` reports them. `none` builds nothing. |
| --measure-fit | boolean | — | Measure the slides this batch touched with the deck exporter (default on; never under --plan-delivery none). --no-measure-fit skips the round trip. |
Exit codes: 0 — completed · 1 — nothing-changed
Add a <Document> — the prose that ships with the model.
deepcell defs add-doc <filename>
deepcell defs add-doc model.deepcell --doc-id variance_note --name 'July variance note' --lang en --body-file variance-note.md| Argument | Type | Required |
|---|---|---|
| filename | text | required |
| Flag | Type | Default | What it does |
|---|---|---|---|
| --doc-id <doc_id> | text | — | Document identifier (@docId). Must match [A-Za-z0-9_.-]+ so a deepcell:doc/<id> reference to it parses back. |
| --name <name> | text | — | Display title. |
| --lang <lang> | text | — | BCP-47 language tag, e.g. 'en' or 'zh'. |
| --body-file <body_file> | file | — | File holding the initial body (else empty); `-` reads stdin. |
| --notation <notation> | markdown | text | — | What the body IS. A new document is markdown unless you say 'text', which also stops anchors being stamped into it. |
| --index <index> | integer | — | Position among documents. |
| --revision <revision> | text | — | Expected revision SHA for optimistic locking. |
| --workspace <workspace_slug> | text | — | Override active workspace. |
| --rationale <rationale> | text | — | Why this edit was made. Becomes the commit message body, so the history reads as the decision rather than the coordinates the diff already shows. `-m` and `--message` are aliases of `--rationale`. |
| --title <title> | text | — | Short commit subject (e.g. 'Q3 actuals update'). Combined with --rationale as 'title: rationale'. The mechanical summary the server would have written is kept as a Summary trailer either way. |
| --dry-run | boolean | — | Validate only: run the full server-side pipeline (per-op validation, formula parse, post-apply cycle check + recompute) and report errors without persisting anything — no commit, no revision bump. |
| --plan-delivery <plan_delivery> | none | cache | inline | — | What the server does with the post-edit render plan: `cache` (default) builds it after answering, into the cache the next describe or viewer read uses — except a batch touching a slide, binding or deck style, whose plan is built before answering to measure fit; `inline` builds it before answering and returns it (slower). A write that built its plan prints the orphan / status-clash warnings and only the conversion warnings it introduced; otherwise the next `describe` reports them. `none` builds nothing. |
| --measure-fit | boolean | — | Measure the slides this batch touched with the deck exporter (default on; never under --plan-delivery none). --no-measure-fit skips the round trip. |
Exit codes: 0 — completed · 1 — nothing-changed
Add a <Format formatId="..."> to FormatDefinitions.
deepcell defs add-format <filename> <format_id>
deepcell defs add-format model.deepcell fmt_statement --rule 'default:fontName=Arial'| Argument | Type | Required |
|---|---|---|
| filename | text | required |
| format_id | text | required |
| Flag | Type | Default | What it does |
|---|---|---|---|
| --rule <rule_strs> | text | — | One rule as semicolon-separated key=value pairs, e.g. 'target=item:Average_Headcount; number_format=#,##0.0;(#,##0.0);"-"' (one decimal on one row; keep the negative and zero sections every default carries). A numberFormat on target=default is a catch-all and yields to the item's family default, so it changes no digits — use an item:, level: or condition: target (`deepcell ref format/pattern`). Commas inside a value (such as Excel number formats) are preserved, and so are the semicolons of a section format ('number_format=#,##0.00;[Red](#,##0.00);0.00'): a fragment that does not open with `key=` belongs to the value before it, an empty one included (as in Excel, an empty section displays nothing: '#,##0.00;;"-"' shows negatives blank and zero as -). Only a trailing ';' is dropped; a format that must end on an empty section goes through --rule-json. A rule may also be one JSON object with the same keys, e.g. '{"target":"item:Revenue","number_format":"+0;-0;0"}'. Repeat the flag for multiple rules. Keys: target, font_color, background_color, stroke_color, font_weight, font_style, font_name, font_size, text_align, indent, number_format, border_top/bottom/left/right. |
| --rule-json <rule_json> | text | — | The rules as a JSON list of objects, for a value the key=value syntax cannot carry: '[{"target":"item:Revenue","number_format":"…"}]'. Mutually exclusive with --rule. |
| --inherit | boolean | — | --no-inherit opts the Format out of the IB default base (a total custom theme; writes @inherit="false"). Default inherits the base (add-on model). See `deepcell ref format`. |
| --revision <revision> | text | — | Expected revision SHA for optimistic locking. |
| --workspace <workspace_slug> | text | — | Override active workspace. |
| --rationale <rationale> | text | — | Why this edit was made. Becomes the commit message body, so the history reads as the decision rather than the coordinates the diff already shows. `-m` and `--message` are aliases of `--rationale`. |
| --title <title> | text | — | Short commit subject (e.g. 'Q3 actuals update'). Combined with --rationale as 'title: rationale'. The mechanical summary the server would have written is kept as a Summary trailer either way. |
| --dry-run | boolean | — | Validate only: run the full server-side pipeline (per-op validation, formula parse, post-apply cycle check + recompute) and report errors without persisting anything — no commit, no revision bump. |
| --plan-delivery <plan_delivery> | none | cache | inline | — | What the server does with the post-edit render plan: `cache` (default) builds it after answering, into the cache the next describe or viewer read uses — except a batch touching a slide, binding or deck style, whose plan is built before answering to measure fit; `inline` builds it before answering and returns it (slower). A write that built its plan prints the orphan / status-clash warnings and only the conversion warnings it introduced; otherwise the next `describe` reports them. `none` builds nothing. |
| --measure-fit | boolean | — | Measure the slides this batch touched with the deck exporter (default on; never under --plan-delivery none). --no-measure-fit skips the round trip. |
Exit codes: 0 — completed · 1 — nothing-changed
Add an ItemDefinition (no value).
deepcell defs add-item <filename> --name <name>
deepcell defs add-item model.deepcell --name Revenue --label Revenue --data-type monetary --scale 6 --currency USD --order-mode append| Argument | Type | Required |
|---|---|---|
| filename | text | required |
| Flag | Type | Default | What it does |
|---|---|---|---|
| --name <name> | text | required | The new itemId, stored as given (trimmed). Use the snake_case long form (Net_Working_Capital) — formulas, blocks and citations quote it; put an abbreviation in --label. |
| --label <label> | text | — | Display label (e.g. 'Gross Margin %'); defaults to a humanized form of --name. Written as one <Label lang="en">: no typed op adds a second locale, so a bilingual item (en + zh) is seeded in the initial `deepcell write`. |
| --level <level> | integer | — | Indent depth (>= 0). Omit it to take the depth under --parent (0 for a root); a level that disagrees with the parent chain is stored as given. |
| --parent <parent_item_id> | text | — | Parent itemId (omit for root). |
| --index <index> | integer | — | Position among siblings (omit to append after the last). Without --order / --order-mode the item takes a free @order beside its neighbours; when none is free every later item shifts +1, and rows a block addresses by order range move with them. |
| --order <order> | integer | — | Explicit @order (must be unique; presentation blocks address rows by order ranges). Overrides --index placement. |
| --order-mode <order_mode> | append | — | 'append' assigns max(existing orders) + 10 — no need to know which orders are taken. Mutually exclusive with --order; overrides --index. |
| --data-type <data_type> | text | — | DataType element (e.g. 'monetary', 'percentage', 'number'). |
| --unit <unit> | text | — | Unit element (e.g. '%', 'hours', 'tonnes'). |
| --scale <scale> | integer | — | Scale element (units multiplier exponent, 6 = millions). A monetary declaration: it sets a monetary item's display digits and is required with --currency (R7). On any other type it changes no digits — set those with an item: numberFormat rule (`deepcell ref format/pattern`). Item @precision and Header DecimalPlaces round what is STORED, never what is displayed. |
| --currency <currency> | text | — | Currency element: an ISO 4217 code ('USD', 'CNY'), or 'XXX' when the source states none (renders no symbol). |
| --shape <shape> | scalar | period | — | Declare the item's one shape: 'scalar' (one cell, Item[] — a rate, a life, a count) or 'period' (a value per period). Optional: omitted, the item's FIRST write decides (a value with no period makes it a scalar; a calc over scalars and fixed cells is inferred scalar and stamped) — declare it to force a shape. |
| --revision <revision> | text | — | Expected revision SHA for optimistic locking. |
| --workspace <workspace_slug> | text | — | Override active workspace. |
| --rationale <rationale> | text | — | Why this edit was made. Becomes the commit message body, so the history reads as the decision rather than the coordinates the diff already shows. `-m` and `--message` are aliases of `--rationale`. |
| --title <title> | text | — | Short commit subject (e.g. 'Q3 actuals update'). Combined with --rationale as 'title: rationale'. The mechanical summary the server would have written is kept as a Summary trailer either way. |
| --dry-run | boolean | — | Validate only: run the full server-side pipeline (per-op validation, formula parse, post-apply cycle check + recompute) and report errors without persisting anything — no commit, no revision bump. |
| --plan-delivery <plan_delivery> | none | cache | inline | — | What the server does with the post-edit render plan: `cache` (default) builds it after answering, into the cache the next describe or viewer read uses — except a batch touching a slide, binding or deck style, whose plan is built before answering to measure fit; `inline` builds it before answering and returns it (slower). A write that built its plan prints the orphan / status-clash warnings and only the conversion warnings it introduced; otherwise the next `describe` reports them. `none` builds nothing. |
| --measure-fit | boolean | — | Measure the slides this batch touched with the deck exporter (default on; never under --plan-delivery none). --no-measure-fit skips the round trip. |
Exit codes: 0 — completed · 1 — nothing-changed
Declare one Member of an existing custom Dimension, so values and calcs may carry `dimension:member`.
deepcell defs add-member <filename> <dimension_id> <member_id>
deepcell defs add-member model.deepcell <dimension_id> <member_id>| Argument | Type | Required |
|---|---|---|
| filename | text | required |
| dimension_id | text | required |
| member_id | text | required |
| Flag | Type | Default | What it does |
|---|---|---|---|
| --label <label> | text | — | Display label for the member. |
| --index <index> | integer range | — | 0-based position among the dimension's members (default: append). |
| --revision <revision> | text | — | Expected revision SHA for optimistic locking. |
| --workspace <workspace_slug> | text | — | Override active workspace. |
| --rationale <rationale> | text | — | Why this edit was made. Becomes the commit message body, so the history reads as the decision rather than the coordinates the diff already shows. `-m` and `--message` are aliases of `--rationale`. |
| --title <title> | text | — | Short commit subject (e.g. 'Q3 actuals update'). Combined with --rationale as 'title: rationale'. The mechanical summary the server would have written is kept as a Summary trailer either way. |
| --dry-run | boolean | — | Validate only: run the full server-side pipeline (per-op validation, formula parse, post-apply cycle check + recompute) and report errors without persisting anything — no commit, no revision bump. |
| --plan-delivery <plan_delivery> | none | cache | inline | — | What the server does with the post-edit render plan: `cache` (default) builds it after answering, into the cache the next describe or viewer read uses — except a batch touching a slide, binding or deck style, whose plan is built before answering to measure fit; `inline` builds it before answering and returns it (slower). A write that built its plan prints the orphan / status-clash warnings and only the conversion warnings it introduced; otherwise the next `describe` reports them. `none` builds nothing. |
| --measure-fit | boolean | — | Measure the slides this batch touched with the deck exporter (default on; never under --plan-delivery none). --no-measure-fit skips the round trip. |
Exit codes: 0 — completed · 1 — nothing-changed
Add a ContextDefinition (period, or non-temporal axis member).
deepcell defs add-period <filename>
deepcell defs add-period model.deepcell --name FY2026 --context FY2026 --state future --status projected| Argument | Type | Required |
|---|---|---|
| filename | text | required |
| Flag | Type | Default | What it does |
|---|---|---|---|
| --name <name> | text | — | The period IDENTIFIER (@contextId), e.g. FY2027E — not a display label. Must satisfy the reference-id grammar. Set the readable name afterwards with `defs update-context --label`. |
| --status <status_ref> | text | — | statusRef (e.g. 'projected'). |
| --context <context_ref> | text | — | The context IDENTIFIER (@contextId) under the op's wire name — the same thing as --name. If both are given, --context wins; with neither, an opaque `<kind>_N` id (e.g. `period_6`) is assigned. |
| --kind <kind> | text | — | Context kind. Omit (or pass 'period' / a temporal alias like 'time' / 'year' / 'annual' / 'fy') for time columns; pass e.g. 'program', 'segment', 'fund', 'region', 'entity', 'product', 'other' (or any snake_case label, ≤32 chars) for non-temporal axes. Always written as @kind on the <Context> element. |
| --state <state> | text | — | Period state: closed | open | future. This is what says whether the period is over — never the A/E suffix on a context id. Only meaningful for --kind period. |
| --as-of <as_of> | text | — | ISO YYYY-MM-DD the period's numbers are stated as of. Documentation and lint input only; never consulted when rendering. |
| --index <index> | integer | — | Position in contexts list (omit to append at end). |
| --revision <revision> | text | — | Expected revision SHA for optimistic locking. |
| --workspace <workspace_slug> | text | — | Override active workspace. |
| --rationale <rationale> | text | — | Why this edit was made. Becomes the commit message body, so the history reads as the decision rather than the coordinates the diff already shows. `-m` and `--message` are aliases of `--rationale`. |
| --title <title> | text | — | Short commit subject (e.g. 'Q3 actuals update'). Combined with --rationale as 'title: rationale'. The mechanical summary the server would have written is kept as a Summary trailer either way. |
| --dry-run | boolean | — | Validate only: run the full server-side pipeline (per-op validation, formula parse, post-apply cycle check + recompute) and report errors without persisting anything — no commit, no revision bump. |
| --plan-delivery <plan_delivery> | none | cache | inline | — | What the server does with the post-edit render plan: `cache` (default) builds it after answering, into the cache the next describe or viewer read uses — except a batch touching a slide, binding or deck style, whose plan is built before answering to measure fit; `inline` builds it before answering and returns it (slower). A write that built its plan prints the orphan / status-clash warnings and only the conversion warnings it introduced; otherwise the next `describe` reports them. `none` builds nothing. |
| --measure-fit | boolean | — | Measure the slides this batch touched with the deck exporter (default on; never under --plan-delivery none). --no-measure-fit skips the round trip. |
Exit codes: 0 — completed · 1 — nothing-changed
Add a <Rule> to an existing <Format>.
deepcell defs add-rule <filename> <format_id> --target <target>
deepcell defs add-rule model.deepcell fmt_statement --target 'level:0:item' --font-weight bold --number-format '#,##0'| Argument | Type | Required |
|---|---|---|
| filename | text | required |
| format_id | text | required |
| Flag | Type | Default | What it does |
|---|---|---|---|
| --target <target> | text | required | Rule @target selector (see `deepcell ref format`). Several rows or columns are one rule: 'item:A,B,C' (alias items:), 'context:FY24..FY26', 'level:0,1'. |
| --bg-color <background_color> | text | — | Hex color '#RRGGBB' for backgroundColor. |
| --stroke-color <stroke_color> | text | — | Chart outline hex color for strokeColor. |
| --font-color <font_color> | text | — | Hex color '#RRGGBB' for fontColor. |
| --font-weight <font_weight> | text | — | 'bold' | 'normal'. |
| --font-style <font_style> | text | — | 'italic' | 'normal'. |
| --font-name <font_name> | text | — | Font family name. |
| --font-size <font_size> | float | — | Font size in points. |
| --text-align <text_align> | text | — | 'left' | 'center' | 'right'. |
| --indent <indent> | integer | — | Indent character count. |
| --number-format <number_format> | text | — | Excel-style pattern, all three sections, e.g. '#,##0.0;(#,##0.0);"-"' (`deepcell ref format/pattern`). Set on a default or header target it yields to the item's family default. |
| --border-top <border_top> | text | — | e.g. 'thin #000000' (style + optional hex color). |
| --border-bottom <border_bottom> | text | — | Bottom border, e.g. 'thin #000000' (style + optional hex color). |
| --border-left <border_left> | text | — | Left border, e.g. 'thin #000000' (style + optional hex color). |
| --border-right <border_right> | text | — | Right border, e.g. 'thin #000000' (style + optional hex color). |
| --index <index> | integer | — | Insert position (omit to append). |
| --revision <revision> | text | — | Expected revision SHA for optimistic locking. |
| --workspace <workspace_slug> | text | — | Override active workspace. |
| --rationale <rationale> | text | — | Why this edit was made. Becomes the commit message body, so the history reads as the decision rather than the coordinates the diff already shows. `-m` and `--message` are aliases of `--rationale`. |
| --title <title> | text | — | Short commit subject (e.g. 'Q3 actuals update'). Combined with --rationale as 'title: rationale'. The mechanical summary the server would have written is kept as a Summary trailer either way. |
| --dry-run | boolean | — | Validate only: run the full server-side pipeline (per-op validation, formula parse, post-apply cycle check + recompute) and report errors without persisting anything — no commit, no revision bump. |
| --plan-delivery <plan_delivery> | none | cache | inline | — | What the server does with the post-edit render plan: `cache` (default) builds it after answering, into the cache the next describe or viewer read uses — except a batch touching a slide, binding or deck style, whose plan is built before answering to measure fit; `inline` builds it before answering and returns it (slower). A write that built its plan prints the orphan / status-clash warnings and only the conversion warnings it introduced; otherwise the next `describe` reports them. `none` builds nothing. |
| --measure-fit | boolean | — | Measure the slides this batch touched with the deck exporter (default on; never under --plan-delivery none). --no-measure-fit skips the round trip. |
Exit codes: 0 — completed · 1 — nothing-changed
Add a ScenarioDefinition.
deepcell defs add-scenario <filename>
deepcell defs add-scenario model.deepcell --name downside| Argument | Type | Required |
|---|---|---|
| filename | text | required |
| Flag | Type | Default | What it does |
|---|---|---|---|
| --name <name> | text | — | The scenario IDENTIFIER (@scenarioId), e.g. 'Bull' — not a display label. Must satisfy the reference-id grammar. Set the readable name afterwards with `defs update-scenario --label`. |
| --base <base_scenario_ref> | text | — | (unsupported) a scenario has no @baseScenarioRef — see `deepcell guide revise/scenarios`. |
| --context <context_ref> | text | — | The scenario IDENTIFIER (@scenarioId) under the op's wire name, contextRef — the same thing as --name, not a period. Legacy spelling; if both are given, --context wins. |
| --is-default | boolean | — | Mark as the document's default scenario — clears @isDefault from every other scenario. |
| --index <index> | integer | — | Position (omit to append at end). |
| --revision <revision> | text | — | Expected revision SHA for optimistic locking. |
| --workspace <workspace_slug> | text | — | Override active workspace. |
| --rationale <rationale> | text | — | Why this edit was made. Becomes the commit message body, so the history reads as the decision rather than the coordinates the diff already shows. `-m` and `--message` are aliases of `--rationale`. |
| --title <title> | text | — | Short commit subject (e.g. 'Q3 actuals update'). Combined with --rationale as 'title: rationale'. The mechanical summary the server would have written is kept as a Summary trailer either way. |
| --dry-run | boolean | — | Validate only: run the full server-side pipeline (per-op validation, formula parse, post-apply cycle check + recompute) and report errors without persisting anything — no commit, no revision bump. |
| --plan-delivery <plan_delivery> | none | cache | inline | — | What the server does with the post-edit render plan: `cache` (default) builds it after answering, into the cache the next describe or viewer read uses — except a batch touching a slide, binding or deck style, whose plan is built before answering to measure fit; `inline` builds it before answering and returns it (slower). A write that built its plan prints the orphan / status-clash warnings and only the conversion warnings it introduced; otherwise the next `describe` reports them. `none` builds nothing. |
| --measure-fit | boolean | — | Measure the slides this batch touched with the deck exporter (default on; never under --plan-delivery none). --no-measure-fit skips the round trip. |
Exit codes: 0 — completed · 1 — nothing-changed
Add a sensitivity block (data table / scenario comparison).
deepcell defs add-sensitivity <filename> --sheet <sheet_id> --name <name> --spec-file <spec_file>
deepcell defs add-sensitivity model.deepcell --sheet summary --name 'IRR sensitivity' --spec-file sensitivity.json| Argument | Type | Required |
|---|---|---|
| filename | text | required |
| Flag | Type | Default | What it does |
|---|---|---|---|
| --sheet <sheet_id> | text | required | Sheet to add the block to. |
| --name <name> | text | required | Display name of the sensitivity block. |
| --index <index> | integer | — | Position among sheet blocks (omit to append at end). |
| --format-ref <format_ref> | text | — | FormatDefinitions id. |
| --spec-file <spec_file> | file | required | JSON with {"axes": [...], "outputs": [...]} (use "-" for stdin). |
| --revision <revision> | text | — | Expected revision SHA for optimistic locking. |
| --workspace <workspace_slug> | text | — | Override active workspace. |
| --rationale <rationale> | text | — | Why this edit was made. Becomes the commit message body, so the history reads as the decision rather than the coordinates the diff already shows. `-m` and `--message` are aliases of `--rationale`. |
| --title <title> | text | — | Short commit subject (e.g. 'Q3 actuals update'). Combined with --rationale as 'title: rationale'. The mechanical summary the server would have written is kept as a Summary trailer either way. |
| --dry-run | boolean | — | Validate only: run the full server-side pipeline (per-op validation, formula parse, post-apply cycle check + recompute) and report errors without persisting anything — no commit, no revision bump. |
| --plan-delivery <plan_delivery> | none | cache | inline | — | What the server does with the post-edit render plan: `cache` (default) builds it after answering, into the cache the next describe or viewer read uses — except a batch touching a slide, binding or deck style, whose plan is built before answering to measure fit; `inline` builds it before answering and returns it (slower). A write that built its plan prints the orphan / status-clash warnings and only the conversion warnings it introduced; otherwise the next `describe` reports them. `none` builds nothing. |
| --measure-fit | boolean | — | Measure the slides this batch touched with the deck exporter (default on; never under --plan-delivery none). --no-measure-fit skips the round trip. |
Exit codes: 0 — completed · 1 — nothing-changed
Add a presentation Sheet — a tab in the rendered document.
deepcell defs add-sheet <filename> --label <label>
deepcell defs add-sheet model.deepcell --label 'Variance review' --index 1| Argument | Type | Required |
|---|---|---|
| filename | text | required |
| Flag | Type | Default | What it does |
|---|---|---|---|
| --label <label> | text | required | Sheet tab label, e.g. 'Dashboard'. |
| --index <index> | integer range | — | 0-based position among the sheets (default: append at the end). |
| --sheet-id <sheet_id> | text | — | The new sheet's id (letters, digits, '_' or '-'), so later commands can address it without reading it back. Errors if taken. Omit to derive one from --label. |
| --revision <revision> | text | — | Expected revision SHA for optimistic locking. |
| --workspace <workspace_slug> | text | — | Override active workspace. |
| --rationale <rationale> | text | — | Why this edit was made. Becomes the commit message body, so the history reads as the decision rather than the coordinates the diff already shows. `-m` and `--message` are aliases of `--rationale`. |
| --title <title> | text | — | Short commit subject (e.g. 'Q3 actuals update'). Combined with --rationale as 'title: rationale'. The mechanical summary the server would have written is kept as a Summary trailer either way. |
| --dry-run | boolean | — | Validate only: run the full server-side pipeline (per-op validation, formula parse, post-apply cycle check + recompute) and report errors without persisting anything — no commit, no revision bump. |
| --plan-delivery <plan_delivery> | none | cache | inline | — | What the server does with the post-edit render plan: `cache` (default) builds it after answering, into the cache the next describe or viewer read uses — except a batch touching a slide, binding or deck style, whose plan is built before answering to measure fit; `inline` builds it before answering and returns it (slower). A write that built its plan prints the orphan / status-clash warnings and only the conversion warnings it introduced; otherwise the next `describe` reports them. `none` builds nothing. |
| --measure-fit | boolean | — | Measure the slides this batch touched with the deck exporter (default on; never under --plan-delivery none). --no-measure-fit skips the round trip. |
Exit codes: 0 — completed · 1 — nothing-changed
Declare a <Source> - the one place an outward address may live.
deepcell defs add-source <filename> --id <source_id>
deepcell defs add-source model.deepcell --id <source_id>| Argument | Type | Required |
|---|---|---|
| filename | text | required |
| Flag | Type | Default | What it does |
|---|---|---|---|
| --id <source_id> | text | required | Stable sourceId, e.g. 'src_aapl_10k_fy25'. |
| --kind <kind> | text | — | What the source physically IS - closed set: filing, webpage, pdf, workbook, dataset, query, transcript, media, message, user_input, document, person, derived, other. user_input is the request itself - a figure the person typed. What it is USED AS goes in --role. |
| --role <role> | text | — | What the source is being used AS - free text: historical_actual, assumption, analyst_estimate, management_guidance, industry_benchmark, market_data, manual, ... |
| --reach <reach> | text | — | Can a recipient open it? public | account | private | offline. 'private' withholds the locator on share and export; 'offline' means no locator exists, which is a complete record, not a broken one. |
| --title <title> | text | — | Human-readable title - what renders when the locator is withheld. |
| --locator <locator> | text | — | The one outward address (URL, path, DSN). |
| --description <description> | text | — | Longer note about the source. |
| --at <at> | text | — | Default position inside the source: text:HEADING[,NEXT] | page:47 | sheet:Name!A1:B9 | row:1042 | col:arr | t:00:14:32 | anchor:id. text: becomes a #:~:text= jump, so HEADING is copied verbatim from the page and NEXT is the text immediately after it. |
| --mirror <mirror> | text | — | A copy of the original stored in this project, by file name (`ingest cn extract` returns it as mirror_file). Never an address: --locator stays the original. |
| --effective-date <effective_date> | text | — | ISO date the source describes. |
| --retrieved-at <retrieved_at> | text | — | ISO timestamp it was fetched. |
| --issuer <issuer> | text | — | Who published it. |
| --ticker <issuer_ticker> | text | — | Issuer ticker symbol. |
| --identity <identities> | text | — | Declared identity as 'scheme:value' (e.g. 'sec.accession:0000320193-25-000079'). Repeatable. |
| --items <item_refs> | text | — | Rows this source backs: item ids, @order values or lo-hi order ranges (the itemOrders grammar). |
| --contexts <context_refs> | text | — | CSV of contextRefs; 'A..B' is a range in context order. Omit to cover every context the statusRef allows. |
| --status <status_ref> | text | — | statusRef for the coverage row. |
| --scenario <scenario_ref> | text | — | scenarioRef for the coverage row. |
| --custom-dimensions <custom_dimensions> | text | — | 'dim:member;dim:member' for the coverage row. |
| --index <index> | integer | — | Position (omit to append at end). |
| --revision <revision> | text | — | Expected revision SHA for optimistic locking. |
| --workspace <workspace_slug> | text | — | Override active workspace. |
| --rationale <rationale> | text | — | Why this edit was made. Becomes the commit message body, so the history reads as the decision rather than the coordinates the diff already shows. `-m` and `--message` are aliases of `--rationale`. |
| --dry-run | boolean | — | Validate only: run the full server-side pipeline (per-op validation, formula parse, post-apply cycle check + recompute) and report errors without persisting anything — no commit, no revision bump. |
| --plan-delivery <plan_delivery> | none | cache | inline | — | What the server does with the post-edit render plan: `cache` (default) builds it after answering, into the cache the next describe or viewer read uses — except a batch touching a slide, binding or deck style, whose plan is built before answering to measure fit; `inline` builds it before answering and returns it (slower). A write that built its plan prints the orphan / status-clash warnings and only the conversion warnings it introduced; otherwise the next `describe` reports them. `none` builds nothing. |
| --measure-fit | boolean | — | Measure the slides this batch touched with the deck exporter (default on; never under --plan-delivery none). --no-measure-fit skips the round trip. |
Exit codes: 0 — completed · 1 — nothing-changed
Add a StatusDefinition.
deepcell defs add-status <filename>
deepcell defs add-status model.deepcell --name Budget --ref budget --archetype budget --authority derived| Argument | Type | Required |
|---|---|---|
| filename | text | required |
| Flag | Type | Default | What it does |
|---|---|---|---|
| --name <name> | text | — | The status IDENTIFIER (@statusId), e.g. 'Forecast' — not a display label. Must satisfy the reference-id grammar. Set the readable name afterwards with `defs update-status --label`. |
| --ref <status_ref> | text | — | The status IDENTIFIER (@statusId) under the op's wire name, statusRef — the same thing as --name. If both are given, --ref wins. |
| --color <color> | text | — | (unsupported) color is a FormatDefinitions concern — see `deepcell defs add-format`. |
| --is-default | boolean | — | Mark as the document's default status — clears @isDefault from every other status. |
| --archetype <archetype> | text | — | What this status MEANS: actual | preliminary | restated | estimate | guidance | consensus | forecast | budget | plan | target. Its realized/expected nature is derived from it. Omitting it leaves the meaning to be guessed from the id's spelling — see `deepcell ref status`. |
| --assurance <assurance> | text | — | Optional refinement: audited | reviewed | unaudited. |
| --authority <authority> | text | — | Optional refinement — who asserted the number: reported | derived | guidance | consensus | third_party. |
| --index <index> | integer | — | Position (omit to append at end). |
| --revision <revision> | text | — | Expected revision SHA for optimistic locking. |
| --workspace <workspace_slug> | text | — | Override active workspace. |
| --rationale <rationale> | text | — | Why this edit was made. Becomes the commit message body, so the history reads as the decision rather than the coordinates the diff already shows. `-m` and `--message` are aliases of `--rationale`. |
| --title <title> | text | — | Short commit subject (e.g. 'Q3 actuals update'). Combined with --rationale as 'title: rationale'. The mechanical summary the server would have written is kept as a Summary trailer either way. |
| --dry-run | boolean | — | Validate only: run the full server-side pipeline (per-op validation, formula parse, post-apply cycle check + recompute) and report errors without persisting anything — no commit, no revision bump. |
| --plan-delivery <plan_delivery> | none | cache | inline | — | What the server does with the post-edit render plan: `cache` (default) builds it after answering, into the cache the next describe or viewer read uses — except a batch touching a slide, binding or deck style, whose plan is built before answering to measure fit; `inline` builds it before answering and returns it (slower). A write that built its plan prints the orphan / status-clash warnings and only the conversion warnings it introduced; otherwise the next `describe` reports them. `none` builds nothing. |
| --measure-fit | boolean | — | Measure the slides this batch touched with the deck exporter (default on; never under --plan-delivery none). --no-measure-fit skips the round trip. |
Exit codes: 0 — completed · 1 — nothing-changed
Apply a batch of ops atomically.
deepcell defs apply <filename>
deepcell defs apply model.deepcell --ops-file ops.json --dry-run| Argument | Type | Required |
|---|---|---|
| filename | text | required |
| Flag | Type | Default | What it does |
|---|---|---|---|
| --ops-file <ops_file> | file | — | JSON file with an `ops` array of `{"kind": …}` objects (use '-' for stdin). |
| --ops <ops_inline> | text | — | Inline ops JSON (same shapes as --ops-file); mirrors the agent tool's `defs apply --ops '<json>'` form. |
| --revision <revision> | text | — | Expected revision SHA for optimistic locking. |
| --rebase-on-stale | boolean | — | If the file moved since the pinned revision, still apply the batch on the current one unless it changes something the commits in between also changed (then a 409 names the collision). A read-pinned write (no --revision) always rebases; this flag makes an explicit --revision rebase too. |
| --workspace <workspace_slug> | text | — | Override active workspace. |
| --rationale <rationale> | text | — | Why this edit was made. Becomes the commit message body, so the history reads as the decision rather than the coordinates the diff already shows. `-m` and `--message` are aliases of `--rationale`. |
| --title <title> | text | — | Short commit subject (e.g. 'Q3 actuals update'). Combined with --rationale as 'title: rationale'. The mechanical summary the server would have written is kept as a Summary trailer either way. |
| --dry-run | boolean | — | Validate only: run the full server-side pipeline (per-op validation, formula parse, post-apply cycle check + recompute) and report errors without persisting anything — no commit, no revision bump. |
| --plan-delivery <plan_delivery> | none | cache | inline | — | What the server does with the post-edit render plan: `cache` (default) builds it after answering, into the cache the next describe or viewer read uses — except a batch touching a slide, binding or deck style, whose plan is built before answering to measure fit; `inline` builds it before answering and returns it (slower). A write that built its plan prints the orphan / status-clash warnings and only the conversion warnings it introduced; otherwise the next `describe` reports them. `none` builds nothing. |
| --measure-fit | boolean | — | Measure the slides this batch touched with the deck exporter (default on; never under --plan-delivery none). --no-measure-fit skips the round trip. |
Exit codes: 0 — completed · 1 — nothing-changed
Remove a row or a column from a Block.
deepcell defs delete-axis-member <filename> --sheet <sheet_id> --block <block_id> --axis <axis> --ref <ref>
deepcell defs delete-axis-member model.deepcell --sheet variance --block revenue_table --axis rows --ref Gross_Profit| Argument | Type | Required |
|---|---|---|
| filename | text | required |
| Flag | Type | Default | What it does |
|---|---|---|---|
| --sheet <sheet_id> | text | required | Sheet containing the block. |
| --block <block_id> | text | required | blockId to edit. |
| --axis <axis> | rows | columns | required | Which axis to edit: 'rows' (the block's @itemOrders) or 'columns' (its @contextRefs). |
| --member <member> | item | context | — | Optional, as on add-axis-member: what kind of id --ref is. Checked against --axis ('item' with rows, 'context' with columns). |
| --ref <ref> | text | required | The item id or context id to remove. |
| --revision <revision> | text | — | Expected revision SHA for optimistic locking. |
| --workspace <workspace_slug> | text | — | Override active workspace. |
| --rationale <rationale> | text | — | Why this edit was made. Becomes the commit message body, so the history reads as the decision rather than the coordinates the diff already shows. `-m` and `--message` are aliases of `--rationale`. |
| --title <title> | text | — | Short commit subject (e.g. 'Q3 actuals update'). Combined with --rationale as 'title: rationale'. The mechanical summary the server would have written is kept as a Summary trailer either way. |
| --dry-run | boolean | — | Validate only: run the full server-side pipeline (per-op validation, formula parse, post-apply cycle check + recompute) and report errors without persisting anything — no commit, no revision bump. |
| --plan-delivery <plan_delivery> | none | cache | inline | — | What the server does with the post-edit render plan: `cache` (default) builds it after answering, into the cache the next describe or viewer read uses — except a batch touching a slide, binding or deck style, whose plan is built before answering to measure fit; `inline` builds it before answering and returns it (slower). A write that built its plan prints the orphan / status-clash warnings and only the conversion warnings it introduced; otherwise the next `describe` reports them. `none` builds nothing. |
| --measure-fit | boolean | — | Measure the slides this batch touched with the deck exporter (default on; never under --plan-delivery none). --no-measure-fit skips the round trip. |
Exit codes: 0 — completed · 1 — nothing-changed
Delete a Block from a Sheet, with the rows and columns it laid out.
deepcell defs delete-block <filename> --sheet <sheet_id> --block <block_id>
deepcell defs delete-block model.deepcell --sheet <sheet_id> --block <block_id>| Argument | Type | Required |
|---|---|---|
| filename | text | required |
| Flag | Type | Default | What it does |
|---|---|---|---|
| --sheet <sheet_id> | text | required | Sheet containing the block. |
| --block <block_id> | text | required | blockId to delete. |
| --revision <revision> | text | — | Expected revision SHA for optimistic locking. |
| --workspace <workspace_slug> | text | — | Override active workspace. |
| --rationale <rationale> | text | — | Why this edit was made. Becomes the commit message body, so the history reads as the decision rather than the coordinates the diff already shows. `-m` and `--message` are aliases of `--rationale`. |
| --title <title> | text | — | Short commit subject (e.g. 'Q3 actuals update'). Combined with --rationale as 'title: rationale'. The mechanical summary the server would have written is kept as a Summary trailer either way. |
| --dry-run | boolean | — | Validate only: run the full server-side pipeline (per-op validation, formula parse, post-apply cycle check + recompute) and report errors without persisting anything — no commit, no revision bump. |
| --plan-delivery <plan_delivery> | none | cache | inline | — | What the server does with the post-edit render plan: `cache` (default) builds it after answering, into the cache the next describe or viewer read uses — except a batch touching a slide, binding or deck style, whose plan is built before answering to measure fit; `inline` builds it before answering and returns it (slower). A write that built its plan prints the orphan / status-clash warnings and only the conversion warnings it introduced; otherwise the next `describe` reports them. `none` builds nothing. |
| --measure-fit | boolean | — | Measure the slides this batch touched with the deck exporter (default on; never under --plan-delivery none). --no-measure-fit skips the round trip. |
Exit codes: 0 — completed · 1 — nothing-changed
Delete a CalculationDefinition by calcId (`defs list` shows the ids).
deepcell defs delete-calc <filename> <calc_id>
deepcell defs delete-calc model.deepcell <calc_id>| Argument | Type | Required |
|---|---|---|
| filename | text | required |
| calc_id | text | required |
| Flag | Type | Default | What it does |
|---|---|---|---|
| --revision <revision> | text | — | Expected revision SHA for optimistic locking. |
| --workspace <workspace_slug> | text | — | Override active workspace. |
| --rationale <rationale> | text | — | Why this edit was made. Becomes the commit message body, so the history reads as the decision rather than the coordinates the diff already shows. `-m` and `--message` are aliases of `--rationale`. |
| --title <title> | text | — | Short commit subject (e.g. 'Q3 actuals update'). Combined with --rationale as 'title: rationale'. The mechanical summary the server would have written is kept as a Summary trailer either way. |
| --dry-run | boolean | — | Validate only: run the full server-side pipeline (per-op validation, formula parse, post-apply cycle check + recompute) and report errors without persisting anything — no commit, no revision bump. |
| --plan-delivery <plan_delivery> | none | cache | inline | — | What the server does with the post-edit render plan: `cache` (default) builds it after answering, into the cache the next describe or viewer read uses — except a batch touching a slide, binding or deck style, whose plan is built before answering to measure fit; `inline` builds it before answering and returns it (slower). A write that built its plan prints the orphan / status-clash warnings and only the conversion warnings it introduced; otherwise the next `describe` reports them. `none` builds nothing. |
| --measure-fit | boolean | — | Measure the slides this batch touched with the deck exporter (default on; never under --plan-delivery none). --no-measure-fit skips the round trip. |
Exit codes: 0 — completed · 1 — nothing-changed
Delete a Context (period or non-temporal axis member).
deepcell defs delete-context <filename> <context_ref>
deepcell defs delete-context model.deepcell <context_ref>| Argument | Type | Required |
|---|---|---|
| filename | text | required |
| context_ref | text | required |
| Flag | Type | Default | What it does |
|---|---|---|---|
| --revision <revision> | text | — | Expected revision SHA for optimistic locking. |
| --workspace <workspace_slug> | text | — | Override active workspace. |
| --rationale <rationale> | text | — | Why this edit was made. Becomes the commit message body, so the history reads as the decision rather than the coordinates the diff already shows. `-m` and `--message` are aliases of `--rationale`. |
| --title <title> | text | — | Short commit subject (e.g. 'Q3 actuals update'). Combined with --rationale as 'title: rationale'. The mechanical summary the server would have written is kept as a Summary trailer either way. |
| --dry-run | boolean | — | Validate only: run the full server-side pipeline (per-op validation, formula parse, post-apply cycle check + recompute) and report errors without persisting anything — no commit, no revision bump. |
| --plan-delivery <plan_delivery> | none | cache | inline | — | What the server does with the post-edit render plan: `cache` (default) builds it after answering, into the cache the next describe or viewer read uses — except a batch touching a slide, binding or deck style, whose plan is built before answering to measure fit; `inline` builds it before answering and returns it (slower). A write that built its plan prints the orphan / status-clash warnings and only the conversion warnings it introduced; otherwise the next `describe` reports them. `none` builds nothing. |
| --measure-fit | boolean | — | Measure the slides this batch touched with the deck exporter (default on; never under --plan-delivery none). --no-measure-fit skips the round trip. |
Exit codes: 0 — completed · 1 — nothing-changed
Delete a custom Dimension and its members.
deepcell defs delete-dimension <filename> <dimension_id>
deepcell defs delete-dimension model.deepcell <dimension_id>| Argument | Type | Required |
|---|---|---|
| filename | text | required |
| dimension_id | text | required |
| Flag | Type | Default | What it does |
|---|---|---|---|
| --revision <revision> | text | — | Expected revision SHA for optimistic locking. |
| --workspace <workspace_slug> | text | — | Override active workspace. |
| --rationale <rationale> | text | — | Why this edit was made. Becomes the commit message body, so the history reads as the decision rather than the coordinates the diff already shows. `-m` and `--message` are aliases of `--rationale`. |
| --title <title> | text | — | Short commit subject (e.g. 'Q3 actuals update'). Combined with --rationale as 'title: rationale'. The mechanical summary the server would have written is kept as a Summary trailer either way. |
| --dry-run | boolean | — | Validate only: run the full server-side pipeline (per-op validation, formula parse, post-apply cycle check + recompute) and report errors without persisting anything — no commit, no revision bump. |
| --plan-delivery <plan_delivery> | none | cache | inline | — | What the server does with the post-edit render plan: `cache` (default) builds it after answering, into the cache the next describe or viewer read uses — except a batch touching a slide, binding or deck style, whose plan is built before answering to measure fit; `inline` builds it before answering and returns it (slower). A write that built its plan prints the orphan / status-clash warnings and only the conversion warnings it introduced; otherwise the next `describe` reports them. `none` builds nothing. |
| --measure-fit | boolean | — | Measure the slides this batch touched with the deck exporter (default on; never under --plan-delivery none). --no-measure-fit skips the round trip. |
Exit codes: 0 — completed · 1 — nothing-changed
Delete a Document and its body.
deepcell defs delete-doc <filename> <doc_id>
deepcell defs delete-doc model.deepcell <doc_id>| Argument | Type | Required |
|---|---|---|
| filename | text | required |
| doc_id | text | required |
| Flag | Type | Default | What it does |
|---|---|---|---|
| --revision <revision> | text | — | Expected revision SHA for optimistic locking. |
| --workspace <workspace_slug> | text | — | Override active workspace. |
| --rationale <rationale> | text | — | Why this edit was made. Becomes the commit message body, so the history reads as the decision rather than the coordinates the diff already shows. `-m` and `--message` are aliases of `--rationale`. |
| --title <title> | text | — | Short commit subject (e.g. 'Q3 actuals update'). Combined with --rationale as 'title: rationale'. The mechanical summary the server would have written is kept as a Summary trailer either way. |
| --dry-run | boolean | — | Validate only: run the full server-side pipeline (per-op validation, formula parse, post-apply cycle check + recompute) and report errors without persisting anything — no commit, no revision bump. |
| --plan-delivery <plan_delivery> | none | cache | inline | — | What the server does with the post-edit render plan: `cache` (default) builds it after answering, into the cache the next describe or viewer read uses — except a batch touching a slide, binding or deck style, whose plan is built before answering to measure fit; `inline` builds it before answering and returns it (slower). A write that built its plan prints the orphan / status-clash warnings and only the conversion warnings it introduced; otherwise the next `describe` reports them. `none` builds nothing. |
| --measure-fit | boolean | — | Measure the slides this batch touched with the deck exporter (default on; never under --plan-delivery none). --no-measure-fit skips the round trip. |
Exit codes: 0 — completed · 1 — nothing-changed
Delete a <Format> by formatId.
deepcell defs delete-format <filename> <format_id>
deepcell defs delete-format model.deepcell <format_id>| Argument | Type | Required |
|---|---|---|
| filename | text | required |
| format_id | text | required |
| Flag | Type | Default | What it does |
|---|---|---|---|
| --revision <revision> | text | — | Expected revision SHA for optimistic locking. |
| --workspace <workspace_slug> | text | — | Override active workspace. |
| --rationale <rationale> | text | — | Why this edit was made. Becomes the commit message body, so the history reads as the decision rather than the coordinates the diff already shows. `-m` and `--message` are aliases of `--rationale`. |
| --title <title> | text | — | Short commit subject (e.g. 'Q3 actuals update'). Combined with --rationale as 'title: rationale'. The mechanical summary the server would have written is kept as a Summary trailer either way. |
| --dry-run | boolean | — | Validate only: run the full server-side pipeline (per-op validation, formula parse, post-apply cycle check + recompute) and report errors without persisting anything — no commit, no revision bump. |
| --plan-delivery <plan_delivery> | none | cache | inline | — | What the server does with the post-edit render plan: `cache` (default) builds it after answering, into the cache the next describe or viewer read uses — except a batch touching a slide, binding or deck style, whose plan is built before answering to measure fit; `inline` builds it before answering and returns it (slower). A write that built its plan prints the orphan / status-clash warnings and only the conversion warnings it introduced; otherwise the next `describe` reports them. `none` builds nothing. |
| --measure-fit | boolean | — | Measure the slides this batch touched with the deck exporter (default on; never under --plan-delivery none). --no-measure-fit skips the round trip. |
Exit codes: 0 — completed · 1 — nothing-changed
Delete an item, and with --cascade its descendants too.
deepcell defs delete-item <filename> <item_id>
deepcell defs delete-item model.deepcell Revenue --cascade| Argument | Type | Required |
|---|---|---|
| filename | text | required |
| item_id | text | required |
| Flag | Type | Default | What it does |
|---|---|---|---|
| --cascade | boolean | — | Also delete all descendants. |
| --revision <revision> | text | — | Expected revision SHA for optimistic locking. |
| --workspace <workspace_slug> | text | — | Override active workspace. |
| --rationale <rationale> | text | — | Why this edit was made. Becomes the commit message body, so the history reads as the decision rather than the coordinates the diff already shows. `-m` and `--message` are aliases of `--rationale`. |
| --title <title> | text | — | Short commit subject (e.g. 'Q3 actuals update'). Combined with --rationale as 'title: rationale'. The mechanical summary the server would have written is kept as a Summary trailer either way. |
| --dry-run | boolean | — | Validate only: run the full server-side pipeline (per-op validation, formula parse, post-apply cycle check + recompute) and report errors without persisting anything — no commit, no revision bump. |
| --plan-delivery <plan_delivery> | none | cache | inline | — | What the server does with the post-edit render plan: `cache` (default) builds it after answering, into the cache the next describe or viewer read uses — except a batch touching a slide, binding or deck style, whose plan is built before answering to measure fit; `inline` builds it before answering and returns it (slower). A write that built its plan prints the orphan / status-clash warnings and only the conversion warnings it introduced; otherwise the next `describe` reports them. `none` builds nothing. |
| --measure-fit | boolean | — | Measure the slides this batch touched with the deck exporter (default on; never under --plan-delivery none). --no-measure-fit skips the round trip. |
Exit codes: 0 — completed · 1 — nothing-changed
Delete one Member of a custom Dimension.
deepcell defs delete-member <filename> <dimension_id> <member_id>
deepcell defs delete-member model.deepcell <dimension_id> <member_id>| Argument | Type | Required |
|---|---|---|
| filename | text | required |
| dimension_id | text | required |
| member_id | text | required |
| Flag | Type | Default | What it does |
|---|---|---|---|
| --revision <revision> | text | — | Expected revision SHA for optimistic locking. |
| --workspace <workspace_slug> | text | — | Override active workspace. |
| --rationale <rationale> | text | — | Why this edit was made. Becomes the commit message body, so the history reads as the decision rather than the coordinates the diff already shows. `-m` and `--message` are aliases of `--rationale`. |
| --title <title> | text | — | Short commit subject (e.g. 'Q3 actuals update'). Combined with --rationale as 'title: rationale'. The mechanical summary the server would have written is kept as a Summary trailer either way. |
| --dry-run | boolean | — | Validate only: run the full server-side pipeline (per-op validation, formula parse, post-apply cycle check + recompute) and report errors without persisting anything — no commit, no revision bump. |
| --plan-delivery <plan_delivery> | none | cache | inline | — | What the server does with the post-edit render plan: `cache` (default) builds it after answering, into the cache the next describe or viewer read uses — except a batch touching a slide, binding or deck style, whose plan is built before answering to measure fit; `inline` builds it before answering and returns it (slower). A write that built its plan prints the orphan / status-clash warnings and only the conversion warnings it introduced; otherwise the next `describe` reports them. `none` builds nothing. |
| --measure-fit | boolean | — | Measure the slides this batch touched with the deck exporter (default on; never under --plan-delivery none). --no-measure-fit skips the round trip. |
Exit codes: 0 — completed · 1 — nothing-changed
Delete a <Rule> by index or by @target.
deepcell defs delete-rule <filename> <format_id>
deepcell defs delete-rule model.deepcell <format_id>| Argument | Type | Required |
|---|---|---|
| filename | text | required |
| format_id | text | required |
| Flag | Type | Default | What it does |
|---|---|---|---|
| --index <index> | integer | — | Delete the rule at this 0-based position. Exclusive with --target. |
| --target <target> | text | — | Delete the first rule with this @target. Exclusive with --index. |
| --revision <revision> | text | — | Expected revision SHA for optimistic locking. |
| --workspace <workspace_slug> | text | — | Override active workspace. |
| --rationale <rationale> | text | — | Why this edit was made. Becomes the commit message body, so the history reads as the decision rather than the coordinates the diff already shows. `-m` and `--message` are aliases of `--rationale`. |
| --title <title> | text | — | Short commit subject (e.g. 'Q3 actuals update'). Combined with --rationale as 'title: rationale'. The mechanical summary the server would have written is kept as a Summary trailer either way. |
| --dry-run | boolean | — | Validate only: run the full server-side pipeline (per-op validation, formula parse, post-apply cycle check + recompute) and report errors without persisting anything — no commit, no revision bump. |
| --plan-delivery <plan_delivery> | none | cache | inline | — | What the server does with the post-edit render plan: `cache` (default) builds it after answering, into the cache the next describe or viewer read uses — except a batch touching a slide, binding or deck style, whose plan is built before answering to measure fit; `inline` builds it before answering and returns it (slower). A write that built its plan prints the orphan / status-clash warnings and only the conversion warnings it introduced; otherwise the next `describe` reports them. `none` builds nothing. |
| --measure-fit | boolean | — | Measure the slides this batch touched with the deck exporter (default on; never under --plan-delivery none). --no-measure-fit skips the round trip. |
Exit codes: 0 — completed · 1 — nothing-changed
Delete a ScenarioDefinition by its scenarioId.
deepcell defs delete-scenario <filename> <scenario_ref>
deepcell defs delete-scenario model.deepcell <scenario_ref>| Argument | Type | Required |
|---|---|---|
| filename | text | required |
| scenario_ref | text | required |
| Flag | Type | Default | What it does |
|---|---|---|---|
| --revision <revision> | text | — | Expected revision SHA for optimistic locking. |
| --workspace <workspace_slug> | text | — | Override active workspace. |
| --rationale <rationale> | text | — | Why this edit was made. Becomes the commit message body, so the history reads as the decision rather than the coordinates the diff already shows. `-m` and `--message` are aliases of `--rationale`. |
| --title <title> | text | — | Short commit subject (e.g. 'Q3 actuals update'). Combined with --rationale as 'title: rationale'. The mechanical summary the server would have written is kept as a Summary trailer either way. |
| --dry-run | boolean | — | Validate only: run the full server-side pipeline (per-op validation, formula parse, post-apply cycle check + recompute) and report errors without persisting anything — no commit, no revision bump. |
| --plan-delivery <plan_delivery> | none | cache | inline | — | What the server does with the post-edit render plan: `cache` (default) builds it after answering, into the cache the next describe or viewer read uses — except a batch touching a slide, binding or deck style, whose plan is built before answering to measure fit; `inline` builds it before answering and returns it (slower). A write that built its plan prints the orphan / status-clash warnings and only the conversion warnings it introduced; otherwise the next `describe` reports them. `none` builds nothing. |
| --measure-fit | boolean | — | Measure the slides this batch touched with the deck exporter (default on; never under --plan-delivery none). --no-measure-fit skips the round trip. |
Exit codes: 0 — completed · 1 — nothing-changed
Delete a presentation Sheet and every Block on it.
deepcell defs delete-sheet <filename> <sheet_id>
deepcell defs delete-sheet model.deepcell <sheet_id>| Argument | Type | Required |
|---|---|---|
| filename | text | required |
| sheet_id | text | required |
| Flag | Type | Default | What it does |
|---|---|---|---|
| --revision <revision> | text | — | Expected revision SHA for optimistic locking. |
| --workspace <workspace_slug> | text | — | Override active workspace. |
| --rationale <rationale> | text | — | Why this edit was made. Becomes the commit message body, so the history reads as the decision rather than the coordinates the diff already shows. `-m` and `--message` are aliases of `--rationale`. |
| --title <title> | text | — | Short commit subject (e.g. 'Q3 actuals update'). Combined with --rationale as 'title: rationale'. The mechanical summary the server would have written is kept as a Summary trailer either way. |
| --dry-run | boolean | — | Validate only: run the full server-side pipeline (per-op validation, formula parse, post-apply cycle check + recompute) and report errors without persisting anything — no commit, no revision bump. |
| --plan-delivery <plan_delivery> | none | cache | inline | — | What the server does with the post-edit render plan: `cache` (default) builds it after answering, into the cache the next describe or viewer read uses — except a batch touching a slide, binding or deck style, whose plan is built before answering to measure fit; `inline` builds it before answering and returns it (slower). A write that built its plan prints the orphan / status-clash warnings and only the conversion warnings it introduced; otherwise the next `describe` reports them. `none` builds nothing. |
| --measure-fit | boolean | — | Measure the slides this batch touched with the deck exporter (default on; never under --plan-delivery none). --no-measure-fit skips the round trip. |
Exit codes: 0 — completed · 1 — nothing-changed
Remove a <Source>.
deepcell defs delete-source <filename> --id <source_id>
deepcell defs delete-source model.deepcell --id <source_id>| Argument | Type | Required |
|---|---|---|
| filename | text | required |
| Flag | Type | Default | What it does |
|---|---|---|---|
| --id <source_id> | text | required | sourceId to delete. |
| --revision <revision> | text | — | Expected revision SHA for optimistic locking. |
| --workspace <workspace_slug> | text | — | Override active workspace. |
| --rationale <rationale> | text | — | Why this edit was made. Becomes the commit message body, so the history reads as the decision rather than the coordinates the diff already shows. `-m` and `--message` are aliases of `--rationale`. |
| --title <title> | text | — | Short commit subject (e.g. 'Q3 actuals update'). Combined with --rationale as 'title: rationale'. The mechanical summary the server would have written is kept as a Summary trailer either way. |
| --dry-run | boolean | — | Validate only: run the full server-side pipeline (per-op validation, formula parse, post-apply cycle check + recompute) and report errors without persisting anything — no commit, no revision bump. |
| --plan-delivery <plan_delivery> | none | cache | inline | — | What the server does with the post-edit render plan: `cache` (default) builds it after answering, into the cache the next describe or viewer read uses — except a batch touching a slide, binding or deck style, whose plan is built before answering to measure fit; `inline` builds it before answering and returns it (slower). A write that built its plan prints the orphan / status-clash warnings and only the conversion warnings it introduced; otherwise the next `describe` reports them. `none` builds nothing. |
| --measure-fit | boolean | — | Measure the slides this batch touched with the deck exporter (default on; never under --plan-delivery none). --no-measure-fit skips the round trip. |
Exit codes: 0 — completed · 1 — nothing-changed
Delete a StatusDefinition by its statusId.
deepcell defs delete-status <filename> <status_ref>
deepcell defs delete-status model.deepcell <status_ref>| Argument | Type | Required |
|---|---|---|
| filename | text | required |
| status_ref | text | required |
| Flag | Type | Default | What it does |
|---|---|---|---|
| --revision <revision> | text | — | Expected revision SHA for optimistic locking. |
| --workspace <workspace_slug> | text | — | Override active workspace. |
| --rationale <rationale> | text | — | Why this edit was made. Becomes the commit message body, so the history reads as the decision rather than the coordinates the diff already shows. `-m` and `--message` are aliases of `--rationale`. |
| --title <title> | text | — | Short commit subject (e.g. 'Q3 actuals update'). Combined with --rationale as 'title: rationale'. The mechanical summary the server would have written is kept as a Summary trailer either way. |
| --dry-run | boolean | — | Validate only: run the full server-side pipeline (per-op validation, formula parse, post-apply cycle check + recompute) and report errors without persisting anything — no commit, no revision bump. |
| --plan-delivery <plan_delivery> | none | cache | inline | — | What the server does with the post-edit render plan: `cache` (default) builds it after answering, into the cache the next describe or viewer read uses — except a batch touching a slide, binding or deck style, whose plan is built before answering to measure fit; `inline` builds it before answering and returns it (slower). A write that built its plan prints the orphan / status-clash warnings and only the conversion warnings it introduced; otherwise the next `describe` reports them. `none` builds nothing. |
| --measure-fit | boolean | — | Measure the slides this batch touched with the deck exporter (default on; never under --plan-delivery none). --no-measure-fit skips the round trip. |
Exit codes: 0 — completed · 1 — nothing-changed
Set or replace a <Metadata> property.
deepcell defs header set <filename> <key> <value>
deepcell defs header set model.deepcell <key> <value>| Argument | Type | Required |
|---|---|---|
| filename | text | required |
| key | text | required |
| value | text | required |
| Flag | Type | Default | What it does |
|---|---|---|---|
| --type <prop_type> | string | number | boolean | datetime | string | Property type tag written into <Property @type>. The value must read as it — a number, true/false, an ISO 8601 date — or the set is refused. |
| --revision <revision> | text | — | Expected revision SHA for optimistic locking. |
| --workspace <workspace_slug> | text | — | Override active workspace. |
| --rationale <rationale> | text | — | Why this edit was made. Becomes the commit message body, so the history reads as the decision rather than the coordinates the diff already shows. `-m` and `--message` are aliases of `--rationale`. |
| --title <title> | text | — | Short commit subject (e.g. 'Q3 actuals update'). Combined with --rationale as 'title: rationale'. The mechanical summary the server would have written is kept as a Summary trailer either way. |
| --dry-run | boolean | — | Validate only: run the full server-side pipeline (per-op validation, formula parse, post-apply cycle check + recompute) and report errors without persisting anything — no commit, no revision bump. |
| --plan-delivery <plan_delivery> | none | cache | inline | — | What the server does with the post-edit render plan: `cache` (default) builds it after answering, into the cache the next describe or viewer read uses — except a batch touching a slide, binding or deck style, whose plan is built before answering to measure fit; `inline` builds it before answering and returns it (slower). A write that built its plan prints the orphan / status-clash warnings and only the conversion warnings it introduced; otherwise the next `describe` reports them. `none` builds nothing. |
| --measure-fit | boolean | — | Measure the slides this batch touched with the deck exporter (default on; never under --plan-delivery none). --no-measure-fit skips the round trip. |
Exit codes: 0 — completed · 1 — nothing-changed
Delete a <Metadata> property.
deepcell defs header unset <filename> <key>
deepcell defs header unset model.deepcell <key>| Argument | Type | Required |
|---|---|---|
| filename | text | required |
| key | text | required |
| Flag | Type | Default | What it does |
|---|---|---|---|
| --revision <revision> | text | — | Expected revision SHA for optimistic locking. |
| --workspace <workspace_slug> | text | — | Override active workspace. |
| --rationale <rationale> | text | — | Why this edit was made. Becomes the commit message body, so the history reads as the decision rather than the coordinates the diff already shows. `-m` and `--message` are aliases of `--rationale`. |
| --title <title> | text | — | Short commit subject (e.g. 'Q3 actuals update'). Combined with --rationale as 'title: rationale'. The mechanical summary the server would have written is kept as a Summary trailer either way. |
| --dry-run | boolean | — | Validate only: run the full server-side pipeline (per-op validation, formula parse, post-apply cycle check + recompute) and report errors without persisting anything — no commit, no revision bump. |
| --plan-delivery <plan_delivery> | none | cache | inline | — | What the server does with the post-edit render plan: `cache` (default) builds it after answering, into the cache the next describe or viewer read uses — except a batch touching a slide, binding or deck style, whose plan is built before answering to measure fit; `inline` builds it before answering and returns it (slower). A write that built its plan prints the orphan / status-clash warnings and only the conversion warnings it introduced; otherwise the next `describe` reports them. `none` builds nothing. |
| --measure-fit | boolean | — | Measure the slides this batch touched with the deck exporter (default on; never under --plan-delivery none). --no-measure-fit skips the round trip. |
Exit codes: 0 — completed · 1 — nothing-changed
List what the document DEFINES: items, calcs, contexts, scenarios, statuses.
deepcell defs list <filename>
deepcell defs list model.deepcell| Argument | Type | Required |
|---|---|---|
| filename | text | required |
| Flag | Type | Default | What it does |
|---|---|---|---|
| --kind <kind> | text | — | Only these sections: item, calc, context, scenario, status (plurals work; repeat the flag or comma-separate). |
| --item <item> | text | — | Only these items, and only the calcs computing them — the calc ids `defs update-calc` / `delete-calc` quote. Alone, lists just those two sections. |
| --workspace <workspace_slug> | text | — | Override active workspace. |
Exit codes: 0 — completed · 1 — read-only-check
Store each top-level section once (fixes `duplicate_section`).
deepcell defs merge-sections <filename>
deepcell defs merge-sections model.deepcell --keep last| Argument | Type | Required |
|---|---|---|
| filename | text | required |
| Flag | Type | Default | What it does |
|---|---|---|---|
| --keep <keep> | both | first | last | both | For an id two copies define differently: refuse and name it (both), or keep the earlier (first) or later (last) section's version. |
| --revision <revision> | text | — | Expected revision SHA for optimistic locking. |
| --workspace <workspace_slug> | text | — | Override active workspace. |
| --rationale <rationale> | text | — | Why this edit was made. Becomes the commit message body, so the history reads as the decision rather than the coordinates the diff already shows. `-m` and `--message` are aliases of `--rationale`. |
| --title <title> | text | — | Short commit subject (e.g. 'Q3 actuals update'). Combined with --rationale as 'title: rationale'. The mechanical summary the server would have written is kept as a Summary trailer either way. |
| --dry-run | boolean | — | Validate only: run the full server-side pipeline (per-op validation, formula parse, post-apply cycle check + recompute) and report errors without persisting anything — no commit, no revision bump. |
| --plan-delivery <plan_delivery> | none | cache | inline | — | What the server does with the post-edit render plan: `cache` (default) builds it after answering, into the cache the next describe or viewer read uses — except a batch touching a slide, binding or deck style, whose plan is built before answering to measure fit; `inline` builds it before answering and returns it (slower). A write that built its plan prints the orphan / status-clash warnings and only the conversion warnings it introduced; otherwise the next `describe` reports them. `none` builds nothing. |
| --measure-fit | boolean | — | Measure the slides this batch touched with the deck exporter (default on; never under --plan-delivery none). --no-measure-fit skips the round trip. |
Exit codes: 0 — completed · 1 — nothing-changed
Change a Block's display name — its section heading in the render.
deepcell defs rename-block <filename> <new_name> --sheet <sheet_id> --block <block_id>
deepcell defs rename-block model.deepcell <new_name> --sheet <sheet_id> --block <block_id>| Argument | Type | Required |
|---|---|---|
| filename | text | required |
| new_name | text | required |
| Flag | Type | Default | What it does |
|---|---|---|---|
| --sheet <sheet_id> | text | required | Sheet containing the block. |
| --block <block_id> | text | required | blockId to rename. |
| --revision <revision> | text | — | Expected revision SHA for optimistic locking. |
| --workspace <workspace_slug> | text | — | Override active workspace. |
| --rationale <rationale> | text | — | Why this edit was made. Becomes the commit message body, so the history reads as the decision rather than the coordinates the diff already shows. `-m` and `--message` are aliases of `--rationale`. |
| --title <title> | text | — | Short commit subject (e.g. 'Q3 actuals update'). Combined with --rationale as 'title: rationale'. The mechanical summary the server would have written is kept as a Summary trailer either way. |
| --dry-run | boolean | — | Validate only: run the full server-side pipeline (per-op validation, formula parse, post-apply cycle check + recompute) and report errors without persisting anything — no commit, no revision bump. |
| --plan-delivery <plan_delivery> | none | cache | inline | — | What the server does with the post-edit render plan: `cache` (default) builds it after answering, into the cache the next describe or viewer read uses — except a batch touching a slide, binding or deck style, whose plan is built before answering to measure fit; `inline` builds it before answering and returns it (slower). A write that built its plan prints the orphan / status-clash warnings and only the conversion warnings it introduced; otherwise the next `describe` reports them. `none` builds nothing. |
| --measure-fit | boolean | — | Measure the slides this batch touched with the deck exporter (default on; never under --plan-delivery none). --no-measure-fit skips the round trip. |
Exit codes: 0 — completed · 1 — nothing-changed
Rename a Context's @contextId; references cascade.
deepcell defs rename-context <filename> <context_ref> <new_name>
deepcell defs rename-context model.deepcell <context_ref> <new_name>| Argument | Type | Required |
|---|---|---|
| filename | text | required |
| context_ref | text | required |
| new_name | text | required |
| Flag | Type | Default | What it does |
|---|---|---|---|
| --revision <revision> | text | — | Expected revision SHA for optimistic locking. |
| --workspace <workspace_slug> | text | — | Override active workspace. |
| --rationale <rationale> | text | — | Why this edit was made. Becomes the commit message body, so the history reads as the decision rather than the coordinates the diff already shows. `-m` and `--message` are aliases of `--rationale`. |
| --title <title> | text | — | Short commit subject (e.g. 'Q3 actuals update'). Combined with --rationale as 'title: rationale'. The mechanical summary the server would have written is kept as a Summary trailer either way. |
| --dry-run | boolean | — | Validate only: run the full server-side pipeline (per-op validation, formula parse, post-apply cycle check + recompute) and report errors without persisting anything — no commit, no revision bump. |
| --plan-delivery <plan_delivery> | none | cache | inline | — | What the server does with the post-edit render plan: `cache` (default) builds it after answering, into the cache the next describe or viewer read uses — except a batch touching a slide, binding or deck style, whose plan is built before answering to measure fit; `inline` builds it before answering and returns it (slower). A write that built its plan prints the orphan / status-clash warnings and only the conversion warnings it introduced; otherwise the next `describe` reports them. `none` builds nothing. |
| --measure-fit | boolean | — | Measure the slides this batch touched with the deck exporter (default on; never under --plan-delivery none). --no-measure-fit skips the round trip. |
Exit codes: 0 — completed · 1 — nothing-changed
Rename a custom Dimension's @dimensionId.
deepcell defs rename-dimension <filename> <dimension_id> <new_name>
deepcell defs rename-dimension model.deepcell <dimension_id> <new_name>| Argument | Type | Required |
|---|---|---|
| filename | text | required |
| dimension_id | text | required |
| new_name | text | required |
| Flag | Type | Default | What it does |
|---|---|---|---|
| --revision <revision> | text | — | Expected revision SHA for optimistic locking. |
| --workspace <workspace_slug> | text | — | Override active workspace. |
| --rationale <rationale> | text | — | Why this edit was made. Becomes the commit message body, so the history reads as the decision rather than the coordinates the diff already shows. `-m` and `--message` are aliases of `--rationale`. |
| --title <title> | text | — | Short commit subject (e.g. 'Q3 actuals update'). Combined with --rationale as 'title: rationale'. The mechanical summary the server would have written is kept as a Summary trailer either way. |
| --dry-run | boolean | — | Validate only: run the full server-side pipeline (per-op validation, formula parse, post-apply cycle check + recompute) and report errors without persisting anything — no commit, no revision bump. |
| --plan-delivery <plan_delivery> | none | cache | inline | — | What the server does with the post-edit render plan: `cache` (default) builds it after answering, into the cache the next describe or viewer read uses — except a batch touching a slide, binding or deck style, whose plan is built before answering to measure fit; `inline` builds it before answering and returns it (slower). A write that built its plan prints the orphan / status-clash warnings and only the conversion warnings it introduced; otherwise the next `describe` reports them. `none` builds nothing. |
| --measure-fit | boolean | — | Measure the slides this batch touched with the deck exporter (default on; never under --plan-delivery none). --no-measure-fit skips the round trip. |
Exit codes: 0 — completed · 1 — nothing-changed
Rename an item's stable identifier; references cascade.
deepcell defs rename-item <filename> <item_id> <new_name>
deepcell defs rename-item model.deepcell Revenue Total_Revenue| Argument | Type | Required |
|---|---|---|
| filename | text | required |
| item_id | text | required |
| new_name | text | required |
| Flag | Type | Default | What it does |
|---|---|---|---|
| --revision <revision> | text | — | Expected revision SHA for optimistic locking. |
| --workspace <workspace_slug> | text | — | Override active workspace. |
| --rationale <rationale> | text | — | Why this edit was made. Becomes the commit message body, so the history reads as the decision rather than the coordinates the diff already shows. `-m` and `--message` are aliases of `--rationale`. |
| --title <title> | text | — | Short commit subject (e.g. 'Q3 actuals update'). Combined with --rationale as 'title: rationale'. The mechanical summary the server would have written is kept as a Summary trailer either way. |
| --dry-run | boolean | — | Validate only: run the full server-side pipeline (per-op validation, formula parse, post-apply cycle check + recompute) and report errors without persisting anything — no commit, no revision bump. |
| --plan-delivery <plan_delivery> | none | cache | inline | — | What the server does with the post-edit render plan: `cache` (default) builds it after answering, into the cache the next describe or viewer read uses — except a batch touching a slide, binding or deck style, whose plan is built before answering to measure fit; `inline` builds it before answering and returns it (slower). A write that built its plan prints the orphan / status-clash warnings and only the conversion warnings it introduced; otherwise the next `describe` reports them. `none` builds nothing. |
| --measure-fit | boolean | — | Measure the slides this batch touched with the deck exporter (default on; never under --plan-delivery none). --no-measure-fit skips the round trip. |
Exit codes: 0 — completed · 1 — nothing-changed
Rename one Member's @memberId within a custom Dimension.
deepcell defs rename-member <filename> <dimension_id> <member_id> <new_name>
deepcell defs rename-member model.deepcell <dimension_id> <member_id> <new_name>| Argument | Type | Required |
|---|---|---|
| filename | text | required |
| dimension_id | text | required |
| member_id | text | required |
| new_name | text | required |
| Flag | Type | Default | What it does |
|---|---|---|---|
| --revision <revision> | text | — | Expected revision SHA for optimistic locking. |
| --workspace <workspace_slug> | text | — | Override active workspace. |
| --rationale <rationale> | text | — | Why this edit was made. Becomes the commit message body, so the history reads as the decision rather than the coordinates the diff already shows. `-m` and `--message` are aliases of `--rationale`. |
| --title <title> | text | — | Short commit subject (e.g. 'Q3 actuals update'). Combined with --rationale as 'title: rationale'. The mechanical summary the server would have written is kept as a Summary trailer either way. |
| --dry-run | boolean | — | Validate only: run the full server-side pipeline (per-op validation, formula parse, post-apply cycle check + recompute) and report errors without persisting anything — no commit, no revision bump. |
| --plan-delivery <plan_delivery> | none | cache | inline | — | What the server does with the post-edit render plan: `cache` (default) builds it after answering, into the cache the next describe or viewer read uses — except a batch touching a slide, binding or deck style, whose plan is built before answering to measure fit; `inline` builds it before answering and returns it (slower). A write that built its plan prints the orphan / status-clash warnings and only the conversion warnings it introduced; otherwise the next `describe` reports them. `none` builds nothing. |
| --measure-fit | boolean | — | Measure the slides this batch touched with the deck exporter (default on; never under --plan-delivery none). --no-measure-fit skips the round trip. |
Exit codes: 0 — completed · 1 — nothing-changed
Rename a scenario's IDENTIFIER (@scenarioId); references cascade.
deepcell defs rename-scenario <filename> <scenario_ref> <new_name>
deepcell defs rename-scenario model.deepcell downside bear| Argument | Type | Required |
|---|---|---|
| filename | text | required |
| scenario_ref | text | required |
| new_name | text | required |
| Flag | Type | Default | What it does |
|---|---|---|---|
| --revision <revision> | text | — | Expected revision SHA for optimistic locking. |
| --workspace <workspace_slug> | text | — | Override active workspace. |
| --rationale <rationale> | text | — | Why this edit was made. Becomes the commit message body, so the history reads as the decision rather than the coordinates the diff already shows. `-m` and `--message` are aliases of `--rationale`. |
| --title <title> | text | — | Short commit subject (e.g. 'Q3 actuals update'). Combined with --rationale as 'title: rationale'. The mechanical summary the server would have written is kept as a Summary trailer either way. |
| --dry-run | boolean | — | Validate only: run the full server-side pipeline (per-op validation, formula parse, post-apply cycle check + recompute) and report errors without persisting anything — no commit, no revision bump. |
| --plan-delivery <plan_delivery> | none | cache | inline | — | What the server does with the post-edit render plan: `cache` (default) builds it after answering, into the cache the next describe or viewer read uses — except a batch touching a slide, binding or deck style, whose plan is built before answering to measure fit; `inline` builds it before answering and returns it (slower). A write that built its plan prints the orphan / status-clash warnings and only the conversion warnings it introduced; otherwise the next `describe` reports them. `none` builds nothing. |
| --measure-fit | boolean | — | Measure the slides this batch touched with the deck exporter (default on; never under --plan-delivery none). --no-measure-fit skips the round trip. |
Exit codes: 0 — completed · 1 — nothing-changed
Change a Sheet's displayed tab label.
deepcell defs rename-sheet <filename> <sheet_id> <new_label>
deepcell defs rename-sheet model.deepcell <sheet_id> <new_label>| Argument | Type | Required |
|---|---|---|
| filename | text | required |
| sheet_id | text | required |
| new_label | text | required |
| Flag | Type | Default | What it does |
|---|---|---|---|
| --revision <revision> | text | — | Expected revision SHA for optimistic locking. |
| --workspace <workspace_slug> | text | — | Override active workspace. |
| --rationale <rationale> | text | — | Why this edit was made. Becomes the commit message body, so the history reads as the decision rather than the coordinates the diff already shows. `-m` and `--message` are aliases of `--rationale`. |
| --title <title> | text | — | Short commit subject (e.g. 'Q3 actuals update'). Combined with --rationale as 'title: rationale'. The mechanical summary the server would have written is kept as a Summary trailer either way. |
| --dry-run | boolean | — | Validate only: run the full server-side pipeline (per-op validation, formula parse, post-apply cycle check + recompute) and report errors without persisting anything — no commit, no revision bump. |
| --plan-delivery <plan_delivery> | none | cache | inline | — | What the server does with the post-edit render plan: `cache` (default) builds it after answering, into the cache the next describe or viewer read uses — except a batch touching a slide, binding or deck style, whose plan is built before answering to measure fit; `inline` builds it before answering and returns it (slower). A write that built its plan prints the orphan / status-clash warnings and only the conversion warnings it introduced; otherwise the next `describe` reports them. `none` builds nothing. |
| --measure-fit | boolean | — | Measure the slides this batch touched with the deck exporter (default on; never under --plan-delivery none). --no-measure-fit skips the round trip. |
Exit codes: 0 — completed · 1 — nothing-changed
Change a status's IDENTIFIER (@statusId); references cascade.
deepcell defs rename-status <filename> <status_ref> <new_name>
deepcell defs rename-status model.deepcell <status_ref> <new_name>| Argument | Type | Required |
|---|---|---|
| filename | text | required |
| status_ref | text | required |
| new_name | text | required |
| Flag | Type | Default | What it does |
|---|---|---|---|
| --revision <revision> | text | — | Expected revision SHA for optimistic locking. |
| --workspace <workspace_slug> | text | — | Override active workspace. |
| --rationale <rationale> | text | — | Why this edit was made. Becomes the commit message body, so the history reads as the decision rather than the coordinates the diff already shows. `-m` and `--message` are aliases of `--rationale`. |
| --title <title> | text | — | Short commit subject (e.g. 'Q3 actuals update'). Combined with --rationale as 'title: rationale'. The mechanical summary the server would have written is kept as a Summary trailer either way. |
| --dry-run | boolean | — | Validate only: run the full server-side pipeline (per-op validation, formula parse, post-apply cycle check + recompute) and report errors without persisting anything — no commit, no revision bump. |
| --plan-delivery <plan_delivery> | none | cache | inline | — | What the server does with the post-edit render plan: `cache` (default) builds it after answering, into the cache the next describe or viewer read uses — except a batch touching a slide, binding or deck style, whose plan is built before answering to measure fit; `inline` builds it before answering and returns it (slower). A write that built its plan prints the orphan / status-clash warnings and only the conversion warnings it introduced; otherwise the next `describe` reports them. `none` builds nothing. |
| --measure-fit | boolean | — | Measure the slides this batch touched with the deck exporter (default on; never under --plan-delivery none). --no-measure-fit skips the round trip. |
Exit codes: 0 — completed · 1 — nothing-changed
Move a row or a column to a new position within a Block.
deepcell defs reorder-axis-member <filename> --sheet <sheet_id> --block <block_id> --axis <axis> --ref <ref> --to-index <to_index>
deepcell defs reorder-axis-member model.deepcell --sheet variance --block revenue_table --axis rows --ref Gross_Profit --to-index 0| Argument | Type | Required |
|---|---|---|
| filename | text | required |
| Flag | Type | Default | What it does |
|---|---|---|---|
| --sheet <sheet_id> | text | required | Sheet containing the block. |
| --block <block_id> | text | required | blockId to edit. |
| --axis <axis> | rows | columns | required | Which axis to edit: 'rows' (the block's @itemOrders) or 'columns' (its @contextRefs). |
| --ref <ref> | text | required | The item id or context id to move. |
| --to-index <to_index> | integer range | required | Final 0-based position on the axis. 0 = first row / leftmost column; an index past the end lands last. |
| --revision <revision> | text | — | Expected revision SHA for optimistic locking. |
| --workspace <workspace_slug> | text | — | Override active workspace. |
| --rationale <rationale> | text | — | Why this edit was made. Becomes the commit message body, so the history reads as the decision rather than the coordinates the diff already shows. `-m` and `--message` are aliases of `--rationale`. |
| --title <title> | text | — | Short commit subject (e.g. 'Q3 actuals update'). Combined with --rationale as 'title: rationale'. The mechanical summary the server would have written is kept as a Summary trailer either way. |
| --dry-run | boolean | — | Validate only: run the full server-side pipeline (per-op validation, formula parse, post-apply cycle check + recompute) and report errors without persisting anything — no commit, no revision bump. |
| --plan-delivery <plan_delivery> | none | cache | inline | — | What the server does with the post-edit render plan: `cache` (default) builds it after answering, into the cache the next describe or viewer read uses — except a batch touching a slide, binding or deck style, whose plan is built before answering to measure fit; `inline` builds it before answering and returns it (slower). A write that built its plan prints the orphan / status-clash warnings and only the conversion warnings it introduced; otherwise the next `describe` reports them. `none` builds nothing. |
| --measure-fit | boolean | — | Measure the slides this batch touched with the deck exporter (default on; never under --plan-delivery none). --no-measure-fit skips the round trip. |
Exit codes: 0 — completed · 1 — nothing-changed
Move a Block to a new position within its Sheet.
deepcell defs reorder-block <filename> --sheet <sheet_id> --block <block_id> --to-index <to_index>
deepcell defs reorder-block model.deepcell --sheet variance --block revenue_table --to-index 0| Argument | Type | Required |
|---|---|---|
| filename | text | required |
| Flag | Type | Default | What it does |
|---|---|---|---|
| --sheet <sheet_id> | text | required | Sheet containing the block. |
| --block <block_id> | text | required | blockId to move. |
| --to-index <to_index> | integer range | required | Final 0-based position among the sheet's blocks. 0 = topmost; an index past the end lands last. |
| --revision <revision> | text | — | Expected revision SHA for optimistic locking. |
| --workspace <workspace_slug> | text | — | Override active workspace. |
| --rationale <rationale> | text | — | Why this edit was made. Becomes the commit message body, so the history reads as the decision rather than the coordinates the diff already shows. `-m` and `--message` are aliases of `--rationale`. |
| --title <title> | text | — | Short commit subject (e.g. 'Q3 actuals update'). Combined with --rationale as 'title: rationale'. The mechanical summary the server would have written is kept as a Summary trailer either way. |
| --dry-run | boolean | — | Validate only: run the full server-side pipeline (per-op validation, formula parse, post-apply cycle check + recompute) and report errors without persisting anything — no commit, no revision bump. |
| --plan-delivery <plan_delivery> | none | cache | inline | — | What the server does with the post-edit render plan: `cache` (default) builds it after answering, into the cache the next describe or viewer read uses — except a batch touching a slide, binding or deck style, whose plan is built before answering to measure fit; `inline` builds it before answering and returns it (slower). A write that built its plan prints the orphan / status-clash warnings and only the conversion warnings it introduced; otherwise the next `describe` reports them. `none` builds nothing. |
| --measure-fit | boolean | — | Measure the slides this batch touched with the deck exporter (default on; never under --plan-delivery none). --no-measure-fit skips the round trip. |
Exit codes: 0 — completed · 1 — nothing-changed
Move a Context to a new position in context order (TO_INDEX, 0-based).
deepcell defs reorder-contexts <filename> <context_ref> <to_index>
deepcell defs reorder-contexts model.deepcell <context_ref> <to_index>| Argument | Type | Required |
|---|---|---|
| filename | text | required |
| context_ref | text | required |
| to_index | integer | required |
| Flag | Type | Default | What it does |
|---|---|---|---|
| --revision <revision> | text | — | Expected revision SHA for optimistic locking. |
| --workspace <workspace_slug> | text | — | Override active workspace. |
| --rationale <rationale> | text | — | Why this edit was made. Becomes the commit message body, so the history reads as the decision rather than the coordinates the diff already shows. `-m` and `--message` are aliases of `--rationale`. |
| --title <title> | text | — | Short commit subject (e.g. 'Q3 actuals update'). Combined with --rationale as 'title: rationale'. The mechanical summary the server would have written is kept as a Summary trailer either way. |
| --dry-run | boolean | — | Validate only: run the full server-side pipeline (per-op validation, formula parse, post-apply cycle check + recompute) and report errors without persisting anything — no commit, no revision bump. |
| --plan-delivery <plan_delivery> | none | cache | inline | — | What the server does with the post-edit render plan: `cache` (default) builds it after answering, into the cache the next describe or viewer read uses — except a batch touching a slide, binding or deck style, whose plan is built before answering to measure fit; `inline` builds it before answering and returns it (slower). A write that built its plan prints the orphan / status-clash warnings and only the conversion warnings it introduced; otherwise the next `describe` reports them. `none` builds nothing. |
| --measure-fit | boolean | — | Measure the slides this batch touched with the deck exporter (default on; never under --plan-delivery none). --no-measure-fit skips the round trip. |
Exit codes: 0 — completed · 1 — nothing-changed
Move an item to a new position among its siblings (final-position index).
deepcell defs reorder-item <filename> <item_id> --to-index <to_index>
deepcell defs reorder-item model.deepcell Revenue --to-index 0| Argument | Type | Required |
|---|---|---|
| filename | text | required |
| item_id | text | required |
| Flag | Type | Default | What it does |
|---|---|---|---|
| --to-index <to_index> | integer | required | Final 0-based position among the item's siblings. 0 = first. Lets you place a referenced item before its referencer (avoids a forward item-order reference). |
| --revision <revision> | text | — | Expected revision SHA for optimistic locking. |
| --workspace <workspace_slug> | text | — | Override active workspace. |
| --rationale <rationale> | text | — | Why this edit was made. Becomes the commit message body, so the history reads as the decision rather than the coordinates the diff already shows. `-m` and `--message` are aliases of `--rationale`. |
| --title <title> | text | — | Short commit subject (e.g. 'Q3 actuals update'). Combined with --rationale as 'title: rationale'. The mechanical summary the server would have written is kept as a Summary trailer either way. |
| --dry-run | boolean | — | Validate only: run the full server-side pipeline (per-op validation, formula parse, post-apply cycle check + recompute) and report errors without persisting anything — no commit, no revision bump. |
| --plan-delivery <plan_delivery> | none | cache | inline | — | What the server does with the post-edit render plan: `cache` (default) builds it after answering, into the cache the next describe or viewer read uses — except a batch touching a slide, binding or deck style, whose plan is built before answering to measure fit; `inline` builds it before answering and returns it (slower). A write that built its plan prints the orphan / status-clash warnings and only the conversion warnings it introduced; otherwise the next `describe` reports them. `none` builds nothing. |
| --measure-fit | boolean | — | Measure the slides this batch touched with the deck exporter (default on; never under --plan-delivery none). --no-measure-fit skips the round trip. |
Exit codes: 0 — completed · 1 — nothing-changed
Move a scenario to a new position in the scenario list.
deepcell defs reorder-scenarios <filename> <scenario_ref> --to-index <to_index>
deepcell defs reorder-scenarios model.deepcell <scenario_ref> --to-index <to_index>| Argument | Type | Required |
|---|---|---|
| filename | text | required |
| scenario_ref | text | required |
| Flag | Type | Default | What it does |
|---|---|---|---|
| --to-index <to_index> | integer range | required | Final 0-based position among the scenarios. 0 = first. |
| --revision <revision> | text | — | Expected revision SHA for optimistic locking. |
| --workspace <workspace_slug> | text | — | Override active workspace. |
| --rationale <rationale> | text | — | Why this edit was made. Becomes the commit message body, so the history reads as the decision rather than the coordinates the diff already shows. `-m` and `--message` are aliases of `--rationale`. |
| --title <title> | text | — | Short commit subject (e.g. 'Q3 actuals update'). Combined with --rationale as 'title: rationale'. The mechanical summary the server would have written is kept as a Summary trailer either way. |
| --dry-run | boolean | — | Validate only: run the full server-side pipeline (per-op validation, formula parse, post-apply cycle check + recompute) and report errors without persisting anything — no commit, no revision bump. |
| --plan-delivery <plan_delivery> | none | cache | inline | — | What the server does with the post-edit render plan: `cache` (default) builds it after answering, into the cache the next describe or viewer read uses — except a batch touching a slide, binding or deck style, whose plan is built before answering to measure fit; `inline` builds it before answering and returns it (slower). A write that built its plan prints the orphan / status-clash warnings and only the conversion warnings it introduced; otherwise the next `describe` reports them. `none` builds nothing. |
| --measure-fit | boolean | — | Measure the slides this batch touched with the deck exporter (default on; never under --plan-delivery none). --no-measure-fit skips the round trip. |
Exit codes: 0 — completed · 1 — nothing-changed
Move a Sheet to a new position in the tab order.
deepcell defs reorder-sheets <filename> <sheet_id> --to-index <to_index>
deepcell defs reorder-sheets model.deepcell variance --to-index 0| Argument | Type | Required |
|---|---|---|
| filename | text | required |
| sheet_id | text | required |
| Flag | Type | Default | What it does |
|---|---|---|---|
| --to-index <to_index> | integer range | required | Final 0-based position among the sheets. 0 = leftmost tab; an index past the end lands last. |
| --revision <revision> | text | — | Expected revision SHA for optimistic locking. |
| --workspace <workspace_slug> | text | — | Override active workspace. |
| --rationale <rationale> | text | — | Why this edit was made. Becomes the commit message body, so the history reads as the decision rather than the coordinates the diff already shows. `-m` and `--message` are aliases of `--rationale`. |
| --title <title> | text | — | Short commit subject (e.g. 'Q3 actuals update'). Combined with --rationale as 'title: rationale'. The mechanical summary the server would have written is kept as a Summary trailer either way. |
| --dry-run | boolean | — | Validate only: run the full server-side pipeline (per-op validation, formula parse, post-apply cycle check + recompute) and report errors without persisting anything — no commit, no revision bump. |
| --plan-delivery <plan_delivery> | none | cache | inline | — | What the server does with the post-edit render plan: `cache` (default) builds it after answering, into the cache the next describe or viewer read uses — except a batch touching a slide, binding or deck style, whose plan is built before answering to measure fit; `inline` builds it before answering and returns it (slower). A write that built its plan prints the orphan / status-clash warnings and only the conversion warnings it introduced; otherwise the next `describe` reports them. `none` builds nothing. |
| --measure-fit | boolean | — | Measure the slides this batch touched with the deck exporter (default on; never under --plan-delivery none). --no-measure-fit skips the round trip. |
Exit codes: 0 — completed · 1 — nothing-changed
Set presentation-layout attributes on an existing block.
deepcell defs set-block-attrs <filename> --sheet <sheet_id> --block <block_id>
deepcell defs set-block-attrs model.deepcell --sheet variance --block revenue_table --status-refs actual,budget --status-expansion columns| Argument | Type | Required |
|---|---|---|
| filename | text | required |
| Flag | Type | Default | What it does |
|---|---|---|---|
| --sheet <sheet_id> | text | required | Sheet containing the block. |
| --block <block_id> | text | required | blockId of the block to edit. |
| --format-ref <format_ref> | text | — | FormatDefinitions id this block resolves against. Pass an empty string to clear it back to the document default (the Format named default_format, else the first one defined). The id is not checked: one no Format defines is stored and the block silently takes that same default. See `deepcell ref format`. |
| --status-expansion <status_expansion> | none | columns | series | — | Side-by-side status-column layout. 'columns' lays each status in --status-refs out as its own run of context columns; 'series' is the chart form, one series per status; 'none' (default) keeps the single-column-per-context layout. |
| --status-refs <status_refs> | text | — | Whitespace/comma-separated status ids to expand into columns (e.g. "actual budget"). Required for --status-expansion=columns. |
| --dim-expansion <dim_expansion> | none | rows | series | — | Custom-dimension member sub-rows. 'rows' lays each member of --dim-ref out as a contiguous sub-row under its item; 'series' is the chart form, one series per member; 'none' (default) keeps the one-row-per-item layout. |
| --dim-ref <dim_ref> | text | — | Dimension id whose members are expanded into sub-rows (e.g. "geography"). Required for --dim-expansion=rows. |
| --dim-expansion-cap <dim_expansion_cap> | integer range | — | Max members to expand into sub-rows before falling back to a single row (positive int; default 24). Used with --dim-expansion=rows. |
| --dim-member-refs <dim_member_refs> | text | — | Whitespace/comma-separated member ids of --dim-ref, order preserved. With --dim-expansion it selects which members expand; without one, a single id pins that member for every cell the block reads — how a chart plots one slice of a dimension-sliced item. |
| --dim-filter <dim_filter> | text | — | Pin the dimensions the block does NOT expand, one member each: 'region:na;cohort:c1'. Same dim:member spelling and ';' separator as customDimensions on a Value, so a stored coordinate can be copied across. A block expands one dimension (--dim-ref), so this is what makes a cell keyed on two or more custom dimensions addressable. |
| --scenario-expansion <scenario_expansion> | none | columns | series | — | Side-by-side scenario-column layout. 'columns' lays each scenario in --scenario-refs out as its own run of context columns; 'series' is the chart form, one series per scenario; 'none' (default) keeps the single-column-per-context layout. |
| --scenario-refs <scenario_refs> | text | — | Whitespace/comma-separated scenario ids to expand into columns (e.g. "Base Bull"). Required for --scenario-expansion=columns. |
| --chart-type <chart_type> | text | — | — |
| --category-axis <category_axis> | text | — | — |
| --chart-spec <chart_spec> | text | — | The chart, as a JSON object (chart blocks; a chart block written without one draws its selection as grouped columns). Compact: {"family":"line","series":[{"itemRef":"Revenue"}]} over the block's contexts, with categoryAxis, arrangement, totalItemRefs and the Block's ref attributes; {} charts the block's selection. Families: column (vertical), bar (horizontal), line, area, waterfall, range_bar, scatter, pie, doughnut, funnel, radar. Explicit: with "data". Inspect with `deepcell query --chart-details`. |
| --clear-chart-spec | boolean | — | — |
| --chart-annotations <chart_annotations> | text | — | — |
| --total-item-refs <total_item_refs> | text | — | — |
| --revision <revision> | text | — | Expected revision SHA for optimistic locking. |
| --workspace <workspace_slug> | text | — | Override active workspace. |
| --rationale <rationale> | text | — | Why this edit was made. Becomes the commit message body, so the history reads as the decision rather than the coordinates the diff already shows. `-m` and `--message` are aliases of `--rationale`. |
| --title <title> | text | — | Short commit subject (e.g. 'Q3 actuals update'). Combined with --rationale as 'title: rationale'. The mechanical summary the server would have written is kept as a Summary trailer either way. |
| --dry-run | boolean | — | Validate only: run the full server-side pipeline (per-op validation, formula parse, post-apply cycle check + recompute) and report errors without persisting anything — no commit, no revision bump. |
| --plan-delivery <plan_delivery> | none | cache | inline | — | What the server does with the post-edit render plan: `cache` (default) builds it after answering, into the cache the next describe or viewer read uses — except a batch touching a slide, binding or deck style, whose plan is built before answering to measure fit; `inline` builds it before answering and returns it (slower). A write that built its plan prints the orphan / status-clash warnings and only the conversion warnings it introduced; otherwise the next `describe` reports them. `none` builds nothing. |
| --measure-fit | boolean | — | Measure the slides this batch touched with the deck exporter (default on; never under --plan-delivery none). --no-measure-fit skips the round trip. |
Exit codes: 0 — completed · 1 — nothing-changed
Set cell/row/column formatting: upsert one <Rule> in the governing <Format>.
deepcell defs set-format <filename> --sheet-id <sheet_id> --scope <scope>
deepcell defs set-format model.deepcell --sheet-id ic --block-id deal_summary --item-ref Entry_Multiple --scope item --number-format '0.0x' --bold| Argument | Type | Required |
|---|---|---|
| filename | text | required |
| Flag | Type | Default | What it does |
|---|---|---|---|
| --sheet-id <sheet_id> | text | required | Sheet id of the cell. Recorded with the op; the Format is found through --block-id, not the sheet. |
| --block-id <block_id> | text | — | Block whose @formatRef names the Format to write into. Omit for the document default (default_format, else the first Format; created as default_format when none exists). |
| --item-ref <item_ref> | text | — | Item ref (required for --scope cell and item; unused for context). |
| --context-ref <context_ref> | text | — | Context ref (required for cell/column scope). |
| --scope <scope> | cell | item | context | required | cell:ITEM:CONTEXT | item:ITEM | context:CONTEXT |
| --number-format <number_format> | text | — | Excel pattern, all three sections, e.g. '#,##0.0;(#,##0.0);"-"' (`deepcell ref format/pattern`). |
| --font-name <font_name> | text | — | Font family name. |
| --font-size <font_size> | float | — | Font size in points. |
| --bold | boolean | — | Set/clear bold. |
| --italic | boolean | — | Set/clear italic. |
| --fg-color <fg_color> | text | — | Text hex '#RRGGBB'. |
| --bg-color <bg_color> | text | — | Fill hex '#RRGGBB'. |
| --text-align <text_align> | text | — | 'left'|'center'|'right'. |
| --indent <indent> | integer | — | Indent character count. |
| --border-top <border_top> | text | — | e.g. 'thin #000000'. |
| --border-bottom <border_bottom> | text | — | Bottom border, e.g. 'thin #000000' (style + optional hex color). |
| --border-left <border_left> | text | — | Left border, e.g. 'thin #000000' (style + optional hex color). |
| --border-right <border_right> | text | — | Right border, e.g. 'thin #000000' (style + optional hex color). |
| --clear <clear> | text | — | Token name to revert to inherit (repeatable). |
| --clear-all | boolean | — | Delete the target's rule entirely. |
| --revision <revision> | text | — | Expected revision SHA for optimistic locking. |
| --workspace <workspace_slug> | text | — | Override active workspace. |
| --rationale <rationale> | text | — | Why this edit was made. Becomes the commit message body, so the history reads as the decision rather than the coordinates the diff already shows. `-m` and `--message` are aliases of `--rationale`. |
| --title <title> | text | — | Short commit subject (e.g. 'Q3 actuals update'). Combined with --rationale as 'title: rationale'. The mechanical summary the server would have written is kept as a Summary trailer either way. |
| --dry-run | boolean | — | Validate only: run the full server-side pipeline (per-op validation, formula parse, post-apply cycle check + recompute) and report errors without persisting anything — no commit, no revision bump. |
| --plan-delivery <plan_delivery> | none | cache | inline | — | What the server does with the post-edit render plan: `cache` (default) builds it after answering, into the cache the next describe or viewer read uses — except a batch touching a slide, binding or deck style, whose plan is built before answering to measure fit; `inline` builds it before answering and returns it (slower). A write that built its plan prints the orphan / status-clash warnings and only the conversion warnings it introduced; otherwise the next `describe` reports them. `none` builds nothing. |
| --measure-fit | boolean | — | Measure the slides this batch touched with the deck exporter (default on; never under --plan-delivery none). --no-measure-fit skips the round trip. |
Exit codes: 0 — completed · 1 — nothing-changed
Replace which cells a <Source> backs, or add a row with --append.
deepcell defs set-source-cites <filename> --id <source_id>
deepcell defs set-source-cites model.deepcell --id <source_id>| Argument | Type | Required |
|---|---|---|
| filename | text | required |
| Flag | Type | Default | What it does |
|---|---|---|---|
| --id <source_id> | text | required | sourceId whose coverage to set. |
| --items <item_refs> | text | — | Rows this source backs: item ids, @order values or lo-hi order ranges (the itemOrders grammar). |
| --contexts <context_refs> | text | — | CSV of contextRefs; 'A..B' is a range in context order. Omit to cover every context the statusRef allows. |
| --status <status_ref> | text | — | statusRef for the coverage row. |
| --scenario <scenario_ref> | text | — | scenarioRef for the coverage row. |
| --custom-dimensions <custom_dimensions> | text | — | 'dim:member;dim:member' for the coverage row. |
| --at <at> | text | — | Position override for this coverage row (grammar: add-source --at). |
| --append | boolean | — | Add this row to the existing coverage instead of replacing it. A row the source already holds (same five axes and --at) is a no-op. |
| --clear | boolean | — | Remove every coverage row instead of setting one. |
| --revision <revision> | text | — | Expected revision SHA for optimistic locking. |
| --workspace <workspace_slug> | text | — | Override active workspace. |
| --rationale <rationale> | text | — | Why this edit was made. Becomes the commit message body, so the history reads as the decision rather than the coordinates the diff already shows. `-m` and `--message` are aliases of `--rationale`. |
| --title <title> | text | — | Short commit subject (e.g. 'Q3 actuals update'). Combined with --rationale as 'title: rationale'. The mechanical summary the server would have written is kept as a Summary trailer either way. |
| --dry-run | boolean | — | Validate only: run the full server-side pipeline (per-op validation, formula parse, post-apply cycle check + recompute) and report errors without persisting anything — no commit, no revision bump. |
| --plan-delivery <plan_delivery> | none | cache | inline | — | What the server does with the post-edit render plan: `cache` (default) builds it after answering, into the cache the next describe or viewer read uses — except a batch touching a slide, binding or deck style, whose plan is built before answering to measure fit; `inline` builds it before answering and returns it (slower). A write that built its plan prints the orphan / status-clash warnings and only the conversion warnings it introduced; otherwise the next `describe` reports them. `none` builds nothing. |
| --measure-fit | boolean | — | Measure the slides this batch touched with the deck exporter (default on; never under --plan-delivery none). --no-measure-fit skips the round trip. |
Exit codes: 0 — completed · 1 — nothing-changed
Show one item's ItemDef and every CalcDef that governs it.
deepcell defs show <filename> <item_id>
deepcell defs show model.deepcell Revenue| Argument | Type | Required |
|---|---|---|
| filename | text | required |
| item_id | text | required |
| Flag | Type | Default | What it does |
|---|---|---|---|
| --workspace <workspace_slug> | text | — | Override active workspace. |
Exit codes: 0 — completed · 1 — read-only-check
Patch a CalcDef; only the fields you pass are changed.
deepcell defs update-calc <filename> <calc_id>
deepcell defs update-calc model.deepcell calc_revenue --formula 'Units_Sold[CURRENT] * Unit_Price[CURRENT] * 1.02'| Argument | Type | Required |
|---|---|---|
| filename | text | required |
| calc_id | text | required |
| Flag | Type | Default | What it does |
|---|---|---|---|
| --formula <formula> | text | — | Replace the formula. |
| --context <context_ref> | text | — | Replace the periods the calc writes (@contextRefs): one id, a CSV, or an 'A..B' range in context order. Pass '' to clear — the calc then writes every period. Cells it no longer writes are retired. |
| --scenario <scenario_ref> | text | — | Change scenarioRef. Pass '' to clear. |
| --status <status_ref> | text | — | Change statusRef (e.g. 'projected'). Pass '' to clear. |
| --revision <revision> | text | — | Expected revision SHA for optimistic locking. |
| --workspace <workspace_slug> | text | — | Override active workspace. |
| --rationale <rationale> | text | — | Why this edit was made. Becomes the commit message body, so the history reads as the decision rather than the coordinates the diff already shows. `-m` and `--message` are aliases of `--rationale`. |
| --title <title> | text | — | Short commit subject (e.g. 'Q3 actuals update'). Combined with --rationale as 'title: rationale'. The mechanical summary the server would have written is kept as a Summary trailer either way. |
| --dry-run | boolean | — | Validate only: run the full server-side pipeline (per-op validation, formula parse, post-apply cycle check + recompute) and report errors without persisting anything — no commit, no revision bump. |
| --plan-delivery <plan_delivery> | none | cache | inline | — | What the server does with the post-edit render plan: `cache` (default) builds it after answering, into the cache the next describe or viewer read uses — except a batch touching a slide, binding or deck style, whose plan is built before answering to measure fit; `inline` builds it before answering and returns it (slower). A write that built its plan prints the orphan / status-clash warnings and only the conversion warnings it introduced; otherwise the next `describe` reports them. `none` builds nothing. |
| --measure-fit | boolean | — | Measure the slides this batch touched with the deck exporter (default on; never under --plan-delivery none). --no-measure-fit skips the round trip. |
Exit codes: 0 — completed · 1 — nothing-changed
Patch a Context's id, label, status, kind, state, as-of date, or period shape (granularity, start/end dates, parent); only the fields you pass are sent.
deepcell defs update-context <filename> <context_ref>
deepcell defs update-context model.deepcell FY2025 --state closed --as-of 2025-12-31| Argument | Type | Required |
|---|---|---|
| filename | text | required |
| context_ref | text | required |
| Flag | Type | Default | What it does |
|---|---|---|---|
| --name <name> | text | — | Rename the contextId; references cascade. NOT the display name — see --label. |
| --label <new_label> | text | — | Change the context's DISPLAY LABEL (emits set_context_label). The contextId is untouched — use --name to change the identifier. |
| --status <status_ref> | text | — | Set statusRef. |
| --clear-status | boolean | — | Clear statusRef (explicit-null). |
| --kind <kind> | text | — | Context kind. Omit / null / 'period' / temporal alias collapses to canonical 'period'; any other snake_case label marks a non-temporal context. Always written to @kind. |
| --state <state> | text | — | Period state: closed | open | future. This is what says whether the period is over — never the A/E suffix on a context id. Only meaningful for --kind period. |
| --as-of <as_of> | text | — | ISO YYYY-MM-DD the period's numbers are stated as of. Documentation and lint input only; never consulted when rendering. |
| --granularity <granularity> | text | — | Period length: annual | semiannual | quarterly | monthly (written as <Type>). Growth, margin and CAGR checks compare only periods of one granularity. Pass '' to clear. |
| --start-date <start_date> | text | — | First day of the period (<StartDate>). Pass '' to clear. |
| --end-date <end_date> | text | — | Last day of the period (<EndDate>). Pass '' to clear. |
| --parent <parent_context> | text | — | The enclosing period's id, e.g. FY2026 for Q1_2026 (@parentContext); SUM_CHILDREN sums over it. Pass '' to clear. |
| --revision <revision> | text | — | Expected revision SHA for optimistic locking. |
| --workspace <workspace_slug> | text | — | Override active workspace. |
| --rationale <rationale> | text | — | Why this edit was made. Becomes the commit message body, so the history reads as the decision rather than the coordinates the diff already shows. `-m` and `--message` are aliases of `--rationale`. |
| --title <title> | text | — | Short commit subject (e.g. 'Q3 actuals update'). Combined with --rationale as 'title: rationale'. The mechanical summary the server would have written is kept as a Summary trailer either way. |
| --dry-run | boolean | — | Validate only: run the full server-side pipeline (per-op validation, formula parse, post-apply cycle check + recompute) and report errors without persisting anything — no commit, no revision bump. |
| --plan-delivery <plan_delivery> | none | cache | inline | — | What the server does with the post-edit render plan: `cache` (default) builds it after answering, into the cache the next describe or viewer read uses — except a batch touching a slide, binding or deck style, whose plan is built before answering to measure fit; `inline` builds it before answering and returns it (slower). A write that built its plan prints the orphan / status-clash warnings and only the conversion warnings it introduced; otherwise the next `describe` reports them. `none` builds nothing. |
| --measure-fit | boolean | — | Measure the slides this batch touched with the deck exporter (default on; never under --plan-delivery none). --no-measure-fit skips the round trip. |
Exit codes: 0 — completed · 1 — nothing-changed
Update a Document's attributes.
deepcell defs update-doc <filename> <doc_id>
deepcell defs update-doc model.deepcell <doc_id>| Argument | Type | Required |
|---|---|---|
| filename | text | required |
| doc_id | text | required |
| Flag | Type | Default | What it does |
|---|---|---|---|
| --name <name> | text | — | New display title. |
| --lang <lang> | text | — | New BCP-47 language tag. |
| --revision <revision> | text | — | Expected revision SHA for optimistic locking. |
| --workspace <workspace_slug> | text | — | Override active workspace. |
| --rationale <rationale> | text | — | Why this edit was made. Becomes the commit message body, so the history reads as the decision rather than the coordinates the diff already shows. `-m` and `--message` are aliases of `--rationale`. |
| --title <title> | text | — | Short commit subject (e.g. 'Q3 actuals update'). Combined with --rationale as 'title: rationale'. The mechanical summary the server would have written is kept as a Summary trailer either way. |
| --dry-run | boolean | — | Validate only: run the full server-side pipeline (per-op validation, formula parse, post-apply cycle check + recompute) and report errors without persisting anything — no commit, no revision bump. |
| --plan-delivery <plan_delivery> | none | cache | inline | — | What the server does with the post-edit render plan: `cache` (default) builds it after answering, into the cache the next describe or viewer read uses — except a batch touching a slide, binding or deck style, whose plan is built before answering to measure fit; `inline` builds it before answering and returns it (slower). A write that built its plan prints the orphan / status-clash warnings and only the conversion warnings it introduced; otherwise the next `describe` reports them. `none` builds nothing. |
| --measure-fit | boolean | — | Measure the slides this batch touched with the deck exporter (default on; never under --plan-delivery none). --no-measure-fit skips the round trip. |
Exit codes: 0 — completed · 1 — nothing-changed
Rename a <Format> and/or toggle its IB-default inheritance.
deepcell defs update-format <filename> <format_id>
deepcell defs update-format model.deepcell <format_id>| Argument | Type | Required |
|---|---|---|
| filename | text | required |
| format_id | text | required |
| Flag | Type | Default | What it does |
|---|---|---|---|
| --new-id <new_id> | text | — | New formatId; cascades through every <Block @formatRef>. |
| --inherit | boolean | — | Toggle the IB default base. --no-inherit makes this a total custom theme (@inherit="false"); --inherit returns to the add-on default. See `deepcell ref format`. |
| --revision <revision> | text | — | Expected revision SHA for optimistic locking. |
| --workspace <workspace_slug> | text | — | Override active workspace. |
| --rationale <rationale> | text | — | Why this edit was made. Becomes the commit message body, so the history reads as the decision rather than the coordinates the diff already shows. `-m` and `--message` are aliases of `--rationale`. |
| --title <title> | text | — | Short commit subject (e.g. 'Q3 actuals update'). Combined with --rationale as 'title: rationale'. The mechanical summary the server would have written is kept as a Summary trailer either way. |
| --dry-run | boolean | — | Validate only: run the full server-side pipeline (per-op validation, formula parse, post-apply cycle check + recompute) and report errors without persisting anything — no commit, no revision bump. |
| --plan-delivery <plan_delivery> | none | cache | inline | — | What the server does with the post-edit render plan: `cache` (default) builds it after answering, into the cache the next describe or viewer read uses — except a batch touching a slide, binding or deck style, whose plan is built before answering to measure fit; `inline` builds it before answering and returns it (slower). A write that built its plan prints the orphan / status-clash warnings and only the conversion warnings it introduced; otherwise the next `describe` reports them. `none` builds nothing. |
| --measure-fit | boolean | — | Measure the slides this batch touched with the deck exporter (default on; never under --plan-delivery none). --no-measure-fit skips the round trip. |
Exit codes: 0 — completed · 1 — nothing-changed
Patch an item; only fields you pass are sent.
deepcell defs update-item <filename> <item_id>
deepcell defs update-item model.deepcell Revenue --scale 3 --currency USD| Argument | Type | Required |
|---|---|---|
| filename | text | required |
| item_id | text | required |
| Flag | Type | Default | What it does |
|---|---|---|---|
| --name <name> | text | — | Rename the itemId; references cascade. Equivalent to `defs rename-item`. |
| --label <new_label> | text | — | Change the item's DISPLAY LABEL (emits set_item_label). The itemId is untouched — use `defs rename-item` to change the identifier. Rewrites the text of the item's first <Label> and keeps its lang; other locales are left alone and cannot be added here. |
| --level <level> | integer | — | Change hierarchy level. |
| --parent <parent_item_id> | text | — | Change parent itemId. |
| --clear-parent | boolean | — | Make item a root (explicit-null parentItemId). |
| --data-type <data_type> | text | — | Set DataType element (e.g. 'monetary', 'percentage', 'number'). |
| --unit <unit> | text | — | Set Unit element (e.g. '%', 'hours', 'tonnes'). |
| --scale <scale> | integer | — | Set Scale element — monetary only; on another type it changes no display digits (see add-item --scale). |
| --currency <currency> | text | — | Set Currency element: an ISO 4217 code, or 'XXX' when the source states none. |
| --shape <shape> | scalar | period | — | Declare the item's one shape (@shape): 'scalar' = only Item[] cells, 'period' = a value per period. Refused, naming the cells, while the item stores a cell of the other shape in any status, scenario or member — unless --context converts them. |
| --context <context> | text | — | With --shape, convert the item's cells at this period, in every status, scenario and member: --shape period moves Item[] to Item[CONTEXT]; --shape scalar makes Item[CONTEXT] the scalar Item[] and deletes every other period's cell (listed in the result). Required when the item holds cells of the other shape. |
| --clear-data-type | boolean | — | Remove the DataType element (explicit-null). |
| --clear-unit | boolean | — | Remove the Unit element (explicit-null). |
| --clear-scale | boolean | — | Remove the Scale element (explicit-null). |
| --clear-currency | boolean | — | Remove the Currency element (explicit-null). |
| --revision <revision> | text | — | Expected revision SHA for optimistic locking. |
| --workspace <workspace_slug> | text | — | Override active workspace. |
| --rationale <rationale> | text | — | Why this edit was made. Becomes the commit message body, so the history reads as the decision rather than the coordinates the diff already shows. `-m` and `--message` are aliases of `--rationale`. |
| --title <title> | text | — | Short commit subject (e.g. 'Q3 actuals update'). Combined with --rationale as 'title: rationale'. The mechanical summary the server would have written is kept as a Summary trailer either way. |
| --dry-run | boolean | — | Validate only: run the full server-side pipeline (per-op validation, formula parse, post-apply cycle check + recompute) and report errors without persisting anything — no commit, no revision bump. |
| --plan-delivery <plan_delivery> | none | cache | inline | — | What the server does with the post-edit render plan: `cache` (default) builds it after answering, into the cache the next describe or viewer read uses — except a batch touching a slide, binding or deck style, whose plan is built before answering to measure fit; `inline` builds it before answering and returns it (slower). A write that built its plan prints the orphan / status-clash warnings and only the conversion warnings it introduced; otherwise the next `describe` reports them. `none` builds nothing. |
| --measure-fit | boolean | — | Measure the slides this batch touched with the deck exporter (default on; never under --plan-delivery none). --no-measure-fit skips the round trip. |
Exit codes: 0 — completed · 1 — nothing-changed
Patch a scenario; only the fields you pass are sent.
deepcell defs update-scenario <filename> <scenario_ref>
deepcell defs update-scenario model.deepcell downside --label 'Bear case'| Argument | Type | Required |
|---|---|---|
| filename | text | required |
| scenario_ref | text | required |
| Flag | Type | Default | What it does |
|---|---|---|---|
| --name <name> | text | — | Rename the scenarioId; references cascade. Equivalent to `defs rename-scenario`. NOT the display name — see --label. |
| --label <new_label> | text | — | Change the scenario's DISPLAY LABEL (emits set_scenario_label). The scenarioId is untouched — use --name to change the identifier. |
| --is-default | boolean | — | Make this the document's default scenario (clears @isDefault from every other scenario), or strip the flag from this one. |
| --revision <revision> | text | — | Expected revision SHA for optimistic locking. |
| --workspace <workspace_slug> | text | — | Override active workspace. |
| --rationale <rationale> | text | — | Why this edit was made. Becomes the commit message body, so the history reads as the decision rather than the coordinates the diff already shows. `-m` and `--message` are aliases of `--rationale`. |
| --title <title> | text | — | Short commit subject (e.g. 'Q3 actuals update'). Combined with --rationale as 'title: rationale'. The mechanical summary the server would have written is kept as a Summary trailer either way. |
| --dry-run | boolean | — | Validate only: run the full server-side pipeline (per-op validation, formula parse, post-apply cycle check + recompute) and report errors without persisting anything — no commit, no revision bump. |
| --plan-delivery <plan_delivery> | none | cache | inline | — | What the server does with the post-edit render plan: `cache` (default) builds it after answering, into the cache the next describe or viewer read uses — except a batch touching a slide, binding or deck style, whose plan is built before answering to measure fit; `inline` builds it before answering and returns it (slower). A write that built its plan prints the orphan / status-clash warnings and only the conversion warnings it introduced; otherwise the next `describe` reports them. `none` builds nothing. |
| --measure-fit | boolean | — | Measure the slides this batch touched with the deck exporter (default on; never under --plan-delivery none). --no-measure-fit skips the round trip. |
Exit codes: 0 — completed · 1 — nothing-changed
Edit a sensitivity block's name, format, or axes/outputs.
deepcell defs update-sensitivity <filename> --sheet <sheet_id> --block <block_id>
deepcell defs update-sensitivity model.deepcell --sheet <sheet_id> --block <block_id>| Argument | Type | Required |
|---|---|---|
| filename | text | required |
| Flag | Type | Default | What it does |
|---|---|---|---|
| --sheet <sheet_id> | text | required | Sheet containing the block. |
| --block <block_id> | text | required | blockId of the block to edit. |
| --name <name> | text | — | New display name. |
| --format-ref <format_ref> | text | — | New FormatDefinitions id. |
| --spec-file <spec_file> | file | — | JSON with {"axes": [...], "outputs": [...]} to replace both. |
| --revision <revision> | text | — | Expected revision SHA for optimistic locking. |
| --workspace <workspace_slug> | text | — | Override active workspace. |
| --rationale <rationale> | text | — | Why this edit was made. Becomes the commit message body, so the history reads as the decision rather than the coordinates the diff already shows. `-m` and `--message` are aliases of `--rationale`. |
| --title <title> | text | — | Short commit subject (e.g. 'Q3 actuals update'). Combined with --rationale as 'title: rationale'. The mechanical summary the server would have written is kept as a Summary trailer either way. |
| --dry-run | boolean | — | Validate only: run the full server-side pipeline (per-op validation, formula parse, post-apply cycle check + recompute) and report errors without persisting anything — no commit, no revision bump. |
| --plan-delivery <plan_delivery> | none | cache | inline | — | What the server does with the post-edit render plan: `cache` (default) builds it after answering, into the cache the next describe or viewer read uses — except a batch touching a slide, binding or deck style, whose plan is built before answering to measure fit; `inline` builds it before answering and returns it (slower). A write that built its plan prints the orphan / status-clash warnings and only the conversion warnings it introduced; otherwise the next `describe` reports them. `none` builds nothing. |
| --measure-fit | boolean | — | Measure the slides this batch touched with the deck exporter (default on; never under --plan-delivery none). --no-measure-fit skips the round trip. |
Exit codes: 0 — completed · 1 — nothing-changed
Change fields on a <Source>.
deepcell defs update-source <filename> --id <source_id>
deepcell defs update-source model.deepcell --id <source_id>| Argument | Type | Required |
|---|---|---|
| filename | text | required |
| Flag | Type | Default | What it does |
|---|---|---|---|
| --id <source_id> | text | required | sourceId to update. |
| --kind <kind> | text | — | New @kind (closed set). |
| --role <role> | text | — | New @role (free text). |
| --reach <reach> | text | — | public | account | private | offline. |
| --title <title> | text | — | New title. Pass '' to clear. |
| --locator <locator> | text | — | New locator. Pass '' to clear. |
| --mirror <mirror> | text | — | New project copy, by file name. Pass '' to clear. |
| --description <description> | text | — | New description. Pass '' to clear. |
| --at <at> | text | — | New default position (grammar: add-source --at). |
| --effective-date <effective_date> | text | — | New effective date. |
| --retrieved-at <retrieved_at> | text | — | New retrieval timestamp. |
| --revision <revision> | text | — | Expected revision SHA for optimistic locking. |
| --workspace <workspace_slug> | text | — | Override active workspace. |
| --rationale <rationale> | text | — | Why this edit was made. Becomes the commit message body, so the history reads as the decision rather than the coordinates the diff already shows. `-m` and `--message` are aliases of `--rationale`. |
| --dry-run | boolean | — | Validate only: run the full server-side pipeline (per-op validation, formula parse, post-apply cycle check + recompute) and report errors without persisting anything — no commit, no revision bump. |
| --plan-delivery <plan_delivery> | none | cache | inline | — | What the server does with the post-edit render plan: `cache` (default) builds it after answering, into the cache the next describe or viewer read uses — except a batch touching a slide, binding or deck style, whose plan is built before answering to measure fit; `inline` builds it before answering and returns it (slower). A write that built its plan prints the orphan / status-clash warnings and only the conversion warnings it introduced; otherwise the next `describe` reports them. `none` builds nothing. |
| --measure-fit | boolean | — | Measure the slides this batch touched with the deck exporter (default on; never under --plan-delivery none). --no-measure-fit skips the round trip. |
Exit codes: 0 — completed · 1 — nothing-changed
Patch a status; only the fields you pass are sent.
deepcell defs update-status <filename> <status_ref>
deepcell defs update-status model.deepcell budget --archetype budget --label Budget| Argument | Type | Required |
|---|---|---|
| filename | text | required |
| status_ref | text | required |
| Flag | Type | Default | What it does |
|---|---|---|---|
| --name <name> | text | — | Rename the statusId; references cascade. Equivalent to `defs rename-status`. NOT the display name — see --label. |
| --label <new_label> | text | — | Change the status's DISPLAY LABEL (emits set_status_label). The statusId is untouched — use --name to change the identifier. |
| --is-default | boolean | — | Make this the document's default status (clears @isDefault from every other status), or strip the flag from this one. |
| --archetype <archetype> | text | — | What this status MEANS: actual | preliminary | restated | estimate | guidance | consensus | forecast | budget | plan | target. Pass an empty string to clear it (and fall back to inference). |
| --assurance <assurance> | text | — | audited | reviewed | unaudited. |
| --authority <authority> | text | — | reported | derived | guidance | consensus | third_party. |
| --revision <revision> | text | — | Expected revision SHA for optimistic locking. |
| --workspace <workspace_slug> | text | — | Override active workspace. |
| --rationale <rationale> | text | — | Why this edit was made. Becomes the commit message body, so the history reads as the decision rather than the coordinates the diff already shows. `-m` and `--message` are aliases of `--rationale`. |
| --title <title> | text | — | Short commit subject (e.g. 'Q3 actuals update'). Combined with --rationale as 'title: rationale'. The mechanical summary the server would have written is kept as a Summary trailer either way. |
| --dry-run | boolean | — | Validate only: run the full server-side pipeline (per-op validation, formula parse, post-apply cycle check + recompute) and report errors without persisting anything — no commit, no revision bump. |
| --plan-delivery <plan_delivery> | none | cache | inline | — | What the server does with the post-edit render plan: `cache` (default) builds it after answering, into the cache the next describe or viewer read uses — except a batch touching a slide, binding or deck style, whose plan is built before answering to measure fit; `inline` builds it before answering and returns it (slower). A write that built its plan prints the orphan / status-clash warnings and only the conversion warnings it introduced; otherwise the next `describe` reports them. `none` builds nothing. |
| --measure-fit | boolean | — | Measure the slides this batch touched with the deck exporter (default on; never under --plan-delivery none). --no-measure-fit skips the round trip. |
Exit codes: 0 — completed · 1 — nothing-changed
Show what cites a reference: prose, slides and reasoning, this file only.
deepcell doc backlinks <filename> --target <target>
deepcell doc backlinks model.deepcell --target <target>| Argument | Type | Required |
|---|---|---|
| filename | text | required |
| Flag | Type | Default | What it does |
|---|---|---|---|
| --target <target> | text | required | Reference to invert, e.g. 'claim/t_hold'. |
Exit codes: 0 — completed
List every block and the id it can be edited by.
deepcell doc blocks <filename> [doc_positional]
deepcell doc blocks model.deepcell| Argument | Type | Required |
|---|---|---|
| filename | text | required |
| doc_positional | text | optional |
| Flag | Type | Default | What it does |
|---|---|---|---|
| --doc <doc_id> | text | — | Document ID (default: the first); also accepted as the second argument. |
Exit codes: 0 — completed
Recolour a document, or change its faces, by ROLE without touching its stylesheet.
deepcell doc brand <filename> --doc <doc_id>
deepcell doc brand model.deepcell --doc <doc_id>| Argument | Type | Required |
|---|---|---|
| filename | text | required |
| Flag | Type | Default | What it does |
|---|---|---|---|
| --doc <doc_id> | text | required | Document to recolour. |
| --set <assignments> | text | — | Role override, repeatable: --set accent=#7A1F2B --set font-text=Georgia. Colours: accent (headings), ink (text), muted (captions, quotes), rule, surface (table header ground); faces: font-display (headings), font-text (a safe face, `deepcell ref deck-style/fonts`), font-cjk (Microsoft YaHei, SimSun, SimHei, DengXian, Microsoft JhengHei). |
| --clear | boolean | — | Remove the brand; the pack's own colours and faces show again. |
| --rationale <rationale> | text | — | Commit message recording why. |
| --revision <revision> | text | — | Compare-and-swap token from `cat`. |
| --title <title> | text | — | Short commit subject (e.g. 'Q3 actuals update'). Combined with --rationale as 'title: rationale'. The mechanical summary the server would have written is kept as a Summary trailer either way. |
Exit codes: 0 — completed
Delete one block.
deepcell doc delete-block <filename> --doc <doc_id> --block <block_id>
deepcell doc delete-block model.deepcell --doc <doc_id> --block <block_id>| Argument | Type | Required |
|---|---|---|
| filename | text | required |
| Flag | Type | Default | What it does |
|---|---|---|---|
| --doc <doc_id> | text | required | Document ID. |
| --block <block_id> | text | required | Block id to delete. |
| --rationale <rationale> | text | — | Commit message recording why. |
| --revision <revision> | text | — | Compare-and-swap token from `cat`. |
| --title <title> | text | — | Short commit subject (e.g. 'Q3 actuals update'). Combined with --rationale as 'title: rationale'. The mechanical summary the server would have written is kept as a Summary trailer either way. |
Exit codes: 0 — completed
Insert a new block after another one, or at the top of the document.
deepcell doc insert-block <filename> --doc <doc_id> --markdown-file <markdown_file>
deepcell doc insert-block model.deepcell --doc <doc_id> --markdown-file <markdown_file>| Argument | Type | Required |
|---|---|---|
| filename | text | required |
| Flag | Type | Default | What it does |
|---|---|---|---|
| --doc <doc_id> | text | required | Document ID. |
| --after <after_block_id> | text | — | Insert after this block id. Omit to insert at the top. |
| --markdown-file <markdown_file> | file | required | File holding the new block's markdown; `-` reads stdin. |
| --rationale <rationale> | text | — | Commit message recording why. |
| --revision <revision> | text | — | Compare-and-swap token from `cat`. |
| --title <title> | text | — | Short commit subject (e.g. 'Q3 actuals update'). Combined with --rationale as 'title: rationale'. The mechanical summary the server would have written is kept as a Summary trailer either way. |
Exit codes: 0 — completed
List every deepcell: reference, and whether it resolved.
deepcell doc links <filename>
deepcell doc links model.deepcell --doc variance_note --unresolved| Argument | Type | Required |
|---|---|---|
| filename | text | required |
| Flag | Type | Default | What it does |
|---|---|---|---|
| --doc <doc_id> | text | — | Restrict to one document. |
| --unresolved | boolean | — | Only references that did not resolve. |
Exit codes: 0 — completed
Check a document's references.
deepcell doc lint <filename>
deepcell doc lint model.deepcell --doc variance_note --strict| Argument | Type | Required |
|---|---|---|
| filename | text | required |
| Flag | Type | Default | What it does |
|---|---|---|---|
| --doc <doc_id> | text | — | Restrict to one document. |
| --strict | boolean | — | Also flag numerals that match a modelled value but are typed, not linked. |
Exit codes: 0 — completed
List every <Document> in the file.
deepcell doc list <filename>
deepcell doc list model.deepcell| Argument | Type | Required |
|---|---|---|
| filename | text | required |
Exit codes: 0 — completed
Move a block after another one, or to the top.
deepcell doc move-block <filename> --doc <doc_id> --block <block_id>
deepcell doc move-block model.deepcell --doc <doc_id> --block <block_id>| Argument | Type | Required |
|---|---|---|
| filename | text | required |
| Flag | Type | Default | What it does |
|---|---|---|---|
| --doc <doc_id> | text | required | Document ID. |
| --block <block_id> | text | required | Block id to move. |
| --after <after_block_id> | text | — | Move after this block id. Omit to move to the top. |
| --rationale <rationale> | text | — | Commit message recording why. |
| --revision <revision> | text | — | Compare-and-swap token from `cat`. |
| --title <title> | text | — | Short commit subject (e.g. 'Q3 actuals update'). Combined with --rationale as 'title: rationale'. The mechanical summary the server would have written is kept as a Summary trailer either way. |
Exit codes: 0 — completed
Print the headings and the anchor each one is addressable by.
deepcell doc outline <filename>
deepcell doc outline model.deepcell --doc variance_note| Argument | Type | Required |
|---|---|---|
| filename | text | required |
| Flag | Type | Default | What it does |
|---|---|---|---|
| --doc <doc_id> | text | — | Document ID (default: the first). |
Exit codes: 0 — completed
Replace one anchored block, or a heading's whole section.
deepcell doc patch-body <filename> --doc <doc_id> --anchor <anchor>
deepcell doc patch-body model.deepcell --doc variance_note --anchor outlook --markdown '## Outlook {#outlook}\n\nQ4 pipeline covers the gap.'| Argument | Type | Required |
|---|---|---|
| filename | text | required |
| Flag | Type | Default | What it does |
|---|---|---|---|
| --doc <doc_id> | text | required | Document ID. |
| --anchor <anchor> | text | required | Explicit {#id} anchor of the block or section to replace. |
| --scope <scope> | block | section | — | `block`: the anchored block alone. `section`: a heading and every block under it (an H1 at the top owns the whole document). Omitted, a heading with blocks under it is refused rather than guessed. |
| --markdown <markdown> | text | — | Replacement markdown. |
| --markdown-file <markdown_file> | file | — | File holding the replacement markdown; `-` reads stdin. A section is paragraphs, so this is the form a shell quote will not mangle. `--body-file` is the same option, spelled as `set-body` spells it. |
| --notation <notation> | markdown | text | — | What the body IS. Omitted keeps whatever the document already declared, so editing text never retypes it. |
| --rationale <rationale> | text | — | Commit message recording why. |
| --revision <revision> | text | — | Compare-and-swap token from `cat`. |
| --title <title> | text | — | Short commit subject (e.g. 'Q3 actuals update'). Combined with --rationale as 'title: rationale'. The mechanical summary the server would have written is kept as a Summary trailer either way. |
Exit codes: 0 — completed
Sanitize one deepcell-html fence and show what it keeps and refuses.
deepcell doc render-block --source-file <source_file>| Flag | Type | Default | What it does |
|---|---|---|---|
| --source-file <source_file> | file | required | A file holding the body of one deepcell-html fence; `-` reads stdin. |
| --file <filename> | text | — | Workspace file whose decks the style cascade may inherit from. |
| --deck <deck_ref> | text | — | Deck whose <Style> the block inherits; needs --file, which defines it. |
Exit codes: 0 — completed
Replace one block, addressed by its id.
deepcell doc replace-block <filename> --doc <doc_id> --block <block_id> --markdown-file <markdown_file>
deepcell doc replace-block model.deepcell --doc <doc_id> --block <block_id> --markdown-file <markdown_file>| Argument | Type | Required |
|---|---|---|
| filename | text | required |
| Flag | Type | Default | What it does |
|---|---|---|---|
| --doc <doc_id> | text | required | Document ID. |
| --block <block_id> | text | required | Block id from `deepcell doc blocks`. |
| --markdown-file <markdown_file> | file | required | File holding the replacement markdown; `-` reads stdin. |
| --rationale <rationale> | text | — | Commit message recording why. |
| --revision <revision> | text | — | Compare-and-swap token from `cat`. |
| --title <title> | text | — | Short commit subject (e.g. 'Q3 actuals update'). Combined with --rationale as 'title: rationale'. The mechanical summary the server would have written is kept as a Summary trailer either way. |
Exit codes: 0 — completed
Replace a document's whole body.
deepcell doc set-body <filename> --doc <doc_id> --body-file <body_file>
deepcell doc set-body model.deepcell --doc variance_note --body-file variance-note.md -m 'Rewrite the July variance note'| Argument | Type | Required |
|---|---|---|
| filename | text | required |
| Flag | Type | Default | What it does |
|---|---|---|---|
| --doc <doc_id> | text | required | Document ID. |
| --body-file <body_file> | file | required | File holding the new body; `-` reads stdin. |
| --notation <notation> | markdown | text | — | What the body IS. Omitted keeps whatever the document already declared, so editing text never retypes it. |
| --allow-empty | boolean | — | Allow an empty body to replace one that has blocks. Without it that write is refused (document_body_empty). |
| --rationale <rationale> | text | — | Commit message recording why. |
| --revision <revision> | text | — | Compare-and-swap token from `cat` (refuses if the file moved). |
| --title <title> | text | — | Short commit subject (e.g. 'Q3 actuals update'). Combined with --rationale as 'title: rationale'. The mechanical summary the server would have written is kept as a Summary trailer either way. |
Exit codes: 0 — completed
Say what a document's body IS, without touching a byte of it.
deepcell doc set-notation <filename> --doc <doc_id> --notation <notation>
deepcell doc set-notation model.deepcell --doc <doc_id> --notation <notation>| Argument | Type | Required |
|---|---|---|
| filename | text | required |
| Flag | Type | Default | What it does |
|---|---|---|---|
| --doc <doc_id> | text | required | Document ID. |
| --notation <notation> | markdown | text | required | What the body IS. |
| --rationale <rationale> | text | — | Commit message recording why. |
| --revision <revision> | text | — | Compare-and-swap token from `cat`. |
| --title <title> | text | — | Short commit subject (e.g. 'Q3 actuals update'). Combined with --rationale as 'title: rationale'. The mechanical summary the server would have written is kept as a Summary trailer either way. |
Exit codes: 0 — completed
Print one document.
deepcell doc show <filename> [doc_positional]
deepcell doc show model.deepcell --doc variance_note --as markdown| Argument | Type | Required |
|---|---|---|
| filename | text | required |
| doc_positional | text | optional |
| Flag | Type | Default | What it does |
|---|---|---|---|
| --doc <doc_id> | text | — | Document ID (default: the first); also accepted as the second argument. |
| --scenario <scenario_id> | text | — | Scenario to resolve values under. |
| --as <rendering> | text | markdown | text | markdown keeps the [[deepcell:...]] source; text shows resolved values. |
| --with-ids | boolean | — | Prefix each block with the id it can be edited by. |
Exit codes: 0 — completed
Give every block without an id a stable `{#id}`, so it can be edited.
deepcell doc stamp-ids <filename> --doc <doc_id>
deepcell doc stamp-ids model.deepcell --doc <doc_id>| Argument | Type | Required |
|---|---|---|
| filename | text | required |
| Flag | Type | Default | What it does |
|---|---|---|---|
| --doc <doc_id> | text | required | Document ID. |
| --rationale <rationale> | text | — | Commit message recording why. |
| --revision <revision> | text | — | Compare-and-swap token from `cat`. |
| --title <title> | text | — | Short commit subject (e.g. 'Q3 actuals update'). Combined with --rationale as 'title: rationale'. The mechanical summary the server would have written is kept as a Summary trailer either way. |
Exit codes: 0 — completed
Set a document's stylesheet: a PACK, a CSS file, or just the paper.
deepcell doc style <filename> --doc <doc_id>
deepcell doc style model.deepcell --doc <doc_id>| Argument | Type | Required |
|---|---|---|
| filename | text | required |
| Flag | Type | Default | What it does |
|---|---|---|---|
| --doc <doc_id> | text | required | Document to restyle. |
| --pack <pack> | text | — | A document style pack — report, classic, office, chinese-formal (`deepcell ref doc-style`). Its CSS is copied into the document's <Style>. |
| --keep-own-rules | boolean | — | With --pack: keep the rules written after the old pack (the document's own, such as its paper) and replace only the pack. |
| --css-file <css_file> | file | — | The document's own stylesheet, whole (`-` reads stdin). Replaces, never merges. |
| --page <page> | letter | a4 | legal | a5 | — | Paper size for the PDF and .docx. Alone, it changes only the paper of the sheet already stored. |
| --clear | boolean | — | Remove the document's <Style>: the panel's default look. |
| --rationale <rationale> | text | — | Commit message recording why. |
| --revision <revision> | text | — | Compare-and-swap token from `cat`. |
| --title <title> | text | — | Short commit subject (e.g. 'Q3 actuals update'). Combined with --rationale as 'title: rationale'. The mechanical summary the server would have written is kept as a Summary trailer either way. |
Exit codes: 0 — completed
Set or change literal cell values (assumptions, historical actuals).
deepcell edit <filename> [item_ref] [context_ref] [new_value]
deepcell edit model.deepcell Growth_Rate FY2026E 0.12| Argument | Type | Required |
|---|---|---|
| filename | text | required |
| item_ref | text | optional |
| context_ref | text | optional |
| new_value | text | optional |
| Flag | Type | Default | What it does |
|---|---|---|---|
| --force | boolean | — | Type over a calculated cell, REMOVING the formula that computed it (no in-document undo). |
| --clear | boolean | — | Remove the literal value cell (NEW_VALUE omitted) so a CalcDef can re-govern it. |
| --status <status_ref> | text | — | Status reference (e.g. 'projected'). |
| --scenario <scenario_ref> | text | — | Scenario dimension — must be a defined scenarioId (omit for the base cell). |
| --custom-dimensions <custom_dimensions> | text | — | Custom dimensions as 'dim:member;dim:member', e.g. 'geography:na;product_line:ent'. |
| --batch <batch_file> | text | — | Batch edits as a JSON file path, '-' for stdin, or inline JSON (a value starting with '[' or '{'). |
| --revision <revision> | text | — | Expected revision SHA for optimistic locking. |
| --rationale <commit_message> | text | — | Why this edit was made. Written as the commit message body (and a trailer), so history reads as the decision instead of 'Edited Revenue (FY2025)'. Sent as `rationale`; `-m` / `--message` are aliases of `--rationale`. |
| --title <commit_title> | text | — | Short commit subject (e.g. 'Q3 actuals update'). Combined with --rationale as 'title: rationale'. |
| --auto-create-context | boolean | — | Auto-create missing context definitions. |
| --replace | boolean | — | DEPRECATED alias for `deepcell replace FILE OLD NEW` — still works, will be removed in a future release. Note the exit codes listed here are `edit`'s: in replace mode, exit 1 means the replacement IS already in the file and the document is invalid. |
| --replace-all | boolean | — | Replace all occurrences (with the deprecated --replace). |
| --workspace <workspace_slug> | text | — | Override active workspace. |
Exit codes: 0 — completed · 1 — nothing-changed
Add a new <Argument> edge to FILENAME's <Reasoning> section.
deepcell reasoning add-argument <filename> --from-id <from_id> --to-id <to_id> --rel <rel>
deepcell reasoning add-argument model.deepcell --from-id r_pricing --to-id t_gm --rel refutes --weight 0.6| Argument | Type | Required |
|---|---|---|
| filename | text | required |
| Flag | Type | Default | What it does |
|---|---|---|---|
| --from-id <from_id> | text | required | Source node id. |
| --to-id <to_id> | text | required | Target node id. |
| --rel <rel> | supports | refutes | depends_on | derives_from | variant_of | supersedes | contradicts | references | answers | asks_about | required | How --from-id relates to --to-id: supports / refutes (evidential), depends_on (falsifying the target falsifies the source), derives_from (computed or inferred from it), answers (this claim settles that question), asks_about (this question probes that node), variant_of (your view vs a consensus claim), supersedes (replaces an older node), contradicts, references. See `deepcell ref rel`. |
| --id <arg_id> | text | — | Argument id (auto-generated if omitted). |
| --weight <weight> | float | — | How much this edge carries, 0-1 (optional). |
| --body <body> | text | — | <Body> text. |
| --body-file <body_file> | file | — | File holding the <Body> text; '-' reads stdin. Prefer this over --body for text containing '$' — inline shell arguments mangle dollar amounts. |
| --body-notation <body_notation> | markdown | text | — | What the <Body> IS: markdown or literal text. Omitted keeps what the body declares; a body that declares nothing is read as markdown when it carries a markdown mark (a [[deepcell:...]] reference, **bold**, a heading) and lints as notation_inferred until it is declared. |
| --status <status> | text | — | Argument lifecycle status (active/superseded/revoked). |
| --rationale <rationale> | text | — | Why this edit was made. Becomes the commit message body, so the history reads as the decision rather than the coordinates the diff already shows. `-m` and `--message` are aliases of `--rationale`. |
| --title <title> | text | — | Short commit subject (e.g. 'Q3 actuals update'). Combined with --rationale as 'title: rationale'. The mechanical summary the server would have written is kept as a Summary trailer either way. |
Exit codes: 0 — completed · 1 — written-but-invalid
Add a new <Assumption> to FILENAME's <Reasoning> section.
deepcell reasoning add-assumption <filename>
deepcell reasoning add-assumption model.deepcell --id a_hiring --label 'Hiring lands on plan' --body 'Sales headcount reaches 40 by Q3.' --item-refs Headcount| Argument | Type | Required |
|---|---|---|
| filename | text | required |
| Flag | Type | Default | What it does |
|---|---|---|---|
| --id <assumption_id> | text | — | New Assumption id. Omit to derive one from --label; the answer names it. |
| --label <label> | text | — | <Label> text. The finding itself, not the subject it concerns — "Working capital is a source of cash", not "Working capital". Renders as the reasoning outline row, and a Deck may bind it as a slide headline. |
| --label-file <label_file> | file | — | File holding the <Label> text; '-' reads stdin. Prefer this over --label for text containing '$' — inline shell arguments mangle dollar amounts. |
| --body <body> | text | — | <Body> text. |
| --body-file <body_file> | file | — | File holding the <Body> text; '-' reads stdin. Prefer this over --body for text containing '$' — inline shell arguments mangle dollar amounts. |
| --body-notation <body_notation> | markdown | text | — | What the <Body> IS: markdown or literal text. Omitted keeps what the body declares; a body that declares nothing is read as markdown when it carries a markdown mark (a [[deepcell:...]] reference, **bold**, a heading) and lints as notation_inferred until it is declared. |
| --status-ref <status_ref> | text | — | Model Status dimension id (e.g. actual / projected) — NOT the assumption's lifecycle state (that is --status). |
| --calc-ref <calc_ref> | text | — | ONE CalcDef id anchoring this assumption to a formula (never a list). |
| --item-refs <item_refs> | text | — | Item ids the assumption constrains (or @order values / lo-hi ranges, the itemOrders grammar). When a Spreadsheet exists, omitting it triggers unanchored_assumption because the premise cannot be item-impact-traced as actuals drift in. A qualitative no-grid file and macro assumptions may legitimately omit it. |
| --confidence <confidence> | float | — | How strongly you hold this assumption, 0-1. |
| --status <status> | holding | uncertain | broken | superseded | — | Assumption lifecycle state: holding until something contradicts it, broken once actuals do, superseded when a newer assumption replaces it. |
| --verified-at <verified_at> | text | — | ISO date (YYYY-MM-DD) this assumption was last confirmed to still hold (@verifiedAt). Records WHEN it was checked; --status holding records that it stands. |
| --broken-at <broken_at> | text | — | ISO date (YYYY-MM-DD) this assumption was found no longer to hold (@brokenAt). Records WHEN it failed; --status broken records THAT it failed — set both when actuals contradict an assumption. |
| --parent-claim-ref <parent_claim_ref> | text | — | Claim id this assumption hangs under (hierarchy, not an Argument edge). |
| --context-refs <context_refs> | text | — | Comma-separated context (period) ids this node reasons across; 'A..B' is a range, every period from A to B inclusive in context order (e.g. 'FY2027E..FY2031E'). 'A,B' stays two periods. |
| --scenario-ref <scenario_ref> | text | — | Scenario id this node is about, when it holds only in one world. |
| --custom-dimensions <custom_dimensions> | text | — | Custom dimension members as `dim:member;dim2:member2` — the fifth axis of the anchor (e.g. `region:emea`). |
| --rationale <rationale> | text | — | Why this edit was made. Becomes the commit message body, so the history reads as the decision rather than the coordinates the diff already shows. `-m` and `--message` are aliases of `--rationale`. |
| --title <title> | text | — | Short commit subject (e.g. 'Q3 actuals update'). Combined with --rationale as 'title: rationale'. The mechanical summary the server would have written is kept as a Summary trailer either way. |
Exit codes: 0 — completed · 1 — written-but-invalid
Add a new <Claim> to FILENAME's <Reasoning> section.
deepcell reasoning add-claim <filename> --kind <kind>
deepcell reasoning add-claim model.deepcell --id t_gm --kind thesis --label 'Gross margin expands' --body 'Mix shift to subscription lifts GM 200bps.' --item-refs Gross_Margin_Pct --confidence 0.62| Argument | Type | Required |
|---|---|---|
| filename | text | required |
| Flag | Type | Default | What it does |
|---|---|---|---|
| --id <claim_id> | text | — | New Claim id. Omit to derive one from --kind and --label (thesis_irr_clears_the_bar); the answer names it. |
| --kind <kind> | thesis | risk | catalyst | counter | question | market_consensus | required | What the claim is: thesis (what you conclude), risk (what could break it, needs --probability AND --severity), catalyst (what would move it, needs --probability), counter (the case against), question (open), market_consensus (someone else's view, needs --attribution). Give the required ones on this write, e.g. --kind risk --probability 0.3 --severity high. See `deepcell ref claim` and `deepcell guide revise/reasoning`. |
| --label <label> | text | — | <Label> text. The finding itself, not the subject it concerns — "Working capital is a source of cash", not "Working capital". Renders as the reasoning outline row, and a Deck may bind it as a slide headline. |
| --label-file <label_file> | file | — | File holding the <Label> text; '-' reads stdin. Prefer this over --label for text containing '$' — inline shell arguments mangle dollar amounts. |
| --body <body> | text | — | <Body> text. |
| --body-file <body_file> | file | — | File holding the <Body> text; '-' reads stdin. Prefer this over --body for text containing '$' — inline shell arguments mangle dollar amounts. |
| --body-notation <body_notation> | markdown | text | — | What the <Body> IS: markdown or literal text. Omitted keeps what the body declares; a body that declares nothing is read as markdown when it carries a markdown mark (a [[deepcell:...]] reference, **bold**, a heading) and lints as notation_inferred until it is declared. |
| --status-ref <status_ref> | text | — | Model Status dimension id (e.g. actual / projected) — NOT the claim lifecycle state (that is --status). |
| --calc-ref <calc_ref> | text | — | ONE CalcDef id anchoring this claim to the formula it rests on (never a list). |
| --sensitivity-ref <sensitivity_ref> | text | — | blockId of the sensitivity grid this claim was read off (blockType="sensitivity"). A range in a risk or catalyst claim names the grid it came from; the write refuses an id no such block carries. |
| --item-refs <item_refs> | text | — | Item ids anchoring this claim to a Spreadsheet — or @order values and lo-hi ranges, the itemOrders grammar (positional: an inserted row moves them; name the ids for a fixed anchor). When Items exist, thesis/risk/catalyst claims need --item-refs or --calc-ref, else unanchored_claim warns (they become invisible to reasoning-diff and item-scoped queries). A qualitative no-grid file does not invent Items; question/market_consensus are always exempt. |
| --probability <probability> | float | — | Likelihood, 0-1 (required for kind=risk / catalyst). |
| --severity <severity> | low | med | high | — | Qualitative impact (required for kind=risk). |
| --confidence <confidence> | float | — | How strongly you hold this claim, 0-1. |
| --strength <strength> | low | med | high | — | How strongly the claim is held, qualitatively. Independent of --confidence (the numeric form); a claim may carry both. |
| --parent-claim-ref <parent_claim_ref> | text | — | Claim id this one hangs under (hierarchy, not an Argument edge). |
| --attribution <attribution> | text | — | Who holds this view (required for kind=market_consensus), e.g. 'Bloomberg consensus, 2026-07'. |
| --origin <origin> | anticipated | asked | — | kind=question only — where the question came from: anticipated (prepared before a review: what a supervisor or client will likely ask) or asked (actually raised, e.g. a chat follow-up). Leave it off the key question and the analysis's own sub-questions. Record the answer with `add-argument --from-id <answer> --rel answers --to-id <question>`. |
| --audience <audience> | text | — | kind=question only — who asks it, free text ("IC", "client CFO"). |
| --status <status> | draft | active | superseded | falsified | revoked | — | Claim lifecycle state — NOT the model's Status dimension (that is --status-ref). |
| --context-refs <context_refs> | text | — | Comma-separated context (period) ids this node reasons across; 'A..B' is a range, every period from A to B inclusive in context order (e.g. 'FY2027E..FY2031E'). 'A,B' stays two periods. |
| --scenario-ref <scenario_ref> | text | — | Scenario id this node is about, when it holds only in one world. |
| --custom-dimensions <custom_dimensions> | text | — | Custom dimension members as `dim:member;dim2:member2` — the fifth axis of the anchor (e.g. `region:emea`). |
| --rationale <rationale> | text | — | Why this edit was made. Becomes the commit message body, so the history reads as the decision rather than the coordinates the diff already shows. `-m` and `--message` are aliases of `--rationale`. |
| --title <title> | text | — | Short commit subject (e.g. 'Q3 actuals update'). Combined with --rationale as 'title: rationale'. The mechanical summary the server would have written is kept as a Summary trailer either way. |
Exit codes: 0 — completed · 1 — written-but-invalid
Add a new <Evidence> to FILENAME's <Reasoning> section.
deepcell reasoning add-evidence <filename> --id <evidence_id> --source-ref <source_ref>
deepcell reasoning add-evidence model.deepcell --id e_10k --source-ref src_aapl_10k_fy25 --excerpt 'Gross margin of 46.2%' --retrieved-at 2026-02-19T10:30:00Z| Argument | Type | Required |
|---|---|---|
| filename | text | required |
| Flag | Type | Default | What it does |
|---|---|---|---|
| --id <evidence_id> | text | required | New Evidence id. |
| --source-ref <source_ref> | text | required | sourceId of a <Source> in <SourceDefinitions>. |
| --label <label> | text | — | <Label> text. What the source says, in one line of your own — "FY2028 revenue growth guided to ~70%", not the quotation. Names the row in the reasoning outline's Data and sources list; the excerpt is what the source SAID and is reproduced verbatim under it. |
| --label-file <label_file> | file | — | File holding the <Label> text; '-' reads stdin. Prefer this over --label for text containing '$' — inline shell arguments mangle dollar amounts. |
| --excerpt <excerpt> | text | — | <Excerpt> text: the source's own words, verbatim. |
| --excerpt-file <excerpt_file> | file | — | File holding the <Excerpt> text; '-' reads stdin. Prefer this over --excerpt for text containing '$' — inline shell arguments mangle dollar amounts. |
| --at <at> | text | — | Position in the source: page:47 | t:00:14:32 | text:HEADING[,NEXT] — HEADING copied verbatim from the page (it becomes a #:~:text= jump), NEXT the text right after it. |
| --reliability <reliability> | text | — | primary | secondary | tertiary. |
| --effective-date <effective_date> | text | — | ISO 8601 date the evidence is as of, or a date-time with its offset (2026-03-14T09:30:00+08:00); stored as written, never converted. |
| --retrieved-at <retrieved_at> | text | — | ISO8601 date. |
| --item-refs <item_refs> | text | — | Item ids this evidence bears on (or @order values / lo-hi ranges). Anchoring it here is what lets `reasoning impact` reach the evidence when one of those items moves; `update-evidence` can retrofit it later. |
| --status-ref <status_ref> | text | — | Model Status dimension id (e.g. actual / projected) the evidence speaks to. |
| --context-refs <context_refs> | text | — | Comma-separated context (period) ids this node reasons across; 'A..B' is a range, every period from A to B inclusive in context order (e.g. 'FY2027E..FY2031E'). 'A,B' stays two periods. |
| --scenario-ref <scenario_ref> | text | — | Scenario id this node is about, when it holds only in one world. |
| --custom-dimensions <custom_dimensions> | text | — | Custom dimension members as `dim:member;dim2:member2` — the fifth axis of the anchor (e.g. `region:emea`). |
| --rationale <rationale> | text | — | Why this edit was made. Becomes the commit message body, so the history reads as the decision rather than the coordinates the diff already shows. `-m` and `--message` are aliases of `--rationale`. |
| --title <title> | text | — | Short commit subject (e.g. 'Q3 actuals update'). Combined with --rationale as 'title: rationale'. The mechanical summary the server would have written is kept as a Summary trailer either way. |
Exit codes: 0 — completed · 1 — written-but-invalid
Apply a batch of reasoning ops atomically.
deepcell reasoning apply <filename>
deepcell reasoning apply model.deepcell| Argument | Type | Required |
|---|---|---|
| filename | text | required |
| Flag | Type | Default | What it does |
|---|---|---|---|
| --ops-file <ops_file> | file | — | JSON file with an `ops` array (use '-' for stdin). |
| --ops <ops_inline> | text | — | Inline ops JSON (same shapes as --ops-file). |
| --dry-run | boolean | — | Validate the batch and print its findings; write nothing. A real apply refuses a bad batch whole too, so this is for reading the findings before committing, not for safety. |
| --rationale <rationale> | text | — | Why this edit was made. Becomes the commit message body, so the history reads as the decision rather than the coordinates the diff already shows. `-m` and `--message` are aliases of `--rationale`. |
| --title <title> | text | — | Short commit subject (e.g. 'Q3 actuals update'). Combined with --rationale as 'title: rationale'. The mechanical summary the server would have written is kept as a Summary trailer either way. |
Exit codes: 0 — completed
Delete one <Argument> edge from FILENAME's <Reasoning> section.
deepcell reasoning delete-argument <filename> [argument_id]
deepcell reasoning delete-argument model.deepcell --from-id r_pricing --edge-rel refutes --to-id t_gm| Argument | Type | Required |
|---|---|---|
| filename | text | required |
| argument_id | text | optional |
| Flag | Type | Default | What it does |
|---|---|---|---|
| --from-id <from_id> | text | — | Address: the edge's @from. |
| --edge-rel <edge_rel> | supports | refutes | depends_on | derives_from | variant_of | supersedes | contradicts | references | answers | asks_about | — | Address: the edge's @rel. |
| --to-id <to_id> | text | — | Address: the edge's @to. |
| --cascade | boolean | — | Also remove every Argument touching the node (default). --no-cascade keeps them, and is refused with code=would_dangle unless you also pass --allow-dangling — a dangling edge lints, and is still addressable by its (from, rel, to) or its id, so it can be cleaned up later. |
| --allow-dangling | boolean | — | With --no-cascade, permit the delete even though it orphans Arguments. |
| --rationale <rationale> | text | — | Why this edit was made. Becomes the commit message body, so the history reads as the decision rather than the coordinates the diff already shows. `-m` and `--message` are aliases of `--rationale`. |
| --title <title> | text | — | Short commit subject (e.g. 'Q3 actuals update'). Combined with --rationale as 'title: rationale'. The mechanical summary the server would have written is kept as a Summary trailer either way. |
Exit codes: 0 — completed · 1 — written-but-invalid
Delete the <Assumption> NODE_ID from FILENAME's <Reasoning> section.
deepcell reasoning delete-assumption <filename> <node_id>
deepcell reasoning delete-assumption model.deepcell <node_id>| Argument | Type | Required |
|---|---|---|
| filename | text | required |
| node_id | text | required |
| Flag | Type | Default | What it does |
|---|---|---|---|
| --cascade | boolean | — | Also remove every Argument touching the node (default). --no-cascade keeps them, and is refused with code=would_dangle unless you also pass --allow-dangling — a dangling edge lints, and is still addressable by its (from, rel, to) or its id, so it can be cleaned up later. |
| --allow-dangling | boolean | — | With --no-cascade, permit the delete even though it orphans Arguments. |
| --rationale <rationale> | text | — | Why this edit was made. Becomes the commit message body, so the history reads as the decision rather than the coordinates the diff already shows. `-m` and `--message` are aliases of `--rationale`. |
| --title <title> | text | — | Short commit subject (e.g. 'Q3 actuals update'). Combined with --rationale as 'title: rationale'. The mechanical summary the server would have written is kept as a Summary trailer either way. |
Exit codes: 0 — completed · 1 — written-but-invalid
Delete the <Claim> NODE_ID from FILENAME's <Reasoning> section.
deepcell reasoning delete-claim <filename> <node_id>
deepcell reasoning delete-claim model.deepcell t_gm --cascade| Argument | Type | Required |
|---|---|---|
| filename | text | required |
| node_id | text | required |
| Flag | Type | Default | What it does |
|---|---|---|---|
| --cascade | boolean | — | Also remove every Argument touching the node (default). --no-cascade keeps them, and is refused with code=would_dangle unless you also pass --allow-dangling — a dangling edge lints, and is still addressable by its (from, rel, to) or its id, so it can be cleaned up later. |
| --allow-dangling | boolean | — | With --no-cascade, permit the delete even though it orphans Arguments. |
| --rationale <rationale> | text | — | Why this edit was made. Becomes the commit message body, so the history reads as the decision rather than the coordinates the diff already shows. `-m` and `--message` are aliases of `--rationale`. |
| --title <title> | text | — | Short commit subject (e.g. 'Q3 actuals update'). Combined with --rationale as 'title: rationale'. The mechanical summary the server would have written is kept as a Summary trailer either way. |
Exit codes: 0 — completed · 1 — written-but-invalid
Delete the <Evidence> NODE_ID from FILENAME's <Reasoning> section.
deepcell reasoning delete-evidence <filename> <node_id>
deepcell reasoning delete-evidence model.deepcell <node_id>| Argument | Type | Required |
|---|---|---|
| filename | text | required |
| node_id | text | required |
| Flag | Type | Default | What it does |
|---|---|---|---|
| --cascade | boolean | — | Also remove every Argument touching the node (default). --no-cascade keeps them, and is refused with code=would_dangle unless you also pass --allow-dangling — a dangling edge lints, and is still addressable by its (from, rel, to) or its id, so it can be cleaned up later. |
| --allow-dangling | boolean | — | With --no-cascade, permit the delete even though it orphans Arguments. |
| --rationale <rationale> | text | — | Why this edit was made. Becomes the commit message body, so the history reads as the decision rather than the coordinates the diff already shows. `-m` and `--message` are aliases of `--rationale`. |
| --title <title> | text | — | Short commit subject (e.g. 'Q3 actuals update'). Combined with --rationale as 'title: rationale'. The mechanical summary the server would have written is kept as a Summary trailer either way. |
Exit codes: 0 — completed · 1 — written-but-invalid
Render the Argument graph from FILENAME as Mermaid (default) or DOT.
deepcell reasoning graph <filename>
deepcell reasoning graph model.deepcell --syntax mermaid| Argument | Type | Required |
|---|---|---|
| filename | text | required |
| Flag | Type | Default | What it does |
|---|---|---|---|
| --syntax <graph_syntax> | mermaid | dot | mermaid | Graph syntax to emit. Use the global -f json for the raw graph payload. |
Exit codes: 0 — completed
Walk Argument edges from CLAIM_ID and list downstream nodes affected if it's falsified.
deepcell reasoning impact <filename> <claim_id>
deepcell reasoning impact model.deepcell a_hiring| Argument | Type | Required |
|---|---|---|
| filename | text | required |
| claim_id | text | required |
Exit codes: 0 — completed
Lint the <Reasoning> section of FILENAME for structural issues.
deepcell reasoning lint <filename>
deepcell reasoning lint model.deepcell --strict| Argument | Type | Required |
|---|---|---|
| filename | text | required |
| Flag | Type | Default | What it does |
|---|---|---|---|
| --strict | boolean | — | Exit non-zero on warn-level findings too (default: only error-level findings fail). |
Exit codes: 0 — completed · 1 — read-only-check
Declare which Claim is FILENAME's main conclusion.
deepcell reasoning set-conclusion <filename> [claim_id]
deepcell reasoning set-conclusion model.deepcell t_gm| Argument | Type | Required |
|---|---|---|
| filename | text | required |
| claim_id | text | optional |
| Flag | Type | Default | What it does |
|---|---|---|---|
| --clear | boolean | — | Remove the declaration and fall back to deriving the apex from the argument topology. |
| --rationale <rationale> | text | — | Why this edit was made. Becomes the commit message body, so the history reads as the decision rather than the coordinates the diff already shows. `-m` and `--message` are aliases of `--rationale`. |
| --title <title> | text | — | Short commit subject (e.g. 'Q3 actuals update'). Combined with --rationale as 'title: rationale'. The mechanical summary the server would have written is kept as a Summary trailer either way. |
Exit codes: 0 — completed · 1 — written-but-invalid
Declare which question FILENAME exists to answer.
deepcell reasoning set-key-question <filename> [claim_id]
deepcell reasoning set-key-question model.deepcell| Argument | Type | Required |
|---|---|---|
| filename | text | required |
| claim_id | text | optional |
| Flag | Type | Default | What it does |
|---|---|---|---|
| --clear | boolean | — | Remove the declaration. The header then falls back to the `answers` edge off the conclusion, then to the document's only question, and otherwise shows nothing. |
| --needs-review | boolean | — | Mark the question as inferred rather than stated, so it renders as provisional until someone confirms it. Declaring without this flag clears it. |
| --rationale <rationale> | text | — | Why this edit was made. Becomes the commit message body, so the history reads as the decision rather than the coordinates the diff already shows. `-m` and `--message` are aliases of `--rationale`. |
| --title <title> | text | — | Short commit subject (e.g. 'Q3 actuals update'). Combined with --rationale as 'title: rationale'. The mechanical summary the server would have written is kept as a Summary trailer either way. |
Exit codes: 0 — completed
Replace ASSUMPTION_ID with a new Assumption, keeping the old as history.
deepcell reasoning supersede-assumption <filename> <assumption_id> --id <new_id>
deepcell reasoning supersede-assumption model.deepcell a_hiring --id a_hiring_v2 --label 'Hiring lands one quarter late'| Argument | Type | Required |
|---|---|---|
| filename | text | required |
| assumption_id | text | required |
| Flag | Type | Default | What it does |
|---|---|---|---|
| --id <new_id> | text | required | Id of the replacement Assumption. |
| --label <label> | text | — | <Label> text of the replacement. The finding itself, not the subject it concerns — "Working capital is a source of cash", not "Working capital". Renders as the reasoning outline row, and a Deck may bind it as a slide headline. |
| --label-file <label_file> | file | — | File holding the replacement <Label> text; '-' reads stdin. Prefer this over --label for text containing '$' — inline shell arguments mangle dollar amounts. |
| --body <body> | text | — | <Body> text of the replacement. |
| --body-file <body_file> | file | — | File holding the replacement <Body> text; '-' reads stdin. Prefer this over --body for text containing '$' — inline shell arguments mangle dollar amounts. |
| --body-notation <body_notation> | markdown | text | — | What the <Body> IS: markdown or literal text. Omitted keeps what the body declares; a body that declares nothing is read as markdown when it carries a markdown mark (a [[deepcell:...]] reference, **bold**, a heading) and lints as notation_inferred until it is declared. |
| --item-refs <item_refs> | text | — | Item ids, @order values or lo-hi order ranges (the itemOrders grammar). |
| --status-ref <status_ref> | text | — | Model Status dimension id. |
| --calc-ref <calc_ref> | text | — | CalcDef id this assumption drives. |
| --confidence <confidence> | float | — | Confidence in the replacement, 0-1. |
| --status <status> | holding | uncertain | broken | superseded | — | Lifecycle status of the replacement. |
| --verified-at <verified_at> | text | — | ISO date (YYYY-MM-DD) this assumption was last confirmed to still hold (@verifiedAt). Records WHEN it was checked; --status holding records that it stands. |
| --broken-at <broken_at> | text | — | ISO date (YYYY-MM-DD) this assumption was found no longer to hold (@brokenAt). Records WHEN it failed; --status broken records THAT it failed — set both when actuals contradict an assumption. |
| --context-refs <context_refs> | text | — | Comma-separated context (period) ids this node reasons across; 'A..B' is a range, every period from A to B inclusive in context order (e.g. 'FY2027E..FY2031E'). 'A,B' stays two periods. |
| --scenario-ref <scenario_ref> | text | — | Scenario id this node is about, when it holds only in one world. |
| --custom-dimensions <custom_dimensions> | text | — | Custom dimension members as `dim:member;dim2:member2` — the fifth axis of the anchor (e.g. `region:emea`). |
| --rationale <rationale> | text | — | Why this edit was made. Becomes the commit message body, so the history reads as the decision rather than the coordinates the diff already shows. `-m` and `--message` are aliases of `--rationale`. |
| --title <title> | text | — | Short commit subject (e.g. 'Q3 actuals update'). Combined with --rationale as 'title: rationale'. The mechanical summary the server would have written is kept as a Summary trailer either way. |
Exit codes: 0 — completed · 1 — written-but-invalid
Replace CLAIM_ID with a new Claim, keeping the old one as history.
deepcell reasoning supersede-claim <filename> <claim_id> --id <new_id>
deepcell reasoning supersede-claim model.deepcell t_gm --id t_gm_v2 --label 'Gross margin expands, slower' --body 'Mix shift lifts GM 120bps.' --confidence 0.55| Argument | Type | Required |
|---|---|---|
| filename | text | required |
| claim_id | text | required |
| Flag | Type | Default | What it does |
|---|---|---|---|
| --id <new_id> | text | required | Id of the replacement Claim. |
| --label <label> | text | — | <Label> text of the replacement. The finding itself, not the subject it concerns — "Working capital is a source of cash", not "Working capital". Renders as the reasoning outline row, and a Deck may bind it as a slide headline. |
| --label-file <label_file> | file | — | File holding the replacement <Label> text; '-' reads stdin. Prefer this over --label for text containing '$' — inline shell arguments mangle dollar amounts. |
| --body <body> | text | — | <Body> text of the replacement. |
| --body-file <body_file> | file | — | File holding the replacement <Body> text; '-' reads stdin. Prefer this over --body for text containing '$' — inline shell arguments mangle dollar amounts. |
| --body-notation <body_notation> | markdown | text | — | What the <Body> IS: markdown or literal text. Omitted keeps what the body declares; a body that declares nothing is read as markdown when it carries a markdown mark (a [[deepcell:...]] reference, **bold**, a heading) and lints as notation_inferred until it is declared. |
| --kind <kind> | thesis | risk | catalyst | counter | question | market_consensus | — | Kind of the replacement (defaults to the superseded claim's kind). |
| --item-refs <item_refs> | text | — | Item ids, @order values or lo-hi order ranges (the itemOrders grammar). |
| --context-refs <context_refs> | text | — | Comma-separated context ids; 'A..B' is a range in context order. |
| --status-ref <status_ref> | text | — | Model Status dimension id. |
| --calc-ref <calc_ref> | text | — | CalcDef id this claim is anchored to. |
| --confidence <confidence> | float | — | Confidence in the replacement, 0-1. |
| --strength <strength> | low | med | high | — | How strongly the replacement is held, qualitatively. Not inherited from the superseded claim: a reassessment that reused the old strength would publish a judgement nobody made. |
| --probability <probability> | float | — | Likelihood of the replacement, 0-1. Not inherited: required when the replacement is a risk or catalyst. |
| --severity <severity> | low | med | high | — | Qualitative impact of the replacement. Not inherited: required when the replacement is a risk. |
| --attribution <attribution> | text | — | Who holds the replacement view. Not inherited: required when the replacement is a market_consensus. |
| --scenario-ref <scenario_ref> | text | — | Scenario id this node is about, when it holds only in one world. |
| --custom-dimensions <custom_dimensions> | text | — | Custom dimension members as `dim:member;dim2:member2` — the fifth axis of the anchor (e.g. `region:emea`). |
| --rationale <rationale> | text | — | Why this edit was made. Becomes the commit message body, so the history reads as the decision rather than the coordinates the diff already shows. `-m` and `--message` are aliases of `--rationale`. |
| --title <title> | text | — | Short commit subject (e.g. 'Q3 actuals update'). Combined with --rationale as 'title: rationale'. The mechanical summary the server would have written is kept as a Summary trailer either way. |
Exit codes: 0 — completed · 1 — written-but-invalid
Patch an <Argument> edge; only the attributes you pass are changed.
deepcell reasoning update-argument <filename> [argument_id]
deepcell reasoning update-argument model.deepcell arg_pricing --weight 0.6| Argument | Type | Required |
|---|---|---|
| filename | text | required |
| argument_id | text | optional |
| Flag | Type | Default | What it does |
|---|---|---|---|
| --from-id <from_id> | text | — | Address: the edge's @from. |
| --edge-rel <edge_rel> | supports | refutes | depends_on | derives_from | variant_of | supersedes | contradicts | references | answers | asks_about | — | Address: the @rel the edge has now. --rel is what to change it to. |
| --to-id <to_id> | text | — | Address: the edge's @to. |
| --rel <rel> | supports | refutes | depends_on | derives_from | variant_of | supersedes | contradicts | references | answers | asks_about | — | Reclassify the edge — see `deepcell reasoning add-argument --help`. |
| --weight <weight> | float | — | How much this edge carries, 0-1. |
| --body <body> | text | — | Replacement <Body> text. |
| --body-file <body_file> | file | — | File holding the replacement <Body> text; '-' reads stdin. Prefer this over --body for text containing '$' — inline shell arguments mangle dollar amounts. |
| --body-notation <body_notation> | markdown | text | — | What the <Body> IS: markdown or literal text. Omitted keeps what the body declares; a body that declares nothing is read as markdown when it carries a markdown mark (a [[deepcell:...]] reference, **bold**, a heading) and lints as notation_inferred until it is declared. |
| --status <status> | text | — | Argument lifecycle status (active / superseded / revoked). |
| --rationale <rationale> | text | — | Why this edit was made. Becomes the commit message body, so the history reads as the decision rather than the coordinates the diff already shows. `-m` and `--message` are aliases of `--rationale`. |
| --title <title> | text | — | Short commit subject (e.g. 'Q3 actuals update'). Combined with --rationale as 'title: rationale'. The mechanical summary the server would have written is kept as a Summary trailer either way. |
Exit codes: 0 — completed · 1 — written-but-invalid
Update attributes on an existing <Assumption> ASSUMPTION_ID.
deepcell reasoning update-assumption <filename> <assumption_id>
deepcell reasoning update-assumption model.deepcell a_hiring --status broken --broken-at 2026-07-31| Argument | Type | Required |
|---|---|---|
| filename | text | required |
| assumption_id | text | required |
| Flag | Type | Default | What it does |
|---|---|---|---|
| --label <label> | text | — | Replacement <Label> text. The finding itself, not the subject it concerns — "Working capital is a source of cash", not "Working capital". Renders as the reasoning outline row, and a Deck may bind it as a slide headline. |
| --label-file <label_file> | file | — | File holding the replacement <Label> text; '-' reads stdin. Prefer this over --label for text containing '$' — inline shell arguments mangle dollar amounts. |
| --body <body> | text | — | Replacement <Body> text. |
| --body-file <body_file> | file | — | File holding the replacement <Body> text; '-' reads stdin. Prefer this over --body for text containing '$' — inline shell arguments mangle dollar amounts. |
| --body-notation <body_notation> | markdown | text | — | What the <Body> IS: markdown or literal text. Omitted keeps what the body declares; a body that declares nothing is read as markdown when it carries a markdown mark (a [[deepcell:...]] reference, **bold**, a heading) and lints as notation_inferred until it is declared. |
| --status-ref <status_ref> | text | — | Model Status dimension id (e.g. actual / projected) — NOT the assumption's lifecycle state (that is --status). |
| --calc-ref <calc_ref> | text | — | ONE CalcDef id anchoring this assumption to a formula (never a list). |
| --item-refs <item_refs> | text | — | Item ids the assumption constrains (or @order values / lo-hi ranges) — the fix for unanchored_assumption when the file has Items. |
| --confidence <confidence> | float | — | How strongly you hold this assumption, 0-1. |
| --status <status> | holding | uncertain | broken | superseded | — | Assumption lifecycle state: holding until something contradicts it, broken once actuals do, superseded when a newer assumption replaces it. |
| --verified-at <verified_at> | text | — | ISO date (YYYY-MM-DD) this assumption was last confirmed to still hold (@verifiedAt). Records WHEN it was checked; --status holding records that it stands. |
| --broken-at <broken_at> | text | — | ISO date (YYYY-MM-DD) this assumption was found no longer to hold (@brokenAt). Records WHEN it failed; --status broken records THAT it failed — set both when actuals contradict an assumption. |
| --context-refs <context_refs> | text | — | Comma-separated context (period) ids this node reasons across; 'A..B' is a range, every period from A to B inclusive in context order (e.g. 'FY2027E..FY2031E'). 'A,B' stays two periods. |
| --scenario-ref <scenario_ref> | text | — | Scenario id this node is about, when it holds only in one world. |
| --custom-dimensions <custom_dimensions> | text | — | Custom dimension members as `dim:member;dim2:member2` — the fifth axis of the anchor (e.g. `region:emea`). |
| --rationale <rationale> | text | — | Why this edit was made. Becomes the commit message body, so the history reads as the decision rather than the coordinates the diff already shows. `-m` and `--message` are aliases of `--rationale`. |
| --title <title> | text | — | Short commit subject (e.g. 'Q3 actuals update'). Combined with --rationale as 'title: rationale'. The mechanical summary the server would have written is kept as a Summary trailer either way. |
Exit codes: 0 — completed · 1 — written-but-invalid
Update attributes on an existing <Claim> CLAIM_ID in FILENAME.
deepcell reasoning update-claim <filename> <claim_id>
deepcell reasoning update-claim model.deepcell t_gm --status falsified| Argument | Type | Required |
|---|---|---|
| filename | text | required |
| claim_id | text | required |
| Flag | Type | Default | What it does |
|---|---|---|---|
| --kind <kind> | thesis | risk | catalyst | counter | question | market_consensus | — | Reclassify the claim — see `deepcell reasoning add-claim --help` for what each kind means. |
| --label <label> | text | — | Replacement <Label> text. The finding itself, not the subject it concerns — "Working capital is a source of cash", not "Working capital". Renders as the reasoning outline row, and a Deck may bind it as a slide headline. |
| --label-file <label_file> | file | — | File holding the replacement <Label> text; '-' reads stdin. Prefer this over --label for text containing '$' — inline shell arguments mangle dollar amounts. |
| --body <body> | text | — | Replacement <Body> text. |
| --body-file <body_file> | file | — | File holding the replacement <Body> text; '-' reads stdin. Prefer this over --body for text containing '$' — inline shell arguments mangle dollar amounts. |
| --body-notation <body_notation> | markdown | text | — | What the <Body> IS: markdown or literal text. Omitted keeps what the body declares; a body that declares nothing is read as markdown when it carries a markdown mark (a [[deepcell:...]] reference, **bold**, a heading) and lints as notation_inferred until it is declared. |
| --status-ref <status_ref> | text | — | Model Status dimension id (e.g. actual / projected) — NOT the claim lifecycle state (that is --status). |
| --calc-ref <calc_ref> | text | — | ONE CalcDef id anchoring this claim to the formula it rests on (never a list). |
| --sensitivity-ref <sensitivity_ref> | text | — | blockId of the sensitivity grid this claim was read off (blockType="sensitivity"). A range in a risk or catalyst claim names the grid it came from; the write refuses an id no such block carries. |
| --item-refs <item_refs> | text | — | Item ids anchoring this claim to a Spreadsheet (or @order values / lo-hi ranges) — the fix for unanchored_claim when the file has Items. |
| --probability <probability> | float | — | Likelihood, 0-1 (required for kind=risk / catalyst). |
| --severity <severity> | low | med | high | — | Qualitative impact (required for kind=risk). |
| --confidence <confidence> | float | — | How strongly you hold this claim, 0-1. |
| --strength <strength> | low | med | high | — | How strongly the claim is held, qualitatively. Independent of --confidence (the numeric form); a claim may carry both. |
| --parent-claim-ref <parent_claim_ref> | text | — | Claim id this one hangs under (hierarchy, not an Argument edge). |
| --attribution <attribution> | text | — | Who holds this view (required for kind=market_consensus). |
| --origin <origin> | anticipated | asked | | — | kind=question only — where the question came from: anticipated (prepared before a review: what a supervisor or client will likely ask) or asked (actually raised, e.g. a chat follow-up). Leave it off the key question and the analysis's own sub-questions. Record the answer with `add-argument --from-id <answer> --rel answers --to-id <question>`. Pass '' to clear it. |
| --audience <audience> | text | — | kind=question only — who asks it, free text ("IC", "client CFO"). Pass '' to clear it. |
| --status <status> | draft | active | superseded | falsified | revoked | — | Claim lifecycle state — NOT the model's Status dimension (that is --status-ref). |
| --context-refs <context_refs> | text | — | Comma-separated context (period) ids this node reasons across; 'A..B' is a range, every period from A to B inclusive in context order (e.g. 'FY2027E..FY2031E'). 'A,B' stays two periods. |
| --scenario-ref <scenario_ref> | text | — | Scenario id this node is about, when it holds only in one world. |
| --custom-dimensions <custom_dimensions> | text | — | Custom dimension members as `dim:member;dim2:member2` — the fifth axis of the anchor (e.g. `region:emea`). |
| --rationale <rationale> | text | — | Why this edit was made. Becomes the commit message body, so the history reads as the decision rather than the coordinates the diff already shows. `-m` and `--message` are aliases of `--rationale`. |
| --title <title> | text | — | Short commit subject (e.g. 'Q3 actuals update'). Combined with --rationale as 'title: rationale'. The mechanical summary the server would have written is kept as a Summary trailer either way. |
Exit codes: 0 — completed · 1 — written-but-invalid
Patch an <Evidence> node; only the attributes you pass are changed.
deepcell reasoning update-evidence <filename> <evidence_id>
deepcell reasoning update-evidence model.deepcell <evidence_id>| Argument | Type | Required |
|---|---|---|
| filename | text | required |
| evidence_id | text | required |
| Flag | Type | Default | What it does |
|---|---|---|---|
| --label <label> | text | — | Replacement <Label> text. What the source says, in one line of your own — "FY2028 revenue growth guided to ~70%", not the quotation. Names the row in the reasoning outline's Data and sources list; the excerpt is what the source SAID and is reproduced verbatim under it. |
| --label-file <label_file> | file | — | File holding the replacement <Label> text; '-' reads stdin. Prefer this over --label for text containing '$' — inline shell arguments mangle dollar amounts. |
| --excerpt <excerpt> | text | — | Replacement <Excerpt> text: the source's own words, verbatim. (--body is an alias: an <Evidence> has no <Body>.) |
| --excerpt-file <excerpt_file> | file | — | File holding the replacement <Excerpt> text; '-' reads stdin. Prefer this over --excerpt for text containing '$' — inline shell arguments mangle dollar amounts. |
| --source-ref <source_ref> | text | — | Replacement @sourceRef: the sourceId of a <Source> in <SourceDefinitions>. |
| --url <url> | text | — | Refused: an <Evidence> carries no URL. The URL is the <Source>'s locator — `deepcell defs update-source FILE --id <sourceId> --locator URL`. |
| --effective-date <effective_date> | text | — | Replacement @effectiveDate (ISO date, or date-time with its offset; stored as written). |
| --item-refs <item_refs> | text | — | Item ids, @order values or lo-hi order ranges (the itemOrders grammar). |
| --context-refs <context_refs> | text | — | Comma-separated context ids; 'A..B' is a range in context order. |
| --status-ref <status_ref> | text | — | Model Status dimension id (e.g. actual / projected) the evidence speaks to. |
| --scenario-ref <scenario_ref> | text | — | Scenario id this node is about, when it holds only in one world. |
| --custom-dimensions <custom_dimensions> | text | — | Custom dimension members as `dim:member;dim2:member2` — the fifth axis of the anchor (e.g. `region:emea`). |
| --rationale <rationale> | text | — | Why this edit was made. Becomes the commit message body, so the history reads as the decision rather than the coordinates the diff already shows. `-m` and `--message` are aliases of `--rationale`. |
| --title <title> | text | — | Short commit subject (e.g. 'Q3 actuals update'). Combined with --rationale as 'title: rationale'. The mechanical summary the server would have written is kept as a Summary trailer either way. |
Exit codes: 0 — completed · 1 — written-but-invalid
Create a file, or replace an existing one wholesale.
deepcell write <filename>
deepcell write model.deepcell --file ./model.deepcell| Argument | Type | Required |
|---|---|---|
| filename | text | required |
| Flag | Type | Default | What it does |
|---|---|---|---|
| --stdin | boolean | — | Read content from stdin. |
| --file <from_file> | path | — | Read content from a local file. |
| --content <from_content> | text | — | Pass file content inline (useful for MCP/programmatic access). |
| --content-base64 <from_b64> | text | — | Pass file content as a base64-encoded string. |
| --revision <revision> | text | — | Expected revision SHA for optimistic locking — the `Revision:` line `deepcell cat` prints on stderr (the `revision` field under `-f json`). The write is refused with a conflict if FILENAME changed since (a change to a different file is not a conflict). |
| --rationale <rationale> | text | — | Why this edit was made. Becomes the commit message body, so the history reads as the decision rather than the coordinates the diff already shows. `-m` and `--message` are aliases of `--rationale`. |
| --title <title> | text | — | Short commit subject (e.g. 'Q3 actuals update'). Combined with --rationale as 'title: rationale'. The mechanical summary the server would have written is kept as a Summary trailer either way. |
Exit codes: 0 — completed · 1 — written-but-invalid
revise
change a premise and reassess what depends on it
Show what one change did, semantically.
deepcell changes diff <base_revision> [head_revision]
deepcell changes diff <base_revision>| Argument | Type | Required |
|---|---|---|
| base_revision | revision | required |
| head_revision | revision | optional |
| Flag | Type | Default | What it does |
|---|---|---|---|
| --file <filename> | text | — | Filter diff by filename. |
Exit codes: 0 — completed
List document changes, newest first.
deepcell changes list [filename_pos]
deepcell changes list| Argument | Type | Required |
|---|---|---|
| filename_pos | text | optional |
| Flag | Type | Default | What it does |
|---|---|---|---|
| --file <filename> | text | — | Filter by filename. |
| --limit <limit> | integer range | 20 | Number of changes to show (1-200). |
| --since <since_revision> | revision | — | Only changes that moved the branch forward from this revision. |
| --by-commit | boolean | — | Show each commit of a grouped change on its own line, with the <parent> <sha> range that undoes just that commit. |
Exit codes: 0 — completed
Undo one change by committing its inverse onto the current tip.
deepcell changes revert <base_revision> [head_revision]
deepcell changes revert 1a2b3c4d..5e6f7a8b| Argument | Type | Required |
|---|---|---|
| base_revision | revision | required |
| head_revision | revision | optional |
| Flag | Type | Default | What it does |
|---|---|---|---|
| --yes | boolean | — | Skip confirmation prompt. |
| --rationale <rationale> | text | — | Why this edit was made. Becomes the commit message body, so the history reads as the decision rather than the coordinates the diff already shows. `-m` and `--message` are aliases of `--rationale`. |
| --title <title> | text | — | Short commit subject (e.g. 'Q3 actuals update'). Combined with --rationale as 'title: rationale'. The mechanical summary the server would have written is kept as a Summary trailer either way. |
Exit codes: 0 — completed
Commit changes staged in the project by something other than you.
deepcell commit| Flag | Type | Default | What it does |
|---|---|---|---|
| --message <message> | text | — | Commit message. |
Exit codes: 0 — completed · 1 — written-but-invalid
Show diff between two revisions (like git diff).
deepcell diff <revision_a> [revision_b]
deepcell diff <revision_a>| Argument | Type | Required |
|---|---|---|
| revision_a | text | required |
| revision_b | text | optional |
| Flag | Type | Default | What it does |
|---|---|---|---|
| --file <filename> | text | — | Filter diff by filename. |
Exit codes: 0 — completed
Show version history for the project (like git log).
deepcell log [filename_pos]
deepcell log| Argument | Type | Required |
|---|---|---|
| filename_pos | text | optional |
| Flag | Type | Default | What it does |
|---|---|---|---|
| --file <filename> | text | — | Filter by filename. |
| --limit <limit> | integer range | 20 | Number of entries to show. |
| --after <after_sha> | text | — | Pagination cursor: start AFTER this commit sha. Pass the last sha of the previous page to read the next one. |
Exit codes: 0 — completed
Replace raw XML text in a file — the last-resort editor.
deepcell replace <filename> [old_string] [new_string]
deepcell replace model.deepcell "<Old>text</Old>" "<New>text</New>"| Argument | Type | Required |
|---|---|---|
| filename | text | required |
| old_string | text | optional |
| new_string | text | optional |
| Flag | Type | Default | What it does |
|---|---|---|---|
| --replace-all | boolean | — | Replace every occurrence instead of requiring a unique match. |
| --batch <batch_file> | text | — | Replacement as a JSON object {"old_string": "...", "new_string": "..."} — a file path, '-' for stdin, or inline JSON. Use this for multiline XML. |
| --revision <revision> | text | — | Expected revision SHA for optimistic locking. |
| --workspace <workspace_slug> | text | — | Override active workspace. |
| --rationale <rationale> | text | — | Why this edit was made. Becomes the commit message body, so the history reads as the decision rather than the coordinates the diff already shows. `-m` and `--message` are aliases of `--rationale`. |
| --title <title> | text | — | Short commit subject (e.g. 'Q3 actuals update'). Combined with --rationale as 'title: rationale'. The mechanical summary the server would have written is kept as a Summary trailer either way. |
Exit codes: 0 — completed · 1 — written-but-invalid
Restore the project to a previous revision (like git checkout).
deepcell restore <revision>| Argument | Type | Required |
|---|---|---|
| revision | text | required |
| Flag | Type | Default | What it does |
|---|---|---|---|
| --file <filename> | text | — | Restore specific file only. |
| --yes | boolean | — | Skip confirmation prompt. |
| --rationale <rationale> | text | — | Why this edit was made. Becomes the commit message body, so the history reads as the decision rather than the coordinates the diff already shows. `-m` and `--message` are aliases of `--rationale`. |
| --title <title> | text | — | Short commit subject (e.g. 'Q3 actuals update'). Combined with --rationale as 'title: rationale'. The mechanical summary the server would have written is kept as a Summary trailer either way. |
Exit codes: 0 — completed
Delete a file from the project.
deepcell rm <filename>
deepcell rm model.deepcell| Argument | Type | Required |
|---|---|---|
| filename | text | required |
| Flag | Type | Default | What it does |
|---|---|---|---|
| --yes | boolean | — | Skip confirmation prompt. |
| --rationale <rationale> | text | — | Why this edit was made. Becomes the commit message body, so the history reads as the decision rather than the coordinates the diff already shows. `-m` and `--message` are aliases of `--rationale`. |
| --title <title> | text | — | Short commit subject (e.g. 'Q3 actuals update'). Combined with --rationale as 'title: rationale'. The mechanical summary the server would have written is kept as a Summary trailer either way. |
Exit codes: 0 — completed
Check out a variant branch for local edits.
deepcell variant checkout [name]
deepcell variant checkout| Argument | Type | Required |
|---|---|---|
| name | text | optional |
| Flag | Type | Default | What it does |
|---|---|---|---|
| --main | boolean | — | Switch back to the main branch (clear active variant). |
Exit codes: 0 — completed
Create a new variant branch.
deepcell variant create <name>| Argument | Type | Required |
|---|---|---|
| name | text | required |
Exit codes: 0 — completed
Show diff between a variant branch and main.
deepcell variant diff [name]
deepcell variant diff| Argument | Type | Required |
|---|---|---|
| name | text | optional |
| Flag | Type | Default | What it does |
|---|---|---|---|
| --file <file_path> | text | — | Limit the diff to a single file. |
Exit codes: 0 — completed
List variants in the workspace.
deepcell variant listExit codes: 0 — completed
Merge a variant branch back into main.
deepcell variant merge [name]
deepcell variant merge| Argument | Type | Required |
|---|---|---|
| name | text | optional |
| Flag | Type | Default | What it does |
|---|---|---|---|
| --resolve <resolve> | ours | theirs | — | Conflict resolution strategy: 'ours' keeps main, 'theirs' keeps variant. |
Exit codes: 0 — completed · 1 — conflict
verify
change one thing, see everything it affects
List Claims that depend_on ASSUMPTION_ID.
deepcell assumption impact <filename> <assumption_id>
deepcell assumption impact model.deepcell a_hiring| Argument | Type | Required |
|---|---|---|
| filename | text | required |
| assumption_id | text | required |
Exit codes: 0 — completed · 2 — unparseable-document
List every Claim in FILENAME whose status is `falsified`.
deepcell claim falsified <filename>
deepcell claim falsified model.deepcell| Argument | Type | Required |
|---|---|---|
| filename | text | required |
Exit codes: 0 — completed · 2 — unparseable-document
Walk the supersedes chain backwards from CLAIM_ID (newest first).
deepcell claim history <filename> <claim_id>
deepcell claim history model.deepcell <claim_id>| Argument | Type | Required |
|---|---|---|
| filename | text | required |
| claim_id | text | required |
Exit codes: 0 — completed · 2 — unparseable-document
Show your view of CLAIM_ID beside the consensus it is a variant of.
deepcell claim variant <filename> <claim_id>
deepcell claim variant model.deepcell <claim_id>| Argument | Type | Required |
|---|---|---|
| filename | text | required |
| claim_id | text | required |
Exit codes: 0 — completed · 2 — unparseable-document
Apply one reviewed fix, and record it as `revised`.
deepcell impact apply <filename> <item_key> --surface <surface> --locator <locator> --op <op> --target-id <target_id>
deepcell impact apply model.deepcell <item_key> --surface <surface> --locator <locator> --op <op> --target-id <target_id>| Argument | Type | Required |
|---|---|---|
| filename | text | required |
| item_key | text | required |
| Flag | Type | Default | What it does |
|---|---|---|---|
| --surface <surface> | text | required | The surface the item is on. |
| --locator <locator> | text | required | The item's address. |
| --op <op> | text | required | The reasoning op to apply: add_claim, add_assumption, add_argument, update_claim, update_assumption, supersede_claim or supersede_assumption. |
| --target-id <target_id> | text | required | The Claim or Assumption it addresses. |
| --payload <payload> | text | — | The op's fields, as JSON: attribute names plus label_text / body_text, the keys `deepcell ref op/<op>` lists. Omit for an op that needs none. |
| --new-claim <new_claim> | text | — | JSON for the replacement Claim, same keys as --payload (id required). Required by supersede_claim. |
| --new-assumption <new_assumption> | text | — | JSON for the replacement Assumption, same keys as --payload (id required). Required by supersede_assumption. |
| --expected-revision <expected_revision> | text | — | The revision you read at. A newer document is a 409 rather than an overwrite. |
| --rationale <rationale> | text | — | Why this edit was made. Becomes the commit message body, so the history reads as the decision rather than the coordinates the diff already shows. `-m` and `--message` are aliases of `--rationale`. |
| --title <title> | text | — | Short commit subject (e.g. 'Q3 actuals update'). Combined with --rationale as 'title: rationale'. The mechanical summary the server would have written is kept as a Summary trailer either way. |
Exit codes: 0 — completed
Undo one review decision.
deepcell impact reopen <filename> <item_key>
deepcell impact reopen model.deepcell <item_key>| Argument | Type | Required |
|---|---|---|
| filename | text | required |
| item_key | text | required |
Exit codes: 0 — completed
Mark items reviewed — their markers disappear.
deepcell impact review <filename> [item_keys...]
deepcell impact review model.deepcell| Argument | Type | Required |
|---|---|---|
| filename | text | required |
| item_keys... | text | optional |
| Flag | Type | Default | What it does |
|---|---|---|---|
| --since <since> | text | — | Review the items `impact show --since` lists from this revision (a SHA or HEAD~N): all of them, or only the ITEM_KEYs named. Each key's surface and locator are looked up, so neither flag is needed. |
| --surface <surface> | text | — | The surface the item is on, as `impact show` prints it (one key, without --since). |
| --locator <locator> | text | — | The item's address — the `locator` line `impact show` prints (one key, without --since). |
| --outcome <outcome> | confirmed | revised | confirmed | confirmed (default): it still reads correctly. revised: it was rewritten. |
| --kind <kind> | text | — | The item's kind. An unresolved one is refused: it needs a rebind. |
| --rationale <rationale> | text | — | Why this edit was made. Becomes the commit message body, so the history reads as the decision rather than the coordinates the diff already shows. `-m` and `--message` are aliases of `--rationale`. |
| --title <title> | text | — | Short commit subject (e.g. 'Q3 actuals update'). Combined with --rationale as 'title: rationale'. The mechanical summary the server would have written is kept as a Summary trailer either way. |
Exit codes: 0 — completed
List every place that may need review after a change.
deepcell impact show <filename> --since <base_revision>
deepcell impact show model.deepcell --since <base_revision>| Argument | Type | Required |
|---|---|---|
| filename | text | required |
| Flag | Type | Default | What it does |
|---|---|---|---|
| --since <base_revision> | text | required | The revision to compare from: a SHA from `deepcell log`, or HEAD~N for the N-th commit before the workspace's newest (resolved through the log here; the server takes a 7-64 character SHA only). Note the SHA before you edit — a premise change is usually several commits, and HEAD~1 reaches only the last of them. |
| --revision <revision> | text | — | The revision to compare to (a SHA or HEAD~N). Defaults to the working tree. |
| --threshold <threshold> | float | — | Relative move at or above which a value change is material. Defaults to the built-in 1%. |
| --include-reviewed | boolean | — | Ignore review decisions: list every item as derived, reviewed or not. Nothing marks which were reviewed (the `reviewed` count reads 0); compare with the listing without this flag. |
Exit codes: 0 — completed
List a document's lint findings, errors first — nothing else.
deepcell lint <filename>
deepcell lint model.deepcell --building| Argument | Type | Required |
|---|---|---|
| filename | text | required |
| Flag | Type | Default | What it does |
|---|---|---|---|
| --building | boolean | — | The document is still being built: a declared surface with nothing on it yet (surface_missing) is a warning, not a gating error. Drop it for the hand-off lint. |
| --since <since_revision> | text | — | Mark each finding pre-existing or new against this revision: `HEAD~1` for the commit before yours, or a SHA from `deepcell log`. |
| --measure | boolean | — | Measure every deck slide that has no fit measurement yet before reporting (one browser pass per slide in the export service). |
| --fail-on <fail_on> | any | introduced | any | With --since: `any` exits 1 on every error-level finding; `introduced` only on those the baseline did not have. |
| --rule <rule_codes> | text | — | Only the findings with these codes (`unrendered_value,check_row_nonzero`). The exit code then counts only them. |
| --summary | boolean | — | One line per code — its count and severity — instead of every finding. |
| --workspace <workspace_slug> | text | — | Override active workspace. |
Exit codes: 0 — completed · 1 — read-only-check
Warn when an edit moved something a Claim was anchored to.
deepcell reasoning-diff <file>
deepcell reasoning-diff model.deepcell| Argument | Type | Required |
|---|---|---|
| file | path | required |
| Flag | Type | Default | What it does |
|---|---|---|---|
| --accept | boolean | — | Print warnings but exit 0 (acknowledge and continue). |
| --since-branch-base <since_branch_base> | path | — | Path to a third .deepcell file representing the branch base. When supplied, drift is computed across both branch_base->HEAD and HEAD->working intervals so accumulated commits surface. |
Exit codes: 0 — completed · 1 — read-only-check · 2 — unparseable-document
Show what is wired to what in a .deepcell file.
deepcell relationships <filename>
deepcell relationships model.deepcell --type business| Argument | Type | Required |
|---|---|---|
| filename | text | required |
| Flag | Type | Default | What it does |
|---|---|---|---|
| --type <graph_type> | items | dependencies | blocks | business | unified | dependencies | Graph type (default dependencies): dependencies = what each formula reads; items = the Item hierarchy; blocks = sheets, blocks and the items each shows; business = the Item-centric Relationships workspace, with values and the reasoning nodes anchored to each item; unified = all of it plus the claims citing each item and the argument. |
| --item <item> | text | — | Answer for one item (plain output): what its formula reads, what reads it, and every other edge naming it. |
| --depth <depth> | integer range | — | With --item: formula steps to walk each way (default 1). |
| --offset <offset> | integer range | — | The first line of the page (plain output). A page that leaves lines out ends with the command for the next one. |
| --limit <limit> | integer range | — | Lines per page (plain output; default 200). |
Exit codes: 0 — completed
present
deliver the work to someone else
Create a share link for FILENAME and print its viewer URL.
deepcell share create <filename>
deepcell share create model.deepcell --permission view| Argument | Type | Required |
|---|---|---|
| filename | text | required |
| Flag | Type | Default | What it does |
|---|---|---|---|
| --permission <permission> | view | edit | view | Access level for the link. Edit links require an account. |
| --expires-days <expires_days> | integer range | — | Days until the link expires. Every link expires; omit this to take the default (90 days, or 7 for a password-less --permission edit link; 7 from an anonymous session). Larger values are clamped to that cap, with a warning saying so. |
| --expires-hours <expires_hours> | integer range | — | The same lifetime in hours, for a link that should outlive a meeting and not a day. Clamped against the same caps as --expires-days; pass one or the other, not both. |
| --password <password> | text | — | Password-protect the link (account required). |
| --label <label> | text | — | Label to recognize the link in `share list`. |
Exit codes: 0 — completed
List active share links in the workspace.
deepcell share list| Flag | Type | Default | What it does |
|---|---|---|---|
| --file <filename> | text | — | Only links for this file. |
Exit codes: 0 — completed
Revoke a share link by its id (see `share list`).
deepcell share revoke <share_id>| Argument | Type | Required |
|---|---|---|
| share_id | text | required |
Exit codes: 0 — completed
Export one document's prose as a Word file.
deepcell to-docx <filename>
deepcell to-docx model.deepcell --doc variance_note -o variance-note.docx| Argument | Type | Required |
|---|---|---|
| filename | text | required |
| Flag | Type | Default | What it does |
|---|---|---|---|
| --doc <doc_id> | text | — | Document ID (required when the file has multiple documents). |
| --scenario <scenario_id> | text | — | Document scenario ID to export. |
| --output <out_path> | text | — | Output path (default: <filename>.docx). |
| --bundle | boolean | — | Link to sibling <name>.xlsx / <name>.pptx exports (the names to-excel and to-pptx write by default). Writes only the .docx — export those too. |
Exit codes: 0 — completed
Export a .deepcell file to Excel format.
deepcell to-excel <filename>
deepcell to-excel model.deepcell -o model.xlsx| Argument | Type | Required |
|---|---|---|
| filename | text | required |
| Flag | Type | Default | What it does |
|---|---|---|---|
| --output <out_path> | text | — | Output file path (default: <filename>.xlsx). |
| --formulas | boolean | — | Export with live Excel formulas; --no-formulas writes values only. |
| --recalculate | boolean | — | Recompute formula values (needs formulas). |
| --scenario <scenario_id> | text | — | Document scenario ID to export (applies its VariableOverrides; exports that ONE scenario's numbers). |
| --switchable | boolean | — | Export EVERY scenario with a dropdown that switches between them in Excel. On by default when the document has scenarios to switch between and formulas are exported; --scenario or --no-switchable exports one scenario's numbers instead. |
| --variant <variant_id> | text | — | (unsupported) see --scenario for document scenarios. |
Exit codes: 0 — completed
Export a deck, a document or the Reasoning as a PDF.
deepcell to-pdf <filename>
deepcell to-pdf model.deepcell| Argument | Type | Required |
|---|---|---|
| filename | text | required |
| Flag | Type | Default | What it does |
|---|---|---|---|
| --from <source> | deck | doc | cheatsheet | deck | Which surface to render: the presentation deck, the prose document, or the Reasoning on A4 (the sheet the app calls the Cheatsheet). |
| --deck <deck_id> | text | — | Deck ID (required when the file has multiple decks). |
| --doc <doc_id> | text | — | Document ID (required when the file has multiple documents). |
| --scenario <scenario_id> | text | — | Document scenario ID to export. |
| --locale <locale> | en | zh | — | Language of the Cheatsheet's own words — its headings and flags, not your text (default: en). Cheatsheet only. |
| --output <out_path> | text | — | Output path (default: <filename>_<deck|doc|cheatsheet>.pdf). |
Exit codes: 0 — completed
Render a deck's slides as PNG images, to look at them.
deepcell to-png <filename>
deepcell to-png model.deepcell --deck board --slides cover,risks --out slides| Argument | Type | Required |
|---|---|---|
| filename | text | required |
| Flag | Type | Default | What it does |
|---|---|---|---|
| --deck <deck_id> | text | — | Deck ID (required when the document has multiple decks). |
| --slides <slide_ids> | text | — | Comma-separated slide IDs to render, in that order (default: every slide). |
| --scenario <scenario_id> | text | — | Document scenario ID to render. |
| --scale <scale> | float range | 1 | Pixel density: 1 is the deck canvas (1280x720 at 16:9), 2 doubles it. |
| --out <out_dir> | text | — | Directory for the PNGs (default: <filename>-slides/). |
Exit codes: 0 — completed
Export one document-defined HTML deck as editable PowerPoint objects.
deepcell to-pptx <filename>
deepcell to-pptx model.deepcell --deck board -o board.pptx| Argument | Type | Required |
|---|---|---|
| filename | text | required |
| Flag | Type | Default | What it does |
|---|---|---|---|
| --deck <deck_id> | text | — | Deck ID (required when the document has multiple decks). |
| --scenario <scenario_id> | text | — | Document scenario ID to export. |
| --output <out_path> | text | — | Output path (default: <filename>.pptx). |
Exit codes: 0 — completed
Print the browser URL to open FILENAME.
deepcell viewer <filename>
deepcell viewer model.deepcell| Argument | Type | Required |
|---|---|---|
| filename | text | required |
| Flag | Type | Default | What it does |
|---|---|---|---|
| --workspace <workspace_slug> | text | — | Override active workspace. |
| --open | boolean | — | Open the URL in the default browser. |
Exit codes: 0 — completed
session
who you are and where your work lands
Permanently delete your account and everything it owns.
deepcell account delete| Flag | Type | Default | What it does |
|---|---|---|---|
| --confirm-email <confirm_email> | text | — | Your account email. Prompted for if omitted. |
| --password <password> | text | — | Account password. Prompted for if the account has one. |
| --yes | boolean | — | Skip the interactive 'this is irreversible' confirmation. |
Exit codes: 0 — completed
Download every record DeepCell holds about your account.
deepcell account export| Flag | Type | Default | What it does |
|---|---|---|---|
| --output <out_path> | file | — | Write the export to this file instead of stdout. |
Exit codes: 0 — completed
Check this machine's setup: version, server, identity, workspace.
deepcell doctor
deepcell doctor -f json| Flag | Type | Default | What it does |
|---|---|---|---|
| --timeout <timeout> | float | 10 | How long to wait for the server probe. |
Exit codes: 0 — completed
Authenticate with the DeepCell API.
deepcell login| Flag | Type | Default | What it does |
|---|---|---|---|
| --email <email> | text | — | Email for direct login (headless/CI). |
| --password <password> | text | — | Password for direct login (headless/CI). |
Exit codes: 0 — completed
Log out and remove stored credentials.
deepcell logoutExit codes: 0 — completed
Create a new project.
deepcell project create <name>| Argument | Type | Required |
|---|---|---|
| name | text | required |
| Flag | Type | Default | What it does |
|---|---|---|---|
| --slug <slug> | text | — | URL-friendly slug. Derived from the name, with a short random suffix, if omitted — slugs are unique across all projects. |
| --description <description> | text | "" | Project description. |
Exit codes: 0 — completed
Show project details.
deepcell project info [slug]
deepcell project info| Argument | Type | Required |
|---|---|---|
| slug | text | optional |
Exit codes: 0 — completed
List projects you belong to.
deepcell project listExit codes: 0 — completed
Set the active project for subsequent commands.
deepcell project use <slug>
deepcell project use my-project| Argument | Type | Required |
|---|---|---|
| slug | text | required |
Exit codes: 0 — completed
Create a new DeepCell account (headless/CI).
deepcell register| Flag | Type | Default | What it does |
|---|---|---|---|
| --email <email> | text | — | Account email. |
| --password <password> | text | — | Account password (min 8 chars). |
| --name <display_name> | text | — | Your display name. |
| --locale <locale> | text | zh-CN | Locale (default: zh-CN). |
Exit codes: 0 — completed
Check whether a newer deepcell CLI has been published.
deepcell upgradeExit codes: 0 — completed
Ask the package index right now and update the cached answer.
deepcell upgrade check| Flag | Type | Default | What it does |
|---|---|---|---|
| --timeout <timeout> | float | 3 | How long to wait for each package index. |
Exit codes: 0 — completed
Turn the automatic upgrade check off.
deepcell upgrade disableExit codes: 0 — completed
Turn the automatic upgrade check on (the default).
deepcell upgrade enableExit codes: 0 — completed
Show the setting and the last cached answer.
deepcell upgrade statusExit codes: 0 — completed
Verify your email address.
deepcell verify-emailExit codes: 0 — completed
Show the currently authenticated user.
deepcell whoamiExit codes: 0 — completed
sync
local folder <-> workspace
Clone a workspace to a local folder.
deepcell clone <slug> [directory]
deepcell clone <slug>| Argument | Type | Required |
|---|---|---|
| slug | text | required |
| directory | text | optional |
Exit codes: 0 — completed
Download a file from the workspace to the local filesystem.
deepcell download <filename>
deepcell download cninfo-1224567890.pdf -o report.pdf| Argument | Type | Required |
|---|---|---|
| filename | text | required |
| Flag | Type | Default | What it does |
|---|---|---|---|
| --output <out_path> | text | — | Output file path (default: same as filename). |
| --revision <revision> | text | — | Download file at specific revision. |
Exit codes: 0 — completed
Apply conflict resolutions to a pending merge session.
deepcell merge apply <session_id> --resolve <strategy>| Argument | Type | Required |
|---|---|---|
| session_id | text | required |
| Flag | Type | Default | What it does |
|---|---|---|---|
| --resolve <strategy> | ours | theirs | required | Resolution strategy for all conflicts. |
| --file <filename> | text | — | Write merged result to this local file. |
Exit codes: 0 — completed · 1 — conflict
Preview a three-way merge for a .deepcell file.
deepcell merge preview <filename>
deepcell merge preview model.deepcell| Argument | Type | Required |
|---|---|---|
| filename | text | required |
| Flag | Type | Default | What it does |
|---|---|---|---|
| --base <base_rev> | text | — | Base revision SHA (defaults to last_sync_sha). |
| --theirs-rev <theirs_rev> | text | — | Revision for theirs (defaults to HEAD). |
Exit codes: 0 — completed · 1 — conflict
Resolve a sync conflict for a .deepcell file.
deepcell merge resolve <filename>
deepcell merge resolve model.deepcell| Argument | Type | Required |
|---|---|---|
| filename | text | required |
| Flag | Type | Default | What it does |
|---|---|---|---|
| --ours | text | — | Resolve all conflicts with local values. |
| --theirs | text | — | Resolve all conflicts with remote values. |
Exit codes: 0 — completed · 1 — conflict
Fetch the workspace's latest changes into the local folder.
deepcell pullExit codes: 0 — completed · 1 — conflict
Send local changes to the workspace.
deepcell push| Flag | Type | Default | What it does |
|---|---|---|---|
| --message <message> | text | "" | Commit message for the push. |
Exit codes: 0 — completed · 1 — written-but-invalid
Show local changes vs last sync.
deepcell statusExit codes: 0 — completed
learn
the five reference surfaces
Complete, valid documents to copy the shape from.
deepcell example| Flag | Type | Default | What it does |
|---|---|---|---|
| --pack <pack> | text | — | Only the core examples plus this pack's (default: every pack). |
Exit codes: 0 — completed
Write an example document to a local file.
deepcell example get <name> --into <into>| Argument | Type | Required |
|---|---|---|
| name | text | required |
| Flag | Type | Default | What it does |
|---|---|---|---|
| --into <into> | file | required | Local path to write the document to. |
| --layer <layer> | skeleton | full | full | Which document to seed from. |
| --force | boolean | — | Overwrite an existing file. |
Exit codes: 0 — completed
List every example name — the same output as bare `deepcell example`.
deepcell example list| Flag | Type | Default | What it does |
|---|---|---|---|
| --pack <pack> | text | — | Only the core examples plus this pack's (default: every pack). |
Exit codes: 0 — completed
Print one layer of an example: skeleton, full, or transcript.
deepcell example show [name] [layer]
deepcell example show| Argument | Type | Required |
|---|---|---|
| name | text | optional |
| layer | text | optional |
Exit codes: 0 — completed
Explain how DeepCell itself works.
deepcell guide [topics...]
deepcell guide orient/start| Argument | Type | Required |
|---|---|---|
| topics... | text | optional |
| Flag | Type | Default | What it does |
|---|---|---|---|
| --stage <stage> | text | — | Only this stage's topics (e.g. generate). |
| --pack <pack> | text | — | One domain pack: its vocabulary page, then its topics (e.g. finance). |
| --packs | boolean | — | List the domain packs. |
| --capabilities | boolean | — | Show the Jingwei/CLI/reference/transport capability contract. |
| --all | boolean | — | Also show the long-form reference pages and domain packs. |
| --search <search> | text | — | Topics whose name or description matches, across both catalogs. |
Exit codes: 0 — completed
Every command, flag, exit code and example as one document.
deepcell help [command...]
deepcell help| Argument | Type | Required |
|---|---|---|
| command... | text | optional |
| Flag | Type | Default | What it does |
|---|---|---|---|
| --stage <stage> | text | — | Only this stage's commands (e.g. generate). The six work stages are `deepcell guide`'s; session, sync and learn are help-only. |
| --search <search> | text | — | Commands whose name or summary matches TEXT. |
Exit codes: 0 — completed
Look up legal values, and resolve any typed id — the format's or a document's.
deepcell ref [target...]
deepcell ref lint/hardcoded_literal_in_calc| Argument | Type | Required |
|---|---|---|
| target... | text | optional |
| Flag | Type | Default | What it does |
|---|---|---|---|
| --limit <limit> | integer | 40 | Maximum search results. |
| --file <filename> | text | — | With `search`: also search this .deepcell file's ids and labels (any language), printed first. |
| --source | boolean | — | With a document id: also print what it stores, verbatim — a slide's HTML, else its XML. Compose an edit to one slide from this. |
| --workspace <workspace_slug> | text | — | Override active workspace (with a document id or --file only). |
Exit codes: 0 — completed
The invariants applicable to a .deepcell work shape.
deepcell rules [rule_ids...]
deepcell rules R2| Argument | Type | Required |
|---|---|---|
| rule_ids... | text | optional |
| Flag | Type | Default | What it does |
|---|---|---|---|
| --pack <pack> | text | — | Add this domain pack's rules when their selected surface applies. |
| --surfaces <surfaces> | text | — | Comma-separated selected surfaces: reasoning,spreadsheet,document,deck. Omit for universal rules only. |
| --all | boolean | — | Every rule, whatever work shape it applies to. Overrides --surfaces/--pack. |
| --full | boolean | — | Print every applicable rule in full, not just the index — one call, no per-rule round trips. |
Exit codes: 0 — completed
The invariants every model must satisfy, each with a stable id that other surfaces cite. Where a rule has lint backing, the listed code is what prints when the rule is broken — which is what turns it from advice into something you can check. The rest are audited in review.
deepcell rules R2| Rule | What it says | Enforced by | Lint code |
|---|---|---|---|
| rule:R1 | Native generation — Excel at the edges only | review | — |
| rule:R2 | Driver-based forecasts | lint | hardcoded_literal_in_calc |
| rule:R3 | One file per request, edited in place | review | — |
| rule:R4 | Forecasts must populate — verify by query-back | review | — |
| rule:R5 | Self-checking calculations | review | — |
| rule:R6 | Point-in-time results stay in their period | review | — |
| rule:R7 | Canonical naming and units | lint | monetary_units, duplicate_label_in_formula, placeholder_label |
| rule:R8 | Reasoning stays connected to the work it explains | lint | unanchored_claim, unanchored_assumption, exclusivity_assertion, body_itemrefs_mismatch |
| rule:R9 | Spreadsheet values have an intentional presentation | lint | unrendered_value, scalar_in_table_block |
| rule:R10 | A DCF carries a real FCF bridge | review | — |
| rule:R11 | Circular structures by deliberate convention — and seeded | lint | circular_calculation_unconverged, circular_calculation_slow |
| rule:R12 | Assumptions are grounded | lint | unsourced_actual, source_unused, input_grounding_gap, source_unaddressed, cites_row_unanchored, source_period_outside_filing, evidence_unanchored |
| rule:R13 | Statuses and periods declare what they mean | lint | undeclared_status_archetype, undeclared_context_state |
| rule:R14 | Analytical reasoning states its conclusion | lint | missing_apex_recommendation, dangling_conclusion_ref |
| rule:R15 | Prose that asserts a value must link it | lint | uncited_level, stale_literal_near_calc, typed_figure_in_title |
| rule:R16 | An outward address lives in exactly one place | review | — |
| rule:R17 | A cross-surface reference is a deepcell: URI | review | — |
| rule:R18 | Overriding a calculated cell removes its formula | review | — |
| rule:R19 | Analytical reasoning states the question it answers | lint | dangling_key_question_ref, ambiguous_key_question, key_question_not_answered, answers_non_question, asks_about_non_question, unreviewed_key_question |
Complete, valid documents to start from, each chosen for the mechanic it demonstrates rather than its industry. They are rebuilt from their own transcripts and linted in CI, so none of them is a stale snippet. Copy the line under one to seed a file with it.
| Example | The mechanic it shows | Domain |
|---|---|---|
| charts/gantt-schedule | Gantt intervals and milestones on a calendar axis | published five-task schedule illustration |
| charts/mekko-mix | Mekko variable-width categories with spreadsheet-owned share and total series | published produce mix illustration |
| charts/metro-produce-pilot | One decision traced through spreadsheet-owned waterfall, Mekko, Gantt and a bound three-slide deck | illustrative grocery produce pilot |
| charts/waterfall-bridge | waterfall steps, calculated totals, connectors and display-only subtotal labels | published bridge illustration |
| decision/board-readout | qualitative board readout — a question, its answer, the counter-case and the evidence gates, delivered as a memo and a three-slide deck bound to the same nodes, with no grid | platform strategy / board governance |
| decision/vendor-diligence | qualitative evidence-to-decision graph with a linked memo and no grid | procurement / security diligence |
| finance/cn-a-share-3s-dcf | extraction-based raw/model layering with filing provenance | A-share equity research |
| finance/dcf-memo | a compact single-stage DCF whose valuation memo quotes every figure through live cell references, with the terminal share as the stated weakness | corporate finance / valuation memo |
| finance/ic-deck | a styled multi-slide deck bound onto a finished model, then exported | investment committee readout |
| finance/saas-dcf | the full three-statement + DCF loop | finance |
| ingest/board-pack | faithful workbook import — row/column mapping, converted formulas, per-cell provenance | public transport, board reporting |
| manufacturing/line-debottleneck | an author-drawn SVG exhibit whose geometry carries the argument | industrial manufacturing, plant throughput |
| ops/headcount-plan | items × contexts, drivers, and scenarios | HR / operations |
| ops/variance-to-plan | monthly plan-versus-actual review — two statuses on every line, derived variances that read both, a zero self-check, and a memo that attributes the gap | retail store operations |
| product/launch-decision | small all-four-surface premise change with selective reassessment | product launch governance |
| project/build-budget | status axis (committed / actual / forecast) and variance self-checks | construction, grants |
| research/experiment-results | custom dimensions, actual vs expected status, and a <Document> write-up | science / experimental research |
| supply/inventory-plan | sensitivity blocks | logistics |
Bind start, end, and milestone spreadsheet Items to a shared Gantt chart. Dates are transcribed from the public think-cell datasheet. The separate public chart screenshot informs layout only; it uses different dates.
deepcell example get charts/gantt-schedule --into <into>Calculate totals and shares as spreadsheet Items; use the total series for category width and share series for stacks. The numeric inputs follow the think-cell public manual; adjusted labels are DeepCell-authored. Default segment and legend colors follow DeepCell's categorical chart tokens.
deepcell example get charts/mekko-mix --into <into>Start with a decision question and three supporting claims. Bind the profit bridge, market shares and launch dates to spreadsheet Items, then bind three deck charts and their takeaway text to the same model. Slide-owned leaders connect quoted key points to stable chart point or difference-annotation IDs in both deck renderers. The economics quote targets the model-bound gap between current and pilot run rates, not either bar alone. The values and dates are synthetic planning inputs, not observations of a real retailer.
deepcell example get charts/metro-produce-pilot --into <into>Keep waterfall subtotal arithmetic in spreadsheet Items, bind step roles and connectors in ChartSpec, then inspect default and adjusted shared scenes. Numeric cells follow the think-cell public manual; the adjusted style is DeepCell-authored, not a pixel-identical output claim.
deepcell example get charts/waterfall-bridge --into <into>The shortest complete path from a board question to a readout. Reasoning is written first and declares the question, the recommendation, the counter and the gates the evidence must pass; the memo quotes those nodes; the deck binds its cover and its evidence page to the same nodes and to the sources, so no slide restates a sentence the argument does not hold. The surfaces are declared up front, so `describe --lint` says which promise is still open.
deepcell example get decision/board-readout --into <into>A complete decision can be qualitative: source-backed Evidence and explicit Assumptions connect to a declared conclusion, while the memo links those live nodes instead of inventing Items, Contexts, Values, a Sheet, or a Block.
deepcell example get decision/vendor-diligence --into <into>An A-share issuer's three consolidated CAS statements pulled from cninfo with `deepcell ingest cn` and stored as an immutable raw layer — 元, full precision, bilingual labels, one <Source kind="filing"> whose <Cites at="page:N"> deep-link each statement — with historical mapping calcs onto the CAS chart's `_Model` ids, six mapping checks that read 0 on both filed years, and a P&L + DCF projection (the model-scopes default) on top.
deepcell example get finance/cn-a-share-3s-dcf --into <into>The shortest complete Reasoning → Spreadsheet → Document valuation. One actual base year, three forecast years driven by five rate items, a terminal value, and an enterprise value; the memo quotes the cells rather than restating them, and the argument names what the reader should push on — the terminal value carries five sixths of the answer. The surfaces are declared first, so `describe --lint` says which promise is still open.
deepcell example get finance/dcf-memo --into <into>The model is done and the audience is a committee. Starting from the finished Lumenwave DCF, the transcript records the recommendation as a Claim first, then adds one deck, applies the consulting style pack verbatim, and writes four slides — the cover that asks the committee's question and nothing else, the answer that states the decision with its cash-flow exhibit, the page that says where the value is decided, and a closing slide that says what would change it, each a different shape on the pack's vocabulary — whose every number, chart, sentence of reasoning and footnote is a binding against the model's real ids — value, series, chart, reasoning and source — before reading `describe --lint` for the deck codes, exporting the .pptx and handing a reviewer a share link.
deepcell example get finance/ic-deck --into <into>A linked income statement, balance sheet and cash flow statement feeding an unlevered DCF whose every forecast number traces to a driver item — with the three self-checks (BS_Check, CF_Recon, EV_Check) that prove the loop closed.
deepcell example get finance/saas-dcf --into <into>One `deepcell import` turns a board pack into the file — statuses with an archetype, contexts with a state, scale and currency on every monetary row, the pack's own formulas as live calcs, and one workbook Source citing the cell each number came from — and the work is what comes before it (reading the sheet into two JSON payloads) and after it (the round trip, verified before anything is built on top). Nothing is projected: three closed months and their quarter go in, and the same come out.
deepcell example get ingest/board-pack --into <into>The measured line is already in the file and the numbers are not in dispute; what a table of five station cycle times cannot say is that the leak test's rejects re-enter the line upstream, at the weld cell. So the exhibit is a drawing. The transcript records the judgement as a Claim first, adds one deck, applies the product pack verbatim plus the ten classes the drawing needs, and writes an inline `<svg>` on the shape subset — `<defs><marker>` arrowheads reached by a local `url(#id)` fragment, colour and weight taken from the pack's own tokens so a restyle carries the drawing with it. Every figure stays bound, beside the drawing: inside one a `<dc-value>` is drawn only within a `<text>`, as a live `<tspan>`, and paints nothing anywhere else (`deck_bind_in_svg`).
deepcell example get manufacturing/line-debottleneck --into <into>Two hiring plans out of one model — every derived number traces to an editable driver row, and the second scenario is the handful of cells that differ rather than a second copy of the file. A check row rolls the whole group forward by a second route and reads 0 under both scenarios, and a <Document> summary quotes the same Q4 cells twice — once per scenario, by the `@scenario` tail of the cell locator. An average of a count lands on halves, so it keeps `count` and takes its one decimal from an `item:` format rule rather than a change of type.
deepcell example get ops/headcount-plan --into <into>The shortest complete variance-to-plan: plan and actual live on the Status dimension of the same cells, the variances are calculations that read both statuses (`Item[ctx]#actual - Item[ctx]#plan`), one check proves the three variances reconcile, and the memo explains the month by quoting the cells and the claim that attributes the gap. The surfaces are declared first, so `describe --lint` says which promise is still open.
deepcell example get ops/variance-to-plan --into <into>One calculation supports a declared launch decision, a memo, and a one-slide deck. The transcript starts from the before-state, changes one demand premise, discovers impact and backlinks, preserves the conclusion after checking its boundary, reconnects the replacement assumption, and verifies every selected surface.
deepcell example get product/launch-decision --into <into>Three readings of the same cell live on the Status dimension — not in three parallel item trees — a calc reaches across them with `Item[ctx]#status`, and every allocation and variance carries a cross-check whose correct answer is known to be 0.
deepcell example get project/build-budget --into <into>A third axis and a second reading on the same row — the phenotype class is a custom Dimension that slices every data row instead of doubling it, and observed sits beside predicted under one item id rather than under two. The data is Mendel's published F2 counts for his seven traits, so the file has to carry a real result and a real objection to it at once: the counts fit 3:1, and CHIDIST says they fit it more closely than sampling error alone explains. The readout itself ships as a <Document>: every number in the prose is a link, so re-running the counts refreshes the values and identifies prose whose surrounding judgment must be reassessed explicitly.
deepcell example get research/experiment-results --into <into>Sensitivity is a native `blockType="sensitivity"` block whose every cell is a transient recompute of the model — never a ladder of near-duplicate perturbation items — shown in all three legal shapes: 2-variable grid, 1-variable table, and scenario comparison.
deepcell example get supply/inventory-plan --into <into>