@sdd-method/author-cli 0.0.0-stage → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (203) hide show
  1. package/LICENSE +201 -0
  2. package/NOTICE +17 -0
  3. package/README.md +6 -2
  4. package/dist/author-bin.js +8 -0
  5. package/dist/author-program.js +99 -0
  6. package/dist/lib/adr-origin.js +59 -0
  7. package/dist/lib/agent-harness.js +37 -0
  8. package/dist/lib/api-surface/__fixtures__/serverless-repo/serverless/serverless.yml +18 -0
  9. package/dist/lib/api-surface/analyzers/library.js +95 -0
  10. package/dist/lib/api-surface/analyzers/serverless.js +336 -0
  11. package/dist/lib/api-surface/analyzers/spring.js +237 -0
  12. package/dist/lib/api-surface/analyzers/terraform.js +109 -0
  13. package/dist/lib/api-surface/detect.js +25 -0
  14. package/dist/lib/api-surface/emit.js +109 -0
  15. package/dist/lib/api-surface/file-set.js +43 -0
  16. package/dist/lib/api-surface/index.js +134 -0
  17. package/dist/lib/api-surface/types.js +17 -0
  18. package/dist/lib/briefing/index.js +13 -0
  19. package/dist/lib/briefing/render.js +132 -0
  20. package/dist/lib/briefing/variables.js +92 -0
  21. package/dist/lib/catalogue/application-archetype/vocabulary.js +177 -0
  22. package/dist/lib/catalogue/archetype/maps/android.yaml +66 -0
  23. package/dist/lib/catalogue/archetype/maps/swiftui.yaml +58 -0
  24. package/dist/lib/catalogue/archetype/maps/uikit.yaml +48 -0
  25. package/dist/lib/catalogue/archetype/maps/web-generic.yaml +86 -0
  26. package/dist/lib/catalogue/archetype/openui-archetype-vocabulary.yaml +46 -0
  27. package/dist/lib/catalogue/archetype/resolver.js +103 -0
  28. package/dist/lib/catalogue/archetype/wireframe.js +418 -0
  29. package/dist/lib/catalogue/baseline-check.js +151 -0
  30. package/dist/lib/catalogue/build.js +1502 -0
  31. package/dist/lib/catalogue/builders/adr-supersedes.js +103 -0
  32. package/dist/lib/catalogue/builders/adrs.js +222 -0
  33. package/dist/lib/catalogue/builders/application-conformance-coverage.js +47 -0
  34. package/dist/lib/catalogue/builders/application-data-plane-bindings.js +115 -0
  35. package/dist/lib/catalogue/builders/c4-components.js +229 -0
  36. package/dist/lib/catalogue/builders/c4-containers.js +240 -0
  37. package/dist/lib/catalogue/builders/c4-entity-rollups.js +87 -0
  38. package/dist/lib/catalogue/builders/c4-external-systems.js +194 -0
  39. package/dist/lib/catalogue/builders/c4-l1-candidates.js +107 -0
  40. package/dist/lib/catalogue/builders/c4-systems.js +98 -0
  41. package/dist/lib/catalogue/builders/capabilities.js +488 -0
  42. package/dist/lib/catalogue/builders/capability-domain-model.js +74 -0
  43. package/dist/lib/catalogue/builders/capability-edges.js +256 -0
  44. package/dist/lib/catalogue/builders/capability-spec-walker.js +99 -0
  45. package/dist/lib/catalogue/builders/capability-spec.js +348 -0
  46. package/dist/lib/catalogue/builders/container-dependency.js +183 -0
  47. package/dist/lib/catalogue/builders/contracts.js +402 -0
  48. package/dist/lib/catalogue/builders/data-items.js +344 -0
  49. package/dist/lib/catalogue/builders/data-store-mapping.js +113 -0
  50. package/dist/lib/catalogue/builders/domain-models.js +175 -0
  51. package/dist/lib/catalogue/builders/domains.js +119 -0
  52. package/dist/lib/catalogue/builders/edge-label-merge.js +19 -0
  53. package/dist/lib/catalogue/builders/entities-manifest.js +160 -0
  54. package/dist/lib/catalogue/builders/entities-mermaid.js +189 -0
  55. package/dist/lib/catalogue/builders/entity-persistence.js +102 -0
  56. package/dist/lib/catalogue/builders/entity-slug.js +47 -0
  57. package/dist/lib/catalogue/builders/event-catalog-walker.js +186 -0
  58. package/dist/lib/catalogue/builders/event-edges.js +327 -0
  59. package/dist/lib/catalogue/builders/events.js +168 -0
  60. package/dist/lib/catalogue/builders/evidence-class.js +43 -0
  61. package/dist/lib/catalogue/builders/evidence-target-repo.js +67 -0
  62. package/dist/lib/catalogue/builders/external-system-exemption.js +120 -0
  63. package/dist/lib/catalogue/builders/feature-contract.js +77 -0
  64. package/dist/lib/catalogue/builders/feature-domain-model.js +50 -0
  65. package/dist/lib/catalogue/builders/feature-grounding-walker.js +254 -0
  66. package/dist/lib/catalogue/builders/feature-grounding.js +391 -0
  67. package/dist/lib/catalogue/builders/feature-groups.js +63 -0
  68. package/dist/lib/catalogue/builders/feature-subscription-channels.js +228 -0
  69. package/dist/lib/catalogue/builders/feature-tree-walker.js +295 -0
  70. package/dist/lib/catalogue/builders/features.js +300 -0
  71. package/dist/lib/catalogue/builders/glossary-xref.js +378 -0
  72. package/dist/lib/catalogue/builders/glossary.js +204 -0
  73. package/dist/lib/catalogue/builders/implementations.js +214 -0
  74. package/dist/lib/catalogue/builders/index.js +64 -0
  75. package/dist/lib/catalogue/builders/integration-components.js +344 -0
  76. package/dist/lib/catalogue/builders/integrations.js +181 -0
  77. package/dist/lib/catalogue/builders/persona-c4system.js +149 -0
  78. package/dist/lib/catalogue/builders/persona-container.js +133 -0
  79. package/dist/lib/catalogue/builders/persona-journey-edges.js +133 -0
  80. package/dist/lib/catalogue/builders/personas.js +152 -0
  81. package/dist/lib/catalogue/builders/product-edges.js +106 -0
  82. package/dist/lib/catalogue/builders/product-platform-dependencies.js +405 -0
  83. package/dist/lib/catalogue/builders/products.js +162 -0
  84. package/dist/lib/catalogue/builders/quality-scores.js +635 -0
  85. package/dist/lib/catalogue/builders/repo-capability-exemption.js +61 -0
  86. package/dist/lib/catalogue/builders/repo-dependency.js +127 -0
  87. package/dist/lib/catalogue/builders/repo-edges.js +340 -0
  88. package/dist/lib/catalogue/builders/repositories.js +458 -0
  89. package/dist/lib/catalogue/builders/scaffolds.js +197 -0
  90. package/dist/lib/catalogue/builders/screen-tree.js +222 -0
  91. package/dist/lib/catalogue/builders/screens.js +396 -0
  92. package/dist/lib/catalogue/builders/service-capability-exemption.js +63 -0
  93. package/dist/lib/catalogue/builders/service-contract-consumes.js +186 -0
  94. package/dist/lib/catalogue/builders/service-contract.js +74 -0
  95. package/dist/lib/catalogue/builders/service-entity-tables.js +187 -0
  96. package/dist/lib/catalogue/builders/services.js +232 -0
  97. package/dist/lib/catalogue/builders/system-external-dependency.js +115 -0
  98. package/dist/lib/catalogue/builders/user-journeys.js +253 -0
  99. package/dist/lib/catalogue/canonical-schema.yaml +4117 -0
  100. package/dist/lib/catalogue/cli-version.js +10 -0
  101. package/dist/lib/catalogue/contract-id.js +49 -0
  102. package/dist/lib/catalogue/coverage-predicates.js +603 -0
  103. package/dist/lib/catalogue/coverage-render.js +552 -0
  104. package/dist/lib/catalogue/coverage-run.js +115 -0
  105. package/dist/lib/catalogue/csv-reader.js +97 -0
  106. package/dist/lib/catalogue/csv-writer.js +96 -0
  107. package/dist/lib/catalogue/data-plane-coherence.js +77 -0
  108. package/dist/lib/catalogue/ddl-generator.js +233 -0
  109. package/dist/lib/catalogue/dedupe-keyed-tables.js +0 -0
  110. package/dist/lib/catalogue/engine-validator.js +239 -0
  111. package/dist/lib/catalogue/ext-id.js +76 -0
  112. package/dist/lib/catalogue/feature-grounding-aliases-loader.js +65 -0
  113. package/dist/lib/catalogue/feature-repo-zero-resolution-summary.js +31 -0
  114. package/dist/lib/catalogue/finding-identity.js +183 -0
  115. package/dist/lib/catalogue/findings.js +46 -0
  116. package/dist/lib/catalogue/fk-validator.js +136 -0
  117. package/dist/lib/catalogue/freshness.js +70 -0
  118. package/dist/lib/catalogue/gate-checks.js +338 -0
  119. package/dist/lib/catalogue/graph-projection.js +346 -0
  120. package/dist/lib/catalogue/impact-run.js +228 -0
  121. package/dist/lib/catalogue/manifest-loader.js +435 -0
  122. package/dist/lib/catalogue/platform-scope.js +7 -0
  123. package/dist/lib/catalogue/population-checks.js +87 -0
  124. package/dist/lib/catalogue/relationship-semantics.js +66 -0
  125. package/dist/lib/catalogue/reverse-product-quality.js +99 -0
  126. package/dist/lib/catalogue/rubric-coverage-map.yaml +871 -0
  127. package/dist/lib/catalogue/runway-vocabulary-loader.js +56 -0
  128. package/dist/lib/catalogue/scaffold-delta.js +261 -0
  129. package/dist/lib/catalogue/schema-compat.js +52 -0
  130. package/dist/lib/catalogue/schema-loader.js +87 -0
  131. package/dist/lib/catalogue/scores-coverage.js +573 -0
  132. package/dist/lib/catalogue/screen-validation-loader.js +89 -0
  133. package/dist/lib/catalogue/service-architecture-parser.js +193 -0
  134. package/dist/lib/catalogue/service-contract-aliases-loader.js +109 -0
  135. package/dist/lib/catalogue/staleness-verdicts.js +345 -0
  136. package/dist/lib/catalogue/traceability-loader.js +350 -0
  137. package/dist/lib/catalogue/validate.js +200 -0
  138. package/dist/lib/catalogue/version.js +18 -0
  139. package/dist/lib/conformance/binding.js +70 -0
  140. package/dist/lib/conformance/finding.js +69 -0
  141. package/dist/lib/conformance/index.js +578 -0
  142. package/dist/lib/context-pull/index.js +191 -0
  143. package/dist/lib/context-pull/resolve.js +70 -0
  144. package/dist/lib/context-pull/retired-mcp-setup.js +7 -0
  145. package/dist/lib/contracts-availability/index.js +267 -0
  146. package/dist/lib/generate-briefing/index.js +77 -0
  147. package/dist/lib/list/discover.js +100 -0
  148. package/dist/lib/list/format.js +84 -0
  149. package/dist/lib/list/index.js +16 -0
  150. package/dist/lib/lock-file.js +437 -0
  151. package/dist/lib/pack/log.js +18 -0
  152. package/dist/lib/pack/schema.js +121 -0
  153. package/dist/lib/pack/seed.js +182 -0
  154. package/dist/lib/pack/validate.js +49 -0
  155. package/dist/lib/package-version.js +92 -0
  156. package/dist/lib/plan/index.js +69 -0
  157. package/dist/lib/plan/read-sdd.js +102 -0
  158. package/dist/lib/plan/render-template.js +84 -0
  159. package/dist/lib/repo-kind.js +129 -0
  160. package/dist/lib/scaffold/domain.js +234 -0
  161. package/dist/lib/scaffold/registry.js +136 -0
  162. package/dist/lib/scripts.js +7 -0
  163. package/dist/lib/sdd-index/repo-config.js +245 -0
  164. package/dist/lib/sdd-reader.js +91 -0
  165. package/dist/lib/snapshot/advance.js +454 -0
  166. package/dist/lib/snapshot/diff.js +190 -0
  167. package/dist/lib/snapshot/fold.js +208 -0
  168. package/dist/lib/snapshot/land.js +178 -0
  169. package/dist/lib/snapshot/manifest.js +206 -0
  170. package/dist/lib/snapshot/targets.js +169 -0
  171. package/dist/lib/snapshot/verify.js +91 -0
  172. package/dist/lib/sync/briefing-merge.js +106 -0
  173. package/dist/lib/sync/bundle-cache.js +109 -0
  174. package/dist/lib/sync/yaml-block-merge.js +120 -0
  175. package/dist/lib/validate/aggregate.js +51 -0
  176. package/dist/lib/validate/bundle-coherence.js +74 -0
  177. package/dist/lib/validate/dispatch.js +243 -0
  178. package/dist/lib/validate/index.js +110 -0
  179. package/dist/lib/validate/plan.js +54 -0
  180. package/dist/lib/validate/runner.js +85 -0
  181. package/dist/lib/validate/yaml-parse.js +112 -0
  182. package/dist/maintain-version.json +4 -0
  183. package/dist/verbs/api-surface.js +71 -0
  184. package/dist/verbs/catalogue-check.js +28 -0
  185. package/dist/verbs/catalogue-verify.js +114 -0
  186. package/dist/verbs/conformance.js +34 -0
  187. package/dist/verbs/context.js +39 -0
  188. package/dist/verbs/contracts.js +34 -0
  189. package/dist/verbs/generate-briefing.js +29 -0
  190. package/dist/verbs/list.js +45 -0
  191. package/dist/verbs/pack-validate.js +17 -0
  192. package/dist/verbs/path-option.js +25 -0
  193. package/dist/verbs/plan.js +42 -0
  194. package/dist/verbs/render.js +87 -0
  195. package/dist/verbs/scaffold.js +83 -0
  196. package/dist/verbs/snapshot.js +134 -0
  197. package/dist/verbs/validate.js +48 -0
  198. package/dist/verify-program.js +122 -0
  199. package/dist/verify-version.json +4 -0
  200. package/package.json +32 -4
  201. package/scripts/validate-app-dependencies.sh +664 -0
  202. package/scripts/validate-app-docs.sh +199 -0
  203. package/scripts/validate-integration-docs.sh +505 -0
