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. StrategicReview and ReviewRecommendation 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 srim.

The implementation spine

flowchart TD
  Entity[Entity]
  SR[StrategicReview]
  Rec[ReviewRecommendation]
  PA[RecommendationPriorityAssessment]
  WS[Workstream]
  RW[RecommendationWorkstream]
  Act[ImplementationAction]
  MS[Milestone]
  Dep[Dependency]
  Risk[Risk]
  ER[EvidenceRequirement]
  EV[EvidenceSubmission]
  Val[ValidationAssessment]
  Ben[Benefit]
  GM[GovernanceMeeting]
  Dec[Decision]
  CR[ChangeRequest]
  PS[ProgressSnapshot]
  CD[ClosureDecision]

  Entity --> SR
  SR --> Rec
  Rec --> PA
  SR --> WS
  Rec --> RW
  WS --> RW
  Rec --> Act
  WS --> Act
  WS --> MS
  SR --> Dep
  SR --> Risk
  Rec --> ER
  ER --> EV
  Rec --> Val
  SR --> Ben
  SR --> GM
  SR --> Dec
  GM --> Dec
  SR --> CR
  SR --> PS
  Rec --> CD

How to read it

  • Two hubs. The StrategicReview carries workstreams, dependencies, risks, benefits, governance and snapshots; each ReviewRecommendation carries its priority, actions, evidence, validation and closure. The viewer lets you hide their edges to see local structure.
  • Recommendations map to workstreams. RecommendationWorkstream is the many-to-many link; ImplementationActions and Milestones deliver the work.
  • Closure rests on validation. EvidenceRequirement/EvidenceSubmission feed a ValidationAssessment (sufficient / sustainable); a ClosureDecision closes the recommendation when validated.
  • Benefits & governance. Benefits track measures to targets; GovernanceMeetings and Decisions (including ChangeRequests) steer the programme; a ProgressSnapshot is the point-in-time roll-up.

Backing data (denormalised for display)

Each foreign key carries a denormalised <fk>_name display column so lists read in plain language (the RecommendationWorkstream link shows both its recommendation and workstream; a Decision shows its meeting) without a join at read time — the house style for these apps.