|
| 1 | +# Architecture Decision Records (ADR) Support in CALM |
| 2 | + |
| 3 | +## Overview |
| 4 | + |
| 5 | +This proposal introduces support for Architecture Decision Records (ADRs) in the CALM meta-schema. |
| 6 | +By allowing architectures and patterns to reference ADRs, we improve traceability between design decisions and architectural models. |
| 7 | +ADRs can be hosted in CALM Hub or external documentation repositories. |
| 8 | + |
| 9 | +## Motivation |
| 10 | + |
| 11 | +CALM is designed to complement, not replace, existing tooling and documentation practices. |
| 12 | +One such widely adopted practice is the use of Architecture Decision Records to capture key architectural decisions. |
| 13 | + |
| 14 | +While CALM already integrates well with tools like the C4 model, it lacks a formal way to link ADRs to architectural elements. |
| 15 | +This proposal addresses that gap by introducing a lightweight mechanism for referencing ADRs directly within CALM models. |
| 16 | + |
| 17 | +This change enables: |
| 18 | + |
| 19 | +1. Documentation of ADRs associated with both architecture definitions and reusable patterns |
| 20 | +1. Linking to existing ADRs stored in other repositories (e.g., GitHub, Confluence, Notion) |
| 21 | +1. Compatibility with CALM Hub and other centralized architecture stores |
| 22 | + |
| 23 | +## Schema Changes |
| 24 | + |
| 25 | +### core.json |
| 26 | + |
| 27 | +Introduced a new optional adrs property at the document level: |
| 28 | + |
| 29 | +```json |
| 30 | +"adrs": { |
| 31 | + "type": "array", |
| 32 | + "items": { |
| 33 | + "type": "string" |
| 34 | + } |
| 35 | +} |
| 36 | +``` |
| 37 | + |
| 38 | +## Example Architecture |
| 39 | + |
| 40 | +The following example shows how an architecture file could declare references to ADRs: |
| 41 | + |
| 42 | +```json |
| 43 | +{ |
| 44 | + "$schema": "https://calm.finos.org/draft/1224/meta/calm.json", |
| 45 | + "name": "Trading Platform", |
| 46 | + "adrs": [ |
| 47 | + "https://github.com/org/project/docs/adr/0001-use-kafka.md", |
| 48 | + "https://internal-docs.company.com/adr/0023-security-boundary.pdf" |
| 49 | + ], |
| 50 | + "nodes": [ ... ], |
| 51 | + "relationships": [ ... ] |
| 52 | +} |
| 53 | +``` |
| 54 | + |
| 55 | +## Migration Guide |
| 56 | + |
| 57 | +### For Existing CALM Models |
| 58 | + |
| 59 | +Fully backwards compatible, no work to do. |
| 60 | + |
| 61 | +## Tooling Considerations |
| 62 | + |
| 63 | +May require the generator to be updated to support the new adrs property. |
| 64 | + |
0 commit comments