# StatifierDatamodel v0.4.0 - Table of Contents

> The datamodel document and what can be decided from it: the typed three-scope declaration, its named record and shape types, the path/type index, the read check, compatibility and coverage - pure functions, no dependency on the block editor, the compiler or the UI

## Pages

- [StatifierDatamodel](readme.md)
- [Changelog](changelog.md)

- Architecture decisions
  - [ADR-0001: The datamodel document, re-homed: a typed three-scope declaration with named record and shape types, and the declared-path set as its projection](0001-datamodel-document.md)

## Modules

- [StatifierDatamodel](StatifierDatamodel.md): The datamodel document and what can be decided from it, with no dependency
on the block editor, the compiler, or the UI.

- Document and index
  - [StatifierDatamodel.Document](StatifierDatamodel.Document.md): The document-level reads: the three questions a consumer asks of a raw,
decoded datamodel document rather than of an index it already holds.
  - [StatifierDatamodel.Index](StatifierDatamodel.Index.md): The path/type index over a datamodel document (ADR-0001), and the
projections that record promises.

- Declared types
  - [StatifierDatamodel.Declarations](StatifierDatamodel.Declarations.md): The index over a datamodel document's `types` key (ADR-0001 decision 5):
the named record and shape declarations, by name.
  - [StatifierDatamodel.Types](StatifierDatamodel.Types.md): Type expressions over a datamodel document, and ADR-0001 decision 8's read
check.

- Compatibility and coverage
  - [StatifierDatamodel.Compatibility](StatifierDatamodel.Compatibility.md): ADR-0001 decision 9: what a redefined declaration takes away from the one
it replaces.
  - [StatifierDatamodel.Coverage](StatifierDatamodel.Coverage.md): ADR-0001 decision 10: which required fields of a shape a map does not fill.

