-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdocgraph.toml
More file actions
129 lines (117 loc) · 3.79 KB
/
docgraph.toml
File metadata and controls
129 lines (117 loc) · 3.79 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
# docgraph.toml - Document Graph Validation Configuration
# Based on the Dependency Model specification
[graph]
ignore = ["README.md", "SECURITY.md", ".agent", ".claude", ".claude-plugin", "docgraph-plugin", "doc/templates"]
# Core specification types
[nodes.UC]
desc = "Use Case"
template = "doc/templates/usecases.md"
rules = [
{ dir = "to", targets = [
"ACT",
], min = 0, desc = "Use cases involves actors", rel = "involves" },
{ dir = "to", targets = [
"IF",
], min = 0, desc = "Use cases requires interfaces", rel = "requires" },
{ dir = "to", targets = [
"FR",
], min = 0, desc = "Use cases are elaborated by requirements", rel = "elaborated_by" },
]
[nodes.FR]
desc = "Functional Requirement"
template = "doc/templates/functional.md"
rules = [
{ dir = "to", targets = [
"UC",
], min = 1, desc = "Every functional requirement must be derived from at least one business scenario (UC)", rel = "derived_from" },
{ dir = "to", targets = [
"CON",
], min = 0, desc = "Functional requirements may be derived from foundational constraints", rel = "derived_from" },
{ dir = "to", targets = [
"IF",
], min = 0, desc = "Functional requirements may reference interfaces", rel = "references" },
]
[nodes.NFR]
desc = "Quality Requirement (Non-Functional)"
template = "doc/templates/non-functional.md"
rules = [
{ dir = "to", targets = [
"FR",
], min = 0, desc = "Quality requirements qualify specific functional behavior", rel = "qualifies" },
{ dir = "to", targets = [
"CON",
"CC",
], min = 0, desc = "Quality requirements may be constrained by foundational constraints", rel = "constrained_by" },
]
[nodes.CON]
desc = "Constraint"
template = "doc/templates/constraint.md"
rules = [
# Root nodes.
]
[nodes.MOD]
desc = "Module"
template = "doc/templates/module.md"
rules = [
{ dir = "to", targets = [
"FR",
"NFR",
"IF",
"CC",
], min = 1, desc = "Every structural module must realize at least one requirement or architectural concept", rel = "realizes" },
]
# Architecture types
[nodes.CC]
desc = "Cross-cutting Concept"
template = "doc/templates/cross-cutting.md"
rules = [
{ dir = "to", targets = [
"NFR",
"FR",
], min = 0, desc = "Cross-cutting concerns are reflected in requirements", rel = "reflected_in" },
{ dir = "to", targets = [
"ADR",
], min = 0, desc = "Cross-cutting concerns are decided by architectural decisions", rel = "decided_by" },
]
# Documentation types
[nodes.ACT]
desc = "Actor"
template = "doc/templates/actors.md"
rules = [
{ dir = "to", targets = [
"*",
], min = 0, desc = "Actors represent external entities interacting with the system", rel = "involves" },
{ dir = "to", targets = [
"UC",
], min = 1, desc = "System actors must participate in at least one business scenario (UC)", rel = "participates_in" },
]
[nodes.DAT]
desc = "Data Entity"
template = "doc/templates/data.md"
rules = [
{ dir = "to", targets = [
"*",
], min = 0, desc = "Data entities provide shared domain models utilized across multiple system components", rel = "uses_data" },
]
[nodes.IF]
desc = "Interface Specification"
template = "doc/templates/interface.md"
rules = [
{ dir = "to", targets = [
"*",
], min = 0, desc = "System interfaces define the public contracts", rel = "integrated_with" },
{ dir = "to", targets = [
"UC",
], min = 1, desc = "Exposed interfaces must be justified by at least one business scenario (UC)", rel = "justified_by" },
{ dir = "to", targets = [
"FR",
], min = 1, desc = "Interfaces must be defined by functional requirements", rel = "defined_by" },
]
[nodes.ADR]
desc = "Architecture Decision Record"
template = "doc/templates/decision.md"
rules = [
{ dir = "to", targets = [
"*",
], min = 0, desc = "Architectural decisions provide the design rationale", rel = "informed_by" },
]