Domain model
============
These pages describe what Adriano stores and the rules it applies,
as implemented in :mod:`app.domain` (pure logic) and :mod:`app.storage`
(persistence).
They are written for developers changing that logic.
How authors write ADR and erratum files is covered for authors in
:doc:`/user/index`.
.. mermaid::
flowchart LR
file["ADR or erratum file
(bytes from a source or CI)"]
parsed["ParsedRecord
metadata, links, issues"]
digest["Digest
sha256-v1"]
row["record row
published or candidate"]
rev["revision
canonical snapshot"]
event["decision_event
accepted or rejected"]
state["Approval state
of the current digest"]
file -- "parse_record()" --> parsed
file -- "content_digest()" --> digest
parsed -- "upsert" --> row
digest -- "names" --> rev
row -- "current digest" --> rev
event -- "identity + digest" --> state
row -- "identity + current digest" --> state
.. toctree::
:maxdepth: 2
records
hashing
approval
errata
schema