@sdd-method/sdd-cli 0.84.0 → 0.86.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 -0
- package/dist/lib/catalogue/aggregate.d.ts.map +1 -1
- package/dist/lib/catalogue/aggregate.js +63 -7
- package/dist/lib/catalogue/aggregate.js.map +1 -1
- package/dist/lib/catalogue/build.js +2 -0
- package/dist/lib/catalogue/build.js.map +1 -1
- package/dist/lib/catalogue/builders/c4-external-systems.d.ts +2 -0
- package/dist/lib/catalogue/builders/c4-external-systems.d.ts.map +1 -1
- package/dist/lib/catalogue/builders/c4-external-systems.js +5 -1
- package/dist/lib/catalogue/builders/c4-external-systems.js.map +1 -1
- package/dist/lib/catalogue/builders/capabilities.d.ts.map +1 -1
- package/dist/lib/catalogue/builders/capabilities.js +16 -0
- package/dist/lib/catalogue/builders/capabilities.js.map +1 -1
- package/dist/lib/catalogue/builders/container-dependency.d.ts +3 -0
- package/dist/lib/catalogue/builders/container-dependency.d.ts.map +1 -1
- package/dist/lib/catalogue/builders/container-dependency.js +85 -8
- package/dist/lib/catalogue/builders/container-dependency.js.map +1 -1
- package/dist/lib/catalogue/builders/edge-label-merge.d.ts +4 -0
- package/dist/lib/catalogue/builders/edge-label-merge.d.ts.map +1 -0
- package/dist/lib/catalogue/builders/edge-label-merge.js +19 -0
- package/dist/lib/catalogue/builders/edge-label-merge.js.map +1 -0
- package/dist/lib/catalogue/builders/system-external-dependency.d.ts.map +1 -1
- package/dist/lib/catalogue/builders/system-external-dependency.js +8 -2
- package/dist/lib/catalogue/builders/system-external-dependency.js.map +1 -1
- package/dist/lib/catalogue/canonical-schema.yaml +9 -2
- package/package.json +1 -1
|
@@ -38,6 +38,7 @@ export async function buildC4ExternalSystems(inputs) {
|
|
|
38
38
|
const idByEntryId = new Map();
|
|
39
39
|
const nameByEntryId = new Map();
|
|
40
40
|
const technologyByEntryId = new Map();
|
|
41
|
+
const descriptionByEntryId = new Map();
|
|
41
42
|
const seen = new Map();
|
|
42
43
|
for (const { abs, scope } of files) {
|
|
43
44
|
const content = await readFile(abs, "utf-8");
|
|
@@ -52,6 +53,9 @@ export async function buildC4ExternalSystems(inputs) {
|
|
|
52
53
|
if (!technologyByEntryId.has(ext.entryId) && ext.technology !== "") {
|
|
53
54
|
technologyByEntryId.set(ext.entryId, ext.technology);
|
|
54
55
|
}
|
|
56
|
+
if (!descriptionByEntryId.has(ext.entryId) && ext.description !== "") {
|
|
57
|
+
descriptionByEntryId.set(ext.entryId, ext.description);
|
|
58
|
+
}
|
|
55
59
|
const existing = seen.get(id);
|
|
56
60
|
if (existing) {
|
|
57
61
|
// Same external referenced again — first row wins; flag attribute
|
|
@@ -84,7 +88,7 @@ export async function buildC4ExternalSystems(inputs) {
|
|
|
84
88
|
}
|
|
85
89
|
}
|
|
86
90
|
rows.sort((a, b) => String(a["id"]).localeCompare(String(b["id"])));
|
|
87
|
-
return { rows, idByEntryId, nameByEntryId, technologyByEntryId };
|
|
91
|
+
return { rows, idByEntryId, nameByEntryId, technologyByEntryId, descriptionByEntryId };
|
|
88
92
|
}
|
|
89
93
|
function parseExternals(content) {
|
|
90
94
|
const out = [];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"c4-external-systems.js","sourceRoot":"","sources":["../../../../src/lib/catalogue/builders/c4-external-systems.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAC5E,sEAAsE;AACtE,2EAA2E;AAC3E,wEAAwE;AACxE,2EAA2E;AAC3E,0CAA0C;AAC1C,EAAE;AACF,yEAAyE;AACzE,4DAA4D;AAC5D,2EAA2E;AAC3E,yEAAyE;AACzE,qEAAqE;AACrE,qDAAqD;AACrD,EAAE;AACF,sEAAsE;AACtE,mEAAmE;AAEnE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EACL,gBAAgB,EAChB,sBAAsB,EACtB,mBAAmB,GACpB,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"c4-external-systems.js","sourceRoot":"","sources":["../../../../src/lib/catalogue/builders/c4-external-systems.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"capabilities.d.ts","sourceRoot":"","sources":["../../../../src/lib/catalogue/builders/capabilities.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAGtE,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAC;IAC/B,QAAQ,CAAC,SAAS,EAAE,SAAS,oBAAoB,EAAE,CAAC;IACpD,QAAQ,CAAC,cAAc,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;CAC9C;AAID,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,uBAAuB,GAC9B,OAAO,CAAC,YAAY,EAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"capabilities.d.ts","sourceRoot":"","sources":["../../../../src/lib/catalogue/builders/capabilities.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAGtE,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAC;IAC/B,QAAQ,CAAC,SAAS,EAAE,SAAS,oBAAoB,EAAE,CAAC;IACpD,QAAQ,CAAC,cAAc,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;CAC9C;AAID,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,uBAAuB,GAC9B,OAAO,CAAC,YAAY,EAAE,CAAC,CAgIzB"}
|
|
@@ -42,6 +42,13 @@ export async function buildCapabilities(inputs) {
|
|
|
42
42
|
if (specRel) {
|
|
43
43
|
usedSpecPaths.add(specRel);
|
|
44
44
|
const specAbs = join(inputs.sddPath, specRel);
|
|
45
|
+
// F22: an emitted spec_path must exist — a dangling path silently
|
|
46
|
+
// produced an empty name/description while the column pointed at
|
|
47
|
+
// nothing. The row still emits (the capability is declared); the
|
|
48
|
+
// dangle is loud.
|
|
49
|
+
if (!(await fileExists(specAbs))) {
|
|
50
|
+
inputs.findings.add("coverage", `${m.relPath}: capability "${cap.id}" declares capability_spec "${specRel}" which does not exist — name/description left empty, spec_path emitted dangling (F22)`);
|
|
51
|
+
}
|
|
45
52
|
const headingName = await readSpecH1Name(specAbs);
|
|
46
53
|
if (headingName !== "") {
|
|
47
54
|
name = headingName;
|
|
@@ -234,4 +241,13 @@ function titleCase(slug) {
|
|
|
234
241
|
.map((p) => (p.length === 0 ? p : p[0].toUpperCase() + p.slice(1)))
|
|
235
242
|
.join(" ");
|
|
236
243
|
}
|
|
244
|
+
async function fileExists(path) {
|
|
245
|
+
try {
|
|
246
|
+
const { stat } = await import("node:fs/promises");
|
|
247
|
+
return (await stat(path)).isFile();
|
|
248
|
+
}
|
|
249
|
+
catch {
|
|
250
|
+
return false;
|
|
251
|
+
}
|
|
252
|
+
}
|
|
237
253
|
//# sourceMappingURL=capabilities.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"capabilities.js","sourceRoot":"","sources":["../../../../src/lib/catalogue/builders/capabilities.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"capabilities.js","sourceRoot":"","sources":["../../../../src/lib/catalogue/builders/capabilities.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,6 +7,8 @@ export interface ContainerDependencyInputs {
|
|
|
7
7
|
readonly findings: FindingsLog;
|
|
8
8
|
/** Diagram entry-id → local container row id (from the c4-containers builder). */
|
|
9
9
|
readonly containerIdByEntryId: ReadonlyMap<string, string>;
|
|
10
|
+
/** Diagram entry-id → external row id — for F26 classification only; container resolution still wins (F20). */
|
|
11
|
+
readonly externalIdByEntryId?: ReadonlyMap<string, string>;
|
|
10
12
|
}
|
|
11
13
|
export declare function buildContainerDependency(inputs: ContainerDependencyInputs): Promise<CatalogueRow[]>;
|
|
12
14
|
/**
|
|
@@ -35,5 +37,6 @@ export declare function reportEntryIdReferentCollisions(inputs: {
|
|
|
35
37
|
readonly containerTechByEntryId: ReadonlyMap<string, string>;
|
|
36
38
|
readonly externalNameByEntryId: ReadonlyMap<string, string>;
|
|
37
39
|
readonly externalTechByEntryId: ReadonlyMap<string, string>;
|
|
40
|
+
readonly externalDescByEntryId: ReadonlyMap<string, string>;
|
|
38
41
|
}): void;
|
|
39
42
|
//# sourceMappingURL=container-dependency.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"container-dependency.d.ts","sourceRoot":"","sources":["../../../../src/lib/catalogue/builders/container-dependency.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"container-dependency.d.ts","sourceRoot":"","sources":["../../../../src/lib/catalogue/builders/container-dependency.ts"],"names":[],"mappings":"AAuBA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAKzD,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAC;IAC/B,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAC;IAC/B,kFAAkF;IAClF,QAAQ,CAAC,oBAAoB,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC3D,+GAA+G;IAC/G,QAAQ,CAAC,mBAAmB,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC5D;AAED,wBAAsB,wBAAwB,CAC5C,MAAM,EAAE,yBAAyB,GAChC,OAAO,CAAC,YAAY,EAAE,CAAC,CA2FzB;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,+BAA+B,CAAC,MAAM,EAAE;IACtD,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAC;IAC/B,QAAQ,CAAC,sBAAsB,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7D,QAAQ,CAAC,sBAAsB,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7D,QAAQ,CAAC,qBAAqB,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC5D,QAAQ,CAAC,qBAAqB,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC5D,QAAQ,CAAC,qBAAqB,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC7D,GAAG,IAAI,CAoDP"}
|
|
@@ -18,6 +18,7 @@
|
|
|
18
18
|
// source; dedup is by id, member rows first.
|
|
19
19
|
import { readFile } from "node:fs/promises";
|
|
20
20
|
import { collectC4DiagramFiles } from "./c4-external-systems.js";
|
|
21
|
+
import { mergeEdgeLabel } from "./edge-label-merge.js";
|
|
21
22
|
import { techContradicts } from "./c4-containers.js";
|
|
22
23
|
const REL_RE = /^(?:Bi)?Rel(?:_[A-Za-z]+)?\s*\(\s*(\w+)\s*,\s*(\w+)\s*(?:,\s*"([^"]*)")?/;
|
|
23
24
|
export async function buildContainerDependency(inputs) {
|
|
@@ -27,10 +28,20 @@ export async function buildContainerDependency(inputs) {
|
|
|
27
28
|
const files = await collectC4DiagramFiles(inputs.sddPath);
|
|
28
29
|
const rows = [];
|
|
29
30
|
const seen = new Set();
|
|
31
|
+
const rowsById = new Map();
|
|
32
|
+
const PERSON_DECL_RE = /Person(?:_Ext)?\s*\(\s*(\w+)\s*,/;
|
|
30
33
|
for (const { abs, syndicated } of files) {
|
|
31
34
|
if (syndicated && !isRoot)
|
|
32
35
|
continue;
|
|
33
36
|
const content = await readFile(abs, "utf-8");
|
|
37
|
+
// F26: per-file Person entries — the endpoint class that has no edge
|
|
38
|
+
// catalogue to a container.
|
|
39
|
+
const personEntries = new Set();
|
|
40
|
+
for (const raw of content.split(/\r?\n/)) {
|
|
41
|
+
const pm = PERSON_DECL_RE.exec(raw.trim());
|
|
42
|
+
if (pm)
|
|
43
|
+
personEntries.add(pm[1] ?? "");
|
|
44
|
+
}
|
|
34
45
|
for (const raw of content.split(/\r?\n/)) {
|
|
35
46
|
const m = REL_RE.exec(raw.trim());
|
|
36
47
|
if (!m)
|
|
@@ -48,21 +59,50 @@ export async function buildContainerDependency(inputs) {
|
|
|
48
59
|
// by id, so nothing is double-represented.
|
|
49
60
|
const from = inputs.containerIdByEntryId.get(fromEntry ?? "");
|
|
50
61
|
const to = inputs.containerIdByEntryId.get(toEntry ?? "");
|
|
51
|
-
if (from === undefined || to === undefined)
|
|
52
|
-
|
|
62
|
+
if (from === undefined || to === undefined) {
|
|
63
|
+
// F26: a Rel the builder RESOLVES but cannot catalogue must say so
|
|
64
|
+
// — following F23's rename prescription turned exactly this
|
|
65
|
+
// silence into a two-edge delete. Classification is
|
|
66
|
+
// container-first (F20), then external, then Person (file-local);
|
|
67
|
+
// anything unknown stays silent (no confident classification, no
|
|
68
|
+
// guess). Pairs with a home elsewhere (one-external →
|
|
69
|
+
// system_external_dependency; person→system → persona_c4system)
|
|
70
|
+
// are not reported here.
|
|
71
|
+
const classify = (entry, resolved) => resolved !== undefined
|
|
72
|
+
? "container"
|
|
73
|
+
: inputs.externalIdByEntryId?.has(entry)
|
|
74
|
+
? "external"
|
|
75
|
+
: personEntries.has(entry)
|
|
76
|
+
? "person"
|
|
77
|
+
: "unknown";
|
|
78
|
+
const fromKind = classify(fromEntry ?? "", from);
|
|
79
|
+
const toKind = classify(toEntry ?? "", to);
|
|
80
|
+
const pair = `${fromKind}→${toKind}`;
|
|
81
|
+
if (pair === "external→external" ||
|
|
82
|
+
pair === "person→container" ||
|
|
83
|
+
pair === "container→person") {
|
|
84
|
+
inputs.findings.add("convention", `container_dependency: Rel(${fromEntry}, ${toEntry}${label ? `, "${label}"` : ""}) resolves as ` +
|
|
85
|
+
`${pair} — no catalogue holds that pair; the relationship is recorded nowhere (F26)`);
|
|
86
|
+
}
|
|
87
|
+
continue;
|
|
88
|
+
}
|
|
53
89
|
if (from === to)
|
|
54
90
|
continue;
|
|
55
91
|
const id = `${from}__${to}`;
|
|
56
|
-
|
|
92
|
+
const existing = rowsById.get(id);
|
|
93
|
+
if (existing !== undefined) {
|
|
94
|
+
mergeEdgeLabel(existing, label ?? "", "container_dependency", inputs.findings);
|
|
57
95
|
continue;
|
|
96
|
+
}
|
|
58
97
|
seen.add(id);
|
|
59
|
-
|
|
98
|
+
rowsById.set(id, {
|
|
60
99
|
id,
|
|
61
100
|
from_container_id: from,
|
|
62
101
|
to_container_id: to,
|
|
63
102
|
interaction: label ?? "",
|
|
64
103
|
source_sdd_id: inputs.manifest.sddId,
|
|
65
104
|
});
|
|
105
|
+
rows.push(rowsById.get(id));
|
|
66
106
|
}
|
|
67
107
|
}
|
|
68
108
|
rows.sort((a, b) => String(a["id"]).localeCompare(String(b["id"])));
|
|
@@ -89,17 +129,54 @@ export async function buildContainerDependency(inputs) {
|
|
|
89
129
|
* is not corroboration, and it is not contradiction either.
|
|
90
130
|
*/
|
|
91
131
|
export function reportEntryIdReferentCollisions(inputs) {
|
|
132
|
+
const techTokens = (s) => new Set(s
|
|
133
|
+
.replace(/([a-z0-9])([A-Z])/g, "$1 $2")
|
|
134
|
+
.toLowerCase()
|
|
135
|
+
.split(/[^a-z0-9.+#]+/)
|
|
136
|
+
.filter((t) => t !== ""));
|
|
92
137
|
for (const [entryId, containerName] of inputs.containerNameByEntryId) {
|
|
93
138
|
const externalName = inputs.externalNameByEntryId.get(entryId);
|
|
94
139
|
if (externalName === undefined)
|
|
95
140
|
continue;
|
|
96
141
|
const containerTech = inputs.containerTechByEntryId.get(entryId) ?? "";
|
|
97
142
|
const externalTech = inputs.externalTechByEntryId.get(entryId) ?? "";
|
|
98
|
-
if (
|
|
143
|
+
if (externalTech !== "" && techContradicts(containerTech, externalTech)) {
|
|
144
|
+
inputs.findings.add("convention", `c4 diagrams: entry-id "${entryId}" is declared Container ("${containerName}", "${containerTech}") and ` +
|
|
145
|
+
`System_Ext ("${externalName}", "${externalTech}") with contradictory technologies — ` +
|
|
146
|
+
`different referents wearing one id; the container interpretation wins for Rel edges — rename one entry-id to split them (F21)`);
|
|
99
147
|
continue;
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
148
|
+
}
|
|
149
|
+
if (externalTech !== "")
|
|
150
|
+
continue; // corroborating tech — same referent, silent
|
|
151
|
+
// F23: System_Ext carries no technology argument, so the primary
|
|
152
|
+
// dual-use case has NO independent evidence channel — measured: 0 of
|
|
153
|
+
// 109 external rows carry a technology. Weak corroboration is
|
|
154
|
+
// accepted (the external's description mentioning a container-tech
|
|
155
|
+
// token); otherwise the guard says what it cannot do, loudly. A
|
|
156
|
+
// dual-use entry-id buys nothing post-F20 (the container always wins
|
|
157
|
+
// for Rel edges) and risks a silent different-referent bind — the
|
|
158
|
+
// retirement is a rename, cheap because entry-ids are diagram-local
|
|
159
|
+
// and row identity derives from the display name.
|
|
160
|
+
const externalDesc = inputs.externalDescByEntryId.get(entryId) ?? "";
|
|
161
|
+
if (containerTech !== "" && externalDesc !== "") {
|
|
162
|
+
const ct = techTokens(containerTech);
|
|
163
|
+
const dt = techTokens(externalDesc);
|
|
164
|
+
let overlap = false;
|
|
165
|
+
for (const t of ct)
|
|
166
|
+
if (dt.has(t)) {
|
|
167
|
+
overlap = true;
|
|
168
|
+
break;
|
|
169
|
+
}
|
|
170
|
+
if (overlap)
|
|
171
|
+
continue; // description mentions the container's tech — weak corroboration
|
|
172
|
+
}
|
|
173
|
+
inputs.findings.add("convention", `c4 diagrams: entry-id "${entryId}" is declared Container ("${containerName}") and System_Ext ` +
|
|
174
|
+
`("${externalName}") with no independent evidence to adjudicate referent identity — System_Ext ` +
|
|
175
|
+
`carries no technology field; cannot corroborate, cannot contradict. Rename one entry-id to split ` +
|
|
176
|
+
`the namespaces — but check first whether the dual use is load-bearing: if Rel edges exist only via ` +
|
|
177
|
+
`the Container reading, a rename orphans them (they will surface as F26 findings); in that case ` +
|
|
178
|
+
`annotate the System_Ext description with the technology instead, so weak corroboration can silence ` +
|
|
179
|
+
`this honestly (F23/F26)`);
|
|
103
180
|
}
|
|
104
181
|
}
|
|
105
182
|
//# sourceMappingURL=container-dependency.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"container-dependency.js","sourceRoot":"","sources":["../../../../src/lib/catalogue/builders/container-dependency.ts"],"names":[],"mappings":"AAAA,sEAAsE;AACtE,6BAA6B;AAC7B,EAAE;AACF,gEAAgE;AAChE,+DAA+D;AAC/D,0EAA0E;AAC1E,yEAAyE;AACzE,wEAAwE;AACxE,qEAAqE;AACrE,mDAAmD;AACnD,EAAE;AACF,wEAAwE;AACxE,wEAAwE;AACxE,qEAAqE;AACrE,qEAAqE;AACrE,yEAAyE;AACzE,wEAAwE;AACxE,6CAA6C;AAE7C,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAKrD,MAAM,MAAM,GACV,0EAA0E,CAAC;
|
|
1
|
+
{"version":3,"file":"container-dependency.js","sourceRoot":"","sources":["../../../../src/lib/catalogue/builders/container-dependency.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { CatalogueRow } from "../csv-writer.js";
|
|
2
|
+
import type { FindingsLog } from "../findings.js";
|
|
3
|
+
export declare function mergeEdgeLabel(row: CatalogueRow, label: string, catalogue: string, findings: FindingsLog): void;
|
|
4
|
+
//# sourceMappingURL=edge-label-merge.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"edge-label-merge.d.ts","sourceRoot":"","sources":["../../../../src/lib/catalogue/builders/edge-label-merge.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAElD,wBAAgB,cAAc,CAC5B,GAAG,EAAE,YAAY,EACjB,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,WAAW,GACpB,IAAI,CAYN"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
// F25 — one edge per node pair is the metamodel's rule (schema-stated since
|
|
2
|
+
// 2.30.0) and it stands. The defect was the SILENCE: distinct parallel
|
|
3
|
+
// labels merged first-seen-wins at member and aggregate tier, discarding
|
|
4
|
+
// authored facts without a word (measured: 20 labels already lost before
|
|
5
|
+
// the mechanism that exposed it existed). The merge now concatenates every
|
|
6
|
+
// distinct label — nothing dropped — and says so.
|
|
7
|
+
export function mergeEdgeLabel(row, label, catalogue, findings) {
|
|
8
|
+
if (label === "")
|
|
9
|
+
return;
|
|
10
|
+
const existing = String(row["interaction"] ?? "");
|
|
11
|
+
const parts = existing === "" ? [] : existing.split("; ");
|
|
12
|
+
if (parts.includes(label))
|
|
13
|
+
return;
|
|
14
|
+
row["interaction"] =
|
|
15
|
+
existing === "" ? label : `${existing}; ${label}`;
|
|
16
|
+
findings.add("convention", `${catalogue}: edge "${String(row["id"])}" is declared with multiple distinct labels — ` +
|
|
17
|
+
`one edge per node pair (schema rule); labels concatenated, nothing dropped (F25)`);
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=edge-label-merge.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"edge-label-merge.js","sourceRoot":"","sources":["../../../../src/lib/catalogue/builders/edge-label-merge.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAC5E,uEAAuE;AACvE,yEAAyE;AACzE,yEAAyE;AACzE,2EAA2E;AAC3E,kDAAkD;AAKlD,MAAM,UAAU,cAAc,CAC5B,GAAiB,EACjB,KAAa,EACb,SAAiB,EACjB,QAAqB;IAErB,IAAI,KAAK,KAAK,EAAE;QAAE,OAAO;IACzB,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC,CAAC;IAClD,MAAM,KAAK,GAAG,QAAQ,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC1D,IAAI,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO;IACjC,GAA+B,CAAC,aAAa,CAAC;QAC7C,QAAQ,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,QAAQ,KAAK,KAAK,EAAE,CAAC;IACpD,QAAQ,CAAC,GAAG,CACV,YAAY,EACZ,GAAG,SAAS,WAAW,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,gDAAgD;QACtF,kFAAkF,CACrF,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"system-external-dependency.d.ts","sourceRoot":"","sources":["../../../../src/lib/catalogue/builders/system-external-dependency.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"system-external-dependency.d.ts","sourceRoot":"","sources":["../../../../src/lib/catalogue/builders/system-external-dependency.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEzD,MAAM,WAAW,8BAA8B;IAC7C,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAC;IAC/B,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAC;IAC/B,8EAA8E;IAC9E,QAAQ,CAAC,cAAc,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAC7C,mFAAmF;IACnF,QAAQ,CAAC,mBAAmB,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1D,sEAAsE;IACtE,QAAQ,CAAC,oBAAoB,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC7D;AAYD,wBAAsB,6BAA6B,CACjD,MAAM,EAAE,8BAA8B,GACrC,OAAO,CAAC,YAAY,EAAE,CAAC,CA2DzB"}
|
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
// §4.2 keeps the edge system-scoped.
|
|
11
11
|
import { readFile } from "node:fs/promises";
|
|
12
12
|
import { collectC4DiagramFiles } from "./c4-external-systems.js";
|
|
13
|
+
import { mergeEdgeLabel } from "./edge-label-merge.js";
|
|
13
14
|
// Any C4-PlantUML relationship macro: Rel, Rel_U/D/L/R, BiRel, Rel_Back, etc.
|
|
14
15
|
// Capture the first two positional args (from, to) and an optional label.
|
|
15
16
|
const REL_RE = /^(?:Bi)?Rel(?:_[A-Za-z]+)?\s*\(\s*(\w+)\s*,\s*(\w+)\s*(?:,\s*"([^"]*)")?/;
|
|
@@ -28,6 +29,7 @@ export async function buildSystemExternalDependency(inputs) {
|
|
|
28
29
|
const files = await collectC4DiagramFiles(inputs.sddPath);
|
|
29
30
|
const rows = [];
|
|
30
31
|
const seen = new Set();
|
|
32
|
+
const rowsById = new Map();
|
|
31
33
|
// F14: a Rel in the syndicated platform L1 is a statement about the
|
|
32
34
|
// PLATFORM. For any other SDD those lines minted the platform's
|
|
33
35
|
// dependencies (and even its persona interactions) as the sibling's own
|
|
@@ -54,16 +56,20 @@ export async function buildSystemExternalDependency(inputs) {
|
|
|
54
56
|
const localEntry = fromExt === undefined ? rel.from : rel.to;
|
|
55
57
|
const fromContainerId = inputs.containerIdByEntryId?.get(localEntry) ?? "";
|
|
56
58
|
const id = `${systemId}__${externalSystemId}`;
|
|
57
|
-
|
|
59
|
+
const existing = rowsById.get(id);
|
|
60
|
+
if (existing !== undefined) {
|
|
61
|
+
mergeEdgeLabel(existing, rel.label, "system_external_dependency", inputs.findings);
|
|
58
62
|
continue;
|
|
63
|
+
}
|
|
59
64
|
seen.add(id);
|
|
60
|
-
|
|
65
|
+
rowsById.set(id, {
|
|
61
66
|
id,
|
|
62
67
|
c4_system_id: systemId,
|
|
63
68
|
external_system_id: externalSystemId,
|
|
64
69
|
interaction: rel.label,
|
|
65
70
|
from_container_id: fromContainerId,
|
|
66
71
|
});
|
|
72
|
+
rows.push(rowsById.get(id));
|
|
67
73
|
}
|
|
68
74
|
}
|
|
69
75
|
rows.sort((a, b) => String(a["id"]).localeCompare(String(b["id"])));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"system-external-dependency.js","sourceRoot":"","sources":["../../../../src/lib/catalogue/builders/system-external-dependency.ts"],"names":[],"mappings":"AAAA,8DAA8D;AAC9D,yEAAyE;AACzE,mEAAmE;AACnE,EAAE;AACF,6EAA6E;AAC7E,2EAA2E;AAC3E,0EAA0E;AAC1E,6EAA6E;AAC7E,0EAA0E;AAC1E,qCAAqC;AAErC,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE5C,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"system-external-dependency.js","sourceRoot":"","sources":["../../../../src/lib/catalogue/builders/system-external-dependency.ts"],"names":[],"mappings":"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"}
|
|
@@ -45,9 +45,16 @@
|
|
|
45
45
|
# Builder contract: see docs/method/methods/catalogue-builder-specification.md.
|
|
46
46
|
# Category taxonomy: see docs/method/methods/product-category-taxonomy.md.
|
|
47
47
|
|
|
48
|
-
schema_version: "2.33.
|
|
48
|
+
schema_version: "2.33.2"
|
|
49
49
|
schema_owner: "sdd-method"
|
|
50
50
|
schema_status: "canonical"
|
|
51
|
+
# Bump rationale (2.33.2 — description patch, per adopter finding F25,
|
|
52
|
+
# 2026-07-10): one edge per node pair remains the rule for all three
|
|
53
|
+
# dependency edge catalogues, but the merge now KEEPS every distinct
|
|
54
|
+
# authored label — `interaction` may hold multiple "; "-joined labels —
|
|
55
|
+
# and each merge is a convention finding. The silence was the defect:
|
|
56
|
+
# distinct parallel labels had merged first-seen since 2.30.0, discarding
|
|
57
|
+
# authored facts at member and aggregate tier without a word.
|
|
51
58
|
# Bump rationale (2.33.0 — additive minor, per adopter finding F17,
|
|
52
59
|
# 2026-07-10): adds the `container_dependency` edge catalogue and a
|
|
53
60
|
# nullable member-resolved `from_container_id` on
|
|
@@ -1090,7 +1097,7 @@ catalogues:
|
|
|
1090
1097
|
- { name: id, type: string, nullable: false, description: "{c4_system_id}__{external_system_id}." }
|
|
1091
1098
|
- { name: c4_system_id, type: string, nullable: false }
|
|
1092
1099
|
- { name: external_system_id, type: string, nullable: false }
|
|
1093
|
-
- { name: interaction, type: string, nullable: true, description: "Optional integration label/protocol from the Rel(...) line." }
|
|
1100
|
+
- { name: interaction, type: string, nullable: true, description: "Optional integration label/protocol from the Rel(...) line. May hold multiple "; "-joined labels when one pair is declared with distinct labels (F25, 2.33.2)." }
|
|
1094
1101
|
- { name: from_container_id, type: string, nullable: true, description: "The Rel's non-external endpoint resolved to a local container at member tier, when it is one (F17, 2.33.0) — the datum that lets adjudication rewrite this edge onto container_dependency instead of destroying it. Empty when the endpoint is the system itself or unresolvable." }
|
|
1095
1102
|
|
|
1096
1103
|
container_dependency:
|