# Internals

> croft docs internals

Data-coupled state lives in the warehouse, schema \_croft, and commits with the data it describes:

```text
_croft.meta      format_version, duckdb_version, croft_version
_croft.assets    one row per asset: kind, write mode, key, code and behavior hashes, cursor, row count
_croft.columns   column types, source names, pins, pending retypes, JSON kinds
_croft.inputs    what each transform has seen of each input (composite positions)
_croft.files     files a file ingest has loaded (size, mtime, ETag, sha256)
_croft.writes    one row per write: maps any row's _loaded_at to the run that wrote it
```

Observability and coordination state lives in .croft/runs.sqlite and stays readable while the
warehouse is locked: runs, steps, leases, lock_holder, lock_waiters, schedule_state, tick,
confirmations and catalog (a mirror of \_croft; the warehouse wins).

Never write to either by hand; query \_croft tables with croft query.

The same page is in the CLI: `croft docs internals`.

Source: https://croft.zabaca.com/docs/reference/internals/