@@ -0,0 +1,871 @@
1
+ # GENERATED — DO NOT EDIT. This file is a projection of the authored model (M-ADR 0210 §4.6, flip 2):
2
+ # docs/method/foundations/schemas/catalogue-schema-meta.tql — coverage-meta + relationship-meta rows carry
3
+ # every entry here; the relations themselves (roles, players) are in catalogue-schema.tql.
4
+ # Regenerate: sdd-cli metamodel roundtrip --write
5
+ # Guard: sdd-cli metamodel roundtrip (any difference fails the build)
6
+ # Vocabularies, rulings and the reading of each token live in the authored .tql header, as comments.
7
+ coverage:
8
+ c4_system_kind:
9
+ kind: enum
10
+ scoring: not-applicable
11
+ reason: closed vocabulary, not an artefact
12
+ c4_container_type:
13
+ kind: enum
14
+ scoring: not-applicable
15
+ reason: closed vocabulary, not an artefact
16
+ service_type:
17
+ kind: enum
18
+ scoring: not-applicable
19
+ reason: closed vocabulary, not an artefact
20
+ capability_exemption_reason:
21
+ kind: enum
22
+ scoring: not-applicable
23
+ reason: closed vocabulary, not an artefact
24
+ service_capability_exemption_reason:
25
+ kind: enum
26
+ scoring: not-applicable
27
+ reason: closed vocabulary, not an artefact
28
+ external_system_exemption_reason:
29
+ kind: enum
30
+ scoring: not-applicable
31
+ reason: closed vocabulary, not an artefact
32
+ capability_service_role:
33
+ kind: enum
34
+ scoring: not-applicable
35
+ reason: closed vocabulary, not an artefact
36
+ domains:
37
+ kind: entity
38
+ scoring: not-applicable
39
+ instrument: directory discovery; only the README first paragraph is authored — nothing to score
40
+ products:
41
+ kind: entity
42
+ scoring: rubric-pair
43
+ instrument: "forward: rubrics/product-definition-rubric.md · reverse: reverse/rubrics/product-synthesis-quality.md"
44
+ relationships:
45
+ domain_id:
46
+ class: membership
47
+ impact_flow: toward-target
48
+ applications:
49
+ kind: entity
50
+ scoring: not-applicable
51
+ instrument: YAML-anchor view of products; scored there
52
+ integrations:
53
+ kind: entity
54
+ scoring: rubric
55
+ instrument: rubrics/integration-sdd-quality-rubric.md
56
+ relationships:
57
+ domain_id:
58
+ class: membership
59
+ impact_flow: toward-target
60
+ parent_product_id:
61
+ class: membership
62
+ impact_flow: toward-target
63
+ integration_component:
64
+ kind: entity
65
+ scoring: rubric
66
+ instrument: scored at the owning integration via rubrics/integration-sdd-quality-rubric.md (manifest block)
67
+ relationships:
68
+ integration_id:
69
+ class: membership
70
+ impact_flow: toward-target
71
+ adrs:
72
+ kind: entity
73
+ scoring: rubric-pair
74
+ instrument: "forward: rubrics/adr-quality-rubric.md · reverse: reverse/rubrics/reverse-adr-quality.md"
75
+ relationships:
76
+ domain_id:
77
+ class: membership
78
+ impact_flow: toward-target
79
+ superseded_by_id:
80
+ class: lineage
81
+ impact_flow: none
82
+ glossary_items:
83
+ kind: entity
84
+ scoring: rubric-pair
85
+ instrument: "forward: rubrics/glossary-rubric.md · reverse: reverse/rubrics/reverse-glossary-quality.md"
86
+ relationships:
87
+ owning_domain_id:
88
+ class: membership
89
+ impact_flow: toward-target
90
+ canonical_term_id:
91
+ class: xref
92
+ impact_flow: toward-source
93
+ glossary_xref:
94
+ kind: edge
95
+ scoring: derived-edge
96
+ class: xref
97
+ impact_flow: none
98
+ reason: derived from entity rows or manifest blocks scored at the owning entity
99
+ entity_glossary:
100
+ kind: edge
101
+ scoring: derived-edge
102
+ class: xref
103
+ impact_flow: none
104
+ reason: derived from entity rows or manifest blocks scored at the owning entity
105
+ services:
106
+ kind: entity
107
+ scoring: re-targeted
108
+ instrument: "deliberately no dedicated rubric: boundary scored by rubrics/domain-architecture-rubric.md B5/B9 against the declared set (repo-config, input 3); source absence by scripts/check-repo-config-coverage.sh; reverse doc form by reverse/rubrics/repo-doc-quality.md"
109
+ relationships:
110
+ product_id:
111
+ class: membership
112
+ impact_flow: toward-target
113
+ domain_id:
114
+ class: membership
115
+ impact_flow: toward-target
116
+ primary_repo_id:
117
+ class: realisation
118
+ impact_flow: both
119
+ capabilities:
120
+ kind: entity
121
+ scoring: rubric-pair
122
+ instrument: "forward: rubrics/intent-quality-rubric.md · reverse: reverse/rubrics/reverse-capability-spec-quality.md"
123
+ relationships:
124
+ domain_id:
125
+ class: membership
126
+ impact_flow: toward-target
127
+ parent_capability_id:
128
+ class: membership
129
+ impact_flow: toward-target
130
+ feature_groups:
131
+ kind: entity
132
+ scoring: scored-at-source
133
+ instrument: grouping is authored inside capability/feature specs; scored there by rubrics/intent-quality-rubric.md
134
+ relationships:
135
+ product_id:
136
+ class: membership
137
+ impact_flow: toward-target
138
+ capability_id:
139
+ class: membership
140
+ impact_flow: toward-target
141
+ parent_group_id:
142
+ class: membership
143
+ impact_flow: toward-target
144
+ features:
145
+ kind: entity
146
+ scoring: rubric-pair
147
+ instrument: "forward: rubrics/intent-quality-rubric.md (feature tier) + rubrics/feature-grounding-rubric.md · reverse: reverse/rubrics/reverse-feature-grounding-quality.md"
148
+ relationships:
149
+ product_id:
150
+ class: membership
151
+ impact_flow: toward-target
152
+ capability_id:
153
+ class: membership
154
+ impact_flow: toward-target
155
+ parent_group_id:
156
+ class: membership
157
+ impact_flow: toward-target
158
+ parent_feature_id:
159
+ class: membership
160
+ impact_flow: toward-target
161
+ personas:
162
+ kind: entity
163
+ scoring: rubric-pair
164
+ instrument: "forward: rubrics/persona-rubric.md · reverse: reverse/rubrics/reverse-persona-quality.md"
165
+ relationships:
166
+ product_id:
167
+ class: membership
168
+ impact_flow: toward-target
169
+ user_journeys:
170
+ kind: entity
171
+ scoring: rubric
172
+ instrument: rubrics/user-journey-rubric.md
173
+ relationships:
174
+ product_id:
175
+ class: membership
176
+ impact_flow: toward-target
177
+ contracts:
178
+ kind: entity
179
+ scoring: rubric-pair
180
+ instrument: "forward: rubrics/contract-quality-rubric.md · reverse: reverse/rubrics/reverse-contract-quality.md"
181
+ relationships:
182
+ service_id:
183
+ class: membership
184
+ impact_flow: toward-target
185
+ source_repo_id:
186
+ class: lineage
187
+ impact_flow: toward-source
188
+ events:
189
+ kind: entity
190
+ scoring: predicate
191
+ instrument: event-catalogue + event coverage checks (sdd-cli catalogue validate --coverage) — absence class; content rides the contract rubrics where events have contracts
192
+ relationships:
193
+ publisher_service_id:
194
+ class: dependency
195
+ impact_flow: toward-source
196
+ domain_id:
197
+ class: membership
198
+ impact_flow: toward-target
199
+ c4_systems:
200
+ kind: entity
201
+ scoring: rubric-pair
202
+ instrument: rubrics/c4-diagram-rubric.md (L1 per the level table) · reverse/rubrics/reverse-c4-quality.md
203
+ relationships:
204
+ product_id:
205
+ class: realisation
206
+ impact_flow: both
207
+ c4_containers:
208
+ kind: entity
209
+ scoring: rubric-pair
210
+ instrument: rubrics/c4-diagram-rubric.md (L2) · reverse/rubrics/reverse-c4-quality.md
211
+ relationships:
212
+ system_id:
213
+ class: membership
214
+ impact_flow: toward-target
215
+ domain_id:
216
+ class: membership
217
+ impact_flow: toward-target
218
+ service_id:
219
+ class: realisation
220
+ impact_flow: both
221
+ c4_components:
222
+ kind: entity
223
+ scoring: rubric-pair
224
+ instrument: rubrics/c4-diagram-rubric.md (L3 per the level table) · reverse/rubrics/reverse-c4-quality.md (L3 section)
225
+ relationships:
226
+ container_id:
227
+ class: membership
228
+ impact_flow: toward-target
229
+ service_id:
230
+ class: realisation
231
+ impact_flow: both
232
+ c4_external_systems:
233
+ kind: entity
234
+ scoring: scored-at-source
235
+ instrument: externality is scored inside the c4 rubrics (D4 / dimension 6); rows derive from System_Ext elements
236
+ repositories:
237
+ kind: entity
238
+ scoring: predicate
239
+ instrument: "deliberately no rubric: repo-config is four structural fields; scripts/check-repo-config-coverage.sh covers the silent absences, builder findings own enum/orphan/divergence"
240
+ relationships:
241
+ domain_id:
242
+ class: membership
243
+ impact_flow: toward-target
244
+ product_id:
245
+ class: membership
246
+ impact_flow: toward-target
247
+ domain_models:
248
+ kind: entity
249
+ scoring: rubric-pair
250
+ instrument: "forward: rubrics/domain-architecture-rubric.md · reverse: reverse/rubrics/reverse-data-model-quality.md"
251
+ relationships:
252
+ domain_id:
253
+ class: membership
254
+ impact_flow: toward-target
255
+ entities:
256
+ kind: entity
257
+ scoring: predicate
258
+ instrument: "verified covered: builder reads glossary-alignment-manifest (entities-manifest builder); absence fires the glossary-xref + data-model-entities coverage checks (sdd-cli catalogue validate --coverage); authored population is 1 forward + 1 reverse — a rubric would be ceremony"
259
+ relationships:
260
+ domain_id:
261
+ class: membership
262
+ impact_flow: toward-target
263
+ source_domain_model_id:
264
+ class: lineage
265
+ impact_flow: toward-source
266
+ glossary_term:
267
+ class: xref
268
+ impact_flow: none
269
+ repo_capability:
270
+ kind: edge
271
+ scoring: derived-edge
272
+ class: realisation
273
+ impact_flow: both
274
+ reason: derived from entity rows or manifest blocks scored at the owning entity
275
+ repo_capability_exemption:
276
+ kind: annotation
277
+ scoring: derived-edge
278
+ class: attribute
279
+ impact_flow: none
280
+ reason: derived from entity rows or manifest blocks scored at the owning entity
281
+ service_capability_exemption:
282
+ kind: annotation
283
+ scoring: derived-edge
284
+ class: attribute
285
+ impact_flow: none
286
+ reason: derived from entity rows or manifest blocks scored at the owning entity
287
+ external_system_exemption:
288
+ kind: annotation
289
+ scoring: derived-edge
290
+ class: attribute
291
+ impact_flow: none
292
+ reason: derived from entity rows or manifest blocks scored at the owning entity
293
+ repo_contract:
294
+ kind: edge
295
+ scoring: derived-edge
296
+ class: realisation
297
+ impact_flow: both
298
+ reason: derived from entity rows or manifest blocks scored at the owning entity
299
+ product_capability:
300
+ kind: edge
301
+ scoring: derived-edge
302
+ class: dependency
303
+ impact_flow: toward-source
304
+ reason: derived from entity rows or manifest blocks scored at the owning entity
305
+ product_service:
306
+ kind: edge
307
+ scoring: derived-edge
308
+ class: dependency
309
+ impact_flow: toward-source
310
+ reason: derived from entity rows or manifest blocks scored at the owning entity
311
+ service_contract:
312
+ kind: edge
313
+ scoring: derived-edge
314
+ class: realisation
315
+ impact_flow: both
316
+ reason: derived from entity rows or manifest blocks scored at the owning entity
317
+ service_event:
318
+ kind: edge
319
+ scoring: derived-edge
320
+ class: dependency
321
+ impact_flow_by:
322
+ column: role
323
+ values:
324
+ publishes: toward-target
325
+ consumes: toward-source
326
+ reason: derived from entity rows or manifest blocks scored at the owning entity
327
+ service_entity:
328
+ kind: edge
329
+ scoring: derived-edge
330
+ class: dependency
331
+ impact_flow: toward-source
332
+ reason: derived from entity rows or manifest blocks scored at the owning entity
333
+ capability_feature:
334
+ kind: edge
335
+ scoring: derived-edge
336
+ class: traceability
337
+ impact_flow: toward-source
338
+ reason: derived from entity rows or manifest blocks scored at the owning entity
339
+ capability_service:
340
+ kind: edge
341
+ scoring: derived-edge
342
+ class: dependency
343
+ impact_flow: toward-source
344
+ reason: derived from entity rows or manifest blocks scored at the owning entity
345
+ capability_event:
346
+ kind: edge
347
+ scoring: derived-edge
348
+ class: dependency
349
+ impact_flow: toward-source
350
+ reason: derived from entity rows or manifest blocks scored at the owning entity
351
+ capability_contract:
352
+ kind: edge
353
+ scoring: derived-edge
354
+ class: dependency
355
+ impact_flow: toward-source
356
+ reason: derived from entity rows or manifest blocks scored at the owning entity
357
+ journey_feature:
358
+ kind: edge
359
+ scoring: derived-edge
360
+ class: dependency
361
+ impact_flow: toward-source
362
+ reason: derived from entity rows or manifest blocks scored at the owning entity
363
+ persona_feature:
364
+ kind: edge
365
+ scoring: derived-edge
366
+ class: dependency
367
+ impact_flow: toward-source
368
+ reason: derived from entity rows or manifest blocks scored at the owning entity
369
+ feature_service:
370
+ kind: edge
371
+ scoring: derived-edge
372
+ class: dependency
373
+ impact_flow: toward-source
374
+ reason: derived from entity rows or manifest blocks scored at the owning entity
375
+ feature_event:
376
+ kind: edge
377
+ scoring: derived-edge
378
+ class: dependency
379
+ impact_flow: toward-source
380
+ reason: derived from entity rows or manifest blocks scored at the owning entity
381
+ feature_repo:
382
+ kind: edge
383
+ scoring: derived-edge
384
+ class: realisation
385
+ impact_flow: both
386
+ reason: derived from entity rows or manifest blocks scored at the owning entity
387
+ feature_contract:
388
+ kind: edge
389
+ scoring: derived-edge
390
+ class: dependency
391
+ impact_flow: toward-source
392
+ reason: derived from entity rows or manifest blocks scored at the owning entity
393
+ feature_subscription_channels:
394
+ kind: annotation
395
+ scoring: derived-edge
396
+ class: attribute
397
+ impact_flow: none
398
+ reason: derived from entity rows or manifest blocks scored at the owning entity
399
+ capability_domain_model:
400
+ kind: edge
401
+ scoring: derived-edge
402
+ class: dependency
403
+ impact_flow: toward-source
404
+ reason: derived from entity rows or manifest blocks scored at the owning entity
405
+ feature_domain_model:
406
+ kind: edge
407
+ scoring: derived-edge
408
+ class: dependency
409
+ impact_flow: toward-source
410
+ reason: derived from entity rows or manifest blocks scored at the owning entity
411
+ persona_journey:
412
+ kind: edge
413
+ scoring: derived-edge
414
+ class: dependency
415
+ impact_flow: toward-source
416
+ reason: derived from entity rows or manifest blocks scored at the owning entity
417
+ persona_screen:
418
+ kind: edge
419
+ scoring: derived-edge
420
+ class: dependency
421
+ impact_flow: toward-source
422
+ reason: derived from entity rows or manifest blocks scored at the owning entity
423
+ persona_c4system:
424
+ kind: edge
425
+ scoring: derived-edge
426
+ class: dependency
427
+ impact_flow: toward-source
428
+ reason: derived from entity rows or manifest blocks scored at the owning entity
429
+ persona_container:
430
+ kind: edge
431
+ scoring: derived-edge
432
+ class: dependency
433
+ impact_flow: toward-source
434
+ reason: derived from entity rows or manifest blocks scored at the owning entity
435
+ system_external_dependency:
436
+ kind: edge
437
+ scoring: derived-edge
438
+ class: dependency
439
+ impact_flow: toward-source
440
+ reason: derived from entity rows or manifest blocks scored at the owning entity
441
+ container_dependency:
442
+ kind: edge
443
+ scoring: derived-edge
444
+ class: dependency
445
+ impact_flow: toward-source
446
+ reason: derived from entity rows or manifest blocks scored at the owning entity
447
+ system_system_dependency:
448
+ kind: edge
449
+ scoring: derived-edge
450
+ class: dependency
451
+ impact_flow: toward-source
452
+ reason: derived from entity rows or manifest blocks scored at the owning entity
453
+ c4_container_entity:
454
+ kind: edge
455
+ scoring: derived-edge
456
+ class: dependency
457
+ impact_flow: toward-source
458
+ reason: derived from entity rows or manifest blocks scored at the owning entity
459
+ c4_system_entity:
460
+ kind: edge
461
+ scoring: derived-edge
462
+ class: dependency
463
+ impact_flow: toward-source
464
+ reason: derived from entity rows or manifest blocks scored at the owning entity
465
+ capability_adr:
466
+ kind: edge
467
+ scoring: derived-edge
468
+ class: dependency
469
+ impact_flow: toward-source
470
+ reason: derived from entity rows or manifest blocks scored at the owning entity
471
+ adr_supersedes:
472
+ kind: edge
473
+ scoring: derived-edge
474
+ class: lineage
475
+ impact_flow: none
476
+ reason: derived from entity rows or manifest blocks scored at the owning entity
477
+ product_platform_dependencies:
478
+ kind: edge
479
+ scoring: derived-edge
480
+ class: dependency
481
+ impact_flow: toward-source
482
+ reason: derived from entity rows or manifest blocks scored at the owning entity
483
+ cross_sdd_platform_capability:
484
+ kind: edge
485
+ scoring: derived-edge
486
+ class: dependency
487
+ impact_flow: toward-source
488
+ reason: derived from entity rows or manifest blocks scored at the owning entity
489
+ application_data_plane_bindings:
490
+ kind: annotation
491
+ scoring: derived-edge
492
+ class: attribute
493
+ impact_flow: none
494
+ reason: derived from entity rows or manifest blocks scored at the owning entity
495
+ application_data_plane_deviations:
496
+ kind: annotation
497
+ scoring: derived-edge
498
+ class: attribute
499
+ impact_flow: none
500
+ reason: derived from entity rows or manifest blocks scored at the owning entity
501
+ application_conformance_coverage:
502
+ kind: annotation
503
+ scoring: derived-edge
504
+ class: attribute
505
+ impact_flow: none
506
+ reason: derived from entity rows or manifest blocks scored at the owning entity
507
+ screens:
508
+ kind: entity
509
+ scoring: rubric-pair
510
+ instrument: "forward: rubrics/screen-spec-rubric.md above the mechanical floor (guides/screen-spec-depth-rubric.md) · reverse: reverse/rubrics/reverse-screen-spec-quality.md"
511
+ relationships:
512
+ product_id:
513
+ class: membership
514
+ impact_flow: toward-target
515
+ ui_components:
516
+ kind: entity
517
+ scoring: not-applicable
518
+ instrument: projected from component call-heads inside the screens builder; no authoring surface
519
+ relationships:
520
+ product_id:
521
+ class: membership
522
+ impact_flow: toward-target
523
+ screen_component:
524
+ kind: edge
525
+ scoring: derived-edge
526
+ class: membership
527
+ impact_flow: toward-source
528
+ reason: derived from entity rows or manifest blocks scored at the owning entity
529
+ screen_feature:
530
+ kind: edge
531
+ scoring: derived-edge
532
+ class: dependency
533
+ impact_flow: toward-source
534
+ reason: derived from entity rows or manifest blocks scored at the owning entity
535
+ screen_action:
536
+ kind: edge
537
+ scoring: derived-edge
538
+ class: dependency
539
+ impact_flow: toward-source
540
+ reason: derived from entity rows or manifest blocks scored at the owning entity
541
+ conformance_finding:
542
+ kind: finding
543
+ scoring: not-built
544
+ reason: not produced by catalogue build; populated by conformance tooling
545
+ quality_scores:
546
+ kind: entity
547
+ scoring: predicate
548
+ instrument: the score record itself — scoring it with a rubric would be circular. Its COVERAGE is what needs governing (every eligible artefact carries a current, non-stale score), and that is the scores-coverage predicate of M-ADR 0205 §4.5, run by sdd-cli catalogue validate --coverage. The quality of each individual assessment is the rubric named in its own rubric_id.
549
+ relationships:
550
+ sdd_id:
551
+ class: dependency
552
+ impact_flow: none
553
+ quality_score_dimensions:
554
+ kind: annotation
555
+ scoring: derived-edge
556
+ class: attribute
557
+ impact_flow: none
558
+ reason: derived from the parent quality_scores row; the dimension keys are the rubric's own vocabulary, governed by the rubric that declares them
559
+ quality_gate:
560
+ kind: enum
561
+ scoring: not-applicable
562
+ reason: closed vocabulary, not an artefact
563
+ score_selection_method:
564
+ kind: enum
565
+ scoring: not-applicable
566
+ reason: closed vocabulary, not an artefact
567
+ staleness_basis:
568
+ kind: enum
569
+ scoring: not-applicable
570
+ reason: closed vocabulary, not an artefact
571
+ scoring_form:
572
+ kind: enum
573
+ scoring: not-applicable
574
+ reason: closed vocabulary, not an artefact
575
+ scaffolds:
576
+ kind: entity
577
+ scoring: predicate
578
+ instrument: the declaration record itself — scoring it with a rubric would be circular. Its GOVERNANCE is the M-ADR 0207 §4.8 delta instrument plus the scaffold-coverage predicate (every non-closed scaffold carries a current anchor and a computable delta; a closed scaffold sits at delta zero), run by sdd-cli catalogue validate --coverage.
579
+ relationships:
580
+ sdd_id:
581
+ class: membership
582
+ impact_flow: none
583
+ scaffold_items:
584
+ kind: annotation
585
+ scoring: derived-edge
586
+ class: traceability
587
+ impact_flow: none
588
+ reason: derived from the authored scaffold manifest (M-ADR 0207 §4.1); the polymorphic target deliberately declares no FK — resolution is conditional on state — so the row is a governance trace, not an impact path
589
+ scaffold_status:
590
+ kind: enum
591
+ scoring: not-applicable
592
+ reason: closed vocabulary, not an artefact
593
+ scaffold_item_kind:
594
+ kind: enum
595
+ scoring: not-applicable
596
+ reason: closed vocabulary, not an artefact
597
+ scaffold_item_state:
598
+ kind: enum
599
+ scoring: not-applicable
600
+ reason: closed vocabulary, not an artefact
601
+ interaction_pattern:
602
+ kind: enum
603
+ scoring: not-applicable
604
+ reason: closed vocabulary, not an artefact
605
+ event_participation:
606
+ kind: enum
607
+ scoring: not-applicable
608
+ reason: closed vocabulary, not an artefact
609
+ contract_participation:
610
+ kind: enum
611
+ scoring: not-applicable
612
+ reason: closed vocabulary, not an artefact
613
+ consumption_role:
614
+ kind: enum
615
+ scoring: not-applicable
616
+ reason: closed vocabulary, not an artefact
617
+ journey_participation:
618
+ kind: enum
619
+ scoring: not-applicable
620
+ reason: closed vocabulary, not an artefact
621
+ model_notation:
622
+ kind: enum
623
+ scoring: not-applicable
624
+ reason: Bound vocabulary of two values, derived by the builder from the artefact (M-ADR 0210 §4.6 Decision 2 instrument); the enum validator holds rows to it and the finding class, not a rubric, scores migration.
625
+ sdd_profile:
626
+ kind: enum
627
+ scoring: not-applicable
628
+ reason: closed vocabulary, not an artefact
629
+ sdd_category:
630
+ kind: enum
631
+ scoring: not-applicable
632
+ reason: closed vocabulary, not an artefact
633
+ product_lifecycle:
634
+ kind: enum
635
+ scoring: not-applicable
636
+ reason: closed vocabulary, not an artefact
637
+ product_surface:
638
+ kind: enum
639
+ scoring: not-applicable
640
+ reason: closed vocabulary, not an artefact
641
+ product_packaging:
642
+ kind: enum
643
+ scoring: not-applicable
644
+ reason: closed vocabulary, not an artefact
645
+ domain_status:
646
+ kind: enum
647
+ scoring: not-applicable
648
+ reason: closed vocabulary, not an artefact
649
+ invocation_pattern:
650
+ kind: enum
651
+ scoring: not-applicable
652
+ reason: closed vocabulary, not an artefact
653
+ integration_component_resolution:
654
+ kind: enum
655
+ scoring: not-applicable
656
+ reason: closed vocabulary, not an artefact
657
+ integration_component_declared_in:
658
+ kind: enum
659
+ scoring: not-applicable
660
+ reason: closed vocabulary, not an artefact
661
+ confidence_level:
662
+ kind: enum
663
+ scoring: not-applicable
664
+ reason: closed vocabulary, not an artefact
665
+ capability_adr_confidence:
666
+ kind: enum
667
+ scoring: not-applicable
668
+ reason: closed vocabulary, not an artefact
669
+ glossary_xref_relation:
670
+ kind: enum
671
+ scoring: not-applicable
672
+ reason: closed vocabulary, not an artefact
673
+ capability_source:
674
+ kind: enum
675
+ scoring: not-applicable
676
+ reason: closed vocabulary, not an artefact
677
+ feature_source:
678
+ kind: enum
679
+ scoring: not-applicable
680
+ reason: closed vocabulary, not an artefact
681
+ artefact_maturity:
682
+ kind: enum
683
+ scoring: not-applicable
684
+ reason: closed vocabulary, not an artefact
685
+ contract_kind:
686
+ kind: enum
687
+ scoring: not-applicable
688
+ reason: closed vocabulary, not an artefact
689
+ contract_status:
690
+ kind: enum
691
+ scoring: not-applicable
692
+ reason: closed vocabulary, not an artefact
693
+ contract_visibility:
694
+ kind: enum
695
+ scoring: not-applicable
696
+ reason: closed vocabulary, not an artefact
697
+ contract_discovery:
698
+ kind: enum
699
+ scoring: not-applicable
700
+ reason: closed vocabulary, not an artefact
701
+ persistence_kind:
702
+ kind: enum
703
+ scoring: not-applicable
704
+ reason: closed vocabulary, not an artefact
705
+ required_stability:
706
+ kind: enum
707
+ scoring: not-applicable
708
+ reason: closed vocabulary, not an artefact
709
+ service_entity_relation:
710
+ kind: enum
711
+ scoring: not-applicable
712
+ reason: closed vocabulary, not an artefact
713
+ edge_source:
714
+ kind: enum
715
+ scoring: not-applicable
716
+ reason: closed vocabulary, not an artefact
717
+ feature_contract_derivation_path:
718
+ kind: enum
719
+ scoring: not-applicable
720
+ reason: closed vocabulary, not an artefact
721
+ subscription_channel_transport:
722
+ kind: enum
723
+ scoring: not-applicable
724
+ reason: closed vocabulary, not an artefact
725
+ capability_domain_model_source:
726
+ kind: enum
727
+ scoring: not-applicable
728
+ reason: closed vocabulary, not an artefact
729
+ target_locus:
730
+ kind: enum
731
+ scoring: not-applicable
732
+ reason: closed vocabulary, not an artefact
733
+ dependency_contract_type:
734
+ kind: enum
735
+ scoring: not-applicable
736
+ reason: closed vocabulary, not an artefact
737
+ data_plane_pattern:
738
+ kind: enum
739
+ scoring: not-applicable
740
+ reason: closed vocabulary, not an artefact
741
+ data_plane_direction:
742
+ kind: enum
743
+ scoring: not-applicable
744
+ reason: closed vocabulary, not an artefact
745
+ data_plane_locality:
746
+ kind: enum
747
+ scoring: not-applicable
748
+ reason: closed vocabulary, not an artefact
749
+ ui_component_kind:
750
+ kind: enum
751
+ scoring: not-applicable
752
+ reason: closed vocabulary, not an artefact
753
+ conformance_target:
754
+ kind: enum
755
+ scoring: not-applicable
756
+ reason: closed vocabulary, not an artefact
757
+ implementation_role:
758
+ kind: enum
759
+ scoring: not-applicable
760
+ reason: closed vocabulary, not an artefact
761
+ implementation_lifecycle:
762
+ kind: enum
763
+ scoring: not-applicable
764
+ reason: closed vocabulary, not an artefact
765
+ repo_scope:
766
+ kind: enum
767
+ scoring: not-applicable
768
+ reason: closed vocabulary, not an artefact
769
+ implementations:
770
+ kind: entity
771
+ scoring: scored-at-source
772
+ instrument: the binding is scored inside the integration SDD quality rubric (implementation-binding criteria); its identity against the snapshot manifests is a builder finding
773
+ implementation_members:
774
+ kind: edge
775
+ scoring: derived-edge
776
+ class: realisation
777
+ impact_flow: both
778
+ reason: derived from entity rows or manifest blocks scored at the owning entity
779
+ snapshots:
780
+ kind: entity
781
+ scoring: predicate
782
+ instrument: the snapshot record itself — scoring it with a rubric would be circular. Its integrity is sdd-cli snapshot verify (manifest shape, member folders, companion fields) and the builder's implementation-identity finding
783
+ relationships:
784
+ implementation_id:
785
+ class: membership
786
+ impact_flow: toward-target
787
+ prior_snapshot_id:
788
+ class: lineage
789
+ impact_flow: none
790
+ snapshot_members:
791
+ kind: edge
792
+ scoring: derived-edge
793
+ class: membership
794
+ impact_flow: none
795
+ reason: derived from entity rows or manifest blocks scored at the owning entity
796
+ evidence_direction:
797
+ kind: enum
798
+ scoring: not-applicable
799
+ reason: closed vocabulary, not an artefact
800
+ member_presence:
801
+ kind: enum
802
+ scoring: not-applicable
803
+ reason: closed vocabulary, not an artefact
804
+ conformance_disposition:
805
+ kind: enum
806
+ scoring: not-applicable
807
+ reason: closed vocabulary, not an artefact
808
+ delta_disposition:
809
+ kind: enum
810
+ scoring: not-applicable
811
+ reason: closed vocabulary, not an artefact
812
+ data_items:
813
+ kind: entity
814
+ scoring: predicate
815
+ instrument: FK resolution of every supply and demand row against it at aggregation, and the coverage derivation that reads canonical_field (M-ADR 0216 §4.4)
816
+ integration_data_item:
817
+ kind: edge
818
+ scoring: predicate
819
+ class: realisation
820
+ impact_flow: both
821
+ instrument: the supply contradiction check (a positive and a negative row for one item is a divergence finding) and the reported section age (M-ADR 0216 §4.2)
822
+ feature_data_requirement:
823
+ kind: edge
824
+ scoring: predicate
825
+ class: dependency
826
+ impact_flow: toward-source
827
+ instrument: FK resolution against the platform's data_items at aggregation, and the fraction of features declaring any requirement, reported beside coverage (M-ADR 0216 §5)
828
+ feature_integration_support:
829
+ kind: edge
830
+ scoring: derived-edge
831
+ class: traceability
832
+ impact_flow: none
833
+ reason: derived at aggregation from supply and demand, each checked at its source
834
+ supply_verdict:
835
+ kind: enum
836
+ scoring: not-applicable
837
+ reason: closed vocabulary, not an artefact
838
+ supply_basis:
839
+ kind: enum
840
+ scoring: not-applicable
841
+ reason: closed vocabulary, not an artefact
842
+ data_necessity:
843
+ kind: enum
844
+ scoring: not-applicable
845
+ reason: closed vocabulary, not an artefact
846
+ support_verdict:
847
+ kind: enum
848
+ scoring: not-applicable
849
+ reason: closed vocabulary, not an artefact
850
+ limiting_reason:
851
+ kind: enum
852
+ scoring: not-applicable
853
+ reason: closed vocabulary, not an artefact
854
+ evidence_target_repo:
855
+ kind: entity
856
+ scoring: predicate
857
+ instrument: "FK resolution against repositories at aggregation: a reference that names no repository fails like any other foreign key (M-ADR 0214 §4.10)"
858
+ relationships:
859
+ repo_id:
860
+ class: xref
861
+ impact_flow: toward-source
862
+ repo_dependency:
863
+ kind: edge
864
+ scoring: predicate
865
+ class: dependency
866
+ impact_flow: toward-source
867
+ instrument: "FK resolution against repositories at aggregation: a dependency naming no repository fails like any other foreign key (M-ADR 0217 §4.1)"
868
+ repo_dependency_kind:
869
+ kind: enum
870
+ scoring: not-applicable
871
+ reason: closed vocabulary, not an artefact