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:

  1. Structural — the object has a well-formed identity and declares its schema.
  2. 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.
  3. 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):

ModeBehavior
warn (default)Violations are recorded as siv.rejected Events; the write proceeds
enforceViolations reject the write
offDisabled

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.