# Operator Semantics KRINEIA exposes exactly three first-class chain operators: `append`, `project`, and `cut`. They are modes of **krinein** (κρίνειν) — the Greek verb meaning to separate, judge, decide, distinguish. Same root as *critic, crisis, criterion*. The etymology is interpretive: it explains why these three operators cohere as a set. [`INVARIANTS.md`](INVARIANTS.md) is normative: it defines what each operator does and what is disallowed. Where this file and `INVARIANTS.md` appear to disagree, `INVARIANTS.md` wins. ## The three modes | Operator | Semantics | Boundary | |---|---|---| | `append(receipt)` | Distinguish a new receipt from prior chain state by recording it immutably. | Mutates only by adding a receipt. | | `project(filter)` | Distinguish a non-mutating view from the whole chain. | Returns a view; does not rewrite history. | | `cut(scope)` | Distinguish a bounded evidentiary excerpt from the chain. | Returns an evidence pack; does not authorize, delete, punish, or steer. | A `cut()` may be parameterized by drift or setpoint criteria, but the operator returns evidence; it does not itself authorize, delete, punish, or steer. The boundary between evidence and control is invariant #4 (External analysis only) in [`INVARIANTS.md`](INVARIANTS.md). ### Krinein modes (interpretive) The mapping below is an interpretive aid, not part of the chain schema or the operator contract. Implementers consume the table above and `INVARIANTS.md`; the table below explains why exactly these three operators cohere. | Operator | Krinein mode | |---|---| | `append(receipt)` | distinguish-now | | `project(filter)` | distinguish-for-view | | `cut(scope)` | distinguish-as-evidence | ## Why exactly three Within KRINEIA, these are the only first-class chain operators. Other useful actions must either compose `append`, `project`, and `cut`, or remain outside the receipt-chain surface. This preserves the append-only invariant and keeps governance evidence separate from operational control. Cross-chain composition (e.g., relating one chain's state to another's) is modeled as externally verified composition plus `append()` on each affected chain. It is not a first-class chain operator. ## Substrate, not just protocol KRINEIA is a substrate, not only a message format. Receipts are generated at a trust-root-controlled location by an authorized writer structurally independent of the observed agent (invariant #5 in [`INVARIANTS.md`](INVARIANTS.md)). Implementations may host the substrate anywhere (filesystem, append-only database, distributed log, Merkle-rooted blob store) provided the five invariants hold. ## See also - [`INVARIANTS.md`](INVARIANTS.md) — the five governing invariants (normative) - [`RECEIPT_SCHEMA.md`](RECEIPT_SCHEMA.md) — canonical receipt envelope, hash rule, event taxonomy - [`README.md`](../README.md) — repo overview and project status