---
audience: engineers
summary: Mental model, terminology, and the design decisions a ScaiCore author should
  keep in mind.
title: Concepts
path: concepts
status: published
---

The pages in this section explain the building blocks of a ScaiCore program and the model of execution the runtime gives you. Read them once when you're new to the language; they pay off when you start choosing between, say, a `@rigid` and a `@flexible` block, or when you need to decide whether your Core is stateless or per-entity.

## In this section

- [Blocks](./concepts/blocks) — the fourteen block kinds, organized by what they're for: computation, control flow, external calls, and lifecycle. The most important conceptual page in the docs.
- [Instance modes](./concepts/instance-modes) — `:stateless`, `:entity`, and `:singleton`. Picks the right one for your workload.

For the exhaustive grammar and IR shape, jump to the reference: [Language reference](../reference/language) for the full language dictionary, [IR specification](../reference/ir) for what the compiler emits and the runtime consumes. The reference pages are published snapshots of the upstream design docs; they're authoritative for syntax and semantics when this section doesn't go deep enough.
