CLI reference

The DeepCell CLI, in full

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

Start here

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 | sh

Windows (PowerShell)

irm https://deepcell.net/install.ps1 | iex

Then check the install in one call: version, whether the service is reachable, who you are, and which project is active.

deepcell doctor

Read the guided walkthrough, then list what is in your project. If the second one prints, you are connected.

deepcell guide orient/start deepcell ls

Signing 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 login

The five surfaces

The 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.

SurfaceThe question you are askingWhat it answers
deepcell helpHow do I invoke this exactly?Every command, flag, exit code and example as one document.
deepcell rulesWhat must always hold?The invariants applicable to a .deepcell work shape.
deepcell guideWhat is the procedure for this stage?Explain how DeepCell itself works.
deepcell refWhat values are legal here?Look up legal values, and resolve any typed id.
deepcell example getWhat 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.6.3

Every guide topic

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
TopicStageWhat it covers
orient/startorientInspect the environment and existing work before choosing a route
orient/how-to-workorientShared working contract for connected, challengeable DeepCell work
orient/surface-ownershiporientKnow which surface owns each fact, judgment, explanation, and takeaway
orient/conceptsorientUnderstand the six core concepts used by the Spreadsheet surface
orient/choose-shapeorientChoose the decision, evidence, and work surfaces the question needs
ingest/tabularingestBring external tables in faithfully without inventing projections
generate/first-filegenerateCreate one valid file for the selected surfaces and build on it
generate/structuregenerateDefine Spreadsheet items, contexts, statuses, and dimensions
generate/calcsgenerateEncode derived Spreadsheet values as dependency-tracked calculations
generate/valuesgenerateAuthor input values and provenance at their exact coordinates
generate/whole-docgenerateUse one whole-document write when the complete initial shape is known
revise/premise-changereviseChange a premise, recompute calculations, and reassess every connected surface
revise/valuesreviseChange existing values with the narrowest typed operation
revise/structurereviseChange definitions while preserving references and dependent work
revise/scenariosreviseCompare what-if overlays without copying the underlying work
revise/reasoningreviseRecord claims and premises incrementally and preserve their lifecycle
revise/historyreviseReview and preserve the versioned history of the work
verify/lintverifyRun structural and reasoning lint as the first verification move
verify/query-backverifyRead calculated outputs back and catch an empty or misaddressed grid
verify/reviewverifyAudit every selected surface before calling the work complete
present/layoutpresentLay out Spreadsheet results for inspection and delivery
present/prosepresentAuthor long-form explanation with resolvable same-file references
present/chartspresentTurn selected Spreadsheet ranges into charts without copying values
present/deckspresentBuild a concise Deck whose takeaways remain linked to their basis
present/deck-stylepresentPick one of four deck style packs and apply its CSS before writing slides
present/deliverpresentShare or export finished work within the active transport limits
overviewreferenceTemplate — three-statement model architecture: sheet layout, item order ranges, and the IS/BS/CF golden loop
assumptionsreferenceTemplate — assumptions sheet: driver categories, order ranges, and why drivers are Values while anything derived is a CalcDef
income-statementreferenceTemplate — income statement items and formulas, revenue through net income
balance-sheetreferenceTemplate — balance sheet items and formulas, plus the assets = liabilities + equity check
cash-flowreferenceTemplate — cash flow statement: operating/investing/financing sections and the cash reconciliation
dcfreferenceTemplate — DCF valuation: free cash flow build, WACC, terminal value, and the equity bridge
scenariosreferenceTemplate — worked bull/base/bear setup: which variables to override and by how much (for the mechanics, read revise/scenarios)
validationreferenceTemplate — integrity check items every model should carry (balance check, cash reconciliation, coverage ratios)
orchestratorreferenceHow to run DeepCell work — what the job is, when it is done, and how to look things up instead of guessing
bankreferenceTemplate — bank / NIM model: rate × balance grid, net interest income, efficiency ratio, provision
insurancereferenceTemplate — insurance model: earned premium, loss/expense ratios, combined ratio, underwriting result
reitreferenceTemplate — REIT model: NOI, FFO, AFFO, real-estate depreciation add-back
build-from-scratchreferenceBuild playbook — starting with no existing .deepcell file, from empty project to a valid model
account-categorizationreferenceMapping a company's own statement labels onto a standard chart of accounts, without editing the extraction
chart-of-accounts-gaapreferenceTemplate — US GAAP standard chart of accounts (order 4000-4299), item ids matching the statement templates
chart-of-accounts-ifrsreferenceTemplate — IFRS standard chart of accounts, and where it diverges from US GAAP
chart-of-accounts-casreferenceTemplate — Chinese Accounting Standards (企业会计准则) chart of accounts for A-share filers
non-gaap-metricsreferenceTemplate — non-GAAP adjusted metrics (order 4300-4399): adjusted EBITDA, net income, and EPS
schema-matchingreferenceMapping external data (xlsx/csv) to .deepcell item and context dimensions
house-rulesreferenceHouse rules — the non-negotiable invariants every model must satisfy
review-dimensionsreferenceReview dimensions — the model audit checklist (integrity, formulas, coverage, sanity, grounding, reasoning, intent, presentation)
model-scopesreferenceChoosing model scope — P&L+DCF default, 3-statement triggers, industry models
sec-extractionreferenceSEC extraction — raw historical layer, model mapping layer, provenance rules
cn-extractionreferenceA-share (cninfo) extraction — CAS statements from report PDFs, #page deep links, canonical item map
excel-importreferenceExcel import — dimension mapping, formula conversion, excel_import provenance

Every command

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 help

orient

look at what exists before adding to it

cat

Print file content (XML) to stdout.

deepcell cat <filename>

deepcell cat model.deepcell
ArgumentTypeRequired
filenametextrequired
FlagTypeDefaultWhat it does
--revision <revision>textShow file at specific revision.
--workspace <workspace_slug>textOverride active workspace.

Exit codes: 0 — completed

cell-meta

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
ArgumentTypeRequired
filenametextrequired
item_ref_postextoptional
context_ref_postextoptional
FlagTypeDefaultWhat it does
--item <item_opt>textItem ref (alternative to the ITEM_REF positional).
--context <context_opt>textContext ref (alternative to the CONTEXT_REF positional).
--status <status_ref>textStatus 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>textScenario dimension (omit for the base cell).
--custom-dimensions <custom_dimensions>textCustom dimensions as 'dim:member;dim:member', e.g. 'geography:na'.

Exit codes: 0 — completed

describe

Show a document's shape: sheets, the five dimensions, documents, decks.

deepcell describe <filename>

deepcell describe model.deepcell --lint
ArgumentTypeRequired
filenametextrequired
FlagTypeDefaultWhat it does
--include-reasoningbooleanAppend a compact summary of the document reasoning graph.
--scenario <scenario_id>textScenario ID whose value overrides to apply.
--lintbooleanInclude canonical structural findings; exit 1 on error-level ones. Warn-level findings print and exit 0 — read them.
--since <since_revision>textWith --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`.
--measurebooleanWith --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 upload, or was restyled.
--workspace <workspace_slug>textOverride active workspace.

Exit codes: 0 — completed · 1 — read-only-check

grep

Search for items/values matching a pattern in .deepcell files.

deepcell grep <pattern>

deepcell grep Revenue
ArgumentTypeRequired
patterntextrequired
FlagTypeDefaultWhat it does
--file <filename>textSearch within a specific file.
--ignore-casebooleanCase-insensitive search.

Exit codes: 0 — completed

ls

List files in the active workspace.

deepcell ls

Exit codes: 0 — completed

query

Query a .deepcell file.

deepcell query <filename> [item_ref] [context_ref] [status_ref]

deepcell query model.deepcell Revenue FY2026E
ArgumentTypeRequired
filenametextrequired
item_reftextoptional
context_reftextoptional
status_reftextoptional
FlagTypeDefaultWhat it does
--status <status_opt>textStatus 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>textScenario dimension (omit for default scenario).
--custom-dimensions <custom_dimensions>textCustom dimensions as 'dim:member;dim:member', e.g. 'geography:na'.
--cells <cells_arg>textRead 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). This is the check-my-outputs form — a comma-separated CONTEXT_REF only walks one item.
--sheet <sheet_id>textRender a full sheet as markdown table.
--block <block_id>textRender a specific block within a sheet.
--workspace <workspace_slug>textOverride active workspace.

Exit codes: 0 — completed

ingest

external data in (skip for from-scratch work)

import

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"}]'
ArgumentTypeRequired
filepathrequired
FlagTypeDefaultWhat it does
--items <items>textrequiredItems JSON string or path to JSON file.
--contexts <contexts>textrequiredContexts JSON string or path to JSON file.
--name <name>textName for the .deepcell file (default: input filename).
--workspace <workspace>textTarget workspace slug.
--aggregations <aggregations>textAggregation rules JSON string or path to JSON file.
--keep-rawbooleanStore raw values alongside aggregated results.

Exit codes: 0 — completed · 1 — partial

ingest cn extract

Extract one statement's table — rows, canonical items, #page deep link.

deepcell ingest cn extract <pdf_url>

deepcell ingest cn extract https://static.cninfo.com.cn/finalpage/2026-03-28/1224567890.PDF --statement income --persist
ArgumentTypeRequired
pdf_urltextrequired
FlagTypeDefaultWhat it does
--statement <statement>text合并利润表Chinese heading or income | balance | cash_flow
--persistbooleanMirror the source PDF into DeepCell storage and return a durable `source_page_url` to record as the <Source> <Locator>. --no-persist skips the mirror (faster, but the only url you get back is the volatile cninfo link).

Exit codes: 0 — completed

ingest cn filings

List annual / interim reports with PDF permalinks.

deepcell ingest cn filings <code>

deepcell ingest cn filings 600519 --type annual --count 5
ArgumentTypeRequired
codetextrequired
FlagTypeDefaultWhat it does
--type <filing_type>textannualannual | interim | semiannual | q1 | q3
--count <count>integer range5number 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
ArgumentTypeRequired
keywordstextrequired

Exit codes: 0 — completed

ingest cn statements

Locate the financial statements inside a report PDF (page + scale).

deepcell ingest cn statements <pdf_url>
ArgumentTypeRequired
pdf_urltextrequired

Exit codes: 0 — completed

generate

create one file, then build only the surfaces the work needs

deck add

Add a Deck to a .deepcell file.

deepcell deck add <filename> --name <name>

deepcell deck add model.deepcell --name <name>
ArgumentTypeRequired
filenametextrequired
FlagTypeDefaultWhat it does
--deck-id <deck_id>textDeck id. Omit to let the server assign one.
--name <name>textrequiredDisplay name for the deck.
--aspect-ratio <aspect_ratio>16:9 | 4:3Slide aspect ratio. Omit for the format default (16:9).
--index <index>integerPosition among decks (0-based).
--revision <revision>textExpected revision SHA for optimistic locking.
--workspace <workspace_slug>textOverride active workspace.
--rationale <rationale>textWhy 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>textShort 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-runbooleanValidate 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.

Exit codes: 0 — completed

deck add-slide

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>
ArgumentTypeRequired
filenametextrequired
FlagTypeDefaultWhat it does
--deck <deck_id>textrequiredDeck to add the slide to.
--slide-id <slide_id>textSlide id. Omit to let the server assign one.
--name <name>textrequiredDisplay name for the slide.
--index <index>integerPosition within the deck (0-based).
--revision <revision>textExpected revision SHA for optimistic locking.
--workspace <workspace_slug>textOverride active workspace.
--rationale <rationale>textWhy 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>textShort 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-runbooleanValidate 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.

Exit codes: 0 — completed

deck bind

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>
ArgumentTypeRequired
filenametextrequired
FlagTypeDefaultWhat it does
--deck <deck_id>textrequiredDeck the binding lives on.
--binding-id <binding_id>textrequiredBinding id. Reusing one updates it in place.
--binding-kind <binding_kind>value | series | chart | document_stat | reasoning | source | htmlblockrequiredWhat the binding renders. Decides which address flag it takes.
--field <field>textWhich text of the addressed thing to render, not an address itself.
--ref <ref>textSingle coordinate the binding reads.
--refs <refs>textComma-separated coordinates — the address a `series` binding takes. Single-quote an item id that contains a comma.
--metric <metric>dataSourceCount | claimCount | assumptionCount | evidenceCountFor --binding-kind document_stat only: which element type to count.
--number-format <number_format>textExcel-style number pattern the value renders with — `#,##0.0`, `0.0%`, `#,##0;(#,##0)`. It labels the stored value and never divides it.
--prefix <prefix>textText rendered before the value.
--suffix <suffix>textText rendered after the value.
--revision <revision>textExpected revision SHA for optimistic locking.
--workspace <workspace_slug>textOverride active workspace.
--rationale <rationale>textWhy 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>textShort 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-runbooleanValidate 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.

Exit codes: 0 — completed

deck brand

Recolour a deck by ROLE without touching its stylesheet.

deepcell deck brand <filename> --deck <deck_id>

deepcell deck brand model.deepcell --deck <deck_id>
ArgumentTypeRequired
filenametextrequired
FlagTypeDefaultWhat it does
--deck <deck_id>textrequiredDeck to recolour.
--set <assignments>textColour-role override, repeatable: --set accent=#0A5C3B --set ink=#111111. Roles are the pack's colour names — accent, ink, series-1 … (`deepcell ref deck-style/hooks`).
--clearbooleanRemove the brand; the pack's own palette shows again.
--revision <revision>textExpected revision SHA for optimistic locking.
--workspace <workspace_slug>textOverride active workspace.
--rationale <rationale>textWhy 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>textShort 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-runbooleanValidate 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.

Exit codes: 0 — completed

deck delete

Delete a deck and every slide on it.

