Domain model

These pages describe what Adriano stores and the rules it applies, as implemented in app.domain (pure logic) and app.storage (persistence). They are written for developers changing that logic. How authors write ADR and erratum files is covered for authors in Users.

        flowchart LR
  file["ADR or erratum file<br/>(bytes from a source or CI)"]
  parsed["ParsedRecord<br/>metadata, links, issues"]
  digest["Digest<br/>sha256-v1"]
  row["record row<br/>published or candidate"]
  rev["revision<br/>canonical snapshot"]
  event["decision_event<br/>accepted or rejected"]
  state["Approval state<br/>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