Publishing changes
How edits to your semantic model go live โ the Check & Save gate, its verdicts, and how saved CML reaches Discover and Orion.
When to use it โ Every time you change a node or domain in Forge and want those changes to take effect for everyone in the workspace.
Where to find it โ Forge โ open a node or domain in Build mode โ the Check & Save button in the editor toolbar.
Who can use it โ Weavers and Luminaries can edit and save. Only Luminaries can override a blocking check.
There is no separate "Draft branch" you push and no pull request to merge. In Celiq today, you edit CML directly in Forge, run it through the Check & Save gate, and the moment a save succeeds the file becomes the live model. Discover queries and Orion answers immediately reflect what you saved.
This page explains the gate, what each verdict means, who can do what, and exactly how a saved file reaches Discover and Orion.
Overview
Saving in Forge is deliberately not a one-click write. When you click Check & Save, Celiq runs a short pipeline of semantic checks over the parsed CML โ the same way a CI run gates a code merge โ and only then decides whether the save proceeds.
The checks resolve one at a time in a small panel titled Semantic Check, then the panel shows a single verdict:
- Semantic Check Passed โ the file saves automatically.
- Passed with warnings โ you choose Save anyway or Review warnings.
- Blocked โ the save is held until you fix the issue or a Luminary overrides it.
A successful save writes the CML to the node or domain in your project. That stored CML is the live semantic layer โ there is no second promotion step. Every Reveal, Prism, and Mosaic tile in the workspace queries against it, and Orion reads it when answering questions.
When to use it
Use the Check & Save gate whenever you have edited a node or domain and want the change to take effect:
- You added or changed a metric, attribute, or join.
- You edited a domain's reveals, filters, or relationships.
- You imported or regenerated nodes and want to commit the result.
- You fixed a CML error flagged by Validation.
You do not need the gate to preview your edits โ the editor shows parse state and the graph/lineage views as you type. The gate is the step that makes the edit live.
Concepts
| Term | What it means |
|---|---|
| Build mode | The Forge editing mode where you author CML for a node or domain. Check & Save lives here. (The other modes are Browse, Validate, and Evals.) |
| Check & Save | The button that opens the Semantic Check gate. It replaces any older "save" or "deploy" action. |
| Semantic Check | The check pipeline run over your parsed CML before the save is allowed. |
| Verdict | The gate's decision after every check resolves: passed, passed with warnings, or blocked. |
| Blocking check | A check that, if it fails, stops the save. A failing Validation (CML will not parse) or a Performance fanout risk both block. |
| Override | A Luminary-only action to save past a blocking check. |
| Live model | The saved CML in your project. Discover and Orion read this directly โ there is no separate Draft and Live copy. |
Getting started
Prerequisites- You are a Weaver or Luminary. Tracers and Lens users cannot edit or save model files.
- You have a project open in Forge with a node or domain selected.
- The project is not a system project โ system projects (such as
project.celiq) are read-only and do not show the Check & Save button.
- Go to Forge and select your project.
- Open a node or domain file. Make sure you are in Build mode.
- Make your edits in the editor.
- Click โ Check & Save in the toolbar (top-right of the editor for domain files).
Step-by-step
Edit the file in Build mode
Open the node or domain and make your changes. As you type, the editor parses your CML and updates the Code / Graph / Lineage views. A small saved-state indicator shows whether the current editor content has been saved yet.
Click Check & Save
Click โ Check & Save. The Semantic Check panel opens and runs its checks top-to-bottom: Validation, Performance, Governance, Lineage, and Impact. Each row shows a spinner, then resolves to a pass, warning, or fail with a one-line detail.
Read the verdict
Once every row resolves, the panel shows one of three outcomes:
- Semantic Check Passed โ a green banner. The file auto-saves after a short beat; you do not need to click anything.
- Passed with warnings โ an amber banner with Review warnings and Save anyway.
- Blocked โ a red banner naming the failing check, with Cancel, Override & Save (Luminary only), and Fix & Re-run.
Act on the verdict
- On a clean pass, you are done โ the save already happened.
- On warnings, click Save anyway to persist as-is, or Review warnings to go back and address them.
- On a block, click Fix & Re-run to open a guided fix (for example, the fanout fixer) and re-run the gate, or โ if you are a Luminary โ Override & Save to save past the block.
Confirm it went live
After a successful save, the editor toolbar shows a verdict badge (โ checks passed, โ passed w/ warnings, or โ blocking). The saved CML is now the live model. Open Discover or ask Orion to see the change reflected.
Examples
Suppose you add a total_revenue metric to your orders node:
node: orders
physical_table: analytics.orders
date_column: created_at
attributes:
- name: status
- name: customer_id
metrics:
- name: total_revenue
intent: sum
column: amount
owner: weaver@yourco.comWhen you click Check & Save:
- Validation passes โ the CML parses and the structure is valid.
- Performance passes โ there is no fanout risk and a date column is present.
- Governance passes โ the metric has an
owner. (Metrics without an owner lower the governance score and can produce a warning.) - Lineage and Impact pass.
The verdict is Semantic Check Passed, the file auto-saves, and total_revenue is immediately available in Discover and to Orion.
Now suppose the same metric sums a value across a many-to-many join, creating a fanout that would inflate the total. The Performance row fails and is blocking, so the verdict is Blocked: Revenue Fanout. The save is held. You click Fix & Re-run, apply the suggested fix, and the gate re-runs โ once Performance passes, the save proceeds.
Best practices
- Give every metric an owner. An unowned metric drags down the Governance score and surfaces as a warning at save time. Setting
ownerkeeps your saves clean. - Fix fanout instead of overriding it. A blocking fanout means the metric can return inflated numbers. Prefer Fix & Re-run over overriding so the live model returns correct values.
- Watch the Impact row on widely-used files. When a domain feeds many Mosaics, the Impact check warns you that the save affects a lot of downstream tiles and users. Review before saving.
- Save in small, coherent edits. Because saving is the publish step, smaller saves make it easier to see what changed in Discover and to roll back conceptually if a number looks wrong.
- Regenerate Orion context after structural changes. Adding nodes can auto-trigger context regeneration; for larger reshapes, regenerate context so Orion's understanding stays current.
Tips
A clean pass saves itself โ when you see the green Semantic Check Passed banner, do not wait for a button. Closing the panel early is unnecessary; the save fires automatically a moment after the banner appears.
Common mistakes
- Expecting a Draft/Live toggle or a pull request. There is none. A successful Check & Save is the publish โ the file goes live immediately for Discover and Orion.
- Treating "Override & Save" as a normal save. Override is Luminary-only and bypasses a real blocking check (a parse failure or a fanout). It can push incorrect numbers live. Use it only for a deliberate, understood exception.
- Ignoring "Passed with warnings." Warnings (missing owners, many-to-many lineage, high impact) do not block, but Save anyway persists them. Skim the detail lines before you commit.
- Editing a system or read-only project. System projects do not show the Check & Save button and cannot be saved. Work in your own project.
Troubleshooting
| Symptom | Cause | Fix |
|---|---|---|
| Verdict is Blocked with "Syntax error โ cannot parse" | The CML failed to parse, so the blocking Validation check failed | Fix the YAML/CML syntax in the editor and re-run. See Validation. |
| Verdict is Blocked: Revenue Fanout | A metric sums across a join that inflates the value; the blocking Performance check failed | Click Fix & Re-run to apply the fanout fix, or correct the join/aggregation manually, then re-save. |
| Override & Save is greyed out | You are not a Luminary | Ask a Luminary to override, or fix the blocking issue so the save passes on its own. |
| Verdict is Passed with warnings and you are unsure whether to save | A non-blocking check (Governance, Lineage, or Impact) raised a warning | Read the row's detail (e.g. metrics without owner, many-to-many lineage, mosaics affected). Click Review warnings to address them or Save anyway to proceed. |
| No Check & Save button appears | The file is in a system or read-only project | Open the file in your own (non-system) project to edit and save it. |
| The saved-state indicator stays unsaved after saving | The save request failed (the editor leaves the indicator in its unsaved state on error) | Check your connection and permissions, then click Check & Save again. |
Related pages
- Validation โ the checks behind the gate and how to clear failures.
- Forge โ authoring nodes and domains in CML.
- CML reference โ the syntax for the files you publish.
- Discover โ where your saved model is queried.