deepcell deck delete <filename> <deck_id>

deepcell deck delete model.deepcell <deck_id>
ArgumentTypeRequired
filenametextrequired
deck_idtextrequired
FlagTypeDefaultWhat it does
--revision <revision>textExpected revision SHA for optimistic locking.
--workspace <workspace_slug>textOverride active workspace.
--rationale <rationale>textWhy 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>textShort 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-runbooleanValidate 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.

Exit codes: 0 — completed

deck delete-slide

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>
ArgumentTypeRequired
filenametextrequired
slide_idtextrequired
FlagTypeDefaultWhat it does
--deck <deck_id>textrequiredDeck the slide belongs to.
--revision <revision>textExpected revision SHA for optimistic locking.
--workspace <workspace_slug>textOverride active workspace.
--rationale <rationale>textWhy 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>textShort 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-runbooleanValidate 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.

Exit codes: 0 — completed

deck rename

Change a deck's display NAME.

deepcell deck rename <filename> <deck_id> <new_name>

deepcell deck rename model.deepcell <deck_id> <new_name>
ArgumentTypeRequired
filenametextrequired
deck_idtextrequired
new_nametextrequired
FlagTypeDefaultWhat it does
--revision <revision>textExpected revision SHA for optimistic locking.
--workspace <workspace_slug>textOverride active workspace.
--rationale <rationale>textWhy 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>textShort 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-runbooleanValidate 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.

Exit codes: 0 — completed

deck rename-slide

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>
ArgumentTypeRequired
filenametextrequired
slide_idtextrequired
new_nametextrequired
FlagTypeDefaultWhat it does
--deck <deck_id>textrequiredDeck the slide belongs to.
--revision <revision>textExpected revision SHA for optimistic locking.
--workspace <workspace_slug>textOverride active workspace.
--rationale <rationale>textWhy 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>textShort 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-runbooleanValidate 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.

Exit codes: 0 — completed

deck reorder

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>
ArgumentTypeRequired
filenametextrequired
deck_idtextrequired
to_indexintegerrequired
FlagTypeDefaultWhat it does
--revision <revision>textExpected revision SHA for optimistic locking.
--workspace <workspace_slug>textOverride active workspace.
--rationale <rationale>textWhy 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>textShort 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-runbooleanValidate 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.

Exit codes: 0 — completed

deck reorder-slide

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>
ArgumentTypeRequired
filenametextrequired
slide_idtextrequired
to_indexintegerrequired
FlagTypeDefaultWhat it does
--deck <deck_id>textrequiredDeck the slide belongs to.
--revision <revision>textExpected revision SHA for optimistic locking.
--workspace <workspace_slug>textOverride active workspace.
--rationale <rationale>textWhy 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>textShort 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-runbooleanValidate 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.

Exit codes: 0 — completed

deck unbind

Remove a binding, leaving whatever the slide's HTML says in its place.

deepcell deck unbind <filename> <binding_id> --deck <deck_id>

deepcell deck unbind model.deepcell <binding_id> --deck <deck_id>
ArgumentTypeRequired
filenametextrequired
binding_idtextrequired
FlagTypeDefaultWhat it does
--deck <deck_id>textrequiredDeck the binding lives on.
--revision <revision>textExpected revision SHA for optimistic locking.
--workspace <workspace_slug>textOverride active workspace.
--rationale <rationale>textWhy 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>textShort 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-runbooleanValidate 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.

Exit codes: 0 — completed

