@sdd-method/sdd-cli 0.85.0 → 0.87.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.map +1 -1
- package/dist/lib/catalogue/aggregate.js +28 -3
- 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 +12 -1
- package/dist/lib/catalogue/build.js.map +1 -1
- package/dist/lib/catalogue/builders/container-dependency.d.ts +2 -0
- package/dist/lib/catalogue/builders/container-dependency.d.ts.map +1 -1
- package/dist/lib/catalogue/builders/container-dependency.js +49 -5
- 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/index.d.ts +1 -0
- package/dist/lib/catalogue/builders/index.d.ts.map +1 -1
- package/dist/lib/catalogue/builders/index.js +1 -0
- package/dist/lib/catalogue/builders/index.js.map +1 -1
- package/dist/lib/catalogue/builders/persona-container.d.ts +13 -0
- package/dist/lib/catalogue/builders/persona-container.d.ts.map +1 -0
- package/dist/lib/catalogue/builders/persona-container.js +95 -0
- package/dist/lib/catalogue/builders/persona-container.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 +37 -2
- package/package.json +1 -1
|
@@ -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,51 @@ 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
|
+
// person↔container pairs are catalogued by persona_container as of
|
|
82
|
+
// schema 2.34.0 (or reported there when the persona doesn't
|
|
83
|
+
// resolve) — only the pairs with NO home remain findings here.
|
|
84
|
+
if (pair === "external→external") {
|
|
85
|
+
inputs.findings.add("convention", `container_dependency: Rel(${fromEntry}, ${toEntry}${label ? `, "${label}"` : ""}) resolves as ` +
|
|
86
|
+
`${pair} — no catalogue holds that pair; the relationship is recorded nowhere (F26)`);
|
|
87
|
+
}
|
|
88
|
+
continue;
|
|
89
|
+
}
|
|
53
90
|
if (from === to)
|
|
54
91
|
continue;
|
|
55
92
|
const id = `${from}__${to}`;
|
|
56
|
-
|
|
93
|
+
const existing = rowsById.get(id);
|
|
94
|
+
if (existing !== undefined) {
|
|
95
|
+
mergeEdgeLabel(existing, label ?? "", "container_dependency", inputs.findings);
|
|
57
96
|
continue;
|
|
97
|
+
}
|
|
58
98
|
seen.add(id);
|
|
59
|
-
|
|
99
|
+
rowsById.set(id, {
|
|
60
100
|
id,
|
|
61
101
|
from_container_id: from,
|
|
62
102
|
to_container_id: to,
|
|
63
103
|
interaction: label ?? "",
|
|
64
104
|
source_sdd_id: inputs.manifest.sddId,
|
|
65
105
|
});
|
|
106
|
+
rows.push(rowsById.get(id));
|
|
66
107
|
}
|
|
67
108
|
}
|
|
68
109
|
rows.sort((a, b) => String(a["id"]).localeCompare(String(b["id"])));
|
|
@@ -133,7 +174,10 @@ export function reportEntryIdReferentCollisions(inputs) {
|
|
|
133
174
|
inputs.findings.add("convention", `c4 diagrams: entry-id "${entryId}" is declared Container ("${containerName}") and System_Ext ` +
|
|
134
175
|
`("${externalName}") with no independent evidence to adjudicate referent identity — System_Ext ` +
|
|
135
176
|
`carries no technology field; cannot corroborate, cannot contradict. Rename one entry-id to split ` +
|
|
136
|
-
`the namespaces
|
|
177
|
+
`the namespaces — but check first whether the dual use is load-bearing: if Rel edges exist only via ` +
|
|
178
|
+
`the Container reading, a rename orphans them (they will surface as F26 findings); in that case ` +
|
|
179
|
+
`annotate the System_Ext description with the technology instead, so weak corroboration can silence ` +
|
|
180
|
+
`this honestly (F23/F26)`);
|
|
137
181
|
}
|
|
138
182
|
}
|
|
139
183
|
//# 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"}
|
|
@@ -32,6 +32,7 @@ export { buildRepoEdges } from "./repo-edges.js";
|
|
|
32
32
|
export { buildRepoCapabilityExemption } from "./repo-capability-exemption.js";
|
|
33
33
|
export { buildExternalSystemExemption } from "./external-system-exemption.js";
|
|
34
34
|
export { buildContainerDependency, reportEntryIdReferentCollisions } from "./container-dependency.js";
|
|
35
|
+
export { buildPersonaContainer } from "./persona-container.js";
|
|
35
36
|
export type { RepoCapabilityExemptionInputs } from "./repo-capability-exemption.js";
|
|
36
37
|
export type { RepoEdgesInputs, RepoEdgesResult, } from "./repo-edges.js";
|
|
37
38
|
export { buildEvents } from "./events.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/lib/catalogue/builders/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/lib/catalogue/builders/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -21,6 +21,7 @@ export { buildRepoEdges } from "./repo-edges.js";
|
|
|
21
21
|
export { buildRepoCapabilityExemption } from "./repo-capability-exemption.js";
|
|
22
22
|
export { buildExternalSystemExemption } from "./external-system-exemption.js";
|
|
23
23
|
export { buildContainerDependency, reportEntryIdReferentCollisions } from "./container-dependency.js";
|
|
24
|
+
export { buildPersonaContainer } from "./persona-container.js";
|
|
24
25
|
export { buildEvents } from "./events.js";
|
|
25
26
|
export { buildServiceEvent, buildCapabilityEvent, buildFeatureEvent, } from "./event-edges.js";
|
|
26
27
|
export { buildServiceContract } from "./service-contract.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/lib/catalogue/builders/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAE5C,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAE9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAMtD,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAE9C,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAEtC,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAKzD,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAK9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAEzD,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAK/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAK3D,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAKhD,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,4BAA4B,EAAE,MAAM,gCAAgC,CAAC;AAC9E,OAAO,EAAE,4BAA4B,EAAE,MAAM,gCAAgC,CAAC;AAC9E,OAAO,EAAE,wBAAwB,EAAE,+BAA+B,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/lib/catalogue/builders/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { CatalogueRow } from "../csv-writer.js";
|
|
2
|
+
import type { FindingsLog } from "../findings.js";
|
|
3
|
+
import type { SddManifest } from "../manifest-loader.js";
|
|
4
|
+
export interface PersonaContainerInputs {
|
|
5
|
+
readonly sddPath: string;
|
|
6
|
+
readonly manifest: SddManifest;
|
|
7
|
+
readonly findings: FindingsLog;
|
|
8
|
+
readonly containerIdByEntryId: ReadonlyMap<string, string>;
|
|
9
|
+
readonly personaIdByName: ReadonlyMap<string, string>;
|
|
10
|
+
readonly personaIdBySlug: ReadonlyMap<string, string>;
|
|
11
|
+
}
|
|
12
|
+
export declare function buildPersonaContainer(inputs: PersonaContainerInputs): Promise<CatalogueRow[]>;
|
|
13
|
+
//# sourceMappingURL=persona-container.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"persona-container.d.ts","sourceRoot":"","sources":["../../../../src/lib/catalogue/builders/persona-container.ts"],"names":[],"mappings":"AAkBA,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;AAMzD,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAC;IAC/B,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAC;IAC/B,QAAQ,CAAC,oBAAoB,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC3D,QAAQ,CAAC,eAAe,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtD,QAAQ,CAAC,eAAe,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACvD;AAED,wBAAsB,qBAAqB,CACzC,MAAM,EAAE,sBAAsB,GAC7B,OAAO,CAAC,YAAY,EAAE,CAAC,CAqEzB"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
// persona_container edge builder — M-ADR 0189 F26 §3 (schema 2.34.0).
|
|
2
|
+
//
|
|
3
|
+
// The L2-granularity companion to persona_c4system: a Rel(...) between a
|
|
4
|
+
// Person and a container had no catalogue and, until F26, no finding —
|
|
5
|
+
// eleven of one estate's L2s and the bulk of another's 81 unroutable Rels
|
|
6
|
+
// were exactly this class. F26 made the silence loud; this gives the
|
|
7
|
+
// loudness a destination.
|
|
8
|
+
//
|
|
9
|
+
// Person entries are file-local (a Person declared in the same diagram as
|
|
10
|
+
// the Rel); containers resolve SDD-wide (F20's rule). Either Rel direction
|
|
11
|
+
// normalises to persona→container. A Person that matches no persona row is
|
|
12
|
+
// a coverage finding, never a silent skip (the persona_c4system precedent).
|
|
13
|
+
// The syndicated platform L1 is skipped for non-root SDDs (F14); parallel
|
|
14
|
+
// labels concatenate loudly (F25).
|
|
15
|
+
import { readFile } from "node:fs/promises";
|
|
16
|
+
import { collectC4DiagramFiles } from "./c4-external-systems.js";
|
|
17
|
+
import { mergeEdgeLabel } from "./edge-label-merge.js";
|
|
18
|
+
const REL_RE = /^(?:Bi)?Rel(?:_[A-Za-z]+)?\s*\(\s*(\w+)\s*,\s*(\w+)\s*(?:,\s*"([^"]*)")?/;
|
|
19
|
+
const PERSON_DECL_RE = /Person(?:_Ext)?\s*\(\s*(\w+)\s*,\s*"([^"]+)"/;
|
|
20
|
+
export async function buildPersonaContainer(inputs) {
|
|
21
|
+
if (inputs.containerIdByEntryId.size === 0)
|
|
22
|
+
return [];
|
|
23
|
+
const isRoot = inputs.manifest.category === "platform-root";
|
|
24
|
+
const files = await collectC4DiagramFiles(inputs.sddPath);
|
|
25
|
+
const rows = [];
|
|
26
|
+
const rowsById = new Map();
|
|
27
|
+
for (const { abs, syndicated } of files) {
|
|
28
|
+
if (syndicated && !isRoot)
|
|
29
|
+
continue;
|
|
30
|
+
const content = await readFile(abs, "utf-8");
|
|
31
|
+
const personNameByEntry = new Map();
|
|
32
|
+
for (const raw of content.split(/\r?\n/)) {
|
|
33
|
+
const pm = PERSON_DECL_RE.exec(raw.trim());
|
|
34
|
+
if (pm && !personNameByEntry.has(pm[1] ?? "")) {
|
|
35
|
+
personNameByEntry.set(pm[1] ?? "", pm[2] ?? "");
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
if (personNameByEntry.size === 0)
|
|
39
|
+
continue;
|
|
40
|
+
for (const raw of content.split(/\r?\n/)) {
|
|
41
|
+
const m = REL_RE.exec(raw.trim());
|
|
42
|
+
if (!m)
|
|
43
|
+
continue;
|
|
44
|
+
const [, fromEntry, toEntry, label] = m;
|
|
45
|
+
// Either direction: normalise to persona→container. Container
|
|
46
|
+
// resolution wins over the person map on a dual-use id (F20).
|
|
47
|
+
let personEntry;
|
|
48
|
+
let containerId;
|
|
49
|
+
const fromContainer = inputs.containerIdByEntryId.get(fromEntry ?? "");
|
|
50
|
+
const toContainer = inputs.containerIdByEntryId.get(toEntry ?? "");
|
|
51
|
+
if (fromContainer === undefined && personNameByEntry.has(fromEntry ?? "") && toContainer !== undefined) {
|
|
52
|
+
personEntry = fromEntry;
|
|
53
|
+
containerId = toContainer;
|
|
54
|
+
}
|
|
55
|
+
else if (toContainer === undefined && personNameByEntry.has(toEntry ?? "") && fromContainer !== undefined) {
|
|
56
|
+
personEntry = toEntry;
|
|
57
|
+
containerId = fromContainer;
|
|
58
|
+
}
|
|
59
|
+
else {
|
|
60
|
+
continue;
|
|
61
|
+
}
|
|
62
|
+
const personName = personNameByEntry.get(personEntry ?? "") ?? "";
|
|
63
|
+
const personaId = inputs.personaIdByName.get(personName.toLowerCase()) ??
|
|
64
|
+
inputs.personaIdBySlug.get(slugify(personName));
|
|
65
|
+
if (personaId === undefined) {
|
|
66
|
+
inputs.findings.add("coverage", `persona_container: Person "${personName}" on an L2 diagram has no matching persona row — edge skipped`);
|
|
67
|
+
continue;
|
|
68
|
+
}
|
|
69
|
+
const id = `${personaId}__${containerId}`;
|
|
70
|
+
const existing = rowsById.get(id);
|
|
71
|
+
if (existing !== undefined) {
|
|
72
|
+
mergeEdgeLabel(existing, label ?? "", "persona_container", inputs.findings);
|
|
73
|
+
continue;
|
|
74
|
+
}
|
|
75
|
+
const row = {
|
|
76
|
+
id,
|
|
77
|
+
persona_id: personaId,
|
|
78
|
+
container_id: containerId,
|
|
79
|
+
interaction: label ?? "",
|
|
80
|
+
};
|
|
81
|
+
rowsById.set(id, row);
|
|
82
|
+
rows.push(row);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
rows.sort((a, b) => String(a["id"]).localeCompare(String(b["id"])));
|
|
86
|
+
return rows;
|
|
87
|
+
}
|
|
88
|
+
function slugify(s) {
|
|
89
|
+
return s
|
|
90
|
+
.toLowerCase()
|
|
91
|
+
.replace(/\s*\([^)]+\)/g, "")
|
|
92
|
+
.replace(/[^a-z0-9]+/g, "-")
|
|
93
|
+
.replace(/^-+|-+$/g, "");
|
|
94
|
+
}
|
|
95
|
+
//# sourceMappingURL=persona-container.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"persona-container.js","sourceRoot":"","sources":["../../../../src/lib/catalogue/builders/persona-container.ts"],"names":[],"mappings":"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"}
|
|
@@ -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,22 @@
|
|
|
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.
|
|
48
|
+
schema_version: "2.34.0"
|
|
49
49
|
schema_owner: "sdd-method"
|
|
50
50
|
schema_status: "canonical"
|
|
51
|
+
# Bump rationale (2.34.0 — additive minor, per M-ADR 0189 F26 §3, ratified
|
|
52
|
+
# 2026-07-10): adds the `persona_container` edge — the L2-granularity
|
|
53
|
+
# companion to persona_c4system. Person→Container Rels are drawn routinely
|
|
54
|
+
# (11 L2s on one estate; the bulk of 81 unroutable Rels on the other) and
|
|
55
|
+
# had no catalogue: F26 made the silence loud, this gives the loudness a
|
|
56
|
+
# destination. An unmatched Person stays a coverage finding.
|
|
57
|
+
# Bump rationale (2.33.2 — description patch, per adopter finding F25,
|
|
58
|
+
# 2026-07-10): one edge per node pair remains the rule for all three
|
|
59
|
+
# dependency edge catalogues, but the merge now KEEPS every distinct
|
|
60
|
+
# authored label — `interaction` may hold multiple "; "-joined labels —
|
|
61
|
+
# and each merge is a convention finding. The silence was the defect:
|
|
62
|
+
# distinct parallel labels had merged first-seen since 2.30.0, discarding
|
|
63
|
+
# authored facts at member and aggregate tier without a word.
|
|
51
64
|
# Bump rationale (2.33.0 — additive minor, per adopter finding F17,
|
|
52
65
|
# 2026-07-10): adds the `container_dependency` edge catalogue and a
|
|
53
66
|
# nullable member-resolved `from_container_id` on
|
|
@@ -1079,6 +1092,28 @@ catalogues:
|
|
|
1079
1092
|
- { name: c4_system_id, type: string, nullable: false }
|
|
1080
1093
|
- { name: interaction, type: string, nullable: true, description: "Optional interaction label from the Rel(...) line, e.g. 'Web browser' / 'Mobile app'." }
|
|
1081
1094
|
|
|
1095
|
+
persona_container:
|
|
1096
|
+
primary_key: id
|
|
1097
|
+
description: >
|
|
1098
|
+
Edge: a persona uses a C4 container — the L2-granularity companion to
|
|
1099
|
+
persona_c4system (M-ADR 0189 F26 §3, ratified 2026-07-10). Eleven of
|
|
1100
|
+
one estate's L2 diagrams and the bulk of another's 81 unroutable Rels
|
|
1101
|
+
drew Person→Container relationships that had no catalogue and, until
|
|
1102
|
+
F26, no finding. Harvested at member tier from Rel(...) lines whose
|
|
1103
|
+
endpoints resolve to a file-local Person and a local container (either
|
|
1104
|
+
direction; the row is normalised persona→container). A Person that
|
|
1105
|
+
matches no persona row is a coverage finding, never a silent skip.
|
|
1106
|
+
Both authoring directions feed from the same diagram surface
|
|
1107
|
+
(M-ADR 0157 parity). Added in schema 2.34.0.
|
|
1108
|
+
foreign_keys:
|
|
1109
|
+
- { column: persona_id, references: personas.id, nullable: false }
|
|
1110
|
+
- { column: container_id, references: c4_containers.id, nullable: false }
|
|
1111
|
+
columns:
|
|
1112
|
+
- { name: id, type: string, nullable: false, description: "{persona_id}__{container_id}." }
|
|
1113
|
+
- { name: persona_id, type: string, nullable: false }
|
|
1114
|
+
- { name: container_id, type: string, nullable: false }
|
|
1115
|
+
- { name: interaction, type: string, nullable: true, description: "Optional interaction label from the Rel(...) line. May hold multiple '; '-joined labels (F25)." }
|
|
1116
|
+
|
|
1082
1117
|
system_external_dependency:
|
|
1083
1118
|
primary_key: id
|
|
1084
1119
|
description: "Edge: a C4 system integrates with an external software system. Captures the L1 context 'System integrates with External System' relationship, extracted from System_Ext(...) + Rel(...) on L1/L2 diagrams. Per ADR 0155. Container-level external dependencies are out of scope (system-level only). Added in schema 2.10.0. From 2.30.0 (M-ADR 0189 §4.4): edges whose external endpoint the aggregator adjudicates as an INTERNAL system are rewritten onto system_system_dependency and removed from this catalogue."
|
|
@@ -1090,7 +1125,7 @@ catalogues:
|
|
|
1090
1125
|
- { name: id, type: string, nullable: false, description: "{c4_system_id}__{external_system_id}." }
|
|
1091
1126
|
- { name: c4_system_id, type: string, nullable: false }
|
|
1092
1127
|
- { name: external_system_id, type: string, nullable: false }
|
|
1093
|
-
- { name: interaction, type: string, nullable: true, description: "Optional integration label/protocol from the Rel(...) line." }
|
|
1128
|
+
- { 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
1129
|
- { 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
1130
|
|
|
1096
1131
|
container_dependency:
|