@sdd-method/sdd-cli 1.5.0 → 1.6.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.
@@ -1,64 +1,72 @@
1
1
  /**
2
- * Transitive impact analysis — `sdd-cli catalogue impact` (Phase C1, the
3
- * graph projection's proving consumer per M-ADR 0205 §4.6).
2
+ * Transitive impact analysis — `sdd-cli catalogue impact` (M-ADR 0206 §4.6).
4
3
  *
5
- * "This contract changes which features, services and repositories are
6
- * reachable?" Impact is REVERSE reachability over the C0 edge list: every
7
- * edge means "the source row references / attaches to the target", so the
8
- * nodes affected by a change to X are the nodes with a path of edges INTO
9
- * X followed target→source, transitively. The closure is computed by
10
- * recursive SQL (`WITH RECURSIVE`) on the Phase A engine, over the same
11
- * edge set `catalogue graph` exports (one derivation rule, two consumers).
4
+ * Impact traverses the graph-projection edge set BY DECLARED SEMANTICS: every
5
+ * relationship carries an impact-flow token in the rubric-coverage-map
6
+ * (M-ADR 0206 §4.1) naming which endpoint RECEIVES impact `toward-source`
7
+ * (dependency shape: a change at the target propagates to the source),
8
+ * `toward-target` (membership shape: a part's change reaches its whole),
9
+ * `both` (realisation), `none` (xref, lineage records, attributes). One
10
+ * relationship (`service_event`) resolves its flow per row from a named
11
+ * column (§4.2). The closure is the set of nodes impact can reach from the
12
+ * seed along declared propagation directions, computed by recursive SQL
13
+ * (`WITH RECURSIVE`) on the Phase A engine.
12
14
  *
13
- * Cycle discipline: the catalogue graph is not a DAG (adr_supersedes and
14
- * system_system_dependency can both close loops), so the recursion carries
15
- * NO depth column DuckDB's recursive UNION deduplicates whole rows, and
16
- * a depth column makes every lap around a cycle a "new" row: the query
17
- * that looks more informative is the query that never terminates. The
18
- * closure is a set; it saturates and stops. impact.test.ts holds the
19
- * hand-derived controls (a cycle and a diamond) this guard answers to.
15
+ * THE CO-DIRECTIONALITY INVARIANT (§4.4, a condition of 0206's acceptance):
16
+ * the Phase C mirror-dedup heuristic is retired because under the declared
17
+ * tokens every true-mirror pair propagates the SAME direction. That premise
18
+ * is exercised, not assumed: buildImpactPropagation asserts that no node
19
+ * pair receives propagation in BOTH directions from two DIFFERENT
20
+ * single-direction relationship types, and fails loudly naming the pair and
21
+ * types. A single relationship declaring `both` is deliberate bidirectional
22
+ * coupling and is exempt; a self-referential type contributing both
23
+ * directions from different rows (a hierarchy cycle) is likewise exempt.
24
+ * A future token edit that would silently bring the undirected flood back
25
+ * trips this assertion instead.
26
+ *
27
+ * Cycle discipline: the recursion carries NO depth column — recursive UNION
28
+ * deduplicates whole rows, and a depth column makes every lap of a cycle a
29
+ * "new" row: the query that looks more informative is the query that never
30
+ * terminates. As a bare id-set the closure saturates and stops.
20
31
  */
32
+ import { type ImpactFlow, type RelationshipSemantics } from "./graph-run.js";
21
33
  import { type GraphTier } from "./graph-projection.js";
22
34
  export interface ImpactEdge {
23
35
  readonly source: string;
24
36
  readonly target: string;
25
37
  readonly type: string;
38
+ /** Non-endpoint columns of the underlying row (the projection's edge properties). */
39
+ readonly properties?: Readonly<Record<string, string>>;
26
40
  }
