# IcyDB Model
Application-model authoring, validation, and code generation for IcyDB.
This package owns the host-side declaration graph, reusable application types,
validators and normalizers, and lowering into the bounded `icydb-schema`
proposal contract. It does not own accepted schema, storage, planning,
execution, or recovery authority.
Schema-only consumers depend on this package without depending on the IcyDB
database runtime. Generated typed adapters are explicit opt-in output for
consumers that also depend directly on `icydb`.
The three behavior families are intentionally separate:
- durable rules are bounded proposal metadata that become accepted
root-field-plus-nominal-type constraints and are enforced by IcyDB across
direct, nested, repeated, and finite recursive occurrences;
- validators are explicitly invoked Rust application checks; and
- normalizers are explicitly invoked Rust application transformations.
Generated adapters never execute validators or normalizers implicitly, and
the database runtime never loads the authored model as enforcement authority.
References:
- Workspace overview: `../../README.md`
- Design:
`../../docs/design/0.213-schema-authority-and-application-model-separation/0.213-design.md`
- Release notes: `../../CHANGELOG.md`