# The `build/` folder

`build/` holds only generated files. It is never edited, never committed
and never read as input, and the same source always produces the same
bytes. Anything a person reviews and keeps lives outside it, such as the
record of the public API ([The public API
record](/docs/the-public-api-record.md)) or the identity registry
([Stable identity](/docs/stable-identity.md)).

```text
build/
  manifest.json               the application's manifest (area 18)
  catalogue/
    libraries.md              every library function and constant: signature or type and value, description, callers or readers
    failures.md               every failure: code, kind, status, client fields
  report/
    database.md               every table, column and index, with the query that needs it
    queries.md                each query call: store or cache, row bound, queries per request
    permissions.md            who can do what to every entity and field, and the actions listed apart
  diagnostics/                the error catalogue
  inventory/                  routes and callables
  audit/                      failures, entities, transactions, configuration, policy
  openapi/openapi.json
  monitoring/
    prometheus.yaml           alerting rules for each threshold judged across requests, and each disk floor
    openslo.yaml              an OpenSLO objective for each percentile and server-failure limit
  compatibility/              public failure codes
  before/<commit>/            the before side's manifest and declines (jadpo approval only)
  review/                     approval.md and approval.json (jadpo approval only)
  rust/                       a deployable's Rust and cargo's builds of it (jadpo build only)
  target/                     the runnable app (jadpo build only)
```

For a project, `jadpo check` writes `build/manifest.json` ([Records and
manifest](/docs/records-and-manifest.md)) and the catalogues
`build/catalogue/libraries.md` and `failures.md`, each with a `.json`
twin. It writes them whether or not there are errors, so what an agent
looks up is never stale. A file is rewritten only when its bytes change.
Loose files, outside any project, write nothing.

Each report is written as Markdown, which an agent can search, with a
`.json` twin for tools. The query report is specified with
[Reads and writes](/docs/reads-and-writes.md), and is kept beside the schema
report because a reviewer reads them together.

`jadpo check` also writes the monitoring rules to `build/monitoring/`
once the thresholds read cleanly
([Monitoring](/docs/monitoring-thresholds.md)).

Not built yet: the schema report ([Entities, stores and migrations](/docs/data.md)) and the query report,
and the `diagnostics/`, `inventory/`, `audit/` and `compatibility/` folders.
