@sdd-method/sdd-cli 1.37.0 → 1.38.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/aggregate.d.ts +2 -2
- package/dist/lib/catalogue/aggregate.d.ts.map +1 -1
- package/dist/lib/catalogue/aggregate.js +13 -1
- package/dist/lib/catalogue/aggregate.js.map +1 -1
- package/dist/lib/catalogue/build.d.ts.map +1 -1
- package/dist/lib/catalogue/build.js +76 -1
- package/dist/lib/catalogue/build.js.map +1 -1
- package/dist/lib/catalogue/builders/data-items.d.ts +37 -0
- package/dist/lib/catalogue/builders/data-items.d.ts.map +1 -0
- package/dist/lib/catalogue/builders/data-items.js +326 -0
- package/dist/lib/catalogue/builders/data-items.js.map +1 -0
- package/dist/lib/catalogue/builders/events.d.ts.map +1 -1
- package/dist/lib/catalogue/builders/events.js +27 -2
- package/dist/lib/catalogue/builders/events.js.map +1 -1
- package/dist/lib/catalogue/builders/feature-tree-walker.d.ts.map +1 -1
- package/dist/lib/catalogue/builders/feature-tree-walker.js +38 -1
- package/dist/lib/catalogue/builders/feature-tree-walker.js.map +1 -1
- package/dist/lib/catalogue/canonical-schema.yaml +228 -1
- package/dist/lib/catalogue/data-item-coverage.d.ts +13 -0
- package/dist/lib/catalogue/data-item-coverage.d.ts.map +1 -0
- package/dist/lib/catalogue/data-item-coverage.js +142 -0
- package/dist/lib/catalogue/data-item-coverage.js.map +1 -0
- package/dist/lib/catalogue/graph-projection.d.ts.map +1 -1
- package/dist/lib/catalogue/graph-projection.js +3 -0
- package/dist/lib/catalogue/graph-projection.js.map +1 -1
- package/dist/lib/catalogue/platform-scope.d.ts +2 -0
- package/dist/lib/catalogue/platform-scope.d.ts.map +1 -0
- package/dist/lib/catalogue/platform-scope.js +7 -0
- package/dist/lib/catalogue/platform-scope.js.map +1 -0
- package/dist/lib/catalogue/rubric-coverage-map.yaml +42 -0
- package/dist/lib/catalogue/validate.d.ts.map +1 -1
- package/dist/lib/catalogue/validate.js +29 -5
- package/dist/lib/catalogue/validate.js.map +1 -1
- package/dist/lib/conformance/index.d.ts +6 -0
- package/dist/lib/conformance/index.d.ts.map +1 -1
- package/dist/lib/conformance/index.js +28 -2
- package/dist/lib/conformance/index.js.map +1 -1
- package/dist/lib/metamodel/rule-ids.d.ts.map +1 -1
- package/dist/lib/metamodel/rule-ids.js +3 -0
- package/dist/lib/metamodel/rule-ids.js.map +1 -1
- package/package.json +4 -3
- package/scripts/build-verify-package.mjs +5 -1
- package/scripts/copy-yaml-assets.mjs +1 -1
|
@@ -77,8 +77,30 @@ export async function buildEvents(inputs) {
|
|
|
77
77
|
}
|
|
78
78
|
// 4. Merge YAML + avsc. YAML rows win on overlapping fields.
|
|
79
79
|
const merged = new Map();
|
|
80
|
+
// An event declared in the catalogue YAML and present as an .avsc is ONE event, whatever
|
|
81
|
+
// the two sources call it. Matching by id alone missed every pair whose ids differ (the
|
|
82
|
+
// avsc-derived id carries the domain prefix and an `-event` suffix), so one schema
|
|
83
|
+
// yielded two event rows — inflating an estate's count by 12. The schema path is the
|
|
84
|
+
// stronger key: the YAML's id wins and the avsc row it describes is consumed.
|
|
85
|
+
const avscIdBySchema = new Map();
|
|
86
|
+
for (const [aid, row] of avscRows) {
|
|
87
|
+
const sp = normaliseSchemaPath(String(row["schema_path"] ?? ""));
|
|
88
|
+
if (sp !== "")
|
|
89
|
+
avscIdBySchema.set(sp, aid);
|
|
90
|
+
}
|
|
91
|
+
const consumedAvsc = new Set();
|
|
80
92
|
for (const [id, yaml] of yamlResult.byId) {
|
|
81
|
-
|
|
93
|
+
let avsc = avscRows.get(id);
|
|
94
|
+
if (avsc !== undefined) {
|
|
95
|
+
consumedAvsc.add(id);
|
|
96
|
+
}
|
|
97
|
+
else {
|
|
98
|
+
const aid = avscIdBySchema.get(normaliseSchemaPath(yaml.schemaPath));
|
|
99
|
+
if (aid !== undefined && !yamlResult.byId.has(aid)) {
|
|
100
|
+
avsc = avscRows.get(aid);
|
|
101
|
+
consumedAvsc.add(aid);
|
|
102
|
+
}
|
|
103
|
+
}
|
|
82
104
|
const baseRow = mergeYamlAndAvsc(yaml, avsc);
|
|
83
105
|
// Resolve domain_id against known domains; empty if unknown.
|
|
84
106
|
let domainId = String(baseRow["domain_id"] ?? "");
|
|
@@ -100,7 +122,7 @@ export async function buildEvents(inputs) {
|
|
|
100
122
|
}
|
|
101
123
|
// Avsc-only events (no YAML row): keep the existing avsc-derived row as-is.
|
|
102
124
|
for (const [id, row] of avscRows) {
|
|
103
|
-
if (!merged.has(id)) {
|
|
125
|
+
if (!merged.has(id) && !consumedAvsc.has(id)) {
|
|
104
126
|
merged.set(id, row);
|
|
105
127
|
}
|
|
106
128
|
}
|
|
@@ -112,6 +134,9 @@ export async function buildEvents(inputs) {
|
|
|
112
134
|
yamlEvents: yamlResult.byId,
|
|
113
135
|
};
|
|
114
136
|
}
|
|
137
|
+
function normaliseSchemaPath(p) {
|
|
138
|
+
return p.trim().replace(/\\/g, "/").replace(/^\.\//, "");
|
|
139
|
+
}
|
|
115
140
|
function inferDomainFromAvroPath(relPath) {
|
|
116
141
|
// Layout: contracts/avro/<domain>/<file>.avsc
|
|
117
142
|
const parts = relPath.split(sep);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"events.js","sourceRoot":"","sources":["../../../../src/lib/catalogue/builders/events.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"events.js","sourceRoot":"","sources":["../../../../src/lib/catalogue/builders/events.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"feature-tree-walker.d.ts","sourceRoot":"","sources":["../../../../src/lib/catalogue/builders/feature-tree-walker.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAUH,8EAA8E;AAC9E,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAaxB;AAED,0EAA0E;AAC1E,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAM5C;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAC5B,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,MAAM,CAAC,EAAE,MAAM,GACd,MAAM,CAGR;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC;IAC3B,wEAAwE;IACxE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,2EAA2E;IAC3E,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,yFAAyF;IACzF,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;CAC/B;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB,gEAAgE;IAChE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,4FAA4F;IAC5F,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B;;;OAGG;IACH,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,wEAAwE;IACxE,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,0FAA0F;IAC1F,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;CAC/B;AAED,MAAM,MAAM,gBAAgB,GAAG,YAAY,GAAG,WAAW,CAAC;AAE1D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,gBAAgB,EAAE,
|
|
1
|
+
{"version":3,"file":"feature-tree-walker.d.ts","sourceRoot":"","sources":["../../../../src/lib/catalogue/builders/feature-tree-walker.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAUH,8EAA8E;AAC9E,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAaxB;AAED,0EAA0E;AAC1E,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAM5C;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAC5B,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,MAAM,CAAC,EAAE,MAAM,GACd,MAAM,CAGR;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC;IAC3B,wEAAwE;IACxE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,2EAA2E;IAC3E,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,yFAAyF;IACzF,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;CAC/B;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB,gEAAgE;IAChE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,4FAA4F;IAC5F,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B;;;OAGG;IACH,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,wEAAwE;IACxE,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,0FAA0F;IAC1F,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;CAC/B;AAED,MAAM,MAAM,gBAAgB,GAAG,YAAY,GAAG,WAAW,CAAC;AAE1D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,gBAAgB,EAAE,CAyDhE;AAED,MAAM,WAAW,kBAAkB;IACjC,mEAAmE;IACnE,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,4EAA4E;IAC5E,QAAQ,CAAC,UAAU,EAAE,SAAS,MAAM,EAAE,CAAC;IACvC;;;;;OAKG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAC5C;AAWD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,MAAM,GAAG,kBAAkB,EAAE,CA8C5E"}
|
|
@@ -91,7 +91,11 @@ export function walkFeatureTree(text) {
|
|
|
91
91
|
let inFence = false;
|
|
92
92
|
let currentH2Slug = "";
|
|
93
93
|
let currentH3Slug = "";
|
|
94
|
-
|
|
94
|
+
// A bullet's description may wrap onto indented continuation lines. Reading one line per
|
|
95
|
+
// bullet cut it at the first break (a KPI list lost mid-sentence), so wrapped lines are
|
|
96
|
+
// joined into the bullet before it is parsed.
|
|
97
|
+
const lines = joinContinuations(text.split(/\r?\n/));
|
|
98
|
+
for (const rawLine of lines) {
|
|
95
99
|
const line = rawLine.trimEnd();
|
|
96
100
|
if (line.startsWith("```")) {
|
|
97
101
|
inFence = !inFence;
|
|
@@ -231,6 +235,39 @@ const FOOTNOTE_MARKER_RE = /\s*\[\^[^\]]+\]/g;
|
|
|
231
235
|
function stripFootnoteMarkers(line) {
|
|
232
236
|
return line.replace(FOOTNOTE_MARKER_RE, "");
|
|
233
237
|
}
|
|
238
|
+
/**
|
|
239
|
+
* Join a bullet's wrapped continuation lines onto it: an indented, non-blank line that is not
|
|
240
|
+
* itself a list item, heading, table row or fence, directly following a bullet (or another
|
|
241
|
+
* continuation). Fenced blocks are passed through untouched.
|
|
242
|
+
*/
|
|
243
|
+
function joinContinuations(lines) {
|
|
244
|
+
const out = [];
|
|
245
|
+
let inFence = false;
|
|
246
|
+
let joinable = false;
|
|
247
|
+
for (const raw of lines) {
|
|
248
|
+
const t = raw.trim();
|
|
249
|
+
if (t.startsWith("```")) {
|
|
250
|
+
inFence = !inFence;
|
|
251
|
+
joinable = false;
|
|
252
|
+
out.push(raw);
|
|
253
|
+
continue;
|
|
254
|
+
}
|
|
255
|
+
if (inFence) {
|
|
256
|
+
out.push(raw);
|
|
257
|
+
continue;
|
|
258
|
+
}
|
|
259
|
+
const isContinuation = joinable &&
|
|
260
|
+
/^\s+\S/.test(raw) &&
|
|
261
|
+
!/^([-*+]\s|\d+[.)]\s|#|\||>)/.test(t);
|
|
262
|
+
if (isContinuation) {
|
|
263
|
+
out[out.length - 1] = `${out[out.length - 1].trimEnd()} ${t}`;
|
|
264
|
+
continue;
|
|
265
|
+
}
|
|
266
|
+
joinable = /^\s*[-*+]\s/.test(raw);
|
|
267
|
+
out.push(raw);
|
|
268
|
+
}
|
|
269
|
+
return out;
|
|
270
|
+
}
|
|
234
271
|
function matchBullet(line) {
|
|
235
272
|
const stripped = stripFootnoteMarkers(line);
|
|
236
273
|
const m = BULLET_RE.exec(stripped);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"feature-tree-walker.js","sourceRoot":"","sources":["../../../../src/lib/catalogue/builders/feature-tree-walker.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,MAAM,mBAAmB,GAAG;IAC1B,iBAAiB;IACjB,IAAI,CAAC,MAAM,EAAE,UAAU,EAAE,iBAAiB,CAAC;CAC5C,CAAC;AAEF,8EAA8E;AAC9E,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,OAAe;IAEf,KAAK,MAAM,GAAG,IAAI,mBAAmB,EAAE,CAAC;QACtC,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QAChC,IAAI,CAAC;YACH,MAAM,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YAC9B,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,IAAI,GAAI,GAA6B,CAAC,IAAI,CAAC;YACjD,IAAI,IAAI,KAAK,QAAQ;gBAAE,SAAS;YAChC,MAAM,GAAG,CAAC;QACZ,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,0EAA0E;AAC1E,MAAM,UAAU,OAAO,CAAC,IAAY;IAClC,OAAO,IAAI;SACR,WAAW,EAAE;SACb,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC;SACtB,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC;SAC3B,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;AAC7B,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAC5B,SAAiB,EACjB,MAAc,EACd,MAAe;IAEf,MAAM,IAAI,GAAG,GAAG,SAAS,UAAU,MAAM,EAAE,CAAC;IAC5C,OAAO,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,MAAM,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AAC5E,CAAC;AA+BD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,MAAM,UAAU,eAAe,CAAC,IAAY;IAC1C,MAAM,GAAG,GAAuB,EAAE,CAAC;IACnC,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,IAAI,aAAa,GAAG,EAAE,CAAC;IACvB,IAAI,aAAa,GAAG,EAAE,CAAC;IAEvB,
|
|
1
|
+
{"version":3,"file":"feature-tree-walker.js","sourceRoot":"","sources":["../../../../src/lib/catalogue/builders/feature-tree-walker.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
# Emitted by sdd-cli's YAML emitter with no line folding; the three header scalars are quoted for the
|
|
8
8
|
# textual readers downstream. The one deliberate difference from the authored form is schema_status:
|
|
9
9
|
# the authored form says canonical; a projection never does.
|
|
10
|
-
schema_version: "3.
|
|
10
|
+
schema_version: "3.18.0"
|
|
11
11
|
schema_owner: "sdd-method"
|
|
12
12
|
schema_status: "generated"
|
|
13
13
|
enums:
|
|
@@ -553,6 +553,59 @@ enums:
|
|
|
553
553
|
- value: ambiguous
|
|
554
554
|
description: "Cannot be classified from the delta alone: triage."
|
|
555
555
|
description: The classification of a delta-reverse finding between two snapshots (M-ADR 0180 §2.7). Bound so every file that records one records one of these; delta findings are not yet catalogued (M-ADR 0214 §4.8).
|
|
556
|
+
supply_verdict:
|
|
557
|
+
values:
|
|
558
|
+
- value: supported
|
|
559
|
+
description: The item reaches the canonical boundary from this integration.
|
|
560
|
+
- value: partial
|
|
561
|
+
description: It reaches it with a stated limitation (rate, scope, accuracy).
|
|
562
|
+
- value: source-absent
|
|
563
|
+
description: "The provider cannot supply it: nobody's work."
|
|
564
|
+
- value: gateway-gap
|
|
565
|
+
description: "The provider can and this integration does not: the integration's work."
|
|
566
|
+
- value: not-applicable
|
|
567
|
+
description: The item does not apply to this integration.
|
|
568
|
+
description: "What an integration states about a data item (M-ADR 0216 §4.2). unknown is NOT a member: it is the reading of no row."
|
|
569
|
+
supply_basis:
|
|
570
|
+
values:
|
|
571
|
+
- value: code
|
|
572
|
+
description: Read from the integration's code.
|
|
573
|
+
- value: grounded
|
|
574
|
+
description: Grounded in a vendor or source artefact.
|
|
575
|
+
- value: declared
|
|
576
|
+
description: Declared by the integration's own configuration.
|
|
577
|
+
- value: inferred
|
|
578
|
+
description: Inferred, with no artefact stating it.
|
|
579
|
+
description: The evidence class of a supply statement.
|
|
580
|
+
data_necessity:
|
|
581
|
+
values:
|
|
582
|
+
- value: required
|
|
583
|
+
description: The feature cannot work without it (or without one member of its alternative_group).
|
|
584
|
+
- value: enhances
|
|
585
|
+
description: The feature works without it, less well. Never decides coverage.
|
|
586
|
+
description: How a feature needs a data item.
|
|
587
|
+
support_verdict:
|
|
588
|
+
values:
|
|
589
|
+
- value: supported
|
|
590
|
+
description: Every requirement is met.
|
|
591
|
+
- value: partial
|
|
592
|
+
description: Every requirement is met or partly met, and one only partly.
|
|
593
|
+
- value: unknown
|
|
594
|
+
description: No requirement is unmet, and one is undecided because no supply row exists.
|
|
595
|
+
- value: unsupported
|
|
596
|
+
description: A requirement is unmet; limiting_item_id and limiting_reason name it.
|
|
597
|
+
- value: not-applicable
|
|
598
|
+
description: Every required item is not-applicable to this integration.
|
|
599
|
+
description: Whether one integration supports one feature at the canonical boundary (M-ADR 0216 §4.4).
|
|
600
|
+
limiting_reason:
|
|
601
|
+
values:
|
|
602
|
+
- value: source-absent
|
|
603
|
+
description: "The provider cannot supply the item: nobody's work."
|
|
604
|
+
- value: gateway-gap
|
|
605
|
+
description: "The integration does not supply what the provider has: the integration's work."
|
|
606
|
+
- value: no-canonical-home
|
|
607
|
+
description: "The platform has no canonical field for the item: platform contract work."
|
|
608
|
+
description: Why an unsupported feature is unsupported, and so whose work the gap is.
|
|
556
609
|
catalogues:
|
|
557
610
|
domains:
|
|
558
611
|
primary_key: id
|
|
@@ -3794,3 +3847,177 @@ catalogues:
|
|
|
3794
3847
|
nullable: true
|
|
3795
3848
|
column_enums:
|
|
3796
3849
|
presence: enums.member_presence
|
|
3850
|
+
data_items:
|
|
3851
|
+
primary_key: id
|
|
3852
|
+
columns:
|
|
3853
|
+
- name: id
|
|
3854
|
+
type: string
|
|
3855
|
+
nullable: false
|
|
3856
|
+
description: di.<category>.<name>, e.g. di.motion.speed.
|
|
3857
|
+
- name: name
|
|
3858
|
+
type: string
|
|
3859
|
+
nullable: false
|
|
3860
|
+
- name: category
|
|
3861
|
+
type: string
|
|
3862
|
+
nullable: false
|
|
3863
|
+
description: Open grouping (motion, behaviour, tyre, energy, …).
|
|
3864
|
+
- name: canonical_field
|
|
3865
|
+
type: string
|
|
3866
|
+
nullable: true
|
|
3867
|
+
description: The integration-facing canonical contract field that carries the item. EMPTY means the platform has no canonical home for it, and coverage reads every requirement on it as unmet (no-canonical-home).
|
|
3868
|
+
- name: description
|
|
3869
|
+
type: string
|
|
3870
|
+
nullable: true
|
|
3871
|
+
- name: source_sdd_id
|
|
3872
|
+
type: string
|
|
3873
|
+
nullable: true
|
|
3874
|
+
description: Originating SDD slug. Populated by the aggregator per M-ADR 0134.
|
|
3875
|
+
- name: platform_sdd_id
|
|
3876
|
+
type: string
|
|
3877
|
+
nullable: true
|
|
3878
|
+
description: The platform this row belongs to — sdd_id of its platform-root. Stamped by the aggregator (M-ADR 0208 §4.4).
|
|
3879
|
+
description: "A unit of data an integration may supply and a feature may need, at the canonical boundary (M-ADR 0216 §4.1). Platform-owned, like events. Not a wire signal: payload grammar stays adopter territory."
|
|
3880
|
+
integration_data_item:
|
|
3881
|
+
primary_key: id
|
|
3882
|
+
columns:
|
|
3883
|
+
- name: id
|
|
3884
|
+
type: string
|
|
3885
|
+
nullable: false
|
|
3886
|
+
description: <integration_id>::<data_item_id>::<evidence_ref>.
|
|
3887
|
+
- name: integration_id
|
|
3888
|
+
type: string
|
|
3889
|
+
nullable: false
|
|
3890
|
+
- name: data_item_id
|
|
3891
|
+
type: string
|
|
3892
|
+
nullable: false
|
|
3893
|
+
- name: verdict
|
|
3894
|
+
type: string
|
|
3895
|
+
nullable: false
|
|
3896
|
+
description: Bound to supply_verdict. A mapping-table row is supported, or partial when its Notes begin with partial; the Data Items Not Supplied section carries the rest.
|
|
3897
|
+
- name: basis
|
|
3898
|
+
type: string
|
|
3899
|
+
nullable: true
|
|
3900
|
+
description: "Bound to supply_basis: the evidence class of the statement."
|
|
3901
|
+
- name: evidence_ref
|
|
3902
|
+
type: string
|
|
3903
|
+
nullable: false
|
|
3904
|
+
description: Path and line of the statement.
|
|
3905
|
+
- name: checked_at
|
|
3906
|
+
type: string
|
|
3907
|
+
nullable: true
|
|
3908
|
+
description: "The governing Checked: line of the section, verbatim (a date, or a source revision). Reported for age; never read as a verdict."
|
|
3909
|
+
- name: source_sdd_id
|
|
3910
|
+
type: string
|
|
3911
|
+
nullable: true
|
|
3912
|
+
description: Originating SDD slug. Populated by the aggregator per M-ADR 0134.
|
|
3913
|
+
- name: platform_sdd_id
|
|
3914
|
+
type: string
|
|
3915
|
+
nullable: true
|
|
3916
|
+
description: The platform this row belongs to — sdd_id of its platform-root. Stamped by the aggregator (M-ADR 0208 §4.4).
|
|
3917
|
+
description: "Supply: what one integration states about one data item, from its feature-grounding (M-ADR 0216 §4.2). Several rows per item are normal (one per evidence_ref); coverage reads the best. No row reads unknown, and unknown is never written."
|
|
3918
|
+
foreign_keys:
|
|
3919
|
+
- column: integration_id
|
|
3920
|
+
references: integrations.id
|
|
3921
|
+
nullable: false
|
|
3922
|
+
- column: data_item_id
|
|
3923
|
+
references: data_items.id
|
|
3924
|
+
nullable: false
|
|
3925
|
+
external_for_profiles:
|
|
3926
|
+
- application-product
|
|
3927
|
+
- integration-product
|
|
3928
|
+
column_enums:
|
|
3929
|
+
verdict: enums.supply_verdict
|
|
3930
|
+
basis: enums.supply_basis
|
|
3931
|
+
feature_data_requirement:
|
|
3932
|
+
primary_key: id
|
|
3933
|
+
columns:
|
|
3934
|
+
- name: id
|
|
3935
|
+
type: string
|
|
3936
|
+
nullable: false
|
|
3937
|
+
description: <feature_id>::<data_item_id>.
|
|
3938
|
+
- name: feature_id
|
|
3939
|
+
type: string
|
|
3940
|
+
nullable: false
|
|
3941
|
+
- name: data_item_id
|
|
3942
|
+
type: string
|
|
3943
|
+
nullable: false
|
|
3944
|
+
- name: necessity
|
|
3945
|
+
type: string
|
|
3946
|
+
nullable: false
|
|
3947
|
+
description: Bound to data_necessity.
|
|
3948
|
+
- name: alternative_group
|
|
3949
|
+
type: string
|
|
3950
|
+
nullable: true
|
|
3951
|
+
description: "Empty, or a label: required rows sharing a label are satisfied by any one of them."
|
|
3952
|
+
- name: basis_ref
|
|
3953
|
+
type: string
|
|
3954
|
+
nullable: true
|
|
3955
|
+
description: Where the need is stated (path and line).
|
|
3956
|
+
- name: source_sdd_id
|
|
3957
|
+
type: string
|
|
3958
|
+
nullable: true
|
|
3959
|
+
description: Originating SDD slug. Populated by the aggregator per M-ADR 0134.
|
|
3960
|
+
- name: platform_sdd_id
|
|
3961
|
+
type: string
|
|
3962
|
+
nullable: true
|
|
3963
|
+
description: The platform this row belongs to — sdd_id of its platform-root. Stamped by the aggregator (M-ADR 0208 §4.4).
|
|
3964
|
+
description: "Demand: a data item one feature needs, from the feature spec's Data Requirements table (M-ADR 0216 §4.3). Feature grain only: a capability's need is the union of its features'."
|
|
3965
|
+
foreign_keys:
|
|
3966
|
+
- column: feature_id
|
|
3967
|
+
references: features.id
|
|
3968
|
+
nullable: false
|
|
3969
|
+
- column: data_item_id
|
|
3970
|
+
references: data_items.id
|
|
3971
|
+
nullable: false
|
|
3972
|
+
external_for_profiles:
|
|
3973
|
+
- application-product
|
|
3974
|
+
- integration-product
|
|
3975
|
+
column_enums:
|
|
3976
|
+
necessity: enums.data_necessity
|
|
3977
|
+
feature_integration_support:
|
|
3978
|
+
primary_key: id
|
|
3979
|
+
columns:
|
|
3980
|
+
- name: id
|
|
3981
|
+
type: string
|
|
3982
|
+
nullable: false
|
|
3983
|
+
description: <feature_id>::<integration_id>.
|
|
3984
|
+
- name: feature_id
|
|
3985
|
+
type: string
|
|
3986
|
+
nullable: false
|
|
3987
|
+
- name: integration_id
|
|
3988
|
+
type: string
|
|
3989
|
+
nullable: false
|
|
3990
|
+
- name: verdict
|
|
3991
|
+
type: string
|
|
3992
|
+
nullable: false
|
|
3993
|
+
description: "Bound to support_verdict. Each requirement is decided first (an alternative_group is unmet only when every member is); the feature takes the worst: unsupported > unknown > partial > supported. not-applicable only when every required item is."
|
|
3994
|
+
- name: limiting_item_id
|
|
3995
|
+
type: string
|
|
3996
|
+
nullable: true
|
|
3997
|
+
description: "For unsupported: the deciding requirement's item. Empty otherwise."
|
|
3998
|
+
- name: limiting_reason
|
|
3999
|
+
type: string
|
|
4000
|
+
nullable: true
|
|
4001
|
+
description: "For unsupported: bound to limiting_reason. Empty otherwise."
|
|
4002
|
+
- name: source_sdd_id
|
|
4003
|
+
type: string
|
|
4004
|
+
nullable: true
|
|
4005
|
+
description: Originating SDD slug. Populated by the aggregator per M-ADR 0134.
|
|
4006
|
+
- name: platform_sdd_id
|
|
4007
|
+
type: string
|
|
4008
|
+
nullable: true
|
|
4009
|
+
description: The platform this row belongs to — sdd_id of its platform-root. Stamped by the aggregator (M-ADR 0208 §4.4).
|
|
4010
|
+
description: "Coverage: whether one integration can support one feature, DERIVED at aggregation from supply and demand (M-ADR 0216 §4.4); empty in a member build. SUPPORTED MEANS THE ITEMS REACH THE CANONICAL BOUNDARY, NOT THAT THE FEATURE WORKS END TO END: routing past that boundary is not checked."
|
|
4011
|
+
foreign_keys:
|
|
4012
|
+
- column: feature_id
|
|
4013
|
+
references: features.id
|
|
4014
|
+
nullable: false
|
|
4015
|
+
- column: integration_id
|
|
4016
|
+
references: integrations.id
|
|
4017
|
+
nullable: false
|
|
4018
|
+
- column: limiting_item_id
|
|
4019
|
+
references: data_items.id
|
|
4020
|
+
nullable: true
|
|
4021
|
+
column_enums:
|
|
4022
|
+
verdict: enums.support_verdict
|
|
4023
|
+
limiting_reason: enums.limiting_reason
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { CatalogueRow } from "./csv-writer.js";
|
|
2
|
+
export interface CoverageStats {
|
|
3
|
+
readonly featuresWithRequirements: number;
|
|
4
|
+
readonly features: number;
|
|
5
|
+
readonly integrations: number;
|
|
6
|
+
readonly integrationsWithSupply: number;
|
|
7
|
+
readonly byVerdict: Record<string, number>;
|
|
8
|
+
}
|
|
9
|
+
export declare function deriveFeatureIntegrationSupport(rows: ReadonlyMap<string, readonly CatalogueRow[]>): {
|
|
10
|
+
rows: CatalogueRow[];
|
|
11
|
+
stats: CoverageStats;
|
|
12
|
+
};
|
|
13
|
+
//# sourceMappingURL=data-item-coverage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"data-item-coverage.d.ts","sourceRoot":"","sources":["../../../src/lib/catalogue/data-item-coverage.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAYpD,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,wBAAwB,EAAE,MAAM,CAAC;IAC1C,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,sBAAsB,EAAE,MAAM,CAAC;IACxC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC5C;AAED,wBAAgB,+BAA+B,CAC7C,IAAI,EAAE,WAAW,CAAC,MAAM,EAAE,SAAS,YAAY,EAAE,CAAC,GACjD;IAAE,IAAI,EAAE,YAAY,EAAE,CAAC;IAAC,KAAK,EAAE,aAAa,CAAA;CAAE,CA+GhD"}
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
// feature_integration_support — coverage derived at aggregation (M-ADR 0216 §4.4).
|
|
2
|
+
//
|
|
3
|
+
// For each feature with at least one `required` requirement and each integration of the same
|
|
4
|
+
// platform: decide every requirement (an ungrouped item alone; an alternative_group across its
|
|
5
|
+
// members), then the feature takes the worst. `supported` means the items reach the canonical
|
|
6
|
+
// boundary, NOT that the feature works end to end. `enhances` never decides coverage. A feature
|
|
7
|
+
// with no requirement gets no row: nothing was declared, so nothing is decided.
|
|
8
|
+
//
|
|
9
|
+
// Two readings the ADR leaves to the builder, chosen conservatively:
|
|
10
|
+
// - a `not-applicable` item inside a feature that is not wholly not-applicable is unmet with
|
|
11
|
+
// reason source-absent (the integration does not have it);
|
|
12
|
+
// - when the members of an unmet requirement fail for different reasons, the reason reported
|
|
13
|
+
// is the most actionable: gateway-gap, then no-canonical-home, then source-absent.
|
|
14
|
+
const SUPPLY_ORDER = ["supported", "partial", "gateway-gap", "source-absent", "not-applicable"];
|
|
15
|
+
const REASON_ORDER = ["gateway-gap", "no-canonical-home", "source-absent"];
|
|
16
|
+
export function deriveFeatureIntegrationSupport(rows) {
|
|
17
|
+
const plat = (r) => String(r["platform_sdd_id"] ?? "");
|
|
18
|
+
const items = new Map();
|
|
19
|
+
for (const r of rows.get("data_items") ?? [])
|
|
20
|
+
items.set(`${plat(r)}\u0000${r["id"]}`, r);
|
|
21
|
+
const canonical = (p, item) => String(items.get(`${p}\u0000${item}`)?.["canonical_field"] ?? "") !== "";
|
|
22
|
+
const best = new Map(); // integration\0item → best verdict
|
|
23
|
+
const supplied = new Set();
|
|
24
|
+
for (const r of rows.get("integration_data_item") ?? []) {
|
|
25
|
+
const k = `${r["integration_id"]}\u0000${r["data_item_id"]}`;
|
|
26
|
+
const v = String(r["verdict"]);
|
|
27
|
+
supplied.add(String(r["integration_id"]));
|
|
28
|
+
const cur = best.get(k);
|
|
29
|
+
if (cur === undefined || SUPPLY_ORDER.indexOf(v) < SUPPLY_ORDER.indexOf(cur))
|
|
30
|
+
best.set(k, v);
|
|
31
|
+
}
|
|
32
|
+
// feature → requirement key → items
|
|
33
|
+
const reqs = new Map();
|
|
34
|
+
for (const r of rows.get("feature_data_requirement") ?? []) {
|
|
35
|
+
if (String(r["necessity"]) !== "required")
|
|
36
|
+
continue;
|
|
37
|
+
const f = String(r["feature_id"]);
|
|
38
|
+
const item = String(r["data_item_id"]);
|
|
39
|
+
const g = String(r["alternative_group"] ?? "");
|
|
40
|
+
const key = g !== "" ? `group:${g}` : `item:${item}`;
|
|
41
|
+
const m = reqs.get(f) ?? new Map();
|
|
42
|
+
m.set(key, [...(m.get(key) ?? []), item]);
|
|
43
|
+
reqs.set(f, m);
|
|
44
|
+
}
|
|
45
|
+
const features = rows.get("features") ?? [];
|
|
46
|
+
const integrations = rows.get("integrations") ?? [];
|
|
47
|
+
const out = [];
|
|
48
|
+
const byVerdict = {};
|
|
49
|
+
for (const f of features) {
|
|
50
|
+
const fid = String(f["id"]);
|
|
51
|
+
const fr = reqs.get(fid);
|
|
52
|
+
if (!fr)
|
|
53
|
+
continue;
|
|
54
|
+
const p = plat(f);
|
|
55
|
+
for (const integ of integrations) {
|
|
56
|
+
if (plat(integ) !== p)
|
|
57
|
+
continue;
|
|
58
|
+
const iid = String(integ["id"]);
|
|
59
|
+
const itemState = (item) => {
|
|
60
|
+
if (!canonical(p, item))
|
|
61
|
+
return { kind: "unmet", reason: "no-canonical-home" };
|
|
62
|
+
const v = best.get(`${iid}\u0000${item}`);
|
|
63
|
+
if (v === undefined)
|
|
64
|
+
return { kind: "unknown" };
|
|
65
|
+
if (v === "supported")
|
|
66
|
+
return { kind: "met" };
|
|
67
|
+
if (v === "partial")
|
|
68
|
+
return { kind: "partly" };
|
|
69
|
+
if (v === "not-applicable")
|
|
70
|
+
return { kind: "na" };
|
|
71
|
+
return { kind: "unmet", reason: v };
|
|
72
|
+
};
|
|
73
|
+
const decided = [...fr.entries()]
|
|
74
|
+
.sort(([a], [b]) => a.localeCompare(b))
|
|
75
|
+
.map(([, members]) => {
|
|
76
|
+
const states = members.sort().map((m) => ({ m, s: itemState(m) }));
|
|
77
|
+
if (states.some((x) => x.s.kind === "met"))
|
|
78
|
+
return { kind: "met" };
|
|
79
|
+
if (states.some((x) => x.s.kind === "partly"))
|
|
80
|
+
return { kind: "partly" };
|
|
81
|
+
if (states.some((x) => x.s.kind === "unknown"))
|
|
82
|
+
return { kind: "unknown" };
|
|
83
|
+
if (states.every((x) => x.s.kind === "na"))
|
|
84
|
+
return { kind: "na", item: states[0].m };
|
|
85
|
+
const unmet = states
|
|
86
|
+
.map((x) => ({ m: x.m, reason: x.s.kind === "unmet" ? x.s.reason : "source-absent" }))
|
|
87
|
+
.sort((a, b) => REASON_ORDER.indexOf(a.reason) - REASON_ORDER.indexOf(b.reason));
|
|
88
|
+
return { kind: "unmet", item: unmet[0].m, reason: unmet[0].reason };
|
|
89
|
+
});
|
|
90
|
+
let verdict;
|
|
91
|
+
let limitingItem = "";
|
|
92
|
+
let limitingReason = "";
|
|
93
|
+
const firstUnmet = decided.find((d) => d.kind === "unmet");
|
|
94
|
+
if (firstUnmet && firstUnmet.kind === "unmet") {
|
|
95
|
+
verdict = "unsupported";
|
|
96
|
+
limitingItem = firstUnmet.item;
|
|
97
|
+
limitingReason = firstUnmet.reason;
|
|
98
|
+
}
|
|
99
|
+
else if (decided.every((d) => d.kind === "na")) {
|
|
100
|
+
verdict = "not-applicable";
|
|
101
|
+
}
|
|
102
|
+
else if (decided.some((d) => d.kind === "na")) {
|
|
103
|
+
// n/a mixed with anything else: the integration does not have the item.
|
|
104
|
+
const na = decided.find((d) => d.kind === "na");
|
|
105
|
+
verdict = "unsupported";
|
|
106
|
+
limitingItem = na.item;
|
|
107
|
+
limitingReason = "source-absent";
|
|
108
|
+
}
|
|
109
|
+
else if (decided.some((d) => d.kind === "unknown")) {
|
|
110
|
+
verdict = "unknown";
|
|
111
|
+
}
|
|
112
|
+
else if (decided.some((d) => d.kind === "partly")) {
|
|
113
|
+
verdict = "partial";
|
|
114
|
+
}
|
|
115
|
+
else {
|
|
116
|
+
verdict = "supported";
|
|
117
|
+
}
|
|
118
|
+
byVerdict[verdict] = (byVerdict[verdict] ?? 0) + 1;
|
|
119
|
+
out.push({
|
|
120
|
+
id: `${fid}::${iid}`,
|
|
121
|
+
feature_id: fid,
|
|
122
|
+
integration_id: iid,
|
|
123
|
+
verdict,
|
|
124
|
+
limiting_item_id: limitingItem,
|
|
125
|
+
limiting_reason: limitingReason,
|
|
126
|
+
source_sdd_id: String(f["source_sdd_id"] ?? ""),
|
|
127
|
+
platform_sdd_id: p,
|
|
128
|
+
});
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
return {
|
|
132
|
+
rows: out.sort((a, b) => String(a["id"]).localeCompare(String(b["id"]))),
|
|
133
|
+
stats: {
|
|
134
|
+
featuresWithRequirements: reqs.size,
|
|
135
|
+
features: features.length,
|
|
136
|
+
integrations: integrations.length,
|
|
137
|
+
integrationsWithSupply: supplied.size,
|
|
138
|
+
byVerdict,
|
|
139
|
+
},
|
|
140
|
+
};
|
|
141
|
+
}
|
|
142
|
+
//# sourceMappingURL=data-item-coverage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"data-item-coverage.js","sourceRoot":"","sources":["../../../src/lib/catalogue/data-item-coverage.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"graph-projection.d.ts","sourceRoot":"","sources":["../../../src/lib/catalogue/graph-projection.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAC5D,OAAO,KAAK,EACV,eAAe,EAGhB,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"graph-projection.d.ts","sourceRoot":"","sources":["../../../src/lib/catalogue/graph-projection.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAC5D,OAAO,KAAK,EACV,eAAe,EAGhB,MAAM,oBAAoB,CAAC;AAkC5B,MAAM,MAAM,SAAS,GAAG,QAAQ,GAAG,WAAW,CAAC;AAE/C;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,SAAS,GAAG,MAAM,CAE5D;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;CACpC;AAED,MAAM,WAAW,eAAe;IAC9B,+DAA+D;IAC/D,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B,mEAAmE;IACnE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAOD;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,eAAe,EACvB,KAAK,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,GACjC,IAAI,CAUN;AAED,wBAAgB,YAAY,CAC1B,MAAM,EAAE,eAAe,EACvB,KAAK,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,EAClC,eAAe,EAAE,WAAW,CAAC,MAAM,EAAE,SAAS,YAAY,EAAE,CAAC,EAC7D,IAAI,EAAE,SAAS;AACf;;;;;;GAMG;AACH,SAAS,CAAC,EAAE,qBAAqB,GAChC,eAAe,CA2PjB"}
|
|
@@ -62,6 +62,9 @@ const THREE_FK_ENDPOINTS = {
|
|
|
62
62
|
// edge: "entity_glossary is entity-to-term". domain_id is the row's scope, a
|
|
63
63
|
// property; a row with no entity_id degrades to a property of its glossary term.
|
|
64
64
|
entity_glossary: ["entity_id", "glossary_item_id"],
|
|
65
|
+
// schema 3.18.0 (M-ADR 0216): coverage is feature→integration; limiting_item_id is the
|
|
66
|
+
// PROPERTY that says why an unsupported pair is unsupported, not an endpoint.
|
|
67
|
+
feature_integration_support: ["feature_id", "integration_id"],
|
|
65
68
|
};
|
|
66
69
|
/**
|
|
67
70
|
* The catalogues a tier reads when no directory is named. The aggregate tier's
|