Skip to content
Raw Markdown

Source-change commands

Read the Data source review queue from a checkout: what drifted in the source, what it breaks in the ontology, and what the suggested fix would be.

These commands read the same queue as the Data source feed under Review in the web app, described in Review data-source changes, and as the MCP source-change tools: the schema drift Cassis detected between your source and what the ontology tracks. They need cassis-cli 1.6.0 or newer. Like the other project-bound commands, the project id comes from cassis/project.yml in the checkout, CASSIS_PROJECT_ID, or --project, and --path points at a checkout other than the current directory.

Reading only, on purpose. Approving or dismissing a change stays in the web app, because approving edits the ontology and dismissing mutes the table. Headlessly, you act on a change the way you make any other ontology change: edit the files and open a pull request. What these commands add is the reading — so an agent working in a checkout can see that a breaking column_removed is pending on the very table it is about to touch.

source-changes list

Lists the queue newest first, one line per change: id, type, severity, status, and target. The target is schema.table for a table change and schema.table.column for a column change. The id is what source-changes show takes.

# What is waiting for review
cassis source-changes list

# Another bucket
cassis source-changes list --status approved

# Page through a long queue
cassis source-changes list --limit 20 --offset 20

# Raw JSON
cassis source-changes list --json
Status
--status takes pending, approved, rejected (what dismissing in the app records), or superseded (a later detection found the change no longer holds, for instance after a corrected DDL upload). Omit it for the pending queue, which is the one you normally want. An unknown value is a usage error, exit 2.
Paging
--limit (100 by default, 500 maximum) and --offset. When more changes match than the page shows, the last line names the --offset for the next page. A queue can hold thousands of rows after a large schema refresh, so expect to page.
Types
table_added, table_removed, table_renamed, column_added, column_removed, column_renamed, column_retyped.
Severity
breaking means a curated ontology object — a join, metric, virtual table, or grain — references the changed source object, so something in the ontology is already wrong. benign means nothing references it yet. Spend your attention here rather than on queue order.
Machine-readable output
--json prints the page as {items, total}, so a script can size the queue without paging it. Feed rows carry the suggested edit’s summary line and its manual-review notes, not the full edit: that comes from show.
Exit codes
0 on success, including an empty queue. 2 on a usage error, 3 on a transport or API error.

source-changes show

Shows one change in full: its target, how many times detection has raised it and when it was last seen, the ontology objects it affects, and the edit Cassis suggests.

cassis source-changes show 019f0000-0000-7000-8000-0000000000a1

# The full record, suggested-edit operations included
cassis source-changes show 019f0000-0000-7000-8000-0000000000a1 --json
Impact
One line per referencing object: its kind (join, metric, virtual table, grain), the confidence, and the object itself. Confidence is exact for a structured match, heuristic for an unqualified column resolved through its home table, and unverified when the object’s SQL did not parse but the name appears in it as an identifier. Treat unverified as a lead to check, not a fact.
Suggested edit
A one-line summary of what approving in the app would do: the rename to apply, the type to correct. It is a description of the fix, not the fix — make the equivalent change in the ontology files. Anything the suggestion cannot decide for you is printed under Manual review.
Exit codes
0 on success. 1 when the project has no change with that id, which is a real answer rather than a transport failure. 2 on a usage error, 3 on a transport or API error.

The headless loop from a checkout: cassis status tells you something is pending, source-changes list shows what and how bad, source-changes show gives you the impact and the suggested edit, then you edit the ontology files, prove the change with cassis verify, and open the pull request. A DDL-only project refreshes the source with cassis schema push, which is what fills this queue in the first place.