02 — System Diagram

🔍 Open the Interactive Diagram Viewer — pan, mouse-wheel zoom, fit-to-screen, full-screen, per-area tabs, the full ERD, and a focus mode that draws one model and its neighbours at a chosen depth. AuditRequest and Investigation are hub tables, so their links can be hidden to declutter the overview.

Regenerate the viewer after any DSL, menu_config.yaml or diagram_config.yaml change: python scripts/build_diagram_viewer.py arim.

The case spine

flowchart TD
  Entity[Entity]
  AR[AuditRequest]
  Iss[RequestIssue]
  Tri[TriageAssessment]
  Jur[JurisdictionAssessment]
  Con[ConflictAssessment]
  IR[InformationRequest]
  Inv[Investigation]
  Plan[InvestigationPlan]
  Ev[EvidenceItem]
  EIL[EvidenceIssueLink]
  CoC[ChainOfCustody]
  Int[Interview]
  Chr[ChronologyEvent]
  Find[Finding]
  FEL[FindingEvidenceLink]
  PFR[ProceduralFairnessResponse]
  Rec[Recommendation]
  Ref[Referral]
  Dec[Decision]
  Clo[ClosureRecord]
  SH[StatusHistory]

  Entity --> AR
  AR --> Iss
  AR --> Tri
  AR --> Jur
  AR --> Con
  AR --> IR
  AR --> Inv
  Inv --> Plan
  Inv --> Ev
  Ev --> EIL
  Iss --> EIL
  Ev --> CoC
  Inv --> Int
  Inv --> Chr
  Inv --> Find
  Iss --> Find
  Find --> FEL
  Ev --> FEL
  Find --> PFR
  Inv --> Rec
  AR --> Ref
  AR --> Dec
  AR --> Clo
  AR --> SH

How to read it

  • Two hubs. The AuditRequest carries intake, triage and outcome; the Investigation carries plan, evidence, interviews, chronology and findings. The viewer lets you hide their edges to see local structure.
  • Evidence is linked and controlled. EvidenceItems link to issues (EvidenceIssueLink, supports/contradicts) and to findings (FindingEvidenceLink), and each carries a ChainOfCustody trail — the defensibility backbone.
  • Findings are tested. A Finding against a RequestIssue is corroborated by evidence and put through a ProceduralFairnessResponse (natural justice) before it is settled.
  • Outcomes then closure. Recommendation, Referral and an authorised Decision lead to a ClosureRecord with a completeness checklist (records, evidence index, conflicts, procedural fairness).
  • StatusHistory is the audit trail of the request's state transitions.

Backing data (denormalised for display)

Each foreign key carries a denormalised <fk>_name display column so lists read in plain language (link tables resolve both sides — e.g. an EvidenceIssueLink shows both its evidence and its issue) without a join at read time — the house style for these apps.