@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.
- package/dist/lib/catalogue/coverage-render.d.ts +1 -0
- package/dist/lib/catalogue/coverage-render.d.ts.map +1 -1
- package/dist/lib/catalogue/coverage-render.js +17 -0
- package/dist/lib/catalogue/coverage-render.js.map +1 -1
- package/dist/lib/catalogue/coverage-run.d.ts.map +1 -1
- package/dist/lib/catalogue/coverage-run.js +7 -2
- package/dist/lib/catalogue/coverage-run.js.map +1 -1
- package/dist/lib/catalogue/gate-checks.d.ts +20 -0
- package/dist/lib/catalogue/gate-checks.d.ts.map +1 -1
- package/dist/lib/catalogue/gate-checks.js +67 -0
- package/dist/lib/catalogue/gate-checks.js.map +1 -1
- package/dist/lib/catalogue/graph-projection.d.ts +10 -1
- package/dist/lib/catalogue/graph-projection.d.ts.map +1 -1
- package/dist/lib/catalogue/graph-projection.js +31 -2
- package/dist/lib/catalogue/graph-projection.js.map +1 -1
- package/dist/lib/catalogue/graph-run.d.ts +20 -0
- package/dist/lib/catalogue/graph-run.d.ts.map +1 -1
- package/dist/lib/catalogue/graph-run.js +40 -1
- package/dist/lib/catalogue/graph-run.js.map +1 -1
- package/dist/lib/catalogue/impact-run.d.ts +52 -44
- package/dist/lib/catalogue/impact-run.d.ts.map +1 -1
- package/dist/lib/catalogue/impact-run.js +0 -0
- package/dist/lib/catalogue/impact-run.js.map +1 -1
- package/dist/lib/catalogue/rubric-coverage-map.yaml +147 -44
- package/dist/verbs/catalogue.js +1 -1
- package/dist/verbs/catalogue.js.map +1 -1
- package/package.json +2 -2
|
@@ -1,64 +1,72 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Transitive impact analysis — `sdd-cli catalogue impact` (
|
|
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
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
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
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
*
|
|
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
|
-
|
|
28
|
-
|
|
29
|
-
readonly
|
|
30
|
-
|
|
31
|
-
readonly
|
|
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
|
|
36
|
-
readonly edges: readonly
|
|
37
|
-
/**
|
|
38
|
-
readonly
|
|
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
|
-
*
|
|
42
|
-
*
|
|
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
|
|
58
|
+
export declare function buildImpactPropagation(edges: readonly ImpactEdge[], semantics: RelationshipSemantics): PropagationBuild;
|
|
57
59
|
/**
|
|
58
|
-
*
|
|
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(
|
|
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
|
|
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":"AAAA
|
|
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
|
-
|
|
53
|
-
|
|
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
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
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
|
-
|
|
162
|
-
|
|
163
|
-
|
|
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" }
|
package/dist/verbs/catalogue.js
CHANGED
|
@@ -105,7 +105,7 @@ export function registerCatalogue(program) {
|
|
|
105
105
|
});
|
|
106
106
|
catalogue
|
|
107
107
|
.command("impact")
|
|
108
|
-
.description("
|
|
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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"}
|