27
- export interface ImpactResult {
28
- /** The seed node id as given. */
29
- readonly seed: string;
30
- /** Reachable node ids (seed excluded), sorted. */
31
- readonly closure: readonly string[];
32
- /** Closure size grouped by node catalogue (the "features, services, repos" answer). */
33
- readonly byCatalogue: ReadonlyMap<string, number>;
41
+ /** One resolved propagation step: if `from` is impacted, `to` is impacted. */
42
+ export interface PropagationEdge {
43
+ readonly from: string;
44
+ readonly to: string;
45
+ readonly type: string;
34
46
  }
35
- export interface DedupedEdges {
36
- readonly edges: readonly ImpactEdge[];
37
- /** Entity-FK edges dropped because their reversed pair exists as an edge-catalogue edge. */
38
- readonly suppressedMirrors: number;
47
+ export interface PropagationBuild {
48
+ readonly edges: readonly PropagationEdge[];
49
+ /** Declared edges whose resolved flow is `none` (not traversed). */
50
+ readonly flowNone: number;
51
+ /** Propagation-step counts by resolved flow token. */
52
+ readonly byFlow: ReadonlyMap<ImpactFlow, number>;
39
53
  }
40
54
  /**
41
- * Mirror dedup (C1 ruling 2026-08-06): the metamodel materialises some
42
- * relationships twice a derived-edge catalogue AND the entity FK it
43
- * derives from, in opposite directions (measured: capability_feature ⇄
44
- * features.capability_id is a 100% mirror on the reverse estate). A
45
- * mirrored pair is undirected for any traversal, so closures flood through
46
- * hub nodes toward the connected component. Rule: an entity-FK edge whose
47
- * REVERSED pair exists as an edge-catalogue edge is dropped from the
48
- * traversal set; the derived edge survives, because the edge catalogue is
49
- * the deliberate, richer declaration and the FK is its source material.
50
- * The projection itself is untouched — the moment it adjudicated which of
51
- * two declared rows is real it would stop being a derivation (§0).
52
- *
53
- * Edge-type convention: entity-FK edges are typed "<catalogue>.<column>"
54
- * (they carry a dot); edge-catalogue edges are typed by catalogue name.
55
+ * Resolve every declared edge into propagation steps per its flow, and
56
+ * exercise the §4.4 co-directionality invariant.
55
57
  */
56
- export declare function dedupMirrorEdges(edges: readonly ImpactEdge[]): DedupedEdges;
58
+ export declare function buildImpactPropagation(edges: readonly ImpactEdge[], semantics: RelationshipSemantics): PropagationBuild;
57
59
  /**
58
- * Reverse-reachability closure of `seed` over `edges`, on the engine.
60
+ * Closure of `seed` over resolved propagation edges, on the engine.
59
61
  * Exported for the fixture controls; the verb goes through runCatalogueImpact.
60
62
  */
61
- export declare function computeImpactClosure(edges: readonly ImpactEdge[], seed: string): Promise<string[]>;
63
+ export declare function computeImpactClosure(propagation: readonly PropagationEdge[], seed: string): Promise<string[]>;
64
+ export interface ImpactResult {
65
+ readonly seed: string;
66
+ /** Reachable node ids (seed excluded), sorted. */
67
+ readonly closure: readonly string[];
68
+ readonly byCatalogue: ReadonlyMap<string, number>;
69
+ }
62
70
  export interface ImpactRunInputs {
63
71
  /** Node id to compute impact of, in the export's "<catalogue>/<pk>" form. */
64
72
  readonly of: string;
@@ -1 +1 @@
1
- {"version":3,"file":"impact-run.d.ts","sourceRoot":"","sources":["../../../src/lib/catalogue/impact-run.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAQH,OAAO,EAAgB,KAAK,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAErE,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,YAAY;IAC3B,iCAAiC;IACjC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,kDAAkD;IAClD,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,uFAAuF;IACvF,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACnD;AAMD,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,KAAK,EAAE,SAAS,UAAU,EAAE,CAAC;IACtC,4FAA4F;IAC5F,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;CACpC;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,SAAS,UAAU,EAAE,GAAG,YAAY,CAkB3E;AAED;;;GAGG;AACH,wBAAsB,oBAAoB,CACxC,KAAK,EAAE,SAAS,UAAU,EAAE,EAC5B,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,MAAM,EAAE,CAAC,CAoCnB;AAED,MAAM,WAAW,eAAe;IAC9B,6EAA6E;IAC7E,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC;CAC3B;AAED,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,eAAe,EACvB,KAAK,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,GACzB,OAAO,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,YAAY,CAAA;CAAE,CAAC,CAiFtD"}
1
+ {"version":3,"file":"impact-run.d.ts","sourceRoot":"","sources":["../../../src/lib/catalogue/impact-run.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAOH,OAAO,EAGL,KAAK,UAAU,EACf,KAAK,qBAAqB,EAC3B,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAgB,KAAK,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAErE,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,qFAAqF;IACrF,QAAQ,CAAC,UAAU,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CACxD;AAED,8EAA8E;AAC9E,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,KAAK,EAAE,SAAS,eAAe,EAAE,CAAC;IAC3C,oEAAoE;IACpE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,sDAAsD;IACtD,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;CAClD;AA6BD;;;GAGG;AACH,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,SAAS,UAAU,EAAE,EAC5B,SAAS,EAAE,qBAAqB,GAC/B,gBAAgB,CAmElB;AAMD;;;GAGG;AACH,wBAAsB,oBAAoB,CACxC,WAAW,EAAE,SAAS,eAAe,EAAE,EACvC,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,MAAM,EAAE,CAAC,CAiCnB;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,kDAAkD;IAClD,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACnD;AAED,MAAM,WAAW,eAAe;IAC9B,6EAA6E;IAC7E,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC;CAC3B;AAED,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,eAAe,EACvB,KAAK,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,GACzB,OAAO,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,YAAY,CAAA;CAAE,CAAC,CAyFtD"}
Binary file
@@ -1 +1 @@
1
- {"version":3,"file":"impact-run.js","sourceRoot":"","sources":["../../../src/lib/catalogue/impact-run.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"impact-run.js","sourceRoot":"","sources":["../../../src/lib/catalogue/impact-run.ts"],"names":[],"mappings":"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"}
@@ -13,6 +13,32 @@
13
13
  #
14
14
  # scoring: rubric | rubric-pair | predicate | scored-at-source | re-targeted
15
15
  # | not-applicable | derived-edge | not-built
16
+ #
17
+ # Relationship semantics (M-ADR 0206) — a SECOND vocabulary, distinct from
18
+ # scoring. `scoring: derived-edge` is a SCORING-ATTRIBUTION claim (where the
19
+ # quality judgment lives); it is NOT a build-provenance or semantics claim —
20
+ # conflating the two misdiagnosed the mirror families once already. The
21
+ # semantics are:
22
+ # class: membership | dependency | realisation | lineage | traceability
23
+ # | xref | attribute — what the relationship MEANS (for
24
+ # humans and review)
25
+ # impact_flow: toward-source | toward-target | both | none
26
+ # — which endpoint RECEIVES impact (the machine-read token):
27
+ # toward-source = a change at the target propagates to the source;
28
+ # toward-target = a change at the source propagates to the target.
29
+ # Declared PER RELATIONSHIP, not per class: declaration orientation
30
+ # is a per-builder historical accident (composition exists both as
31
+ # member->owner features.product_id and owner->member
32
+ # screen_component).
33
+ # impact_flow_by: { column: <name>, values: {...} } — the role-conditional
34
+ # form, mutually exclusive with impact_flow; admitted for measured
35
+ # need (today exactly one relationship: service_event).
36
+ # Edge catalogues carry class + impact_flow at the top level; entity
37
+ # catalogues carry a relationships: block keyed by FK column. `applications`
38
+ # inherits `products`' declarations through the schema's YAML merge and is
39
+ # deliberately not declared separately. Every parsed FK column and edge
40
+ # catalogue MUST carry a declaration — check-relationship-classes.sh holds
41
+ # this closed in both directions, and sdd-cli's vendored-map test mirrors it.
16
42
 
17
43
  coverage:
18
44
  c4_system_kind: { kind: enum, scoring: not-applicable, reason: "closed vocabulary, not an artefact" }
@@ -29,6 +55,8 @@ coverage:
29
55
  kind: entity
30
56
  scoring: rubric-pair
31
57
  instrument: "forward: rubrics/product-definition-rubric.md · reverse: reverse/rubrics/product-synthesis-quality.md"
58
+ relationships:
59
+ domain_id: { class: membership, impact_flow: toward-target }
32
60
  applications:
33
61
  kind: entity
34
62
  scoring: not-applicable
@@ -37,64 +65,110 @@ coverage:
37
65
  kind: entity
38
66
  scoring: rubric
39
67
  instrument: "rubrics/integration-sdd-quality-rubric.md"
68
+ relationships:
69
+ domain_id: { class: membership, impact_flow: toward-target }
70
+ parent_product_id: { class: membership, impact_flow: toward-target }
40
71
  integration_component:
41
72
  kind: entity
42
73
  scoring: rubric
43
74
  instrument: "scored at the owning integration via rubrics/integration-sdd-quality-rubric.md (manifest block)"
75
+ relationships:
76
+ integration_id: { class: membership, impact_flow: toward-target }
44
77
  adrs:
45
78
  kind: entity
46
79
  scoring: rubric-pair
47
80
  instrument: "forward: rubrics/adr-quality-rubric.md · reverse: reverse/rubrics/reverse-adr-quality.md"
81
+ relationships:
82
+ domain_id: { class: membership, impact_flow: toward-target }
83
+ superseded_by_id: { class: lineage, impact_flow: none }
48
84
  glossary_items:
49
85
  kind: entity
50
86
  scoring: rubric-pair
51
87
  instrument: "forward: rubrics/glossary-rubric.md · reverse: reverse/rubrics/reverse-glossary-quality.md"
52
- glossary_xref: { kind: edge, scoring: derived-edge, reason: "derived from entity rows or manifest blocks scored at the owning entity" }
53
- entity_glossary: { kind: edge, scoring: derived-edge, reason: "derived from entity rows or manifest blocks scored at the owning entity" }
88
+ relationships:
89
+ owning_domain_id: { class: membership, impact_flow: toward-target }
90
+ canonical_term_id: { class: xref, impact_flow: toward-source }
91
+ glossary_xref: { kind: edge, class: xref, impact_flow: none, scoring: derived-edge, reason: "derived from entity rows or manifest blocks scored at the owning entity" }
92
+ entity_glossary: { kind: edge, class: xref, impact_flow: none, scoring: derived-edge, reason: "derived from entity rows or manifest blocks scored at the owning entity" }
54
93
  services:
55
94
  kind: entity
56
95
  scoring: re-targeted
57
96
  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"
97
+ relationships:
98
+ product_id: { class: membership, impact_flow: toward-target }
99
+ domain_id: { class: membership, impact_flow: toward-target }
100
+ primary_repo_id: { class: realisation, impact_flow: both }
58
101
  capabilities:
59
102
  kind: entity
60
103
  scoring: rubric-pair
61
104
  instrument: "forward: rubrics/intent-quality-rubric.md · reverse: reverse/rubrics/reverse-capability-spec-quality.md"
105
+ relationships:
106
+ domain_id: { class: membership, impact_flow: toward-target }
107
+ parent_capability_id: { class: membership, impact_flow: toward-target }
62
108
  feature_groups:
63
109
  kind: entity
64
110
  scoring: scored-at-source
65
111
  instrument: "grouping is authored inside capability/feature specs; scored there by rubrics/intent-quality-rubric.md"
112
+ relationships:
113
+ product_id: { class: membership, impact_flow: toward-target }
114
+ capability_id: { class: membership, impact_flow: toward-target }
115
+ parent_group_id: { class: membership, impact_flow: toward-target }
66
116
  features:
67
117
  kind: entity
68
118
  scoring: rubric-pair
69
119
  instrument: "forward: rubrics/intent-quality-rubric.md (feature tier) + rubrics/feature-grounding-rubric.md · reverse: reverse/rubrics/reverse-feature-grounding-quality.md"
120
+ relationships:
121
+ product_id: { class: membership, impact_flow: toward-target }
122
+ capability_id: { class: membership, impact_flow: toward-target }
123
+ parent_group_id: { class: membership, impact_flow: toward-target }
124
+ parent_feature_id: { class: membership, impact_flow: toward-target }
70
125
  personas:
71
126
  kind: entity
72
127
  scoring: rubric-pair
73
128
  instrument: "forward: rubrics/persona-rubric.md · reverse: reverse/rubrics/reverse-persona-quality.md"
129
+ relationships:
130
+ product_id: { class: membership, impact_flow: toward-target }
74
131
  user_journeys:
75
132
  kind: entity
76
133
  scoring: rubric
77
134
  instrument: "rubrics/user-journey-rubric.md"
135
+ relationships:
136
+ product_id: { class: membership, impact_flow: toward-target }
78
137
  contracts:
79
138
  kind: entity
80
139
  scoring: rubric-pair
81
140
  instrument: "forward: rubrics/contract-quality-rubric.md · reverse: reverse/rubrics/reverse-contract-quality.md"
141
+ relationships:
142
+ service_id: { class: membership, impact_flow: toward-target }
143
+ source_repo_id: { class: lineage, impact_flow: toward-source }
82
144
  events:
83
145
  kind: entity
84
146
  scoring: predicate
85
147
  instrument: "event-catalogue + event coverage checks (sdd-cli catalogue validate --coverage) — absence class; content rides the contract rubrics where events have contracts"
148
+ relationships:
149
+ publisher_service_id: { class: dependency, impact_flow: toward-source }
150
+ domain_id: { class: membership, impact_flow: toward-target }
86
151
  c4_systems:
87
152
  kind: entity
88
153
  scoring: rubric-pair
89
154
  instrument: "rubrics/c4-diagram-rubric.md (L1 per the level table) · reverse/rubrics/reverse-c4-quality.md"
155
+ relationships:
156
+ product_id: { class: realisation, impact_flow: both }
90
157
  c4_containers:
91
158
  kind: entity
92
159
  scoring: rubric-pair
93
160
  instrument: "rubrics/c4-diagram-rubric.md (L2) · reverse/rubrics/reverse-c4-quality.md"
161
+ relationships:
162
+ system_id: { class: membership, impact_flow: toward-target }
163
+ domain_id: { class: membership, impact_flow: toward-target }
164
+ service_id: { class: realisation, impact_flow: both }
94
165
  c4_components:
95
166
  kind: entity
96
167
  scoring: rubric-pair
97
168
  instrument: "rubrics/c4-diagram-rubric.md (L3 per the level table) · reverse/rubrics/reverse-c4-quality.md (L3 section)"
169
+ relationships:
170
+ container_id: { class: membership, impact_flow: toward-target }
171
+ service_id: { class: realisation, impact_flow: both }
98
172
  c4_external_systems:
99
173
  kind: entity
100
174
  scoring: scored-at-source
@@ -103,71 +177,100 @@ coverage:
103
177
  kind: entity
104
178
  scoring: predicate
105
179
  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"
180
+ relationships:
181
+ domain_id: { class: membership, impact_flow: toward-target }
182
+ product_id: { class: membership, impact_flow: toward-target }
106
183
  domain_models:
107
184
  kind: entity
108
185
  scoring: rubric-pair
109
186
  instrument: "forward: rubrics/domain-architecture-rubric.md · reverse: reverse/rubrics/reverse-data-model-quality.md"
187
+ relationships:
188
+ domain_id: { class: membership, impact_flow: toward-target }
110
189
  entities:
111
190
  kind: entity
112
191
  scoring: predicate
113
192
  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"
114
- repo_capability: { kind: edge, scoring: derived-edge, reason: "derived from entity rows or manifest blocks scored at the owning entity" }
115
- repo_capability_exemption: { kind: edge, scoring: derived-edge, reason: "derived from entity rows or manifest blocks scored at the owning entity" }
116
- service_capability_exemption: { kind: edge, scoring: derived-edge, reason: "derived from entity rows or manifest blocks scored at the owning entity" }
117
- external_system_exemption: { kind: edge, scoring: derived-edge, reason: "derived from entity rows or manifest blocks scored at the owning entity" }
118
- repo_contract: { kind: edge, scoring: derived-edge, reason: "derived from entity rows or manifest blocks scored at the owning entity" }
119
- product_capability: { kind: edge, scoring: derived-edge, reason: "derived from entity rows or manifest blocks scored at the owning entity" }
120
- product_service: { kind: edge, scoring: derived-edge, reason: "derived from entity rows or manifest blocks scored at the owning entity" }
121
- service_contract: { kind: edge, scoring: derived-edge, reason: "derived from entity rows or manifest blocks scored at the owning entity" }
122
- service_event: { kind: edge, scoring: derived-edge, reason: "derived from entity rows or manifest blocks scored at the owning entity" }
123
- service_entity: { kind: edge, scoring: derived-edge, reason: "derived from entity rows or manifest blocks scored at the owning entity" }
124
- capability_feature: { kind: edge, scoring: derived-edge, reason: "derived from entity rows or manifest blocks scored at the owning entity" }
125
- capability_service: { kind: edge, scoring: derived-edge, reason: "derived from entity rows or manifest blocks scored at the owning entity" }
126
- capability_event: { kind: edge, scoring: derived-edge, reason: "derived from entity rows or manifest blocks scored at the owning entity" }
127
- capability_contract: { kind: edge, scoring: derived-edge, reason: "derived from entity rows or manifest blocks scored at the owning entity" }
128
- journey_feature: { kind: edge, scoring: derived-edge, reason: "derived from entity rows or manifest blocks scored at the owning entity" }
129
- persona_feature: { kind: edge, scoring: derived-edge, reason: "derived from entity rows or manifest blocks scored at the owning entity" }
130
- feature_service: { kind: edge, scoring: derived-edge, reason: "derived from entity rows or manifest blocks scored at the owning entity" }
131
- feature_event: { kind: edge, scoring: derived-edge, reason: "derived from entity rows or manifest blocks scored at the owning entity" }
132
- feature_repo: { kind: edge, scoring: derived-edge, reason: "derived from entity rows or manifest blocks scored at the owning entity" }
133
- feature_contract: { kind: edge, scoring: derived-edge, reason: "derived from entity rows or manifest blocks scored at the owning entity" }
134
- feature_subscription_channels: { kind: edge, scoring: derived-edge, reason: "derived from entity rows or manifest blocks scored at the owning entity" }
135
- capability_domain_model: { kind: edge, scoring: derived-edge, reason: "derived from entity rows or manifest blocks scored at the owning entity" }
136
- feature_domain_model: { kind: edge, scoring: derived-edge, reason: "derived from entity rows or manifest blocks scored at the owning entity" }
137
- persona_journey: { kind: edge, scoring: derived-edge, reason: "derived from entity rows or manifest blocks scored at the owning entity" }
138
- persona_screen: { kind: edge, scoring: derived-edge, reason: "derived from entity rows or manifest blocks scored at the owning entity" }
139
- persona_c4system: { kind: edge, scoring: derived-edge, reason: "derived from entity rows or manifest blocks scored at the owning entity" }
140
- persona_container: { kind: edge, scoring: derived-edge, reason: "derived from entity rows or manifest blocks scored at the owning entity" }
141
- system_external_dependency: { kind: edge, scoring: derived-edge, reason: "derived from entity rows or manifest blocks scored at the owning entity" }
142
- container_dependency: { kind: edge, scoring: derived-edge, reason: "derived from entity rows or manifest blocks scored at the owning entity" }
143
- system_system_dependency: { kind: edge, scoring: derived-edge, reason: "derived from entity rows or manifest blocks scored at the owning entity" }
144
- c4_container_entity: { kind: edge, scoring: derived-edge, reason: "derived from entity rows or manifest blocks scored at the owning entity" }
145
- c4_system_entity: { kind: edge, scoring: derived-edge, reason: "derived from entity rows or manifest blocks scored at the owning entity" }
146
- capability_adr: { kind: edge, scoring: derived-edge, reason: "derived from entity rows or manifest blocks scored at the owning entity" }
147
- adr_supersedes: { kind: edge, scoring: derived-edge, reason: "derived from entity rows or manifest blocks scored at the owning entity" }
148
- product_platform_dependencies: { kind: edge, scoring: derived-edge, reason: "derived from entity rows or manifest blocks scored at the owning entity" }
149
- cross_sdd_platform_capability: { kind: edge, scoring: derived-edge, reason: "derived from entity rows or manifest blocks scored at the owning entity" }
150
- application_data_plane_bindings: { kind: edge, scoring: derived-edge, reason: "derived from entity rows or manifest blocks scored at the owning entity" }
151
- application_data_plane_deviations: { kind: edge, scoring: derived-edge, reason: "derived from entity rows or manifest blocks scored at the owning entity" }
152
- application_conformance_coverage: { kind: edge, scoring: derived-edge, reason: "derived from entity rows or manifest blocks scored at the owning entity" }
193
+ relationships:
194
+ domain_id: { class: membership, impact_flow: toward-target }
195
+ source_domain_model_id: { class: lineage, impact_flow: toward-source }
196
+ glossary_term: { class: xref, impact_flow: none }
197
+ repo_capability: { kind: edge, class: realisation, impact_flow: both, scoring: derived-edge, reason: "derived from entity rows or manifest blocks scored at the owning entity" }
198
+ repo_capability_exemption: { kind: edge, class: attribute, impact_flow: none, scoring: derived-edge, reason: "derived from entity rows or manifest blocks scored at the owning entity" }
199
+ service_capability_exemption: { kind: edge, class: attribute, impact_flow: none, scoring: derived-edge, reason: "derived from entity rows or manifest blocks scored at the owning entity" }
200
+ external_system_exemption: { kind: edge, class: attribute, impact_flow: none, scoring: derived-edge, reason: "derived from entity rows or manifest blocks scored at the owning entity" }
201
+ repo_contract: { kind: edge, class: realisation, impact_flow: both, scoring: derived-edge, reason: "derived from entity rows or manifest blocks scored at the owning entity" }
202
+ product_capability: { kind: edge, class: dependency, impact_flow: toward-source, scoring: derived-edge, reason: "derived from entity rows or manifest blocks scored at the owning entity" }
203
+ product_service: { kind: edge, class: dependency, impact_flow: toward-source, scoring: derived-edge, reason: "derived from entity rows or manifest blocks scored at the owning entity" }
204
+ service_contract: { kind: edge, class: realisation, impact_flow: both, scoring: derived-edge, reason: "derived from entity rows or manifest blocks scored at the owning entity" }
205
+ service_event:
206
+ kind: edge
207
+ class: dependency
208
+ # role-conditional (M-ADR 0206 §4.2): the two roles flow in opposite directions
209
+ impact_flow_by: { column: role, values: { publishes: toward-target, consumes: toward-source } }
210
+ scoring: derived-edge
211
+ reason: "derived from entity rows or manifest blocks scored at the owning entity"
212
+ service_entity: { kind: edge, class: dependency, impact_flow: toward-source, scoring: derived-edge, reason: "derived from entity rows or manifest blocks scored at the owning entity" }
213
+ capability_feature: { kind: edge, class: traceability, impact_flow: toward-source, scoring: derived-edge, reason: "derived from entity rows or manifest blocks scored at the owning entity" }
214
+ capability_service: { kind: edge, class: dependency, impact_flow: toward-source, scoring: derived-edge, reason: "derived from entity rows or manifest blocks scored at the owning entity" }
215
+ capability_event: { kind: edge, class: dependency, impact_flow: toward-source, scoring: derived-edge, reason: "derived from entity rows or manifest blocks scored at the owning entity" }
216
+ capability_contract: { kind: edge, class: dependency, impact_flow: toward-source, scoring: derived-edge, reason: "derived from entity rows or manifest blocks scored at the owning entity" }
217
+ journey_feature: { kind: edge, class: dependency, impact_flow: toward-source, scoring: derived-edge, reason: "derived from entity rows or manifest blocks scored at the owning entity" }
218
+ persona_feature: { kind: edge, class: dependency, impact_flow: toward-source, scoring: derived-edge, reason: "derived from entity rows or manifest blocks scored at the owning entity" }
219
+ feature_service: { kind: edge, class: dependency, impact_flow: toward-source, scoring: derived-edge, reason: "derived from entity rows or manifest blocks scored at the owning entity" }
220
+ feature_event: { kind: edge, class: dependency, impact_flow: toward-source, scoring: derived-edge, reason: "derived from entity rows or manifest blocks scored at the owning entity" }
221
+ feature_repo: { kind: edge, class: realisation, impact_flow: both, scoring: derived-edge, reason: "derived from entity rows or manifest blocks scored at the owning entity" }
222
+ feature_contract: { kind: edge, class: dependency, impact_flow: toward-source, scoring: derived-edge, reason: "derived from entity rows or manifest blocks scored at the owning entity" }
223
+ feature_subscription_channels: { kind: edge, class: attribute, impact_flow: none, scoring: derived-edge, reason: "derived from entity rows or manifest blocks scored at the owning entity" }
224
+ capability_domain_model: { kind: edge, class: dependency, impact_flow: toward-source, scoring: derived-edge, reason: "derived from entity rows or manifest blocks scored at the owning entity" }
225
+ feature_domain_model: { kind: edge, class: dependency, impact_flow: toward-source, scoring: derived-edge, reason: "derived from entity rows or manifest blocks scored at the owning entity" }
226
+ persona_journey: { kind: edge, class: dependency, impact_flow: toward-source, scoring: derived-edge, reason: "derived from entity rows or manifest blocks scored at the owning entity" }
227
+ persona_screen: { kind: edge, class: dependency, impact_flow: toward-source, scoring: derived-edge, reason: "derived from entity rows or manifest blocks scored at the owning entity" }
228
+ persona_c4system: { kind: edge, class: dependency, impact_flow: toward-source, scoring: derived-edge, reason: "derived from entity rows or manifest blocks scored at the owning entity" }
229
+ persona_container: { kind: edge, class: dependency, impact_flow: toward-source, scoring: derived-edge, reason: "derived from entity rows or manifest blocks scored at the owning entity" }
230
+ system_external_dependency: { kind: edge, class: dependency, impact_flow: toward-source, scoring: derived-edge, reason: "derived from entity rows or manifest blocks scored at the owning entity" }
231
+ container_dependency: { kind: edge, class: dependency, impact_flow: toward-source, scoring: derived-edge, reason: "derived from entity rows or manifest blocks scored at the owning entity" }
232
+ system_system_dependency: { kind: edge, class: dependency, impact_flow: toward-source, scoring: derived-edge, reason: "derived from entity rows or manifest blocks scored at the owning entity" }
233
+ c4_container_entity: { kind: edge, class: dependency, impact_flow: toward-source, scoring: derived-edge, reason: "derived from entity rows or manifest blocks scored at the owning entity" }
234
+ c4_system_entity: { kind: edge, class: dependency, impact_flow: toward-source, scoring: derived-edge, reason: "derived from entity rows or manifest blocks scored at the owning entity" }
235
+ capability_adr: { kind: edge, class: dependency, impact_flow: toward-source, scoring: derived-edge, reason: "derived from entity rows or manifest blocks scored at the owning entity" }
236
+ adr_supersedes: { kind: edge, class: lineage, impact_flow: none, scoring: derived-edge, reason: "derived from entity rows or manifest blocks scored at the owning entity" }
237
+ product_platform_dependencies: { kind: edge, class: dependency, impact_flow: toward-source, scoring: derived-edge, reason: "derived from entity rows or manifest blocks scored at the owning entity" }
238
+ cross_sdd_platform_capability: { kind: edge, class: dependency, impact_flow: toward-source, scoring: derived-edge, reason: "derived from entity rows or manifest blocks scored at the owning entity" }
239
+ application_data_plane_bindings: { kind: edge, class: attribute, impact_flow: none, scoring: derived-edge, reason: "derived from entity rows or manifest blocks scored at the owning entity" }
240
+ application_data_plane_deviations: { kind: edge, class: attribute, impact_flow: none, scoring: derived-edge, reason: "derived from entity rows or manifest blocks scored at the owning entity" }
241
+ application_conformance_coverage: { kind: edge, class: attribute, impact_flow: none, scoring: derived-edge, reason: "derived from entity rows or manifest blocks scored at the owning entity" }
153
242
  screens:
154
243
  kind: entity
155
244
  scoring: rubric-pair
156
245
  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"
246
+ relationships:
247
+ product_id: { class: membership, impact_flow: toward-target }
157
248
  ui_components:
158
249
  kind: entity
159
250
  scoring: not-applicable
160
251
  instrument: "projected from component call-heads inside the screens builder; no authoring surface"
161
- screen_component: { kind: edge, scoring: derived-edge, reason: "derived from entity rows or manifest blocks scored at the owning entity" }
162
- screen_feature: { kind: edge, scoring: derived-edge, reason: "derived from entity rows or manifest blocks scored at the owning entity" }
163
- screen_action: { kind: edge, scoring: derived-edge, reason: "derived from entity rows or manifest blocks scored at the owning entity" }
252
+ relationships:
253
+ product_id: { class: membership, impact_flow: toward-target }
254
+ screen_component: { kind: edge, class: membership, impact_flow: toward-source, scoring: derived-edge, reason: "derived from entity rows or manifest blocks scored at the owning entity" }
255
+ screen_feature: { kind: edge, class: dependency, impact_flow: toward-source, scoring: derived-edge, reason: "derived from entity rows or manifest blocks scored at the owning entity" }
256
+ screen_action: { kind: edge, class: dependency, impact_flow: toward-source, scoring: derived-edge, reason: "derived from entity rows or manifest blocks scored at the owning entity" }
164
257
  conformance_finding: { kind: finding, scoring: not-built, reason: "not produced by catalogue build; populated by conformance tooling" }
165
258
  quality_scores:
166
259
  kind: entity
167
260
  scoring: predicate
168
261
  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."
262
+ relationships:
263
+ # flow none, RULED (0206 flagged-row resolution): diagnostics do not
264
+ # ride change closures. A score is a record ABOUT an artefact; "is this
265
+ # score still current after the change" is owned, precisely, by the
266
+ # scores instruments (staleness_basis/corpus_ref + the coverage check),
267
+ # and answering it through reachability answers it worse. Measured
268
+ # before ruling: scores were 27-30% of both estates' contract closures.
269
+ sdd_id: { class: dependency, impact_flow: none }
169
270
  quality_score_dimensions:
170
271
  kind: edge
272
+ class: attribute
273
+ impact_flow: none
171
274
  scoring: derived-edge
172
275
  reason: "derived from the parent quality_scores row; the dimension keys are the rubric's own vocabulary, governed by the rubric that declares them"
173
276
  quality_gate: { kind: enum, scoring: not-applicable, reason: "closed vocabulary, not an artefact" }
@@ -105,7 +105,7 @@ export function registerCatalogue(program) {
105
105
  });
106
106
  catalogue
107
107
  .command("impact")
108
- .description("Transitive reachability closure of a node which nodes reference it, directly or transitively (recursive SQL on the embedded engine, over the graph-projection edge set with reciprocal mirrors deduplicated). The closure spans ALL declared relationships, ownership included: it answers \"ownership blast radius\", not yet \"change impact\" — the dependency-vs-membership edge-class vocabulary is a named follow-on")
108
+ .description("Change-impact closure of a node (M-ADR 0206): each relationship is traversed per its declared impact-flow from the rubric-coverage-map dependency edges reach their consumers, membership edges propagate part-to-whole only, xref/lineage records are inert computed by recursive SQL on the embedded engine, with the co-directionality invariant asserted on every run")
109
109
  .requiredOption("--of <node-id>", 'Node to compute impact of, in the projection\'s "<catalogue>/<id>" form (e.g. contracts/orders-api)')
110
110
  .option("--sdd-path <path>", "Path to the SDD repo root (defaults to cwd)")
111
111
  .option("--catalogues-dir <dir>", "Catalogues directory relative to the SDD root (default catalogues)")
@@ -1 +1 @@
1
- {"version":3,"file":"catalogue.js","sourceRoot":"","sources":["../../src/verbs/catalogue.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"catalogue.js","sourceRoot":"","sources":["../../src/verbs/catalogue.ts"],"names":[],"mappings":"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"}