defs add-axis-member

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
ArgumentTypeRequired
filenametextrequired
FlagTypeDefaultWhat it does
--sheet <sheet_id>textrequiredSheet containing the block.
--block <block_id>textrequiredblockId to edit.
--axis <axis>rows | columnsrequiredWhich axis to edit: 'rows' (the block's @itemOrders) or 'columns' (its @contextRefs).
--member <member>item | contextrequiredWhat kind of id --ref is. Pair 'item' with rows, 'context' with columns.
--ref <ref>textrequiredThe item id or context id to add.
--index <index>integer range0-based position on the axis (default: append at the end).
--revision <revision>textExpected revision SHA for optimistic locking.
--workspace <workspace_slug>textOverride active workspace.
--rationale <rationale>textWhy 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>textShort 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-runbooleanValidate 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.

Exit codes: 0 — completed · 1 — nothing-changed

defs add-block

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
ArgumentTypeRequired
filenametextrequired
FlagTypeDefaultWhat it does
--sheet <sheet_id>textrequiredSheet to add the block to.
--block-type <block_type>textrequiredOne of: table, chart, sensitivity, key_value, text. The server stores any string, but the renderer skips a block whose type it does not know, so anything else is written and never drawn.
--name <name>textrequiredDisplay name / section heading.
--item-orders <item_orders>textComma-separated rows, in order: item ids, @order values, or order ranges (e.g. 'revenue,cogs,gross_profit' or '4000-4099'). Stored verbatim as @itemOrders; the reader resolves each token — a number or a range matches @order, anything else matches an itemId. Omit and the block renders empty — see the note above.
--context-refs <context_refs>textComma-separated context ids forming the block's columns, in order (e.g. 'FY2024,FY2025'). Omit to show every context.
--index <index>integerInsertion index within the sheet (default: append at the end).
--format-ref <format_ref>textFormatDefinitions 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>bar | bar_stacked | bar_horizontal | line | area | pie | donut | waterfall | range_bar | scatterChart type (chart blocks only). 'waterfall' bridges deltas between declared totals; 'range_bar' draws a low..high band per category (the football field).
--category-axis <category_axis>context | itemWhich dimension is the category axis (chart blocks only).
--total-item-refs <total_item_refs>textWhitespace/comma-separated refs naming the plotted categories that rest on the baseline instead of floating on the running sum (--chart-type=waterfall only). Declared, never inferred: omit it and every step is a delta.
--revision <revision>textExpected revision SHA for optimistic locking.
--workspace <workspace_slug>textOverride active workspace.
--rationale <rationale>textWhy 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>textShort 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-runbooleanValidate 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.

Exit codes: 0 — completed · 1 — nothing-changed

defs add-calc

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
ArgumentTypeRequired
filenametextrequired
FlagTypeDefaultWhat it does
--item <item_id>textrequiredItem the calc resolves into (itemId).
--calc-id <calc_id>textStable calcId for the new calc (e.g. 'calc_stress_low'). Errors if the id is already taken. Omit to let the server assign one — 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>textrequiredJingwei formula, e.g. "Revenue[PREVIOUS] * 1.1".
--context <context_ref>textPin calc to one or more contextRefs. Pass a CSV (e.g. 'FY25,FY26,FY27') 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 the item lacks a literal value.
--scenario <scenario_ref>textLimit calc to this scenarioRef.
--status <status_ref>textPin 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.
--revision <revision>textExpected revision SHA for optimistic locking.
--workspace <workspace_slug>textOverride active workspace.
--rationale <rationale>textWhy 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>textShort 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-runbooleanValidate 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.

Exit codes: 0 — completed · 1 — nothing-changed

defs add-context

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
ArgumentTypeRequired
filenametextrequired
FlagTypeDefaultWhat it does
--name <name>textThe 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>textstatusRef (optional).
--context <context_ref>textExplicit contextRef (else server-assigned).
--kind <kind>textContext 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>textPeriod state: closed | open | future. This is what says whether the period is over — the question the A/E suffix on a context id used to answer by accident. Only meaningful for --kind period.
--as-of <as_of>textISO YYYY-MM-DD the period's numbers are stated as of. Documentation and lint input only; never consulted when rendering.
--index <index>integerPosition in contexts list (omit to append at end).
--revision <revision>textExpected revision SHA for optimistic locking.
--workspace <workspace_slug>textOverride active workspace.
--rationale <rationale>textWhy 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>textShort 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-runbooleanValidate 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.

Exit codes: 0 — completed · 1 — nothing-changed

defs add-doc

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
ArgumentTypeRequired
filenametextrequired
FlagTypeDefaultWhat it does
--doc-id <doc_id>textDocument identifier (@docId). Must match [A-Za-z0-9_.-]+ so a deepcell:doc/<id> reference to it parses back.
--name <name>textDisplay title.
--lang <lang>textBCP-47 language tag, e.g. 'en' or 'zh'.
--body-file <body_file>fileFile holding the initial body (else empty).
--notation <notation>markdown | textWhat the body IS. A new document is markdown unless you say 'text', which also stops anchors being stamped into it.
--index <index>integerPosition among documents.
--revision <revision>textExpected revision SHA for optimistic locking.
--workspace <workspace_slug>textOverride active workspace.
--rationale <rationale>textWhy 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>textShort 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-runbooleanValidate 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.

Exit codes: 0 — completed · 1 — nothing-changed

defs add-format

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'
ArgumentTypeRequired
filenametextrequired
format_idtextrequired
FlagTypeDefaultWhat it does
--rule <rule_strs>textOne rule as semicolon-separated key=value pairs, e.g. 'target=default; font_color=#000000; number_format=#,##0'. Commas inside a value (such as Excel number formats) are preserved. Repeat the flag for multiple rules. Keys: target, font_color, background_color, font_weight, font_style, font_name, font_size, text_align, indent, number_format, border_top/bottom/left/right.
--inheritboolean--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>textExpected revision SHA for optimistic locking.
--workspace <workspace_slug>textOverride active workspace.
--rationale <rationale>textWhy 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>textShort 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-runbooleanValidate 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.

Exit codes: 0 — completed · 1 — nothing-changed

defs add-item

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
ArgumentTypeRequired
filenametextrequired
FlagTypeDefaultWhat it does
--name <name>textrequiredItem name (itemId basis).
--label <label>textDisplay 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>integerHierarchy level (0-3).
--parent <parent_item_id>textParent itemId (omit for root).
--index <index>integerPosition among siblings (omit to append at end).
--order <order>integerExplicit @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>textDataType element (e.g. 'monetary', 'percentage', 'number').
--unit <unit>textUnit element (e.g. '%', 'hours', 'tonnes').
--scale <scale>integerScale element (units multiplier exponent).
--currency <currency>textCurrency element (ISO code, e.g. 'USD').
--revision <revision>textExpected revision SHA for optimistic locking.
--workspace <workspace_slug>textOverride active workspace.
--rationale <rationale>textWhy 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>textShort 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-runbooleanValidate 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.

Exit codes: 0 — completed · 1 — nothing-changed

defs add-period

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
ArgumentTypeRequired
filenametextrequired
FlagTypeDefaultWhat it does
--name <name>textThe 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>textstatusRef (e.g. 'projected').
--context <context_ref>textExplicit contextRef (else server-assigned).
--kind <kind>textContext 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>textPeriod state: closed | open | future. This is what says whether the period is over — the question the A/E suffix on a context id used to answer by accident. Only meaningful for --kind period.
--as-of <as_of>textISO YYYY-MM-DD the period's numbers are stated as of. Documentation and lint input only; never consulted when rendering.
--index <index>integerPosition in contexts list (omit to append at end).
--revision <revision>textExpected revision SHA for optimistic locking.
--workspace <workspace_slug>textOverride active workspace.
--rationale <rationale>textWhy 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>textShort 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-runbooleanValidate 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.

Exit codes: 0 — completed · 1 — nothing-changed

defs add-rule

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'
ArgumentTypeRequired
filenametextrequired
format_idtextrequired
FlagTypeDefaultWhat it does
--target <target>textrequiredRule @target selector (see `deepcell ref format`).
--bg-color <background_color>textHex color '#RRGGBB' for backgroundColor.
--font-color <font_color>textHex color '#RRGGBB' for fontColor.
--font-weight <font_weight>texte.g. 'bold' / 'normal'.
--font-style <font_style>texte.g. 'italic' / 'normal'.
--font-name <font_name>textFont family name.
--font-size <font_size>floatFont size in points.
--text-align <text_align>text'left' | 'center' | 'right'.
--indent <indent>integerIndent character count.
--number-format <number_format>textExcel-style pattern, e.g. '#,##0'.
--border-top <border_top>texte.g. 'thin #000000' (style + optional hex color).
--border-bottom <border_bottom>textBottom border, e.g. 'thin #000000' (style + optional hex color).
--border-left <border_left>textLeft border, e.g. 'thin #000000' (style + optional hex color).
--border-right <border_right>textRight border, e.g. 'thin #000000' (style + optional hex color).
--index <index>integerInsert position (omit to append).
--revision <revision>textExpected revision SHA for optimistic locking.
--workspace <workspace_slug>textOverride active workspace.
--rationale <rationale>textWhy 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>textShort 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-runbooleanValidate 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.

Exit codes: 0 — completed · 1 — nothing-changed

defs add-scenario

Add a ScenarioDefinition.

deepcell defs add-scenario <filename>

deepcell defs add-scenario model.deepcell --name downside
ArgumentTypeRequired
filenametextrequired
FlagTypeDefaultWhat it does
--name <name>textThe 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(removed) @baseScenarioRef no longer exists — see `deepcell guide revise/scenarios`.
--context <context_ref>textThe 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-defaultbooleanMark as the document's default scenario — clears @isDefault from every other scenario.
--index <index>integerPosition (omit to append at end).
--revision <revision>textExpected revision SHA for optimistic locking.
--workspace <workspace_slug>textOverride active workspace.
--rationale <rationale>textWhy 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>textShort 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-runbooleanValidate 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.

Exit codes: 0 — completed · 1 — nothing-changed

defs add-sensitivity

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
ArgumentTypeRequired
filenametextrequired
FlagTypeDefaultWhat it does
--sheet <sheet_id>textrequiredSheet to add the block to.
--name <name>textrequiredDisplay name of the sensitivity block.
--index <index>integerPosition among sheet blocks (omit to append at end).
--format-ref <format_ref>textFormatDefinitions id.
--spec-file <spec_file>filenamerequiredJSON with {"axes": [...], "outputs": [...]} (use "-" for stdin).
--revision <revision>textExpected revision SHA for optimistic locking.
--workspace <workspace_slug>textOverride active workspace.
--rationale <rationale>textWhy 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>textShort 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-runbooleanValidate 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.

Exit codes: 0 — completed · 1 — nothing-changed

defs add-sheet

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
ArgumentTypeRequired
filenametextrequired
FlagTypeDefaultWhat it does
--label <label>textrequiredSheet tab label, e.g. 'Dashboard'.
--index <index>integer range0-based position among the sheets (default: append at the end).
--revision <revision>textExpected revision SHA for optimistic locking.
--workspace <workspace_slug>textOverride active workspace.
--rationale <rationale>textWhy 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>textShort 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-runbooleanValidate 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.

Exit codes: 0 — completed · 1 — nothing-changed

defs add-source

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>
ArgumentTypeRequired
filenametextrequired
FlagTypeDefaultWhat it does
--id <source_id>textrequiredStable sourceId, e.g. 'src_aapl_10k_fy25'.
--kind <kind>textWhat the source physically IS - closed set: filing, webpage, pdf, workbook, dataset, query, transcript, media, message, document, person, derived, other. What it is USED AS goes in --role.
--role <role>textWhat the source is being used AS - free text: historical_actual, assumption, analyst_estimate, management_guidance, industry_benchmark, market_data, manual, ...
--reach <reach>textCan 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>textHuman-readable title - what renders when the locator is withheld.
--locator <locator>textThe one outward address (URL, path, DSN).
--description <description>textLonger note about the source.
--at <at>textDefault position inside the source: text:HEADING[,SUFFIX] | page:47 | sheet:Name!A1:B9 | row:1042 | col:arr | t:00:14:32 | anchor:id.
--effective-date <effective_date>textISO date the source describes.
--retrieved-at <retrieved_at>textISO timestamp it was fetched.
--issuer <issuer>textWho published it.
--ticker <issuer_ticker>textIssuer ticker symbol.
--identity <identities>textDeclared identity as 'scheme:value' (e.g. 'sec.accession:0000320193-25-000079'). Repeatable.
--items <item_refs>textCSV of itemRefs this source backs.
--contexts <context_refs>textCSV of contextRefs. Omit to cover every context the statusRef allows.
--status <status_ref>textstatusRef for the coverage row.
--scenario <scenario_ref>textscenarioRef for the coverage row.
--custom-dimensions <custom_dimensions>text'dim:member;dim:member' for the coverage row.
--index <index>integerPosition (omit to append at end).
--revision <revision>textExpected revision SHA for optimistic locking.
--workspace <workspace_slug>textOverride active workspace.
--rationale <rationale>textWhy 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-runbooleanValidate 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.

Exit codes: 0 — completed · 1 — nothing-changed

defs add-status

Add a StatusDefinition.

deepcell defs add-status <filename>

deepcell defs add-status model.deepcell --name Budget --ref budget --archetype budget --authority derived
ArgumentTypeRequired
filenametextrequired
FlagTypeDefaultWhat it does
--name <name>textThe 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>textThe status IDENTIFIER (@statusId) under the op's wire name, statusRef — the same thing as --name. If both are given, --ref wins.
--color <color>text(removed) color is a FormatDefinitions concern — see `deepcell defs add-format`.
--is-defaultbooleanMark as the document's default status — clears @isDefault from every other status.
--archetype <archetype>textWhat 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>textOptional refinement: audited | reviewed | unaudited.
--authority <authority>textOptional refinement — who asserted the number: reported | derived | guidance | consensus | third_party.
--index <index>integerPosition (omit to append at end).
--revision <revision>textExpected revision SHA for optimistic locking.
--workspace <workspace_slug>textOverride active workspace.
--rationale <rationale>textWhy 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>textShort 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-runbooleanValidate 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.

Exit codes: 0 — completed · 1 — nothing-changed

defs apply

Apply a batch of ops atomically.

deepcell defs apply <filename>

deepcell defs apply model.deepcell --ops-file ops.json --dry-run
ArgumentTypeRequired
filenametextrequired
FlagTypeDefaultWhat it does
--ops-file <ops_file>filenameJSON file with an `ops` array (use '-' for stdin).
--ops <ops_inline>textInline ops JSON (same shapes as --ops-file); mirrors the agent tool's `defs apply --ops '<json>'` form.
--revision <revision>textExpected revision SHA for optimistic locking.
--workspace <workspace_slug>textOverride active workspace.
--rationale <rationale>textWhy 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>textShort 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-runbooleanValidate 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.

Exit codes: 0 — completed · 1 — nothing-changed

defs delete-axis-member

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
ArgumentTypeRequired
filenametextrequired
FlagTypeDefaultWhat it does
--sheet <sheet_id>textrequiredSheet containing the block.
--block <block_id>textrequiredblockId to edit.
--axis <axis>rows | columnsrequiredWhich axis to edit: 'rows' (the block's @itemOrders) or 'columns' (its @contextRefs).
--ref <ref>textrequiredThe item id or context id to remove.
--revision <revision>textExpected revision SHA for optimistic locking.
--workspace <workspace_slug>textOverride active workspace.
--rationale <rationale>textWhy 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>textShort 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-runbooleanValidate 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.

Exit codes: 0 — completed · 1 — nothing-changed

defs delete-block

Delete a Block from a Sheet.

deepcell defs delete-block <filename> --sheet <sheet_id> --block <block_id>

deepcell defs delete-block model.deepcell --sheet <sheet_id> --block <block_id>
ArgumentTypeRequired
filenametextrequired
FlagTypeDefaultWhat it does
--sheet <sheet_id>textrequiredSheet containing the block.
--block <block_id>textrequiredblockId to delete.
--revision <revision>textExpected revision SHA for optimistic locking.
--workspace <workspace_slug>textOverride active workspace.
--rationale <rationale>textWhy 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>textShort 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-runbooleanValidate 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.

Exit codes: 0 — completed · 1 — nothing-changed

defs delete-calc

Delete a CalculationDefinition by calcId.

deepcell defs delete-calc <filename> <calc_id>

deepcell defs delete-calc model.deepcell <calc_id>
ArgumentTypeRequired
filenametextrequired
calc_idtextrequired
FlagTypeDefaultWhat it does
--revision <revision>textExpected revision SHA for optimistic locking.
--workspace <workspace_slug>textOverride active workspace.
--rationale <rationale>textWhy 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>textShort 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-runbooleanValidate 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.

Exit codes: 0 — completed · 1 — nothing-changed

defs delete-context

Delete a Context (period or non-temporal axis member).

deepcell defs delete-context <filename> <context_ref>

deepcell defs delete-context model.deepcell <context_ref>
ArgumentTypeRequired
filenametextrequired
context_reftextrequired
FlagTypeDefaultWhat it does
--revision <revision>textExpected revision SHA for optimistic locking.
--workspace <workspace_slug>textOverride active workspace.
--rationale <rationale>textWhy 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>textShort 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-runbooleanValidate 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.

Exit codes: 0 — completed · 1 — nothing-changed

defs delete-doc

Delete a Document and its body.

deepcell defs delete-doc <filename> <doc_id>

deepcell defs delete-doc model.deepcell <doc_id>
ArgumentTypeRequired
filenametextrequired
doc_idtextrequired
FlagTypeDefaultWhat it does
--revision <revision>textExpected revision SHA for optimistic locking.
--workspace <workspace_slug>textOverride active workspace.
--rationale <rationale>textWhy 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>textShort 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-runbooleanValidate 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.

Exit codes: 0 — completed · 1 — nothing-changed

defs delete-format

Delete a <Format> by formatId.

deepcell defs delete-format <filename> <format_id>

deepcell defs delete-format model.deepcell <format_id>
ArgumentTypeRequired
filenametextrequired
format_idtextrequired
FlagTypeDefaultWhat it does
--revision <revision>textExpected revision SHA for optimistic locking.
--workspace <workspace_slug>textOverride active workspace.
--rationale <rationale>textWhy 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>textShort 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-runbooleanValidate 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.

Exit codes: 0 — completed · 1 — nothing-changed

defs delete-item

Delete an item, and with --cascade its descendants too.

deepcell defs delete-item <filename> <item_id>

deepcell defs delete-item model.deepcell Revenue --cascade
ArgumentTypeRequired
filenametextrequired
item_idtextrequired
FlagTypeDefaultWhat it does
--cascadebooleanAlso delete all descendants.
--revision <revision>textExpected revision SHA for optimistic locking.
--workspace <workspace_slug>textOverride active workspace.
--rationale <rationale>textWhy 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>textShort 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-runbooleanValidate 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.

Exit codes: 0 — completed · 1 — nothing-changed

defs delete-rule

Delete a <Rule> by index or by @target.

deepcell defs delete-rule <filename> <format_id>

deepcell defs delete-rule model.deepcell <format_id>
ArgumentTypeRequired
filenametextrequired
format_idtextrequired
FlagTypeDefaultWhat it does
--index <index>integerDelete the rule at this position.
--target <target>textDelete the first rule with this @target.
--revision <revision>textExpected revision SHA for optimistic locking.
--workspace <workspace_slug>textOverride active workspace.
--rationale <rationale>textWhy 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>textShort 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-runbooleanValidate 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.

Exit codes: 0 — completed · 1 — nothing-changed

defs delete-scenario

Delete a ScenarioDefinition by its contextRef.

deepcell defs delete-scenario <filename> <scenario_ref>

deepcell defs delete-scenario model.deepcell <scenario_ref>
ArgumentTypeRequired
filenametextrequired
scenario_reftextrequired
FlagTypeDefaultWhat it does
--revision <revision>textExpected revision SHA for optimistic locking.
--workspace <workspace_slug>textOverride active workspace.
--rationale <rationale>textWhy 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>textShort 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-runbooleanValidate 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.

Exit codes: 0 — completed · 1 — nothing-changed

defs delete-sheet

Delete a presentation Sheet and every Block on it.

deepcell defs delete-sheet <filename> <sheet_id>

deepcell defs delete-sheet model.deepcell <sheet_id>
ArgumentTypeRequired
filenametextrequired
sheet_idtextrequired
FlagTypeDefaultWhat it does
--revision <revision>textExpected revision SHA for optimistic locking.
--workspace <workspace_slug>textOverride active workspace.
--rationale <rationale>textWhy 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>textShort 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-runbooleanValidate 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.

Exit codes: 0 — completed · 1 — nothing-changed

defs delete-source

Remove a <Source>.

deepcell defs delete-source <filename> --id <source_id>

deepcell defs delete-source model.deepcell --id <source_id>
ArgumentTypeRequired
filenametextrequired
FlagTypeDefaultWhat it does
--id <source_id>textrequiredsourceId to delete.
--revision <revision>textExpected revision SHA for optimistic locking.
--workspace <workspace_slug>textOverride active workspace.
--rationale <rationale>textWhy 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>textShort 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-runbooleanValidate 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.

Exit codes: 0 — completed · 1 — nothing-changed

defs delete-status

Delete a StatusDefinition by its statusRef.

deepcell defs delete-status <filename> <status_ref>

deepcell defs delete-status model.deepcell <status_ref>
ArgumentTypeRequired
filenametextrequired
status_reftextrequired
FlagTypeDefaultWhat it does
--revision <revision>textExpected revision SHA for optimistic locking.
--workspace <workspace_slug>textOverride active workspace.
--rationale <rationale>textWhy 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>textShort 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-runbooleanValidate 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.

Exit codes: 0 — completed · 1 — nothing-changed

defs header set

Set or replace a Header property.

deepcell defs header set <filename> <key> <value>

deepcell defs header set model.deepcell <key> <value>
ArgumentTypeRequired
filenametextrequired
keytextrequired
valuetextrequired
FlagTypeDefaultWhat it does
--type <prop_type>string | number | boolean | datetimestringProperty type tag written into <Property @type>.
--revision <revision>textExpected revision SHA for optimistic locking.
--workspace <workspace_slug>textOverride active workspace.
--rationale <rationale>textWhy 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>textShort 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-runbooleanValidate 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.

Exit codes: 0 — completed · 1 — nothing-changed

defs header unset

Delete a Header property.

deepcell defs header unset <filename> <key>

deepcell defs header unset model.deepcell <key>
ArgumentTypeRequired
filenametextrequired
keytextrequired
FlagTypeDefaultWhat it does
--revision <revision>textExpected revision SHA for optimistic locking.
--workspace <workspace_slug>textOverride active workspace.
--rationale <rationale>textWhy 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>textShort 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-runbooleanValidate 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.

Exit codes: 0 — completed · 1 — nothing-changed

defs list

List what the document DEFINES: items, calcs, contexts, scenarios, statuses.

deepcell defs list <filename>

deepcell defs list model.deepcell
ArgumentTypeRequired
filenametextrequired
FlagTypeDefaultWhat it does
--workspace <workspace_slug>textOverride active workspace.

Exit codes: 0 — completed · 1 — read-only-check

defs rename-block

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>
ArgumentTypeRequired
filenametextrequired
new_nametextrequired
FlagTypeDefaultWhat it does
--sheet <sheet_id>textrequiredSheet containing the block.
--block <block_id>textrequiredblockId to rename.
--revision <revision>textExpected revision SHA for optimistic locking.
--workspace <workspace_slug>textOverride active workspace.
--rationale <rationale>textWhy 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>textShort 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-runbooleanValidate 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.

Exit codes: 0 — completed · 1 — nothing-changed

defs rename-context

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>
ArgumentTypeRequired
filenametextrequired
context_reftextrequired
new_nametextrequired
FlagTypeDefaultWhat it does
--revision <revision>textExpected revision SHA for optimistic locking.
--workspace <workspace_slug>textOverride active workspace.
--rationale <rationale>textWhy 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>textShort 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-runbooleanValidate 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.

Exit codes: 0 — completed · 1 — nothing-changed

defs rename-dimension

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>
ArgumentTypeRequired
filenametextrequired
dimension_idtextrequired
new_nametextrequired
FlagTypeDefaultWhat it does
--revision <revision>textExpected revision SHA for optimistic locking.
--workspace <workspace_slug>textOverride active workspace.
--rationale <rationale>textWhy 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>textShort 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-runbooleanValidate 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.

Exit codes: 0 — completed · 1 — nothing-changed

defs rename-item

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
ArgumentTypeRequired
filenametextrequired
item_idtextrequired
new_nametextrequired
FlagTypeDefaultWhat it does
--revision <revision>textExpected revision SHA for optimistic locking.
--workspace <workspace_slug>textOverride active workspace.
--rationale <rationale>textWhy 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>textShort 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-runbooleanValidate 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.

Exit codes: 0 — completed · 1 — nothing-changed

defs rename-member

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>
ArgumentTypeRequired
filenametextrequired
dimension_idtextrequired
member_idtextrequired
new_nametextrequired
FlagTypeDefaultWhat it does
--revision <revision>textExpected revision SHA for optimistic locking.
--workspace <workspace_slug>textOverride active workspace.
--rationale <rationale>textWhy 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>textShort 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-runbooleanValidate 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.

Exit codes: 0 — completed · 1 — nothing-changed

defs rename-scenario

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
ArgumentTypeRequired
filenametextrequired
scenario_reftextrequired
new_nametextrequired
FlagTypeDefaultWhat it does
--revision <revision>textExpected revision SHA for optimistic locking.
--workspace <workspace_slug>textOverride active workspace.
--rationale <rationale>textWhy 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>textShort 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-runbooleanValidate 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.

Exit codes: 0 — completed · 1 — nothing-changed

defs rename-sheet

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>
ArgumentTypeRequired
filenametextrequired
sheet_idtextrequired
new_labeltextrequired
FlagTypeDefaultWhat it does
--revision <revision>textExpected revision SHA for optimistic locking.
--workspace <workspace_slug>textOverride active workspace.
--rationale <rationale>textWhy 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>textShort 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-runbooleanValidate 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.

Exit codes: 0 — completed · 1 — nothing-changed

defs rename-status

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>
ArgumentTypeRequired
filenametextrequired
status_reftextrequired
new_nametextrequired
FlagTypeDefaultWhat it does
--revision <revision>textExpected revision SHA for optimistic locking.
--workspace <workspace_slug>textOverride active workspace.
--rationale <rationale>textWhy 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>textShort 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-runbooleanValidate 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.

Exit codes: 0 — completed · 1 — nothing-changed

defs reorder-axis-member

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
ArgumentTypeRequired
filenametextrequired
FlagTypeDefaultWhat it does
--sheet <sheet_id>textrequiredSheet containing the block.
--block <block_id>textrequiredblockId to edit.
--axis <axis>rows | columnsrequiredWhich axis to edit: 'rows' (the block's @itemOrders) or 'columns' (its @contextRefs).
--ref <ref>textrequiredThe item id or context id to move.
--to-index <to_index>integer rangerequiredFinal 0-based position on the axis. 0 = first row / leftmost column.
--revision <revision>textExpected revision SHA for optimistic locking.
--workspace <workspace_slug>textOverride active workspace.
--rationale <rationale>textWhy 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>textShort 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-runbooleanValidate 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.

Exit codes: 0 — completed · 1 — nothing-changed

defs reorder-block

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
ArgumentTypeRequired
filenametextrequired
FlagTypeDefaultWhat it does
--sheet <sheet_id>textrequiredSheet containing the block.
--block <block_id>textrequiredblockId to move.
--to-index <to_index>integer rangerequiredFinal 0-based position among the sheet's blocks. 0 = topmost.
--revision <revision>textExpected revision SHA for optimistic locking.
--workspace <workspace_slug>textOverride active workspace.
--rationale <rationale>textWhy 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>textShort 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-runbooleanValidate 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.

Exit codes: 0 — completed · 1 — nothing-changed

defs reorder-contexts

Move a Context to a new position in the contexts list.

deepcell defs reorder-contexts <filename> <context_ref> <to_index>

deepcell defs reorder-contexts model.deepcell <context_ref> <to_index>
ArgumentTypeRequired
filenametextrequired
context_reftextrequired
to_indexintegerrequired
FlagTypeDefaultWhat it does
--revision <revision>textExpected revision SHA for optimistic locking.
--workspace <workspace_slug>textOverride active workspace.
--rationale <rationale>textWhy 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>textShort 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-runbooleanValidate 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.

Exit codes: 0 — completed · 1 — nothing-changed

defs reorder-item

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
ArgumentTypeRequired
filenametextrequired
item_idtextrequired
FlagTypeDefaultWhat it does
--to-index <to_index>integerrequiredFinal 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>textExpected revision SHA for optimistic locking.
--workspace <workspace_slug>textOverride active workspace.
--rationale <rationale>textWhy 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>textShort 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-runbooleanValidate 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.

Exit codes: 0 — completed · 1 — nothing-changed

defs reorder-scenarios

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>
ArgumentTypeRequired
filenametextrequired
scenario_reftextrequired
FlagTypeDefaultWhat it does
--to-index <to_index>integer rangerequiredFinal 0-based position among the scenarios. 0 = first.
--revision <revision>textExpected revision SHA for optimistic locking.
--workspace <workspace_slug>textOverride active workspace.
--rationale <rationale>textWhy 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>textShort 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-runbooleanValidate 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.

Exit codes: 0 — completed · 1 — nothing-changed

defs reorder-sheets

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
ArgumentTypeRequired
filenametextrequired
sheet_idtextrequired
FlagTypeDefaultWhat it does
--to-index <to_index>integer rangerequiredFinal 0-based position among the sheets. 0 = leftmost tab.
--revision <revision>textExpected revision SHA for optimistic locking.
--workspace <workspace_slug>textOverride active workspace.
--rationale <rationale>textWhy 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>textShort 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-runbooleanValidate 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.

Exit codes: 0 — completed · 1 — nothing-changed

defs set-block-attrs

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
ArgumentTypeRequired
filenametextrequired
FlagTypeDefaultWhat it does
--sheet <sheet_id>textrequiredSheet containing the block.
--block <block_id>textrequiredblockId of the block to edit.
--format-ref <format_ref>textFormatDefinitions 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). See `deepcell ref format`.
--status-expansion <status_expansion>none | columns | seriesSide-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>textWhitespace/comma-separated status ids to expand into columns (e.g. "actual budget"). Required for --status-expansion=columns.
--dim-expansion <dim_expansion>none | rows | seriesCustom-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>textDimension id whose members are expanded into sub-rows (e.g. "geography"). Required for --dim-expansion=rows.
--dim-expansion-cap <dim_expansion_cap>integer rangeMax 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>textWhitespace/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>textPin 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 | seriesSide-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>textWhitespace/comma-separated scenario ids to expand into columns (e.g. "Base Bull"). Required for --scenario-expansion=columns.
--chart-type <chart_type>bar | bar_stacked | bar_horizontal | line | area | pie | donut | waterfall | range_bar | scatterChart type (chart blocks only). 'waterfall' bridges deltas between declared totals; 'range_bar' draws a low..high band per category (the football field).
--category-axis <category_axis>context | itemWhich dimension is the category axis (chart blocks only).
--total-item-refs <total_item_refs>textWhitespace/comma-separated refs naming the plotted categories that rest on the baseline instead of floating on the running sum (--chart-type=waterfall only). Declared, never inferred: omit it and every step is a delta.
--revision <revision>textExpected revision SHA for optimistic locking.
--workspace <workspace_slug>textOverride active workspace.
--rationale <rationale>textWhy 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>textShort 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-runbooleanValidate 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.

Exit codes: 0 — completed · 1 — nothing-changed

defs set-format

Set cell/row/column formatting (resolves the governing <Format>).

deepcell defs set-format <filename> --sheet-id <sheet_id> --item-ref <item_ref> --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
ArgumentTypeRequired
filenametextrequired
FlagTypeDefaultWhat it does
--sheet-id <sheet_id>textrequiredSheet id of the cell.
--block-id <block_id>textGoverning block id (resolves @formatRef).
--item-ref <item_ref>textrequiredItem ref of the cell.
--context-ref <context_ref>textContext ref (required for cell/column scope).
--scope <scope>cell | item | contextrequiredcell:ITEM:CONTEXT | item:ITEM | context:CONTEXT
--number-format <number_format>textExcel pattern, e.g. '#,##0'.
--font-name <font_name>textFont family name.
--font-size <font_size>floatFont size in points.
--boldbooleanSet/clear bold.
--italicbooleanSet/clear italic.
--fg-color <fg_color>textText hex '#RRGGBB'.
--bg-color <bg_color>textFill hex '#RRGGBB'.
--text-align <text_align>text'left'|'center'|'right'.
--indent <indent>integerIndent character count.
--border-top <border_top>texte.g. 'thin #000000'.
--border-bottom <border_bottom>textBottom border, e.g. 'thin #000000' (style + optional hex color).
--border-left <border_left>textLeft border, e.g. 'thin #000000' (style + optional hex color).
--border-right <border_right>textRight border, e.g. 'thin #000000' (style + optional hex color).
--clear <clear>textToken name to revert to inherit (repeatable).
--clear-allbooleanDelete the target's rule entirely.
--revision <revision>textExpected revision SHA for optimistic locking.
--workspace <workspace_slug>textOverride active workspace.
--rationale <rationale>textWhy 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>textShort 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-runbooleanValidate 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.

Exit codes: 0 — completed · 1 — nothing-changed

defs set-source-cites

Replace which cells a <Source> backs.

deepcell defs set-source-cites <filename> --id <source_id>

deepcell defs set-source-cites model.deepcell --id <source_id>
ArgumentTypeRequired
filenametextrequired
FlagTypeDefaultWhat it does
--id <source_id>textrequiredsourceId whose coverage to replace.
--items <item_refs>textCSV of itemRefs this source backs.
--contexts <context_refs>textCSV of contextRefs. Omit to cover every context the statusRef allows.
--status <status_ref>textstatusRef for the coverage row.
--scenario <scenario_ref>textscenarioRef for the coverage row.
--custom-dimensions <custom_dimensions>text'dim:member;dim:member' for the coverage row.
--at <at>textPosition override for this coverage row.
--clearbooleanRemove every coverage row instead of setting one.
--revision <revision>textExpected revision SHA for optimistic locking.
--workspace <workspace_slug>textOverride active workspace.
--rationale <rationale>textWhy 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>textShort 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-runbooleanValidate 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.

Exit codes: 0 — completed · 1 — nothing-changed

defs show

Show one item's ItemDef and every CalcDef that governs it.

deepcell defs show <filename> <item_id>

deepcell defs show model.deepcell Revenue
ArgumentTypeRequired
filenametextrequired
item_idtextrequired
FlagTypeDefaultWhat it does
--workspace <workspace_slug>textOverride active workspace.

Exit codes: 0 — completed · 1 — read-only-check

defs update-calc

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'
ArgumentTypeRequired
filenametextrequired
calc_idtextrequired
FlagTypeDefaultWhat it does
--formula <formula>textReplace the formula.
--context <context_ref>textChange contextRef.
--scenario <scenario_ref>textChange scenarioRef.
--status <status_ref>textChange statusRef (e.g. 'projected'). Pass '' to clear.
--revision <revision>textExpected revision SHA for optimistic locking.
--workspace <workspace_slug>textOverride active workspace.
--rationale <rationale>textWhy 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>textShort 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-runbooleanValidate 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.

Exit codes: 0 — completed · 1 — nothing-changed

defs update-context

Patch a Context's name / status / kind; only 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
ArgumentTypeRequired
filenametextrequired
context_reftextrequired
FlagTypeDefaultWhat it does
--name <name>textRename the contextId; references cascade. NOT the display name — see --label.
--label <new_label>textChange the context's DISPLAY LABEL (emits set_context_label). The contextId is untouched — use --name to change the identifier.
--status <status_ref>textSet statusRef.
--clear-statusbooleanClear statusRef (explicit-null).
--kind <kind>textContext 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>textPeriod state: closed | open | future. This is what says whether the period is over — the question the A/E suffix on a context id used to answer by accident. Only meaningful for --kind period.
--as-of <as_of>textISO YYYY-MM-DD the period's numbers are stated as of. Documentation and lint input only; never consulted when rendering.
--revision <revision>textExpected revision SHA for optimistic locking.
--workspace <workspace_slug>textOverride active workspace.
--rationale <rationale>textWhy 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>textShort 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-runbooleanValidate 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.

Exit codes: 0 — completed · 1 — nothing-changed

defs update-doc

Update a Document's attributes.

deepcell defs update-doc <filename> <doc_id>

deepcell defs update-doc model.deepcell <doc_id>
ArgumentTypeRequired
filenametextrequired
doc_idtextrequired
FlagTypeDefaultWhat it does
--name <name>textNew display title.
--lang <lang>textNew BCP-47 language tag.
--revision <revision>textExpected revision SHA for optimistic locking.
--workspace <workspace_slug>textOverride active workspace.
--rationale <rationale>textWhy 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>textShort 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-runbooleanValidate 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.

Exit codes: 0 — completed · 1 — nothing-changed

defs update-format

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>
ArgumentTypeRequired
filenametextrequired
format_idtextrequired
FlagTypeDefaultWhat it does
--new-id <new_id>textNew formatId; cascades through every <Block @formatRef>.
--inheritbooleanToggle 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>textExpected revision SHA for optimistic locking.
--workspace <workspace_slug>textOverride active workspace.
--rationale <rationale>textWhy 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>textShort 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-runbooleanValidate 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.

Exit codes: 0 — completed · 1 — nothing-changed

defs update-item

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
ArgumentTypeRequired
filenametextrequired
item_idtextrequired
FlagTypeDefaultWhat it does
--name <name>textRename the itemId; references cascade. Equivalent to `defs rename-item`.
--label <new_label>textChange 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>integerChange hierarchy level.
--parent <parent_item_id>textChange parent itemId.
--clear-parentbooleanMake item a root (explicit-null parentItemId).
--data-type <data_type>textSet DataType element (e.g. 'monetary', 'percentage', 'number').
--unit <unit>textSet Unit element (e.g. '%', 'hours', 'tonnes').
--scale <scale>integerSet Scale element.
--currency <currency>textSet Currency element (ISO code).
--clear-data-typebooleanRemove the DataType element (explicit-null).
--clear-unitbooleanRemove the Unit element (explicit-null).
--clear-scalebooleanRemove the Scale element (explicit-null).
--clear-currencybooleanRemove the Currency element (explicit-null).
--revision <revision>textExpected revision SHA for optimistic locking.
--workspace <workspace_slug>textOverride active workspace.
--rationale <rationale>textWhy 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>textShort 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-runbooleanValidate 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.

Exit codes: 0 — completed · 1 — nothing-changed

defs update-scenario

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'
ArgumentTypeRequired
filenametextrequired
scenario_reftextrequired
FlagTypeDefaultWhat it does
--name <name>textRename the scenarioId; references cascade. Equivalent to `defs rename-scenario`. NOT the display name — see --label.
--label <new_label>textChange the scenario's DISPLAY LABEL (emits set_scenario_label). The scenarioId is untouched — use --name to change the identifier.
--is-defaultbooleanMake this the document's default scenario (clears @isDefault from every other scenario), or strip the flag from this one.
--revision <revision>textExpected revision SHA for optimistic locking.
--workspace <workspace_slug>textOverride active workspace.
--rationale <rationale>textWhy 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>textShort 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-runbooleanValidate 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.

Exit codes: 0 — completed · 1 — nothing-changed

defs update-sensitivity

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>
ArgumentTypeRequired
filenametextrequired
FlagTypeDefaultWhat it does
--sheet <sheet_id>textrequiredSheet containing the block.
--block <block_id>textrequiredblockId of the block to edit.
--name <name>textNew display name.
--format-ref <format_ref>textNew FormatDefinitions id.
--spec-file <spec_file>filenameJSON with {"axes": [...], "outputs": [...]} to replace both.
--revision <revision>textExpected revision SHA for optimistic locking.
--workspace <workspace_slug>textOverride active workspace.
--rationale <rationale>textWhy 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>textShort 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-runbooleanValidate 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.

Exit codes: 0 — completed · 1 — nothing-changed

defs update-source

Change fields on a <Source>.

deepcell defs update-source <filename> --id <source_id>

deepcell defs update-source model.deepcell --id <source_id>
ArgumentTypeRequired
filenametextrequired
FlagTypeDefaultWhat it does
--id <source_id>textrequiredsourceId to update.
--kind <kind>textNew @kind (closed set).
--role <role>textNew @role (free text).
--reach <reach>textpublic | account | private | offline.
--title <title>textNew title. Pass '' to clear.
--locator <locator>textNew locator. Pass '' to clear.
--description <description>textNew description. Pass '' to clear.
--at <at>textNew default position.
--effective-date <effective_date>textNew effective date.
--retrieved-at <retrieved_at>textNew retrieval timestamp.
--revision <revision>textExpected revision SHA for optimistic locking.
--workspace <workspace_slug>textOverride active workspace.
--rationale <rationale>textWhy 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-runbooleanValidate 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.

Exit codes: 0 — completed · 1 — nothing-changed

defs update-status

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
ArgumentTypeRequired
filenametextrequired
status_reftextrequired
FlagTypeDefaultWhat it does
--name <name>textRename the statusId; references cascade. Equivalent to `defs rename-status`. NOT the display name — see --label.
--label <new_label>textChange the status's DISPLAY LABEL (emits set_status_label). The statusId is untouched — use --name to change the identifier.
--is-defaultbooleanMake this the document's default status (clears @isDefault from every other status), or strip the flag from this one.
--archetype <archetype>textWhat 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>textaudited | reviewed | unaudited.
--authority <authority>textreported | derived | guidance | consensus | third_party.
--revision <revision>textExpected revision SHA for optimistic locking.
--workspace <workspace_slug>textOverride active workspace.
--rationale <rationale>textWhy 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>textShort 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-runbooleanValidate 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.

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>
ArgumentTypeRequired
filenametextrequired
FlagTypeDefaultWhat it does
--target <target>textrequiredReference to invert, e.g. 'claim/t_hold'.

Exit codes: 0 — completed

doc blocks

List every block and the id it can be edited by.

deepcell doc blocks <filename>

deepcell doc blocks model.deepcell
ArgumentTypeRequired
filenametextrequired
FlagTypeDefaultWhat it does
--doc <doc_id>textDocument ID (default: the first).

Exit codes: 0 — completed

doc delete-block

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>
ArgumentTypeRequired
filenametextrequired
FlagTypeDefaultWhat it does
--doc <doc_id>textrequiredDocument ID.
--block <block_id>textrequiredBlock id to delete.
--rationale <rationale>textCommit message recording why.
--revision <revision>textCompare-and-swap token from `cat`.
--title <title>textShort 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

doc insert-block

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>
ArgumentTypeRequired
filenametextrequired
FlagTypeDefaultWhat it does
--doc <doc_id>textrequiredDocument ID.
--after <after_block_id>textInsert after this block id. Omit to insert at the top.
--markdown-file <markdown_file>filerequiredFile holding the new block's markdown.
--rationale <rationale>textCommit message recording why.
--revision <revision>textCompare-and-swap token from `cat`.
--title <title>textShort 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
ArgumentTypeRequired
filenametextrequired
FlagTypeDefaultWhat it does
--doc <doc_id>textRestrict to one document.
--unresolvedbooleanOnly references that did not resolve.

Exit codes: 0 — completed

doc lint

Check a document's references.

deepcell doc lint <filename>

deepcell doc lint model.deepcell --doc variance_note --strict
ArgumentTypeRequired
filenametextrequired
FlagTypeDefaultWhat it does
--doc <doc_id>textRestrict to one document.
--strictbooleanAlso flag numerals that match a modelled value but are typed, not linked.

Exit codes: 0 — completed

doc list

List every <Document> in the file.

deepcell doc list <filename>

deepcell doc list model.deepcell
ArgumentTypeRequired
filenametextrequired

Exit codes: 0 — completed

doc move-block

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>
ArgumentTypeRequired
filenametextrequired
FlagTypeDefaultWhat it does
--doc <doc_id>textrequiredDocument ID.
--block <block_id>textrequiredBlock id to move.
--after <after_block_id>textMove after this block id. Omit to move to the top.
--rationale <rationale>textCommit message recording why.
--revision <revision>textCompare-and-swap token from `cat`.
--title <title>textShort 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

doc outline

Print the headings and the anchor each one is addressable by.

deepcell doc outline <filename>

deepcell doc outline model.deepcell --doc variance_note
ArgumentTypeRequired
filenametextrequired
FlagTypeDefaultWhat it does
--doc <doc_id>textDocument ID (default: the first).

Exit codes: 0 — completed

doc patch-body

Replace one anchored section of a document.

deepcell doc patch-body <filename> --doc <doc_id> --anchor <anchor> --markdown <markdown>

deepcell doc patch-body model.deepcell --doc variance_note --anchor outlook --markdown '## Outlook {#outlook}\n\nQ4 pipeline covers the gap.'
ArgumentTypeRequired
filenametextrequired
FlagTypeDefaultWhat it does
--doc <doc_id>textrequiredDocument ID.
--anchor <anchor>textrequiredExplicit {#id} anchor of the section to replace.
--markdown <markdown>textrequiredReplacement markdown for that section.
--notation <notation>markdown | textWhat the body IS. Omitted keeps whatever the document already declared, so editing text never retypes it.
--rationale <rationale>textCommit message recording why.
--revision <revision>textCompare-and-swap token from `cat`.
--title <title>textShort 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

doc replace-block

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>
ArgumentTypeRequired
filenametextrequired
FlagTypeDefaultWhat it does
--doc <doc_id>textrequiredDocument ID.
--block <block_id>textrequiredBlock id from `deepcell doc blocks`.
--markdown-file <markdown_file>filerequiredFile holding the replacement markdown.
--rationale <rationale>textCommit message recording why.
--revision <revision>textCompare-and-swap token from `cat`.
--title <title>textShort 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

doc set-body

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'
ArgumentTypeRequired
filenametextrequired
FlagTypeDefaultWhat it does
--doc <doc_id>textrequiredDocument ID.
--body-file <body_file>filerequiredFile holding the new body.
--notation <notation>markdown | textWhat the body IS. Omitted keeps whatever the document already declared, so editing text never retypes it.
--rationale <rationale>textCommit message recording why.
--revision <revision>textCompare-and-swap token from `cat` (refuses if the file moved).
--title <title>textShort 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

doc set-notation

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>
ArgumentTypeRequired
filenametextrequired
FlagTypeDefaultWhat it does
--doc <doc_id>textrequiredDocument ID.
--notation <notation>markdown | textrequiredWhat the body IS.
--rationale <rationale>textCommit message recording why.
--revision <revision>textCompare-and-swap token from `cat`.
--title <title>textShort 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

doc show

Print one document.

deepcell doc show <filename>

deepcell doc show model.deepcell --doc variance_note --as markdown
ArgumentTypeRequired
filenametextrequired
FlagTypeDefaultWhat it does
--doc <doc_id>textDocument ID (default: the first).
--scenario <scenario_id>textScenario to resolve values under.
--as <rendering>text | markdowntextmarkdown keeps the [[deepcell:...]] source; text shows resolved values.
--with-idsbooleanPrefix each block with the id it can be edited by.

Exit codes: 0 — completed

doc stamp-ids

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>
ArgumentTypeRequired
filenametextrequired
FlagTypeDefaultWhat it does
--doc <doc_id>textrequiredDocument ID.
--rationale <rationale>textCommit message recording why.
--revision <revision>textCompare-and-swap token from `cat`.
--title <title>textShort 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

edit

Write literal cell values (assumptions, historical actuals).

deepcell edit <filename> [item_ref] [context_ref] [new_value]

deepcell edit model.deepcell Growth_Rate FY2026E 0.12
ArgumentTypeRequired
filenametextrequired
item_reftextoptional
context_reftextoptional
new_valuetextoptional
FlagTypeDefaultWhat it does
--forcebooleanType over a calculated cell, REMOVING the formula that computed it (no in-document undo).
--clearbooleanRemove the literal value cell (NEW_VALUE omitted) so a CalcDef can re-govern it.
--status <status_ref>textStatus reference (e.g. 'projected').
--scenario <scenario_ref>textScenario dimension — must be a defined scenarioId (omit for the base cell).
--custom-dimensions <custom_dimensions>textCustom dimensions as 'dim:member;dim:member', e.g. 'geography:na;product_line:ent'.
--batch <batch_file>textBatch edits as a JSON file path, '-' for stdin, or inline JSON (a value starting with '[' or '{').
--revision <revision>textExpected revision SHA for optimistic locking.
--rationale <commit_message>textWhy this edit was made. Written as the commit message body (and a trailer), so history reads as the decision instead of '[batch-edit] Item[Ctx]'. Sent as `rationale`; `-m` / `--message` are aliases of `--rationale`.
--title <commit_title>textShort commit subject (e.g. 'Q3 actuals update'). Combined with --rationale as 'title: rationale'.
--auto-create-contextbooleanAuto-create missing context definitions.
--replacebooleanDEPRECATED 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-allbooleanReplace all occurrences (with the deprecated --replace).
--workspace <workspace_slug>textOverride active workspace.

Exit codes: 0 — completed · 1 — partial

reasoning add-argument

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
ArgumentTypeRequired
filenametextrequired
FlagTypeDefaultWhat it does
--from-id <from_id>textrequiredSource node id.
--to-id <to_id>textrequiredTarget node id.
--rel <rel>supports | refutes | depends_on | derives_from | variant_of | supersedes | contradicts | references | answersrequiredHow --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 conclusion settles that question), variant_of (your view vs a consensus claim), supersedes (replaces an older node), contradicts, references. See `deepcell ref rel`.
--id <arg_id>textArgument id (auto-generated if omitted).
--weight <weight>floatHow much this edge carries, 0-1 (optional).
--body <body>text<Body> text.
--body-file <body_file>fileFile holding the <Body> text; '-' reads stdin. Prefer this over --body for text containing '$' — inline shell arguments mangle dollar amounts.
--body-notation <body_notation>markdown | textWhat the <Body> IS: markdown or literal text. Declared, never sniffed — no reader guesses from the bytes. Omitted leaves it as it was.
--status <status>textArgument lifecycle status (active/superseded/revoked).
--rationale <rationale>textWhy 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>textShort 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

reasoning add-assumption

Add a new <Assumption> to FILENAME's <Reasoning> section.

deepcell reasoning add-assumption <filename> --id <assumption_id>

deepcell reasoning add-assumption model.deepcell --id a_hiring --label 'Hiring lands on plan' --body 'Sales headcount reaches 40 by Q3.' --item-refs Headcount
ArgumentTypeRequired
filenametextrequired
FlagTypeDefaultWhat it does
--id <assumption_id>textrequiredNew Assumption id.
--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>fileFile 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>fileFile holding the <Body> text; '-' reads stdin. Prefer this over --body for text containing '$' — inline shell arguments mangle dollar amounts.
--body-notation <body_notation>markdown | textWhat the <Body> IS: markdown or literal text. Declared, never sniffed — no reader guesses from the bytes. Omitted leaves it as it was.
--status-ref <status_ref>textModel Status dimension id (e.g. actual / projected) — NOT the assumption's lifecycle state (that is --status).
--calc-ref <calc_ref>textCalcDef id anchoring this assumption to a formula in the model.
--item-refs <item_refs>textComma-separated item ids the assumption constrains. 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>floatHow strongly you hold this assumption, 0-1.
--status <status>holding | uncertain | broken | supersededAssumption lifecycle state: holding until something contradicts it, broken once actuals do, superseded when a newer assumption replaces it.
--verified-at <verified_at>textISO 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>textISO 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>textClaim id this assumption hangs under (hierarchy, not an Argument edge).
--context-refs <context_refs>textComma-separated context (period) ids this node reasons across.
--scenario-ref <scenario_ref>textScenario id this node is about, when it holds only in one world.
--custom-dimensions <custom_dimensions>textCustom dimension members as `dim:member;dim2:member2` — the fifth axis of the anchor (e.g. `region:emea`).
--rationale <rationale>textWhy 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>textShort 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

reasoning add-claim

Add a new <Claim> to FILENAME's <Reasoning> section.

deepcell reasoning add-claim <filename> --id <claim_id> --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
ArgumentTypeRequired
filenametextrequired
FlagTypeDefaultWhat it does
--id <claim_id>textrequiredNew Claim id.
--kind <kind>thesis | risk | catalyst | counter | question | market_consensusrequiredWhat the claim is: thesis (what you conclude), risk / catalyst (what moves it, needs --probability), counter (the case against), question (open), market_consensus (someone else's view, needs --attribution). See `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>fileFile 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>fileFile holding the <Body> text; '-' reads stdin. Prefer this over --body for text containing '$' — inline shell arguments mangle dollar amounts.
--body-notation <body_notation>markdown | textWhat the <Body> IS: markdown or literal text. Declared, never sniffed — no reader guesses from the bytes. Omitted leaves it as it was.
--status-ref <status_ref>textModel Status dimension id (e.g. actual / projected) — NOT the claim lifecycle state (that is --status).
--calc-ref <calc_ref>textCalcDef id anchoring this claim to a formula in the model.
--item-refs <item_refs>textComma-separated item ids anchoring this claim to a Spreadsheet. 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>floatLikelihood, 0-1 (required for kind=risk / catalyst).
--severity <severity>low | med | highQualitative impact (required for kind=risk).
--confidence <confidence>floatHow strongly you hold this claim, 0-1.
--strength <strength>low | med | highHow strongly the claim is held, qualitatively. Independent of --confidence (the numeric form); a claim may carry both.
--parent-claim-ref <parent_claim_ref>textClaim id this one hangs under (hierarchy, not an Argument edge).
--attribution <attribution>textWho holds this view (required for kind=market_consensus), e.g. 'Bloomberg consensus, 2026-07'.
--status <status>draft | active | superseded | falsified | revokedClaim lifecycle state — NOT the model's Status dimension (that is --status-ref).
--context-refs <context_refs>textComma-separated context (period) ids this node reasons across.
--scenario-ref <scenario_ref>textScenario id this node is about, when it holds only in one world.
--custom-dimensions <custom_dimensions>textCustom dimension members as `dim:member;dim2:member2` — the fifth axis of the anchor (e.g. `region:emea`).
--rationale <rationale>textWhy 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>textShort 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

reasoning add-evidence

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
ArgumentTypeRequired
filenametextrequired
FlagTypeDefaultWhat it does
--id <evidence_id>textrequiredNew Evidence id.
--source-ref <source_ref>textrequiredsourceId of a <Source> in <SourceDefinitions>.
--excerpt <excerpt>text<Excerpt> text.
--excerpt-file <excerpt_file>fileFile holding the <Excerpt> text; '-' reads stdin. Prefer this over --excerpt for text containing '$' — inline shell arguments mangle dollar amounts.
--at <at>textPosition in the source (page:47, t:00:14:32, text:HEADING).
--reliability <reliability>textprimary | secondary | tertiary.
--effective-date <effective_date>textISO8601 date.
--retrieved-at <retrieved_at>textISO8601 date.
--item-refs <item_refs>textComma-separated item ids this evidence bears on. 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>textModel Status dimension id (e.g. actual / projected) the evidence speaks to.
--context-refs <context_refs>textComma-separated context (period) ids this node reasons across.
--scenario-ref <scenario_ref>textScenario id this node is about, when it holds only in one world.
--custom-dimensions <custom_dimensions>textCustom dimension members as `dim:member;dim2:member2` — the fifth axis of the anchor (e.g. `region:emea`).
--rationale <rationale>textWhy 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>textShort 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

reasoning apply

Apply a batch of reasoning ops atomically.

deepcell reasoning apply <filename>

deepcell reasoning apply model.deepcell
ArgumentTypeRequired
filenametextrequired
FlagTypeDefaultWhat it does
--ops-file <ops_file>filenameJSON file with an `ops` array (use '-' for stdin).
--ops <ops_inline>textInline ops JSON (same shapes as --ops-file).
--rationale <rationale>textWhy 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>textShort 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

reasoning delete-argument

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
ArgumentTypeRequired
filenametextrequired
argument_idtextoptional
FlagTypeDefaultWhat it does
--from-id <from_id>textAddress: the edge's @from.
--edge-rel <edge_rel>supports | refutes | depends_on | derives_from | variant_of | supersedes | contradicts | references | answersAddress: the edge's @rel.
--to-id <to_id>textAddress: the edge's @to.
--cascadebooleanAlso 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-danglingbooleanWith --no-cascade, permit the delete even though it orphans Arguments.
--rationale <rationale>textWhy 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>textShort 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

reasoning delete-assumption

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>
ArgumentTypeRequired
filenametextrequired
node_idtextrequired
FlagTypeDefaultWhat it does
--cascadebooleanAlso 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-danglingbooleanWith --no-cascade, permit the delete even though it orphans Arguments.
--rationale <rationale>textWhy 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>textShort 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

reasoning delete-claim

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
ArgumentTypeRequired
filenametextrequired
node_idtextrequired
FlagTypeDefaultWhat it does
--cascadebooleanAlso 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-danglingbooleanWith --no-cascade, permit the delete even though it orphans Arguments.
--rationale <rationale>textWhy 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>textShort 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

reasoning delete-evidence

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>
ArgumentTypeRequired
filenametextrequired
node_idtextrequired
FlagTypeDefaultWhat it does
--cascadebooleanAlso 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-danglingbooleanWith --no-cascade, permit the delete even though it orphans Arguments.
--rationale <rationale>textWhy 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>textShort 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

reasoning graph

Render the Argument graph from FILENAME as Mermaid (default) or DOT.

deepcell reasoning graph <filename>

deepcell reasoning graph model.deepcell --syntax mermaid
ArgumentTypeRequired
filenametextrequired
FlagTypeDefaultWhat it does
--syntax <graph_syntax>mermaid | dotmermaidGraph syntax to emit. Use the global -f json for the raw graph payload.

Exit codes: 0 — completed

reasoning impact

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
ArgumentTypeRequired
filenametextrequired
claim_idtextrequired

Exit codes: 0 — completed

reasoning lint

Lint the <Reasoning> section of FILENAME for structural issues.

deepcell reasoning lint <filename>

deepcell reasoning lint model.deepcell --strict
ArgumentTypeRequired
filenametextrequired
FlagTypeDefaultWhat it does
--strictbooleanExit non-zero on warn-level findings too (default: only error-level findings fail).

Exit codes: 0 — completed · 1 — read-only-check

reasoning set-conclusion

Declare which Claim is FILENAME's main conclusion.

deepcell reasoning set-conclusion <filename> [claim_id]

deepcell reasoning set-conclusion model.deepcell t_gm
ArgumentTypeRequired
filenametextrequired
claim_idtextoptional
FlagTypeDefaultWhat it does
--clearbooleanRemove the declaration and fall back to deriving the apex from the argument topology.
--rationale <rationale>textWhy 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>textShort 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

reasoning set-exhibit

Declare which deck or slide to show beside FILENAME's conclusion.

deepcell reasoning set-exhibit <filename> [exhibit_ref]

deepcell reasoning set-exhibit model.deepcell
ArgumentTypeRequired
filenametextrequired
exhibit_reftextoptional
FlagTypeDefaultWhat it does
--clearbooleanRemove the declaration. The conclusion then renders full width.
--rationale <rationale>textWhy 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>textShort 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

reasoning set-key-question

Declare which question FILENAME exists to answer.

deepcell reasoning set-key-question <filename> [claim_id]

deepcell reasoning set-key-question model.deepcell
ArgumentTypeRequired
filenametextrequired
claim_idtextoptional
FlagTypeDefaultWhat it does
--clearbooleanRemove 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-reviewbooleanMark the question as inferred rather than stated, so it renders as provisional until someone confirms it. Declaring without this flag clears it.
--rationale <rationale>textWhy 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>textShort 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

reasoning supersede-assumption

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'
ArgumentTypeRequired
filenametextrequired
assumption_idtextrequired
FlagTypeDefaultWhat it does
--id <new_id>textrequiredId 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>fileFile 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>fileFile 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 | textWhat the <Body> IS: markdown or literal text. Declared, never sniffed — no reader guesses from the bytes. Omitted leaves it as it was.
--item-refs <item_refs>textComma-separated item ids.
--status-ref <status_ref>textModel Status dimension id.
--calc-ref <calc_ref>textCalcDef id this assumption drives.
--confidence <confidence>floatConfidence in the replacement, 0-1.
--status <status>holding | uncertain | broken | supersededLifecycle status of the replacement.
--verified-at <verified_at>textISO 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>textISO 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>textComma-separated context (period) ids this node reasons across.
--scenario-ref <scenario_ref>textScenario id this node is about, when it holds only in one world.
--custom-dimensions <custom_dimensions>textCustom dimension members as `dim:member;dim2:member2` — the fifth axis of the anchor (e.g. `region:emea`).
--rationale <rationale>textWhy 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>textShort 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

reasoning supersede-claim

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
ArgumentTypeRequired
filenametextrequired
claim_idtextrequired
FlagTypeDefaultWhat it does
--id <new_id>textrequiredId 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>fileFile 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>fileFile 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 | textWhat the <Body> IS: markdown or literal text. Declared, never sniffed — no reader guesses from the bytes. Omitted leaves it as it was.
--kind <kind>thesis | risk | catalyst | counter | question | market_consensusKind of the replacement (defaults to the superseded claim's kind).
--item-refs <item_refs>textComma-separated item ids.
--context-refs <context_refs>textComma-separated context ids.
--status-ref <status_ref>textModel Status dimension id.
--calc-ref <calc_ref>textCalcDef id this claim is anchored to.
--confidence <confidence>floatConfidence in the replacement, 0-1.
--strength <strength>low | med | highHow 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.
--scenario-ref <scenario_ref>textScenario id this node is about, when it holds only in one world.
--custom-dimensions <custom_dimensions>textCustom dimension members as `dim:member;dim2:member2` — the fifth axis of the anchor (e.g. `region:emea`).
--rationale <rationale>textWhy 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>textShort 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

reasoning update-argument

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
ArgumentTypeRequired
filenametextrequired
argument_idtextoptional
FlagTypeDefaultWhat it does
--from-id <from_id>textAddress: the edge's @from.
--edge-rel <edge_rel>supports | refutes | depends_on | derives_from | variant_of | supersedes | contradicts | references | answersAddress: the @rel the edge has now. --rel is what to change it to.
--to-id <to_id>textAddress: the edge's @to.
--rel <rel>supports | refutes | depends_on | derives_from | variant_of | supersedes | contradicts | references | answersReclassify the edge — see `deepcell reasoning add-argument --help`.
--weight <weight>floatHow much this edge carries, 0-1.
--body <body>textReplacement <Body> text.
--body-file <body_file>fileFile 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 | textWhat the <Body> IS: markdown or literal text. Declared, never sniffed — no reader guesses from the bytes. Omitted leaves it as it was.
--status <status>textArgument lifecycle status (active / superseded / revoked).
--rationale <rationale>textWhy 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>textShort 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

reasoning update-assumption

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
ArgumentTypeRequired
filenametextrequired
assumption_idtextrequired
FlagTypeDefaultWhat it does
--label <label>textReplacement <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>fileFile holding the replacement <Label> text; '-' reads stdin. Prefer this over --label for text containing '$' — inline shell arguments mangle dollar amounts.
--body <body>textReplacement <Body> text.
--body-file <body_file>fileFile 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 | textWhat the <Body> IS: markdown or literal text. Declared, never sniffed — no reader guesses from the bytes. Omitted leaves it as it was.
--status-ref <status_ref>textModel Status dimension id (e.g. actual / projected) — NOT the assumption's lifecycle state (that is --status).
--calc-ref <calc_ref>textCalcDef id anchoring this assumption to a formula in the model.
--item-refs <item_refs>textComma-separated item ids the assumption constrains — the fix for unanchored_assumption when the file has Items.
--confidence <confidence>floatHow strongly you hold this assumption, 0-1.
--status <status>holding | uncertain | broken | supersededAssumption lifecycle state: holding until something contradicts it, broken once actuals do, superseded when a newer assumption replaces it.
--verified-at <verified_at>textISO 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>textISO 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>textComma-separated context (period) ids this node reasons across.
--scenario-ref <scenario_ref>textScenario id this node is about, when it holds only in one world.
--custom-dimensions <custom_dimensions>textCustom dimension members as `dim:member;dim2:member2` — the fifth axis of the anchor (e.g. `region:emea`).
--rationale <rationale>textWhy 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>textShort 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

reasoning update-claim

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
ArgumentTypeRequired
filenametextrequired
claim_idtextrequired
FlagTypeDefaultWhat it does
--kind <kind>thesis | risk | catalyst | counter | question | market_consensusReclassify the claim — see `deepcell reasoning add-claim --help` for what each kind means.
--label <label>textReplacement <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>fileFile holding the replacement <Label> text; '-' reads stdin. Prefer this over --label for text containing '$' — inline shell arguments mangle dollar amounts.
--body <body>textReplacement <Body> text.
--body-file <body_file>fileFile 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 | textWhat the <Body> IS: markdown or literal text. Declared, never sniffed — no reader guesses from the bytes. Omitted leaves it as it was.
--status-ref <status_ref>textModel Status dimension id (e.g. actual / projected) — NOT the claim lifecycle state (that is --status).
--calc-ref <calc_ref>textCalcDef id anchoring this claim to a formula in the model.
--item-refs <item_refs>textComma-separated item ids anchoring this claim to a Spreadsheet — the fix for unanchored_claim when the file has Items.
--probability <probability>floatLikelihood, 0-1 (required for kind=risk / catalyst).
--severity <severity>low | med | highQualitative impact (required for kind=risk).
--confidence <confidence>floatHow strongly you hold this claim, 0-1.
--strength <strength>low | med | highHow strongly the claim is held, qualitatively. Independent of --confidence (the numeric form); a claim may carry both.
--parent-claim-ref <parent_claim_ref>textClaim id this one hangs under (hierarchy, not an Argument edge).
--attribution <attribution>textWho holds this view (required for kind=market_consensus).
--status <status>draft | active | superseded | falsified | revokedClaim lifecycle state — NOT the model's Status dimension (that is --status-ref).
--context-refs <context_refs>textComma-separated context (period) ids this node reasons across.
--scenario-ref <scenario_ref>textScenario id this node is about, when it holds only in one world.
--custom-dimensions <custom_dimensions>textCustom dimension members as `dim:member;dim2:member2` — the fifth axis of the anchor (e.g. `region:emea`).
--rationale <rationale>textWhy 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>textShort 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

reasoning update-evidence

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>
ArgumentTypeRequired
filenametextrequired
evidence_idtextrequired
FlagTypeDefaultWhat it does
--label <label>textReplacement <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>fileFile holding the replacement <Label> text; '-' reads stdin. Prefer this over --label for text containing '$' — inline shell arguments mangle dollar amounts.
--body <body>textReplacement <Body> text.
--body-file <body_file>fileFile holding the replacement <Body> text; '-' reads stdin. Prefer this over --body for text containing '$' — inline shell arguments mangle dollar amounts.
--source <source>textReplacement @source (where the evidence came from).
--url <url>textReplacement @url.
--as-of <as_of>textReplacement @asOf date (ISO).
--item-refs <item_refs>textComma-separated item ids.
--context-refs <context_refs>textComma-separated context ids.
--status-ref <status_ref>textModel Status dimension id (e.g. actual / projected) the evidence speaks to.
--scenario-ref <scenario_ref>textScenario id this node is about, when it holds only in one world.
--custom-dimensions <custom_dimensions>textCustom dimension members as `dim:member;dim2:member2` — the fifth axis of the anchor (e.g. `region:emea`).
--rationale <rationale>textWhy 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>textShort 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

write

Create a file, or replace an existing one wholesale.

deepcell write <filename>

deepcell write model.deepcell --file ./model.deepcell
ArgumentTypeRequired
filenametextrequired
FlagTypeDefaultWhat it does
--stdinbooleanRead content from stdin.
--file <from_file>pathRead content from a local file.
--content <from_content>textPass file content inline (useful for MCP/programmatic access).
--content-base64 <from_b64>textPass file content as a base64-encoded string.
--revision <revision>textExpected revision SHA for optimistic locking — the `Revision:` line `deepcell cat` prints on stderr. The write is refused with a conflict if FILENAME changed since (a change to a different file is not a conflict).
--sharebooleanPrint a view-only share link for FILENAME as well. On by default when you are not signed in, where it is the only URL that opens in a browser; off by default when signed in, since the workbench link already works. An existing live link for the file is reused rather than duplicated.
--rationale <rationale>textWhy 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>textShort 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

changes diff

Show what one change did, semantically.

deepcell changes diff <base_revision> [head_revision]

deepcell changes diff <base_revision>
ArgumentTypeRequired
base_revisionrevisionrequired
head_revisionrevisionoptional
FlagTypeDefaultWhat it does
--file <filename>textFilter diff by filename.

Exit codes: 0 — completed

changes list

List document changes, newest first.

deepcell changes list [filename_pos]

deepcell changes list
ArgumentTypeRequired
filename_postextoptional
FlagTypeDefaultWhat it does
--file <filename>textFilter by filename.
--limit <limit>integer range20Number of changes to show (1-200).
--since <since_revision>revisionOnly changes that moved the branch forward from this revision.

Exit codes: 0 — completed

changes revert

Undo one change by committing its inverse onto the current tip.

deepcell changes revert <base_revision> <head_revision>
ArgumentTypeRequired
base_revisionrevisionrequired
head_revisionrevisionrequired
FlagTypeDefaultWhat it does
--yesbooleanSkip confirmation prompt.

Exit codes: 0 — completed

commit

Commit changes staged on the server by something other than you.

deepcell commit
FlagTypeDefaultWhat it does
--message <message>textCommit message.

Exit codes: 0 — completed · 1 — written-but-invalid

diff

Show diff between two revisions (like git diff).

deepcell diff <revision_a> [revision_b]

deepcell diff <revision_a>
ArgumentTypeRequired
revision_atextrequired
revision_btextoptional
FlagTypeDefaultWhat it does
--file <filename>textFilter diff by filename.

Exit codes: 0 — completed

log

Show version history for the workspace (like git log).

deepcell log [filename_pos]

deepcell log
ArgumentTypeRequired
filename_postextoptional
FlagTypeDefaultWhat it does
--file <filename>textFilter by filename.
--limit <limit>integer20Number of entries to show.
--after <after_sha>textPagination cursor: start AFTER this commit sha. Pass the last sha of the previous page to read the next one.

Exit codes: 0 — completed

replace

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>"
ArgumentTypeRequired
filenametextrequired
old_stringtextoptional
new_stringtextoptional
FlagTypeDefaultWhat it does
--replace-allbooleanReplace every occurrence instead of requiring a unique match.
--batch <batch_file>textReplacement as a JSON object {"old_string": "...", "new_string": "..."} — a file path, '-' for stdin, or inline JSON. Use this for multiline XML.
--revision <revision>textExpected revision SHA for optimistic locking.
--workspace <workspace_slug>textOverride active workspace.
--rationale <rationale>textWhy 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>textShort 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

Restore the workspace to a previous revision (like git checkout).

deepcell restore <revision>
ArgumentTypeRequired
revisiontextrequired
FlagTypeDefaultWhat it does
--file <filename>textRestore specific file only.
--yesbooleanSkip confirmation prompt.

Exit codes: 0 — completed

rm

Delete a file from the workspace.

deepcell rm <filename>

deepcell rm model.deepcell
ArgumentTypeRequired
filenametextrequired
FlagTypeDefaultWhat it does
--yesbooleanSkip confirmation prompt.

Exit codes: 0 — completed

variant checkout

Check out a variant branch for local edits.

deepcell variant checkout [name]

deepcell variant checkout
ArgumentTypeRequired
nametextoptional
FlagTypeDefaultWhat it does
--mainbooleanSwitch back to the main branch (clear active variant).

Exit codes: 0 — completed

variant create

Create a new variant branch.

deepcell variant create <name>
ArgumentTypeRequired
nametextrequired

Exit codes: 0 — completed

variant diff

Show diff between a variant branch and main.

deepcell variant diff [name]

deepcell variant diff
ArgumentTypeRequired
nametextoptional
FlagTypeDefaultWhat it does
--file <file_path>textLimit the diff to a single file.

Exit codes: 0 — completed

variant list

List variants in the workspace.

deepcell variant list

Exit codes: 0 — completed

variant merge

Merge a variant branch back into main.

deepcell variant merge [name]

deepcell variant merge
ArgumentTypeRequired
nametextoptional
FlagTypeDefaultWhat it does
--resolve <resolve>ours | theirsConflict resolution strategy: 'ours' keeps main, 'theirs' keeps variant.

Exit codes: 0 — completed · 1 — conflict

verify

change one thing, see everything it affects

assumption impact

List Claims that depend_on ASSUMPTION_ID.

deepcell assumption impact <filename> <assumption_id>

deepcell assumption impact model.deepcell a_hiring
ArgumentTypeRequired
filenametextrequired
assumption_idtextrequired

Exit codes: 0 — completed · 2 — unparseable-document

claim falsified

List every Claim in FILENAME whose status is `falsified`.

deepcell claim falsified <filename>

deepcell claim falsified model.deepcell
ArgumentTypeRequired
filenametextrequired

Exit codes: 0 — completed · 2 — unparseable-document

claim history

Walk the supersedes chain backwards from CLAIM_ID (newest first).

deepcell claim history <filename> <claim_id>

deepcell claim history model.deepcell <claim_id>
ArgumentTypeRequired
filenametextrequired
claim_idtextrequired

Exit codes: 0 — completed · 2 — unparseable-document

claim variant

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>
ArgumentTypeRequired
filenametextrequired
claim_idtextrequired

Exit codes: 0 — completed · 2 — unparseable-document

impact apply

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>
ArgumentTypeRequired
filenametextrequired
item_keytextrequired
FlagTypeDefaultWhat it does
--surface <surface>textrequiredThe surface the item is on.
--locator <locator>textrequiredThe item's address.
--op <op>textrequiredThe reasoning op to apply.
--target-id <target_id>textrequiredThe Claim or Assumption it addresses.
--payload <payload>textThe op's fields, as JSON. Omit for an op that needs none.
--new-claim <new_claim>textJSON for the replacement Claim. Required by supersede_claim.
--new-assumption <new_assumption>textJSON for the replacement Assumption. Required by supersede_assumption.
--expected-revision <expected_revision>textThe revision you read at. A newer document is a 409 rather than an overwrite.

Exit codes: 0 — completed

impact reopen

Undo one review decision.

deepcell impact reopen <filename> <item_key>

deepcell impact reopen model.deepcell <item_key>
ArgumentTypeRequired
filenametextrequired
item_keytextrequired

Exit codes: 0 — completed

impact review

Mark one item reviewed — the marker disappears.

deepcell impact review <filename> <item_key> --surface <surface> --locator <locator>

deepcell impact review model.deepcell <item_key> --surface <surface> --locator <locator>
ArgumentTypeRequired
filenametextrequired
item_keytextrequired
FlagTypeDefaultWhat it does
--surface <surface>textrequiredThe surface the item is on, as `impact show` prints it.
--locator <locator>textrequiredThe item's address — the `locator` line `impact show` prints.
--outcome <outcome>confirmed | revisedconfirmedconfirmed: it still reads correctly. revised: it was rewritten.
--kind <kind>textThe item's kind. An unresolved one is refused: it needs a rebind.

Exit codes: 0 — completed

impact show

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>
ArgumentTypeRequired
filenametextrequired
FlagTypeDefaultWhat it does
--since <base_revision>textrequiredThe 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>textThe revision to compare to (a SHA or HEAD~N). Defaults to the working tree.
--threshold <threshold>floatRelative move at or above which a value change is material. Defaults to the built-in 1%.
--include-reviewedbooleanAlso show items somebody has already marked reviewed.

Exit codes: 0 — completed

reasoning-diff

Warn when an edit moved something a Claim was anchored to.

deepcell reasoning-diff <file>

deepcell reasoning-diff model.deepcell
ArgumentTypeRequired
filepathrequired
FlagTypeDefaultWhat it does
--acceptbooleanPrint warnings but exit 0 (acknowledge and continue).
--since-branch-base <since_branch_base>pathPath 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

relationships

Show the relationship graph of a .deepcell file.

deepcell relationships <filename>

deepcell relationships model.deepcell --type business
ArgumentTypeRequired
filenametextrequired
FlagTypeDefaultWhat it does
--type <graph_type>items | dependencies | blocks | business | unifiedunifiedGraph type. 'business' is the Item-centric Relationships workspace.

Exit codes: 0 — completed

present

deliver the work to someone else

share create

Create a share link for FILENAME and print its viewer URL.

deepcell share create <filename>

deepcell share create model.deepcell --permission view
ArgumentTypeRequired
filenametextrequired
FlagTypeDefaultWhat it does
--permission <permission>view | editviewAccess level for the link. Edit links require an account.
--expires-days <expires_days>integer rangeDays until the link expires. Every link expires; omit this to take the server default (90 days, or 7 for a password-less --permission edit link). Larger values are clamped to that cap.
--expires-hours <expires_hours>integer rangeThe 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>textPassword-protect the link (account required).
--label <label>textLabel to recognize the link in `share list`.

Exit codes: 0 — completed

share list

List active share links in the workspace.

deepcell share list
FlagTypeDefaultWhat it does
--file <filename>textOnly links for this file.

Exit codes: 0 — completed

share revoke

Revoke a share link by its id (see `share list`).

deepcell share revoke <share_id>
ArgumentTypeRequired
share_idtextrequired

Exit codes: 0 — completed

to-docx

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
ArgumentTypeRequired
filenametextrequired
FlagTypeDefaultWhat it does
--doc <doc_id>textDocument ID (required when the file has multiple documents).
--scenario <scenario_id>textDocument scenario ID to export.
--output <out_path>textOutput path (default: <filename>.docx).
--bundlebooleanLink to sibling .xlsx / .pptx exports written alongside this one.

Exit codes: 0 — completed

to-excel

Export a .deepcell file to Excel format.

deepcell to-excel <filename>

deepcell to-excel model.deepcell -o model.xlsx
ArgumentTypeRequired
filenametextrequired
FlagTypeDefaultWhat it does
--output <out_path>textOutput file path (default: <filename>.xlsx).
--formulasbooleanExport with live Excel formulas.
--recalculatebooleanRecompute formula values via the LibreOffice service (requires --formulas).
--scenario <scenario_id>textDocument scenario ID to export (applies its VariableOverrides; omit for the default scenario).
--variant <variant_id>text(removed) Never worked — see --scenario for document scenarios.

Exit codes: 0 — completed

to-pdf

Export a deck or a document as a PDF.

deepcell to-pdf <filename>

deepcell to-pdf model.deepcell
ArgumentTypeRequired
filenametextrequired
FlagTypeDefaultWhat it does
--from <source>deck | docdeckWhich surface to render: the presentation deck, or the prose document.
--deck <deck_id>textDeck ID (required when the file has multiple decks).
--doc <doc_id>textDocument ID (required when the file has multiple documents).
--scenario <scenario_id>textDocument scenario ID to export.
--output <out_path>textOutput path (default: <filename>_<deck|doc>.pdf).

Exit codes: 0 — completed

to-pptx

Export one document-defined HTML deck as editable PowerPoint objects.

deepcell to-pptx <filename>

deepcell to-pptx model.deepcell --deck board -o board.pptx
ArgumentTypeRequired
filenametextrequired
FlagTypeDefaultWhat it does
--deck <deck_id>textDeck ID (required when the document has multiple decks).
--scenario <scenario_id>textDocument scenario ID to export.
--output <out_path>textOutput path (default: <filename>.pptx).

Exit codes: 0 — completed

viewer

Print the browser URL to open FILENAME in the web workbench.

deepcell viewer <filename>

deepcell viewer model.deepcell
ArgumentTypeRequired
filenametextrequired
FlagTypeDefaultWhat it does
--workspace <workspace_slug>textOverride active workspace.
--openbooleanOpen the URL in the default browser.

Exit codes: 0 — completed

session

who you are and where your work lands

account delete

Permanently delete your account and everything it owns.

deepcell account delete
FlagTypeDefaultWhat it does
--confirm-email <confirm_email>textYour account email. Prompted for if omitted.
--password <password>textAccount password. Prompted for if the account has one.
--yesbooleanSkip the interactive 'this is irreversible' confirmation.

Exit codes: 0 — completed

account export

Download every record DeepCell holds about your account.

deepcell account export
FlagTypeDefaultWhat it does
--output <out_path>fileWrite the export to this file instead of stdout.

Exit codes: 0 — completed

doctor

Check this machine's setup: version, server, identity, workspace.

deepcell doctor

deepcell doctor -f json
FlagTypeDefaultWhat it does
--timeout <timeout>float10How long to wait for the server probe.

Exit codes: 0 — completed

login

Authenticate with the DeepCell API.

deepcell login
FlagTypeDefaultWhat it does
--email <email>textEmail for direct login (headless/CI).
--password <password>textPassword for direct login (headless/CI).

Exit codes: 0 — completed

logout

Log out and remove stored credentials.

deepcell logout

Exit codes: 0 — completed

project create

Create a new project.

deepcell project create <name>
ArgumentTypeRequired
nametextrequired
FlagTypeDefaultWhat it does
--slug <slug>textURL-friendly slug. Derived from the name by the server, with a short random suffix, if omitted — slugs are unique across all projects.
--description <description>text""Project description.

Exit codes: 0 — completed

project info

Show project details.

deepcell project info [slug]

deepcell project info
ArgumentTypeRequired
slugtextoptional

Exit codes: 0 — completed

project list

List projects you belong to.

deepcell project list

Exit codes: 0 — completed

project use

Set the active project for subsequent commands.

deepcell project use <slug>

deepcell project use my-project
ArgumentTypeRequired
slugtextrequired

Exit codes: 0 — completed

register

Create a new DeepCell account (headless/CI).

deepcell register
FlagTypeDefaultWhat it does
--email <email>textAccount email.
--password <password>textAccount password (min 8 chars).
--name <display_name>textYour display name.
--locale <locale>textzh-CNLocale (default: zh-CN).

Exit codes: 0 — completed

upgrade

Check whether a newer deepcell CLI has been published.

deepcell upgrade

Exit codes: 0 — completed

upgrade check

Ask the package index right now and update the cached answer.

deepcell upgrade check
FlagTypeDefaultWhat it does
--timeout <timeout>float3How long to wait for each package index.

Exit codes: 0 — completed

upgrade disable

Turn the automatic upgrade check off.

deepcell upgrade disable

Exit codes: 0 — completed

upgrade enable

Turn the automatic upgrade check on (the default).

deepcell upgrade enable

Exit codes: 0 — completed

upgrade status

Show the setting and the last cached answer.

deepcell upgrade status

Exit codes: 0 — completed

verify-email

Verify your email address.

deepcell verify-email

Exit codes: 0 — completed

whoami

Show the currently authenticated user.

deepcell whoami

Exit codes: 0 — completed

sync

local <-> cloud

clone

Clone a workspace to a local folder.

deepcell clone <slug> [directory]

deepcell clone <slug>
ArgumentTypeRequired
slugtextrequired
directorytextoptional

Exit codes: 0 — completed

download

Download a file from the workspace to the local filesystem.

deepcell download <filename>

deepcell download model.deepcell
ArgumentTypeRequired
filenametextrequired
FlagTypeDefaultWhat it does
--output <out_path>textOutput file path (default: same as filename).
--revision <revision>textDownload file at specific revision.

Exit codes: 0 — completed

merge apply

Apply conflict resolutions to a pending merge session.

deepcell merge apply <session_id> --resolve <strategy>
ArgumentTypeRequired
session_idtextrequired
FlagTypeDefaultWhat it does
--resolve <strategy>ours | theirsrequiredResolution strategy for all conflicts.
--file <filename>textWrite merged result to this local file.

Exit codes: 0 — completed · 1 — conflict

merge preview

Preview a three-way merge for a .deepcell file.

deepcell merge preview <filename>

deepcell merge preview model.deepcell
ArgumentTypeRequired
filenametextrequired
FlagTypeDefaultWhat it does
--base <base_rev>textBase revision SHA (defaults to last_sync_sha).
--theirs-rev <theirs_rev>textRevision for theirs (defaults to HEAD).

Exit codes: 0 — completed · 1 — conflict

merge resolve

Resolve a sync conflict for a .deepcell file.

deepcell merge resolve <filename>

deepcell merge resolve model.deepcell
ArgumentTypeRequired
filenametextrequired
FlagTypeDefaultWhat it does
--ourstextResolve all conflicts with local values.
--theirstextResolve all conflicts with remote values.

Exit codes: 0 — completed · 1 — conflict

pull

Fetch latest cloud changes to the local folder.

deepcell pull

Exit codes: 0 — completed · 1 — conflict

push

Upload local changes to the cloud workspace.

deepcell push
FlagTypeDefaultWhat it does
--message <message>text""Commit message for the push.

Exit codes: 0 — completed · 1 — written-but-invalid

status

Show local changes vs last sync.

deepcell status

Exit codes: 0 — completed

learn

the five reference surfaces

example

Complete, valid documents to copy the shape from.

deepcell example
FlagTypeDefaultWhat it does
--pack <pack>textCore examples plus this pack's.

Exit codes: 0 — completed

example get

Write an example document to a local file.

deepcell example get <name> --into <into>
ArgumentTypeRequired
nametextrequired
FlagTypeDefaultWhat it does
--into <into>filerequiredLocal path to write the document to.
--layer <layer>skeleton | fullfullWhich document to seed from.
--forcebooleanOverwrite an existing file.

Exit codes: 0 — completed

example list

List every example name — the same output as bare `deepcell example`.

deepcell example list
FlagTypeDefaultWhat it does
--pack <pack>textCore examples plus this pack's.

Exit codes: 0 — completed

example show

Print one layer of an example: skeleton, full, or transcript.

deepcell example show [name] [layer]

deepcell example show
ArgumentTypeRequired
nametextoptional
layertextoptional

Exit codes: 0 — completed

guide

Explain how DeepCell itself works.

deepcell guide [topic]

deepcell guide orient/start
ArgumentTypeRequired
topictextoptional
FlagTypeDefaultWhat it does
--stage <stage>textOnly this stage's topics (e.g. generate).
--pack <pack>textOne domain pack: its vocabulary page, then its topics (e.g. finance).
--packsbooleanList the domain packs.
--capabilitiesbooleanShow the Jingwei/CLI/reference/transport capability contract.
--allbooleanAlso show the long-form reference pages and domain packs.
--search <search>textTopics whose name or description matches, across both catalogs.

Exit codes: 0 — completed

help

Every command, flag, exit code and example as one document.

deepcell help [command...]

deepcell help
ArgumentTypeRequired
command...textoptional
FlagTypeDefaultWhat it does
--stage <stage>textOnly this stage's commands (e.g. generate). Same stages as `deepcell guide`.
--search <search>textCommands whose name or summary matches TEXT.

Exit codes: 0 — completed

ref

Look up legal values, and resolve any typed id.

deepcell ref [target...]

deepcell ref lint/hardcoded_literal_in_calc
ArgumentTypeRequired
target...textoptional
FlagTypeDefaultWhat it does
--limit <limit>integer40Maximum search results.

Exit codes: 0 — completed

rules

The invariants applicable to a .deepcell work shape.

deepcell rules [rule_id]

deepcell rules R2
ArgumentTypeRequired
rule_idtextoptional
FlagTypeDefaultWhat it does
--pack <pack>textAdd this domain pack's rules when their selected surface applies.
--surfaces <surfaces>textComma-separated selected surfaces: reasoning,spreadsheet,document,deck. Omit for universal rules only.
--allbooleanEvery rule, whatever work shape it applies to. Overrides --surfaces/--pack.
--fullbooleanPrint every applicable rule in full, not just the index — one call, no per-rule round trips.

Exit codes: 0 — completed

The rules

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
RuleWhat it saysEnforced byLint code
rule:R1Native generation — Excel at the edges onlyreview
rule:R2Driver-based forecastslinthardcoded_literal_in_calc
rule:R3One file per request, edited in placereview
rule:R4Forecasts must populate — verify by query-backreview
rule:R5Self-checking calculationsreview
rule:R6Point-in-time results stay in their periodreview
rule:R7Canonical naming and unitslintmonetary_units
rule:R8Reasoning stays connected to the work it explainslintunanchored_claim, unanchored_assumption, exclusivity_assertion, body_itemrefs_mismatch
rule:R9Spreadsheet values have an intentional presentationlintunrendered_value
rule:R10A DCF carries a real FCF bridgereview
rule:R11Circular structures by deliberate convention — and seededreview
rule:R12Assumptions are groundedlintunsourced_actual, source_unused
rule:R13Statuses and periods declare what they meanlintundeclared_status_archetype, undeclared_context_state
rule:R14Analytical reasoning states its conclusionlintmissing_apex_recommendation, dangling_conclusion_ref
rule:R15Prose that asserts a value must link itlintuncited_level
rule:R16An outward address lives in exactly one placereview
rule:R17A cross-surface reference is a deepcell: URIreview
rule:R18Overriding a calculated cell removes its formulareview
rule:R19Analytical reasoning states the question it answerslintdangling_key_question_ref, ambiguous_key_question, key_question_not_answered, answers_non_question, unreviewed_key_question

Examples

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.

ExampleThe mechanic it showsDomain
decision/vendor-diligencequalitative evidence-to-decision graph with a linked memo and no gridprocurement / security diligence
finance/cn-a-share-3s-dcfextraction-based raw/model layering with filing provenanceA-share equity research
finance/ic-decka styled multi-slide deck bound onto a finished model, then exportedinvestment committee readout
finance/saas-dcfthe full three-statement + DCF loopfinance
ingest/board-packfaithful workbook import — row/column mapping, converted formulas, per-cell provenancepublic transport, board reporting
manufacturing/line-debottleneckan author-drawn SVG exhibit whose geometry carries the argumentindustrial manufacturing, plant throughput
ops/headcount-planitems × contexts, drivers, and scenariosHR / operations
product/launch-decisionsmall all-four-surface premise change with selective reassessmentproduct launch governance
project/build-budgetstatus axis (committed / actual / forecast) and variance self-checksconstruction, grants
research/experiment-resultscustom dimensions, actual vs expected status, and a <Document> write-upscience / experimental research
supply/inventory-plansensitivity blockslogistics

decision/vendor-diligence

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>

finance/cn-a-share-3s-dcf

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>

finance/ic-deck

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 seven slides whose every number, chart, sentence of reasoning and footnote is a binding against the model's real ids — value, series, chart, reasoning, source and document_stat — 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>

finance/saas-dcf

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>

ingest/board-pack

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>

manufacturing/line-debottleneck

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 outside the drawing and bound, because a `<dc-value>` inside an `<svg>` resolves to an HTML span that an SVG paints as nothing at all.

deepcell example get manufacturing/line-debottleneck --into <into>

ops/headcount-plan

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.

deepcell example get ops/headcount-plan --into <into>

product/launch-decision

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>

project/build-budget

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>

research/experiment-results

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>

supply/inventory-plan

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>
Setting up an agent that has never seen DeepCell? Open the agent quick start