Docs · Semantic integrity
Semantic integrity (SIV Lite)
If the product is data, the runtime must refuse malformed products.
SIV — the Semantic Integrity Validator — runs on every write to the product graph. Before a DataObject lands, it's checked on three axes:
- Structural — the object has a well-formed identity and declares its schema.
- Typing — required fields exist for the declared type: a component has a
kind, a goal has a title and status, a page carries what a page must carry. - Referential — the keys objects use to point at each other (
libraryComponentId,homePageId,pageIds,goalIds, …) resolve to real objects.
Modes
SIV Lite runs in one of three modes (CLOSURE_SIV_LITE):
| Mode | Behavior |
|---|---|
warn (default) | Violations are recorded as siv.rejected Events; the write proceeds |
enforce | Violations reject the write |
off | Disabled |
Referential checks are soft by default so pack installs can upsert objects in any order — a reference that resolves by the end of the install is fine.
Why "Lite"
The full SIV lives in the Closure L1 kernel, where semantic integrity is a protocol guarantee. SIV Lite is the Platform port of the same classes of checks, applied at the SaaS write-through boundary. Same doctrine, appropriate weight.
What it means for you
- Agents and humans go through the same gate — an IDE agent can't write a component the renderer can't render.
- Violations show up in Events, so integrity drift is visible, not silent.
- Combined with drift scans, the graph stays a product you can trust, not a JSON pile.