@sdd-method/sdd-cli 0.83.0 → 0.85.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.
@@ -57,6 +57,7 @@ export async function buildC4Containers(inputs) {
57
57
  const files = await collectL2Files(inputs.sddPath);
58
58
  const rows = [];
59
59
  const seen = new Set();
60
+ const rowById = new Map();
60
61
  for (const file of files) {
61
62
  const content = await readFile(file.absPath, "utf-8");
62
63
  for (const entry of parseBoundaryEntries(content)) {
@@ -70,8 +71,24 @@ export async function buildC4Containers(inputs) {
70
71
  if (!inputs.containerNameByEntryIdOut?.has(entry.entryId)) {
71
72
  inputs.containerNameByEntryIdOut?.set(entry.entryId, entry.name);
72
73
  }
73
- if (seen.has(id))
74
+ if (!inputs.containerTechByEntryIdOut?.has(entry.entryId) && entry.technology !== "") {
75
+ inputs.containerTechByEntryIdOut?.set(entry.entryId, entry.technology);
76
+ }
77
+ const collapsed = rowById.get(id);
78
+ if (collapsed !== undefined) {
79
+ // F21: dedup-by-id is first-seen and was SILENT — two containers
80
+ // sharing a display name collapse into one row, and every edge
81
+ // referencing either binds to the merge. When their technology
82
+ // strings flatly contradict, that is two different things wearing
83
+ // one name, and the collapse is the loudest available signal.
84
+ if (techContradicts(String(collapsed["technology"] ?? ""), entry.technology)) {
85
+ inputs.findings.add("convention", `c4_containers: two containers share the display name "${entry.name}" with contradictory ` +
86
+ `technologies ("${String(collapsed["technology"])}" vs "${entry.technology}") — collapsed ` +
87
+ `into one row "${id}" — either different referents wearing one name (rename one) ` +
88
+ `or a misused technology field on a shared reference (correct it) (F21)`);
89
+ }
74
90
  continue;
91
+ }
75
92
  seen.add(id);
76
93
  const serviceId = inputs.knownServiceIds.has(entry.entryId)
77
94
  ? entry.entryId
@@ -84,7 +101,7 @@ export async function buildC4Containers(inputs) {
84
101
  if (file.domainId !== "" && domainId === "") {
85
102
  inputs.findings.add("orphan", `c4_containers: L2 file at ${file.relPath} references unknown domain "${file.domainId}" — domain_id left empty`);
86
103
  }
87
- rows.push({
104
+ const row = {
88
105
  id,
89
106
  name: entry.name,
90
107
  system_id: systemId,
@@ -94,7 +111,9 @@ export async function buildC4Containers(inputs) {
94
111
  technology: entry.technology,
95
112
  description: entry.description,
96
113
  source_sdd_id: "",
97
- });
114
+ };
115
+ rowById.set(id, row);
116
+ rows.push(row);
98
117
  }
99
118
  }
100
119
  rows.sort((a, b) => String(a["id"]).localeCompare(String(b["id"])));
@@ -198,4 +217,24 @@ function slugify(s) {
198
217
  .replace(/[^a-z0-9]+/g, "-")
199
218
  .replace(/^-+|-+$/g, "");
200
219
  }
220
+ /**
221
+ * F21: two technology strings flatly contradict when both are present and
222
+ * share no token — ".NET 6 (in Linton)" vs "Java" needs no NLP. Absent or
223
+ * overlapping strings are NOT a contradiction (silence, not a guess).
224
+ */
225
+ export function techContradicts(a, b) {
226
+ const tokens = (s) => new Set(s
227
+ .replace(/([a-z0-9])([A-Z])/g, "$1 $2")
228
+ .toLowerCase()
229
+ .split(/[^a-z0-9.+#]+/)
230
+ .filter((t) => t !== ""));
231
+ const ta = tokens(a);
232
+ const tb = tokens(b);
233
+ if (ta.size === 0 || tb.size === 0)
234
+ return false;
235
+ for (const t of ta)
236
+ if (tb.has(t))
237
+ return false;
238
+ return true;
239
+ }
201
240
  //# sourceMappingURL=c4-containers.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"c4-containers.js","sourceRoot":"","sources":["../../../../src/lib/catalogue/builders/c4-containers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"c4-containers.js","sourceRoot":"","sources":["../../../../src/lib/catalogue/builders/c4-containers.ts"],"names":[],"mappings":"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"}
@@ -10,8 +10,12 @@ export interface C4ExternalSystemsResult {
10
10
  readonly rows: CatalogueRow[];
11
11
  /** diagram entry-id (e.g. `telematics_cloud`) → row id (`ext-...`). */
12
12
  readonly idByEntryId: ReadonlyMap<string, string>;
13
- /** diagram entry-id → display name, for the F20 referent-collision check. */
13
+ /** diagram entry-id → display name, for the F21 referent-collision check. */
14
14
  readonly nameByEntryId: ReadonlyMap<string, string>;
15
+ /** diagram entry-id → technology string (Container_Ext only carries one), for the F21 check. */
16
+ readonly technologyByEntryId: ReadonlyMap<string, string>;
17
+ /** diagram entry-id → description, the only evidence surface System_Ext carries (F23). */
18
+ readonly descriptionByEntryId: ReadonlyMap<string, string>;
15
19
  }
16
20
  export declare function buildC4ExternalSystems(inputs: C4ExternalSystemsBuildInputs): Promise<C4ExternalSystemsResult>;
17
21
  export interface ScopedDiagramFile {
@@ -1 +1 @@
1
- {"version":3,"file":"c4-external-systems.d.ts","sourceRoot":"","sources":["../../../../src/lib/catalogue/builders/c4-external-systems.ts"],"names":[],"mappings":"AAwBA,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,4BAA4B;IAC3C,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAC;IAC/B,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAC;CAChC;AAED,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,IAAI,EAAE,YAAY,EAAE,CAAC;IAC9B,uEAAuE;IACvE,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAClD,6EAA6E;IAC7E,QAAQ,CAAC,aAAa,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACrD;AA4BD,wBAAsB,sBAAsB,CAC1C,MAAM,EAAE,4BAA4B,GACnC,OAAO,CAAC,uBAAuB,CAAC,CAwDlC;AA6BD,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,2EAA2E;IAC3E,QAAQ,CAAC,KAAK,EAAE,IAAI,GAAG,IAAI,CAAC;IAC5B;;;;;;OAMG;IACH,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;CAC9B;AAED;;;;;;;;GAQG;AACH,wBAAsB,qBAAqB,CACzC,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAiD9B"}
1
+ {"version":3,"file":"c4-external-systems.d.ts","sourceRoot":"","sources":["../../../../src/lib/catalogue/builders/c4-external-systems.ts"],"names":[],"mappings":"AAwBA,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,4BAA4B;IAC3C,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAC;IAC/B,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAC;CAChC;AAED,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,IAAI,EAAE,YAAY,EAAE,CAAC;IAC9B,uEAAuE;IACvE,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAClD,6EAA6E;IAC7E,QAAQ,CAAC,aAAa,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpD,gGAAgG;IAChG,QAAQ,CAAC,mBAAmB,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1D,0FAA0F;IAC1F,QAAQ,CAAC,oBAAoB,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC5D;AA4BD,wBAAsB,sBAAsB,CAC1C,MAAM,EAAE,4BAA4B,GACnC,OAAO,CAAC,uBAAuB,CAAC,CAgElC;AA6BD,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,2EAA2E;IAC3E,QAAQ,CAAC,KAAK,EAAE,IAAI,GAAG,IAAI,CAAC;IAC5B;;;;;;OAMG;IACH,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;CAC9B;AAED;;;;;;;;GAQG;AACH,wBAAsB,qBAAqB,CACzC,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAiD9B"}
@@ -37,6 +37,8 @@ export async function buildC4ExternalSystems(inputs) {
37
37
  const rows = [];
38
38
  const idByEntryId = new Map();
39
39
  const nameByEntryId = new Map();
40
+ const technologyByEntryId = new Map();
41
+ const descriptionByEntryId = new Map();
40
42
  const seen = new Map();
41
43
  for (const { abs, scope } of files) {
42
44
  const content = await readFile(abs, "utf-8");
@@ -48,6 +50,12 @@ export async function buildC4ExternalSystems(inputs) {
48
50
  idByEntryId.set(ext.entryId, id);
49
51
  if (!nameByEntryId.has(ext.entryId))
50
52
  nameByEntryId.set(ext.entryId, ext.name);
53
+ if (!technologyByEntryId.has(ext.entryId) && ext.technology !== "") {
54
+ technologyByEntryId.set(ext.entryId, ext.technology);
55
+ }
56
+ if (!descriptionByEntryId.has(ext.entryId) && ext.description !== "") {
57
+ descriptionByEntryId.set(ext.entryId, ext.description);
58
+ }
51
59
  const existing = seen.get(id);
52
60
  if (existing) {
53
61
  // Same external referenced again — first row wins; flag attribute
@@ -80,7 +88,7 @@ export async function buildC4ExternalSystems(inputs) {
80
88
  }
81
89
  }
82
90
  rows.sort((a, b) => String(a["id"]).localeCompare(String(b["id"])));
83
- return { rows, idByEntryId, nameByEntryId };
91
+ return { rows, idByEntryId, nameByEntryId, technologyByEntryId, descriptionByEntryId };
84
92
  }
85
93
  function parseExternals(content) {
86
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":"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"}
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,CAsHzB"}
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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"}
@@ -10,20 +10,31 @@ export interface ContainerDependencyInputs {
10
10
  }
11
11
  export declare function buildContainerDependency(inputs: ContainerDependencyInputs): Promise<CatalogueRow[]>;
12
12
  /**
13
- * F20 closure guardthe direction the adopters' data cannot exercise.
14
- * F20's rule is "an entry-id that resolves to a local container IS a
15
- * container". Both estates measured every dual-use entry-id naming the
16
- * SAME referent (13/13 on one, all corroborating on the other) but
17
- * nothing distinguishes "resolves to a local container" from "happens to
18
- * match a local container's name". When an entry-id is declared both
19
- * Container and System_Ext within one SDD and the two display names do
20
- * not corroborate, the container interpretation still wins for Rel edges
21
- * but LOUDLY, so a genuinely different referent hiding behind a shared
22
- * mnemonic is a finding, not a silent wrong bind.
13
+ * F21 referent-collision checkcorroborate on an INDEPENDENT evidence
14
+ * channel, never the one under guard. The F20-era version decided referent
15
+ * identity by comparing display names the same evidence class the guard
16
+ * existed to distrust so it was circular: the estate sweep that declared
17
+ * different-referent collisions absent USED this predicate and could not
18
+ * have found the counterexample it then declared inexercisable. Measured:
19
+ * nested names (a client layer and the server it proxies, names nesting)
20
+ * are DIFFERENT referents and stayed silent; acronym-vs-expansion is the
21
+ * SAME referent and fired. The predicate was inverted on the two
22
+ * name-shapes the estate actually uses.
23
+ *
24
+ * The independent channel is the technology string: ".NET 6 (in Linton)"
25
+ * against "Java" is a flat contradiction and needs no NLP. A dual-use
26
+ * entry-id (Container + System_Ext in one SDD) whose technologies
27
+ * contradict draws the finding REGARDLESS of what the names say — name
28
+ * agreement is precisely what makes the collision quiet today. Where no
29
+ * technology evidence exists on either side, silence: absence of evidence
30
+ * is not corroboration, and it is not contradiction either.
23
31
  */
24
32
  export declare function reportEntryIdReferentCollisions(inputs: {
25
33
  readonly findings: FindingsLog;
26
34
  readonly containerNameByEntryId: ReadonlyMap<string, string>;
35
+ readonly containerTechByEntryId: ReadonlyMap<string, string>;
27
36
  readonly externalNameByEntryId: ReadonlyMap<string, string>;
37
+ readonly externalTechByEntryId: ReadonlyMap<string, string>;
38
+ readonly externalDescByEntryId: ReadonlyMap<string, string>;
28
39
  }): void;
29
40
  //# 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":"AAqBA,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;CAC5D;AAED,wBAAsB,wBAAwB,CAC5C,MAAM,EAAE,yBAAyB,GAChC,OAAO,CAAC,YAAY,EAAE,CAAC,CA4CzB;AAGD;;;;;;;;;;;GAWG;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,qBAAqB,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC7D,GAAG,IAAI,CA+BP"}
1
+ {"version":3,"file":"container-dependency.d.ts","sourceRoot":"","sources":["../../../../src/lib/catalogue/builders/container-dependency.ts"],"names":[],"mappings":"AAsBA,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;CAC5D;AAED,wBAAsB,wBAAwB,CAC5C,MAAM,EAAE,yBAAyB,GAChC,OAAO,CAAC,YAAY,EAAE,CAAC,CA4CzB;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,CAiDP"}
@@ -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 { techContradicts } from "./c4-containers.js";
21
22
  const REL_RE = /^(?:Bi)?Rel(?:_[A-Za-z]+)?\s*\(\s*(\w+)\s*,\s*(\w+)\s*(?:,\s*"([^"]*)")?/;
22
23
  export async function buildContainerDependency(inputs) {
23
24
  if (inputs.containerIdByEntryId.size === 0)
@@ -68,48 +69,71 @@ export async function buildContainerDependency(inputs) {
68
69
  return rows;
69
70
  }
70
71
  /**
71
- * F20 closure guardthe direction the adopters' data cannot exercise.
72
- * F20's rule is "an entry-id that resolves to a local container IS a
73
- * container". Both estates measured every dual-use entry-id naming the
74
- * SAME referent (13/13 on one, all corroborating on the other) but
75
- * nothing distinguishes "resolves to a local container" from "happens to
76
- * match a local container's name". When an entry-id is declared both
77
- * Container and System_Ext within one SDD and the two display names do
78
- * not corroborate, the container interpretation still wins for Rel edges
79
- * but LOUDLY, so a genuinely different referent hiding behind a shared
80
- * mnemonic is a finding, not a silent wrong bind.
72
+ * F21 referent-collision checkcorroborate on an INDEPENDENT evidence
73
+ * channel, never the one under guard. The F20-era version decided referent
74
+ * identity by comparing display names the same evidence class the guard
75
+ * existed to distrust so it was circular: the estate sweep that declared
76
+ * different-referent collisions absent USED this predicate and could not
77
+ * have found the counterexample it then declared inexercisable. Measured:
78
+ * nested names (a client layer and the server it proxies, names nesting)
79
+ * are DIFFERENT referents and stayed silent; acronym-vs-expansion is the
80
+ * SAME referent and fired. The predicate was inverted on the two
81
+ * name-shapes the estate actually uses.
82
+ *
83
+ * The independent channel is the technology string: ".NET 6 (in Linton)"
84
+ * against "Java" is a flat contradiction and needs no NLP. A dual-use
85
+ * entry-id (Container + System_Ext in one SDD) whose technologies
86
+ * contradict draws the finding REGARDLESS of what the names say — name
87
+ * agreement is precisely what makes the collision quiet today. Where no
88
+ * technology evidence exists on either side, silence: absence of evidence
89
+ * is not corroboration, and it is not contradiction either.
81
90
  */
82
91
  export function reportEntryIdReferentCollisions(inputs) {
83
- const compact = (s) => s.toLowerCase().replace(/[^a-z0-9]/g, "");
84
- const tokens = (s) => s
92
+ const techTokens = (s) => new Set(s
85
93
  .replace(/([a-z0-9])([A-Z])/g, "$1 $2")
86
94
  .toLowerCase()
87
- .split(/[^a-z0-9]+/)
88
- .filter((t) => t !== "");
89
- const corroborates = (a, b) => {
90
- const ca = compact(a);
91
- const cb = compact(b);
92
- if (ca === "" || cb === "")
93
- return false;
94
- if (ca === cb)
95
- return true;
96
- const ta = new Set(tokens(a));
97
- const tb = tokens(b);
98
- if (tb.length > 0 && tb.every((t) => ta.has(t)))
99
- return true;
100
- const tbSet = new Set(tb);
101
- const taList = tokens(a);
102
- return taList.length > 0 && taList.every((t) => tbSet.has(t));
103
- };
95
+ .split(/[^a-z0-9.+#]+/)
96
+ .filter((t) => t !== ""));
104
97
  for (const [entryId, containerName] of inputs.containerNameByEntryId) {
105
98
  const externalName = inputs.externalNameByEntryId.get(entryId);
106
99
  if (externalName === undefined)
107
100
  continue;
108
- if (corroborates(containerName, externalName))
101
+ const containerTech = inputs.containerTechByEntryId.get(entryId) ?? "";
102
+ const externalTech = inputs.externalTechByEntryId.get(entryId) ?? "";
103
+ if (externalTech !== "" && techContradicts(containerTech, externalTech)) {
104
+ inputs.findings.add("convention", `c4 diagrams: entry-id "${entryId}" is declared Container ("${containerName}", "${containerTech}") and ` +
105
+ `System_Ext ("${externalName}", "${externalTech}") with contradictory technologies — ` +
106
+ `different referents wearing one id; the container interpretation wins for Rel edges — rename one entry-id to split them (F21)`);
109
107
  continue;
110
- inputs.findings.add("convention", `c4 diagrams: entry-id "${entryId}" is declared Container ("${containerName}") and ` +
111
- `System_Ext ("${externalName}") with non-corroborating names — same id, different referents? ` +
112
- `The container interpretation wins for Rel edges (F20); rename one entry-id to split them`);
108
+ }
109
+ if (externalTech !== "")
110
+ continue; // corroborating tech same referent, silent
111
+ // F23: System_Ext carries no technology argument, so the primary
112
+ // dual-use case has NO independent evidence channel — measured: 0 of
113
+ // 109 external rows carry a technology. Weak corroboration is
114
+ // accepted (the external's description mentioning a container-tech
115
+ // token); otherwise the guard says what it cannot do, loudly. A
116
+ // dual-use entry-id buys nothing post-F20 (the container always wins
117
+ // for Rel edges) and risks a silent different-referent bind — the
118
+ // retirement is a rename, cheap because entry-ids are diagram-local
119
+ // and row identity derives from the display name.
120
+ const externalDesc = inputs.externalDescByEntryId.get(entryId) ?? "";
121
+ if (containerTech !== "" && externalDesc !== "") {
122
+ const ct = techTokens(containerTech);
123
+ const dt = techTokens(externalDesc);
124
+ let overlap = false;
125
+ for (const t of ct)
126
+ if (dt.has(t)) {
127
+ overlap = true;
128
+ break;
129
+ }
130
+ if (overlap)
131
+ continue; // description mentions the container's tech — weak corroboration
132
+ }
133
+ inputs.findings.add("convention", `c4 diagrams: entry-id "${entryId}" is declared Container ("${containerName}") and System_Ext ` +
134
+ `("${externalName}") with no independent evidence to adjudicate referent identity — System_Ext ` +
135
+ `carries no technology field; cannot corroborate, cannot contradict. Rename one entry-id to split ` +
136
+ `the namespaces (F23)`);
113
137
  }
114
138
  }
115
139
  //# 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":"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"}
1
+ {"version":3,"file":"container-dependency.js","sourceRoot":"","sources":["../../../../src/lib/catalogue/builders/container-dependency.ts"],"names":[],"mappings":"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"}