@sdd-method/sdd-cli 1.20.1 → 1.22.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.
Files changed (50) hide show
  1. package/dist/lib/catalogue/aggregate.d.ts +24 -0
  2. package/dist/lib/catalogue/aggregate.d.ts.map +1 -1
  3. package/dist/lib/catalogue/aggregate.js +100 -4
  4. package/dist/lib/catalogue/aggregate.js.map +1 -1
  5. package/dist/lib/catalogue/build.d.ts.map +1 -1
  6. package/dist/lib/catalogue/build.js +29 -0
  7. package/dist/lib/catalogue/build.js.map +1 -1
  8. package/dist/lib/catalogue/builders/capabilities.d.ts +12 -0
  9. package/dist/lib/catalogue/builders/capabilities.d.ts.map +1 -1
  10. package/dist/lib/catalogue/builders/capabilities.js +85 -6
  11. package/dist/lib/catalogue/builders/capabilities.js.map +1 -1
  12. package/dist/lib/catalogue/builders/capability-edges.d.ts.map +1 -1
  13. package/dist/lib/catalogue/builders/capability-edges.js +16 -1
  14. package/dist/lib/catalogue/builders/capability-edges.js.map +1 -1
  15. package/dist/lib/catalogue/builders/capability-spec.d.ts +14 -0
  16. package/dist/lib/catalogue/builders/capability-spec.d.ts.map +1 -1
  17. package/dist/lib/catalogue/builders/capability-spec.js +8 -5
  18. package/dist/lib/catalogue/builders/capability-spec.js.map +1 -1
  19. package/dist/lib/catalogue/builders/feature-grounding.d.ts +8 -0
  20. package/dist/lib/catalogue/builders/feature-grounding.d.ts.map +1 -1
  21. package/dist/lib/catalogue/builders/feature-grounding.js +6 -5
  22. package/dist/lib/catalogue/builders/feature-grounding.js.map +1 -1
  23. package/dist/lib/catalogue/canonical-schema.yaml +3084 -2324
  24. package/dist/lib/catalogue/ddl-generator.d.ts.map +1 -1
  25. package/dist/lib/catalogue/ddl-generator.js +22 -4
  26. package/dist/lib/catalogue/ddl-generator.js.map +1 -1
  27. package/dist/lib/catalogue/feature-repo-zero-resolution-summary.d.ts +20 -0
  28. package/dist/lib/catalogue/feature-repo-zero-resolution-summary.d.ts.map +1 -0
  29. package/dist/lib/catalogue/feature-repo-zero-resolution-summary.js +31 -0
  30. package/dist/lib/catalogue/feature-repo-zero-resolution-summary.js.map +1 -0
  31. package/dist/lib/catalogue/fk-validator.d.ts +20 -1
  32. package/dist/lib/catalogue/fk-validator.d.ts.map +1 -1
  33. package/dist/lib/catalogue/fk-validator.js +33 -3
  34. package/dist/lib/catalogue/fk-validator.js.map +1 -1
  35. package/dist/lib/catalogue/graph-projection.d.ts.map +1 -1
  36. package/dist/lib/catalogue/graph-projection.js +8 -1
  37. package/dist/lib/catalogue/graph-projection.js.map +1 -1
  38. package/dist/lib/catalogue/graph-run.d.ts.map +1 -1
  39. package/dist/lib/catalogue/graph-run.js +2 -1
  40. package/dist/lib/catalogue/graph-run.js.map +1 -1
  41. package/dist/lib/catalogue/population-checks.d.ts +45 -0
  42. package/dist/lib/catalogue/population-checks.d.ts.map +1 -0
  43. package/dist/lib/catalogue/population-checks.js +86 -0
  44. package/dist/lib/catalogue/population-checks.js.map +1 -0
  45. package/dist/lib/catalogue/rubric-coverage-map.yaml +507 -187
  46. package/dist/lib/catalogue/traceability-loader.d.ts +13 -0
  47. package/dist/lib/catalogue/traceability-loader.d.ts.map +1 -1
  48. package/dist/lib/catalogue/traceability-loader.js +12 -0
  49. package/dist/lib/catalogue/traceability-loader.js.map +1 -1
  50. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"ddl-generator.d.ts","sourceRoot":"","sources":["../../../src/lib/catalogue/ddl-generator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAEH,OAAO,KAAK,EACV,eAAe,EAEf,aAAa,EACd,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAY7D,wEAAwE;AACxE,wBAAgB,OAAO,CACrB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,GACX,MAAM,CAQR;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CACjC,EAAE,EAAE,aAAa,EACjB,OAAO,EAAE,mBAAmB,GAC3B,OAAO,CAMT;AAeD;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,eAAe,GAAG,SAAS,MAAM,EAAE,CAO3E;AAED,MAAM,MAAM,cAAc,GAAG,IAAI,GAAG,IAAI,GAAG,MAAM,CAAC;AAElD,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;IAC9B,uEAAuE;IACvE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,0EAA0E;IAC1E,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB;;;OAGG;IACH,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;CACtB;AAED;;;GAGG;AACH,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,eAAe,EACvB,OAAO,GAAE,mBAAwB,GAChC,SAAS,eAAe,EAAE,CA8F5B;AAED;;;;;;;;GAQG;AACH,wBAAgB,8BAA8B,CAC5C,MAAM,EAAE,eAAe,EACvB,OAAO,GAAE,mBAAwB,GAChC,SAAS,eAAe,EAAE,CA6B5B"}
1
+ {"version":3,"file":"ddl-generator.d.ts","sourceRoot":"","sources":["../../../src/lib/catalogue/ddl-generator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAEH,OAAO,KAAK,EACV,eAAe,EAEf,aAAa,EACd,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAa7D,wEAAwE;AACxE,wBAAgB,OAAO,CACrB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,GACX,MAAM,CAQR;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CACjC,EAAE,EAAE,aAAa,EACjB,OAAO,EAAE,mBAAmB,GAC3B,OAAO,CAMT;AAeD;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,eAAe,GAAG,SAAS,MAAM,EAAE,CAO3E;AAED,MAAM,MAAM,cAAc,GAAG,IAAI,GAAG,IAAI,GAAG,MAAM,CAAC;AAElD,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;IAC9B,uEAAuE;IACvE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,0EAA0E;IAC1E,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB;;;OAGG;IACH,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;CACtB;AAED;;;GAGG;AACH,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,eAAe,EACvB,OAAO,GAAE,mBAAwB,GAChC,SAAS,eAAe,EAAE,CAsG5B;AAED;;;;;;;;GAQG;AACH,wBAAgB,8BAA8B,CAC5C,MAAM,EAAE,eAAe,EACvB,OAAO,GAAE,mBAAwB,GAChC,SAAS,eAAe,EAAE,CA6B5B"}
@@ -30,6 +30,7 @@
30
30
  * binding to an unknown enum throws at generation time — loud, never a
31
31
  * silent fallback (the known*Ids.has() lesson).
32
32
  */
33
+ import { PLATFORM_STAMP_COLUMN, isPlatformScopedFk } from "./fk-validator.js";
33
34
  /** Closed map from schema column types to engine column types. */
34
35
  const TYPE_MAP = {
35
36
  string: "VARCHAR",
@@ -88,8 +89,9 @@ export function generateTableDdl(schema) {
88
89
  export function generateConstraintQueries(schema, options = {}) {
89
90
  const catalogueNames = new Set(schema.catalogues.map((c) => c.name));
90
91
  const queries = [];
92
+ const catByName = new Map(schema.catalogues.map((c) => [c.name, c]));
91
93
  for (const cat of schema.catalogues) {
92
- queries.push(pkQuery(cat));
94
+ queries.push(pkQuery(cat, options));
93
95
  for (const fk of cat.foreignKeys) {
94
96
  const [targetCat, targetCol] = fk.references.split(".");
95
97
  if (!targetCat || !targetCol) {
@@ -118,8 +120,15 @@ export function generateConstraintQueries(schema, options = {}) {
118
120
  clauses.push(`(t.${col} IS NULL OR t.${col} = '')`);
119
121
  }
120
122
  if (checkDangling) {
123
+ // M-ADR 0208 §4.4 (F-D): a platform-scoped target resolves on
124
+ // (platform_sdd_id, pk) — equal stamps, or either side unstamped.
125
+ // Mirrors fk-validator.ts's `resolved` predicate exactly.
126
+ const stamp = quote(PLATFORM_STAMP_COLUMN);
127
+ const scope = isPlatformScopedFk(cat, catByName.get(targetCat), options)
128
+ ? ` AND (COALESCE(t.${stamp}, '') = '' OR COALESCE(r.${stamp}, '') = '' OR r.${stamp} = t.${stamp})`
129
+ : "";
121
130
  clauses.push(`(t.${col} IS NOT NULL AND t.${col} <> '' AND NOT EXISTS (` +
122
- `SELECT 1 FROM ${quote(targetCat)} r WHERE r.${quote(targetCol)} = t.${col}))`);
131
+ `SELECT 1 FROM ${quote(targetCat)} r WHERE r.${quote(targetCol)} = t.${col}${scope}))`);
123
132
  }
124
133
  queries.push({
125
134
  catalogue: cat.name,
@@ -200,16 +209,25 @@ export function generateExternalFindingQueries(schema, options = {}) {
200
209
  }
201
210
  return queries;
202
211
  }
203
- function pkQuery(cat) {
212
+ function pkQuery(cat, options = {}) {
204
213
  const t = quote(cat.name);
205
214
  const pk = quote(cat.primaryKey);
215
+ // M-ADR 0208 §4.4 (F-D): for a platform-scoped catalogue the key is
216
+ // (platform_sdd_id, pk). n rows sharing a pk are distinct iff every one
217
+ // carries a stamp and the stamps are all different — an EMPTY stamp is
218
+ // unresolved, never a key, so it collides with everything. Mirrors
219
+ // aggregate.ts findDuplicatePrimaryKeys.
220
+ const scoped = isPlatformScopedFk(cat, cat, options);
221
+ const having = scoped
222
+ ? `HAVING COUNT(*) > COUNT(DISTINCT NULLIF(${quote(PLATFORM_STAMP_COLUMN)}, ''))`
223
+ : `HAVING COUNT(*) > 1`;
206
224
  return {
207
225
  catalogue: cat.name,
208
226
  kind: "pk",
209
227
  column: cat.primaryKey,
210
228
  sql: `SELECT ${pk} AS row_pk, COUNT(*) AS n FROM ${t} ` +
211
229
  `WHERE ${pk} IS NOT NULL AND ${pk} <> '' ` +
212
- `GROUP BY ${pk} HAVING COUNT(*) > 1 ORDER BY row_pk;`,
230
+ `GROUP BY ${pk} ${having} ORDER BY row_pk;`,
213
231
  };
214
232
  }
215
233
  //# sourceMappingURL=ddl-generator.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ddl-generator.js","sourceRoot":"","sources":["../../../src/lib/catalogue/ddl-generator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ddl-generator.js","sourceRoot":"","sources":["../../../src/lib/catalogue/ddl-generator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * feature_repo zero-resolution SUMMARY line (M-ADR 0143 §4.4), split against
3
+ * the final feature_repo table.
4
+ *
5
+ * A builder (feature-grounding: Evidence cell; capability-spec:
6
+ * Implementation cell) fires one per-row finding for every feature row whose
7
+ * cell is non-empty but resolves to zero repos. That measures the CELL. The
8
+ * feature may still be anchored by another surface — feature-tree
9
+ * `## Feature Services`, feature-spec, or the feature_service ⋈
10
+ * service_repo derivation — and only the build, holding the final
11
+ * feature_repo, can say so. The summary therefore states both numbers:
12
+ * how many rows fired, and how many of those fired on features that no
13
+ * surface anchors.
14
+ *
15
+ * Returns null when nothing fired: an absent line is the designed shape
16
+ * for zero (the per-row lines are absent too), and this keeps the finding
17
+ * surface identical to pre-1.20.2 in that case.
18
+ */
19
+ export declare function zeroResolutionSummary(cellLabel: "Evidence" | "Implementation", evidenceRows: number, firedFeatureIds: readonly string[], anchoredFeatures: ReadonlyMap<string, unknown> | ReadonlySet<string>): string | null;
20
+ //# sourceMappingURL=feature-repo-zero-resolution-summary.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"feature-repo-zero-resolution-summary.d.ts","sourceRoot":"","sources":["../../../src/lib/catalogue/feature-repo-zero-resolution-summary.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,qBAAqB,CACnC,SAAS,EAAE,UAAU,GAAG,gBAAgB,EACxC,YAAY,EAAE,MAAM,EACpB,eAAe,EAAE,SAAS,MAAM,EAAE,EAClC,gBAAgB,EAAE,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,WAAW,CAAC,MAAM,CAAC,GACnE,MAAM,GAAG,IAAI,CAcf"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * feature_repo zero-resolution SUMMARY line (M-ADR 0143 §4.4), split against
3
+ * the final feature_repo table.
4
+ *
5
+ * A builder (feature-grounding: Evidence cell; capability-spec:
6
+ * Implementation cell) fires one per-row finding for every feature row whose
7
+ * cell is non-empty but resolves to zero repos. That measures the CELL. The
8
+ * feature may still be anchored by another surface — feature-tree
9
+ * `## Feature Services`, feature-spec, or the feature_service ⋈
10
+ * service_repo derivation — and only the build, holding the final
11
+ * feature_repo, can say so. The summary therefore states both numbers:
12
+ * how many rows fired, and how many of those fired on features that no
13
+ * surface anchors.
14
+ *
15
+ * Returns null when nothing fired: an absent line is the designed shape
16
+ * for zero (the per-row lines are absent too), and this keeps the finding
17
+ * surface identical to pre-1.20.2 in that case.
18
+ */
19
+ export function zeroResolutionSummary(cellLabel, evidenceRows, firedFeatureIds, anchoredFeatures) {
20
+ if (firedFeatureIds.length === 0)
21
+ return null;
22
+ const distinctFired = new Set(firedFeatureIds);
23
+ const unanchoredFeatures = new Set([...distinctFired].filter((fid) => !anchoredFeatures.has(fid)));
24
+ const unanchoredRows = firedFeatureIds.filter((fid) => unanchoredFeatures.has(fid)).length;
25
+ const anchoredElsewhere = distinctFired.size - unanchoredFeatures.size;
26
+ return (`feature_repo: ${firedFeatureIds.length} of ${evidenceRows} feature rows with a non-empty ${cellLabel} cell resolved to zero repos, ` +
27
+ `of which ${unanchoredRows} on ${unanchoredFeatures.size} feature(s) with no anchor from ANY surface in the final feature_repo ` +
28
+ `(${anchoredElsewhere} of the ${distinctFired.size} named features are anchored by another surface — those rows are cell quality, not coverage) ` +
29
+ `(member tier; evidence→repo resolution coverage only — a resolved row is not thereby correct; M-ADR 0143 §4.4)`);
30
+ }
31
+ //# sourceMappingURL=feature-repo-zero-resolution-summary.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"feature-repo-zero-resolution-summary.js","sourceRoot":"","sources":["../../../src/lib/catalogue/feature-repo-zero-resolution-summary.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,qBAAqB,CACnC,SAAwC,EACxC,YAAoB,EACpB,eAAkC,EAClC,gBAAoE;IAEpE,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAC9C,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,eAAe,CAAC,CAAC;IAC/C,MAAM,kBAAkB,GAAG,IAAI,GAAG,CAChC,CAAC,GAAG,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,gBAAgB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAC/D,CAAC;IACF,MAAM,cAAc,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,kBAAkB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC;IAC3F,MAAM,iBAAiB,GAAG,aAAa,CAAC,IAAI,GAAG,kBAAkB,CAAC,IAAI,CAAC;IACvE,OAAO,CACL,iBAAiB,eAAe,CAAC,MAAM,OAAO,YAAY,kCAAkC,SAAS,gCAAgC;QACrI,YAAY,cAAc,OAAO,kBAAkB,CAAC,IAAI,wEAAwE;QAChI,IAAI,iBAAiB,WAAW,aAAa,CAAC,IAAI,+FAA+F;QACjJ,gHAAgH,CACjH,CAAC;AACJ,CAAC"}
@@ -21,7 +21,7 @@
21
21
  * estate sweep driver), so implementation drift between the two gets
22
22
  * caught by the suite instead of lurking.
23
23
  */
24
- import type { CanonicalSchema } from "./schema-loader.js";
24
+ import type { CanonicalSchema, CatalogueDef } from "./schema-loader.js";
25
25
  import type { CatalogueRow } from "./csv-writer.js";
26
26
  import type { FindingsLog } from "./findings.js";
27
27
  export interface FkValidationResult {
@@ -53,7 +53,26 @@ export interface FkValidationOptions {
53
53
  * not fail the local build. Ignored when treatExternalAsInternal is set.
54
54
  */
55
55
  readonly profile?: string;
56
+ /**
57
+ * M-ADR 0208 §4.4 (F-D): target catalogues whose key AT THIS TIER is
58
+ * `(platform_sdd_id, <pk>)` rather than the scalar pk — the aggregator
59
+ * passes `["domains"]` at organisation tier, where two platforms may each
60
+ * own `identity`. A reference resolves when a target row exists with the
61
+ * same pk AND a compatible stamp: equal stamps, or either side unstamped
62
+ * (an empty stamp is UNRESOLVED, never a key — it neither matches nor
63
+ * excludes). Applies only where both catalogues carry `platform_sdd_id`.
64
+ * Ids never change form; per-SDD builds never set this.
65
+ */
66
+ readonly platformScopedTargets?: readonly string[];
56
67
  }
68
+ /** The stamp column M-ADR 0208 §4.4 keys on. */
69
+ export declare const PLATFORM_STAMP_COLUMN = "platform_sdd_id";
70
+ /**
71
+ * Whether the FK `cat.fk → targetCat` resolves under the platform-scoped
72
+ * key (see FkValidationOptions.platformScopedTargets). One definition,
73
+ * shared with the query generator so the two paths cannot drift.
74
+ */
75
+ export declare function isPlatformScopedFk(cat: CatalogueDef, targetCat: CatalogueDef, options: FkValidationOptions): boolean;
57
76
  /**
58
77
  * Build an in-memory map of every catalogue's primary-key set, then walk
59
78
  * every row's FK columns and check resolution.
@@ -1 +1 @@
1
- {"version":3,"file":"fk-validator.d.ts","sourceRoot":"","sources":["../../../src/lib/catalogue/fk-validator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAEjD,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC;IAC/B,QAAQ,CAAC,gBAAgB,EAAE,SAAS,SAAS,EAAE,CAAC;IAChD,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;CACnC;AAED,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,mBAAmB;IAClC;;;;;OAKG;IACH,QAAQ,CAAC,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAC3C;;;;;;;OAOG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,eAAe,EACvB,eAAe,EAAE,WAAW,CAAC,MAAM,EAAE,SAAS,YAAY,EAAE,CAAC,EAC7D,QAAQ,EAAE,WAAW,EACrB,OAAO,GAAE,mBAAwB,GAChC,kBAAkB,CA4FpB"}
1
+ {"version":3,"file":"fk-validator.d.ts","sourceRoot":"","sources":["../../../src/lib/catalogue/fk-validator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACxE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAEjD,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC;IAC/B,QAAQ,CAAC,gBAAgB,EAAE,SAAS,SAAS,EAAE,CAAC;IAChD,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;CACnC;AAED,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,mBAAmB;IAClC;;;;;OAKG;IACH,QAAQ,CAAC,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAC3C;;;;;;;OAOG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B;;;;;;;;;OASG;IACH,QAAQ,CAAC,qBAAqB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACpD;AAED,gDAAgD;AAChD,eAAO,MAAM,qBAAqB,oBAAoB,CAAC;AAEvD;;;;GAIG;AACH,wBAAgB,kBAAkB,CAChC,GAAG,EAAE,YAAY,EACjB,SAAS,EAAE,YAAY,EACvB,OAAO,EAAE,mBAAmB,GAC3B,OAAO,CAIT;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,eAAe,EACvB,eAAe,EAAE,WAAW,CAAC,MAAM,EAAE,SAAS,YAAY,EAAE,CAAC,EAC7D,QAAQ,EAAE,WAAW,EACrB,OAAO,GAAE,mBAAwB,GAChC,kBAAkB,CA6GpB"}
@@ -21,23 +21,45 @@
21
21
  * estate sweep driver), so implementation drift between the two gets
22
22
  * caught by the suite instead of lurking.
23
23
  */
24
+ /** The stamp column M-ADR 0208 §4.4 keys on. */
25
+ export const PLATFORM_STAMP_COLUMN = "platform_sdd_id";
26
+ /**
27
+ * Whether the FK `cat.fk → targetCat` resolves under the platform-scoped
28
+ * key (see FkValidationOptions.platformScopedTargets). One definition,
29
+ * shared with the query generator so the two paths cannot drift.
30
+ */
31
+ export function isPlatformScopedFk(cat, targetCat, options) {
32
+ if (!(options.platformScopedTargets ?? []).includes(targetCat.name))
33
+ return false;
34
+ const has = (c) => c.columns.some((col) => col.name === PLATFORM_STAMP_COLUMN);
35
+ return has(cat) && has(targetCat);
36
+ }
24
37
  /**
25
38
  * Build an in-memory map of every catalogue's primary-key set, then walk
26
39
  * every row's FK columns and check resolution.
27
40
  */
28
41
  export function validateForeignKeys(schema, rowsByCatalogue, findings, options = {}) {
29
- // Index primary keys per catalogue.
42
+ // Index primary keys per catalogue, and — for platform-scoped targets —
43
+ // the set of stamps each pk is present under ('' for an unstamped row).
30
44
  const pkIndex = new Map();
45
+ const stampIndex = new Map();
46
+ const catByName = new Map(schema.catalogues.map((c) => [c.name, c]));
31
47
  for (const cat of schema.catalogues) {
32
48
  const rows = rowsByCatalogue.get(cat.name) ?? [];
33
49
  const pks = new Set();
50
+ const stamps = new Map();
34
51
  for (const row of rows) {
35
52
  const pk = row[cat.primaryKey];
36
53
  if (pk !== undefined && pk !== null && pk !== "") {
37
54
  pks.add(String(pk));
55
+ const stamp = String(row[PLATFORM_STAMP_COLUMN] ?? "");
56
+ const set = stamps.get(String(pk)) ?? new Set();
57
+ set.add(stamp);
58
+ stamps.set(String(pk), set);
38
59
  }
39
60
  }
40
61
  pkIndex.set(cat.name, pks);
62
+ stampIndex.set(cat.name, stamps);
41
63
  }
42
64
  const failures = [];
43
65
  let externalCount = 0;
@@ -56,9 +78,12 @@ export function validateForeignKeys(schema, rowsByCatalogue, findings, options =
56
78
  throw new Error(`malformed FK reference "${fk.references}" on ${cat.name}.${fk.column}`);
57
79
  }
58
80
  const targetPks = pkIndex.get(targetCat);
59
- if (!targetPks) {
81
+ const targetDef = catByName.get(targetCat);
82
+ if (!targetPks || !targetDef) {
60
83
  throw new Error(`FK ${cat.name}.${fk.column} references unknown catalogue "${targetCat}"`);
61
84
  }
85
+ const scoped = isPlatformScopedFk(cat, targetDef, options);
86
+ const targetStamps = stampIndex.get(targetCat);
62
87
  for (const row of rows) {
63
88
  const raw = row[fk.column];
64
89
  if (raw === undefined || raw === null || raw === "") {
@@ -75,7 +100,12 @@ export function validateForeignKeys(schema, rowsByCatalogue, findings, options =
75
100
  continue;
76
101
  }
77
102
  const value = String(raw);
78
- const resolved = targetPks.has(value);
103
+ let resolved = targetPks.has(value);
104
+ if (resolved && scoped) {
105
+ const mine = String(row[PLATFORM_STAMP_COLUMN] ?? "");
106
+ const theirs = targetStamps.get(value) ?? new Set();
107
+ resolved = mine === "" || theirs.has("") || theirs.has(mine);
108
+ }
79
109
  if (effectiveExternal && !options.treatExternalAsInternal) {
80
110
  if (!resolved) {
81
111
  // Per spec: optimistically resolve against own rows; only log when unresolved.
@@ -1 +1 @@
1
- {"version":3,"file":"fk-validator.js","sourceRoot":"","sources":["../../../src/lib/catalogue/fk-validator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fk-validator.js","sourceRoot":"","sources":["../../../src/lib/catalogue/fk-validator.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;AAuB5B,MAAM,MAAM,SAAS,GAAG,QAAQ,GAAG,WAAW,CAAC;AAE/C,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,CAwPjB"}
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;AA2B5B,MAAM,MAAM,SAAS,GAAG,QAAQ,GAAG,WAAW,CAAC;AAE/C,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"}
@@ -54,6 +54,10 @@ const THREE_FK_ENDPOINTS = {
54
54
  "platform_capability_id",
55
55
  ],
56
56
  product_platform_dependencies: null, // per-row: target_service_id, else target_capability_id
57
+ // schema 3.9.0 (M-ADR 0211 §4.1): the third FK, contract_id, is a PROPERTY of the
58
+ // capability→service dependency — the contract it is against — not an endpoint. The
59
+ // edge stays capability→service; the contract rides as a property.
60
+ capability_service: ["capability_id", "service_id"],
57
61
  };
58
62
  /**
59
63
  * Kinds must cover every schema catalogue — a catalogue without a kind
@@ -99,7 +103,10 @@ semantics) {
99
103
  return { class: decl.class, impact_flow: flow };
100
104
  };
101
105
  const nodeCats = schema.catalogues.filter((c) => kinds.get(c.name) === "entity" && !EXCLUDED_NODE_CATALOGUES.has(c.name));
102
- const edgeCats = schema.catalogues.filter((c) => kinds.get(c.name) === "edge");
106
+ // `annotation` (M-ADR 0133 §4.2b; kinds corrected at schema 3.9.0): a single-FK assertion
107
+ // ABOUT one entity. It takes the same path as a 1-FK edge — a property record on the FK
108
+ // owner — so it joins the edge set here rather than vanishing from the projection.
109
+ const edgeCats = schema.catalogues.filter((c) => kinds.get(c.name) === "edge" || kinds.get(c.name) === "annotation");
103
110
  // Pass 1 — the node set. Endpoint resolution below is against THIS
104
111
  // export's nodes, which is exactly the per-export invariant.
105
112
  const nodeIds = new Set();
@@ -1 +1 @@
1
- {"version":3,"file":"graph-projection.js","sourceRoot":"","sources":["../../../src/lib/catalogue/graph-projection.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"graph-projection.js","sourceRoot":"","sources":["../../../src/lib/catalogue/graph-projection.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"graph-run.d.ts","sourceRoot":"","sources":["../../../src/lib/catalogue/graph-run.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAUH,OAAO,EAEL,KAAK,WAAW,EAChB,KAAK,SAAS,EACf,MAAM,uBAAuB,CAAC;AAE/B;;;;;GAKG;AACH,eAAO,MAAM,0BAA0B,QAGtC,CAAC;AAEF,2EAA2E;AAC3E,MAAM,MAAM,UAAU,GAAG,eAAe,GAAG,eAAe,GAAG,MAAM,GAAG,MAAM,CAAC;AAE7E,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC;CACvD;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,UAAU,CAAC,EAAE,UAAU,CAAC;IACjC,QAAQ,CAAC,YAAY,CAAC,EAAE,YAAY,CAAC;CACtC;AAED,MAAM,WAAW,qBAAqB;IACpC,+DAA+D;IAC/D,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC5C,8CAA8C;IAC9C,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;IACtD,iEAAiE;IACjE,QAAQ,CAAC,SAAS,EAAE,WAAW,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;CAC3D;AA6CD,wBAAsB,yBAAyB,CAC7C,OAAO,GAAE,MAAmC,GAC3C,OAAO,CAAC,qBAAqB,CAAC,CAiBhC;AAED,wBAAsB,kBAAkB,CACtC,OAAO,GAAE,MAAmC,GAC3C,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAS9B;AAED,MAAM,WAAW,cAAc;IAC7B,uCAAuC;IACvC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,6EAA6E;IAC7E,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,qDAAqD;IACrD,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC;IAC1B,qEAAqE;IACrE,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC;IAC9B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,cAAc,EACtB,KAAK,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,GACzB,OAAO,CAAC,cAAc,CAAC,CA4CzB"}
1
+ {"version":3,"file":"graph-run.d.ts","sourceRoot":"","sources":["../../../src/lib/catalogue/graph-run.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAUH,OAAO,EAEL,KAAK,WAAW,EAChB,KAAK,SAAS,EACf,MAAM,uBAAuB,CAAC;AAE/B;;;;;GAKG;AACH,eAAO,MAAM,0BAA0B,QAGtC,CAAC;AAEF,2EAA2E;AAC3E,MAAM,MAAM,UAAU,GAAG,eAAe,GAAG,eAAe,GAAG,MAAM,GAAG,MAAM,CAAC;AAE7E,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC;CACvD;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,UAAU,CAAC,EAAE,UAAU,CAAC;IACjC,QAAQ,CAAC,YAAY,CAAC,EAAE,YAAY,CAAC;CACtC;AAED,MAAM,WAAW,qBAAqB;IACpC,+DAA+D;IAC/D,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC5C,8CAA8C;IAC9C,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;IACtD,iEAAiE;IACjE,QAAQ,CAAC,SAAS,EAAE,WAAW,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;CAC3D;AA6CD,wBAAsB,yBAAyB,CAC7C,OAAO,GAAE,MAAmC,GAC3C,OAAO,CAAC,qBAAqB,CAAC,CAkBhC;AAED,wBAAsB,kBAAkB,CACtC,OAAO,GAAE,MAAmC,GAC3C,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAS9B;AAED,MAAM,WAAW,cAAc;IAC7B,uCAAuC;IACvC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,6EAA6E;IAC7E,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,qDAAqD;IACrD,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC;IAC1B,qEAAqE;IACrE,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC;IAC9B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,cAAc,EACtB,KAAK,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,GACzB,OAAO,CAAC,cAAc,CAAC,CA4CzB"}
@@ -55,7 +55,8 @@ export async function loadRelationshipSemantics(mapPath = VENDORED_COVERAGE_MAP_
55
55
  const entityFks = new Map();
56
56
  for (const [name, entry] of Object.entries(raw.coverage)) {
57
57
  kinds.set(name, entry.kind);
58
- if (entry.kind === "edge") {
58
+ if (entry.kind === "edge" || entry.kind === "annotation") {
59
+ // an annotation classifies at top level exactly as an edge does (schema 3.9.0)
59
60
  edges.set(name, toDecl(`edge ${name}`, entry));
60
61
  }
61
62
  for (const [col, decl] of Object.entries(entry.relationships ?? {})) {
@@ -1 +1 @@
1
- {"version":3,"file":"graph-run.js","sourceRoot":"","sources":["../../../src/lib/catalogue/graph-run.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"graph-run.js","sourceRoot":"","sources":["../../../src/lib/catalogue/graph-run.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,45 @@
1
+ import type { CatalogueRow } from "./csv-writer.js";
2
+ import type { FindingsLog } from "./findings.js";
3
+ import type { TraceabilityManifest } from "./traceability-loader.js";
4
+ export interface CapabilityServicePopulationInputs {
5
+ readonly findings: FindingsLog;
6
+ readonly manifests: readonly TraceabilityManifest[];
7
+ readonly capabilityServiceRows: readonly CatalogueRow[];
8
+ readonly knownCapabilityIds: ReadonlySet<string>;
9
+ readonly knownServiceIds: ReadonlySet<string>;
10
+ readonly knownExternalSystemIds: ReadonlySet<string>;
11
+ /** c4_containers rows as (id, name, system_id): ids are `<system_id>-<slug>`, so a services[] id
12
+ * matches a container by exact id, by the ANCHORED form `<system_id>-<sid>`, or by the slug of
13
+ * its name. A bare trailing token is never a match (`service` must not match `…-developer-service`). */
14
+ readonly knownContainers: readonly {
15
+ readonly id: string;
16
+ readonly name: string;
17
+ readonly system_id?: string;
18
+ }[];
19
+ }
20
+ export interface CapabilityServicePopulation {
21
+ readonly declared: number;
22
+ readonly rows: number;
23
+ readonly unresolved: number;
24
+ readonly deduplicated: number;
25
+ readonly capabilityUnknown: number;
26
+ readonly crossSdd: number;
27
+ readonly externalSystem: number;
28
+ readonly declaredContainer: number;
29
+ readonly nowhere: number;
30
+ readonly balances: boolean;
31
+ }
32
+ /** Does a services[] id name a declared C4 container — by id, by the system-anchored id, or by the slug of its name? */
33
+ export declare function matchesContainer(sid: string, containers: readonly {
34
+ readonly id: string;
35
+ readonly name: string;
36
+ readonly system_id?: string;
37
+ }[]): boolean;
38
+ /**
39
+ * A near-miss is an external-system id that the unresolved id contains or is contained by after
40
+ * normalisation (a separator changed, a prefix or suffix added — the three measured shapes), with a
41
+ * length floor so a short common token does not fire on everything. It is NAMED, never applied.
42
+ */
43
+ export declare function nearMiss(id: string, externalIds: ReadonlySet<string>): string | undefined;
44
+ export declare function checkCapabilityServicePopulation(inputs: CapabilityServicePopulationInputs): CapabilityServicePopulation;
45
+ //# sourceMappingURL=population-checks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"population-checks.d.ts","sourceRoot":"","sources":["../../../src/lib/catalogue/population-checks.ts"],"names":[],"mappings":"AAsBA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAErE,MAAM,WAAW,iCAAiC;IAChD,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAC;IAC/B,QAAQ,CAAC,SAAS,EAAE,SAAS,oBAAoB,EAAE,CAAC;IACpD,QAAQ,CAAC,qBAAqB,EAAE,SAAS,YAAY,EAAE,CAAC;IACxD,QAAQ,CAAC,kBAAkB,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACjD,QAAQ,CAAC,eAAe,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAC9C,QAAQ,CAAC,sBAAsB,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACrD;;6GAEyG;IACzG,QAAQ,CAAC,eAAe,EAAE,SAAS;QAAE,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CAClH;AAED,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;CAC5B;AAKD,wHAAwH;AACxH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS;IAAE,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,EAAE,GAAG,OAAO,CAQzJ;AAED;;;;GAIG;AACH,wBAAgB,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,WAAW,CAAC,MAAM,CAAC,GAAG,MAAM,GAAG,SAAS,CAWzF;AAED,wBAAgB,gCAAgC,CAC9C,MAAM,EAAE,iCAAiC,GACxC,2BAA2B,CAuD7B"}
@@ -0,0 +1,86 @@
1
+ const norm = (s) => s.toLowerCase().replace(/^ext-/, "").replace(/[^a-z0-9]/g, "");
2
+ const slug = (s) => s.toLowerCase().trim().replace(/[^a-z0-9]+/g, "-").replace(/^-|-$/g, "");
3
+ /** Does a services[] id name a declared C4 container — by id, by the system-anchored id, or by the slug of its name? */
4
+ export function matchesContainer(sid, containers) {
5
+ const target = sid.toLowerCase();
6
+ return containers.some((c) => {
7
+ const id = c.id.toLowerCase();
8
+ if (id === target || slug(c.name) === target)
9
+ return true;
10
+ const sys = (c.system_id ?? "").toLowerCase();
11
+ return sys !== "" && id === `${sys}-${target}`;
12
+ });
13
+ }
14
+ /**
15
+ * A near-miss is an external-system id that the unresolved id contains or is contained by after
16
+ * normalisation (a separator changed, a prefix or suffix added — the three measured shapes), with a
17
+ * length floor so a short common token does not fire on everything. It is NAMED, never applied.
18
+ */
19
+ export function nearMiss(id, externalIds) {
20
+ const n = norm(id);
21
+ let best;
22
+ for (const ext of externalIds) {
23
+ const e = norm(ext);
24
+ if (ext === id || e === "" || Math.min(n.length, e.length) < 6)
25
+ continue;
26
+ if (n === e || n.includes(e) || e.includes(n)) {
27
+ if (best === undefined || e.length > norm(best).length)
28
+ best = ext; // prefer the most specific
29
+ }
30
+ }
31
+ return best;
32
+ }
33
+ export function checkCapabilityServicePopulation(inputs) {
34
+ let declared = 0, unresolved = 0, deduplicated = 0, capabilityUnknown = 0, crossSdd = 0;
35
+ let externalSystem = 0, declaredContainer = 0, nowhere = 0, expectedRows = 0;
36
+ const seen = new Set();
37
+ for (const m of inputs.manifests) {
38
+ const capId = m.capability.id;
39
+ for (const entry of m.traceability.services ?? []) {
40
+ declared++;
41
+ if (!inputs.knownCapabilityIds.has(capId)) {
42
+ capabilityUnknown++;
43
+ continue;
44
+ }
45
+ const sid = entry.id;
46
+ // Resolution order (M-ADR 0211 §4.3): owner_sdd FIRST — a declared cross-SDD
47
+ // reference is resolved by declaration, not by the local services catalogue.
48
+ const resolved = entry.owner_sdd !== undefined || inputs.knownServiceIds.has(sid);
49
+ if (entry.owner_sdd !== undefined)
50
+ crossSdd++;
51
+ if (!resolved) {
52
+ unresolved++;
53
+ if (inputs.knownExternalSystemIds.has(sid)) {
54
+ externalSystem++;
55
+ }
56
+ else if (matchesContainer(sid, inputs.knownContainers)) {
57
+ declaredContainer++;
58
+ inputs.findings.add("convention", `capability_service: ${capId} services[] id "${sid}" resolves as a DECLARED C4 CONTAINER, not a service — capability_service has no locus for it; the id is correct and there is nothing to fix here (M-ADR 0211 §4.3, class 2: a dependency on a container that is not a service, filed as its own item)`);
59
+ }
60
+ else {
61
+ nowhere++;
62
+ const cand = nearMiss(sid, inputs.knownExternalSystemIds);
63
+ if (cand !== undefined) {
64
+ inputs.findings.add("convention", `capability_service: ${capId} services[] id "${sid}" resolves nowhere; nearest external-system id is "${cand}" — a CANDIDATE, not applied (M-ADR 0211 §4.3, class 3)`);
65
+ }
66
+ }
67
+ continue;
68
+ }
69
+ const key = `${capId}__${sid}__${(entry.role ?? "") !== "" ? entry.role : "related"}`;
70
+ if (seen.has(key)) {
71
+ deduplicated++;
72
+ continue;
73
+ }
74
+ seen.add(key);
75
+ expectedRows++;
76
+ }
77
+ }
78
+ const rows = inputs.capabilityServiceRows.length;
79
+ const balances = declared === rows + unresolved + deduplicated + capabilityUnknown;
80
+ inputs.findings.add("metric", `capability_service: declared=${declared} rows=${rows} unresolved=${unresolved} deduplicated=${deduplicated} capability-unknown=${capabilityUnknown} (cross-SDD via owner_sdd=${crossSdd}); unresolved by class: external-system=${externalSystem} declared-container=${declaredContainer} nowhere=${nowhere}`);
81
+ if (!balances) {
82
+ inputs.findings.add("coverage", `capability_service: the population does not balance — declared ${declared} ≠ rows ${rows} + unresolved ${unresolved} + deduplicated ${deduplicated} + capability-unknown ${capabilityUnknown} (expected rows from declarations: ${expectedRows}). Two instruments disagree; adjudicate, do not smooth (M-ADR 0211 §4.3)`);
83
+ }
84
+ return { declared, rows, unresolved, deduplicated, capabilityUnknown, crossSdd, externalSystem, declaredContainer, nowhere, balances };
85
+ }
86
+ //# sourceMappingURL=population-checks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"population-checks.js","sourceRoot":"","sources":["../../../src/lib/catalogue/population-checks.ts"],"names":[],"mappings":"AAoDA,MAAM,IAAI,GAAG,CAAC,CAAS,EAAU,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;AACnG,MAAM,IAAI,GAAG,CAAC,CAAS,EAAU,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;AAE7G,wHAAwH;AACxH,MAAM,UAAU,gBAAgB,CAAC,GAAW,EAAE,UAAkG;IAC9I,MAAM,MAAM,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC;IACjC,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE;QAC3B,MAAM,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC;QAC9B,IAAI,EAAE,KAAK,MAAM,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,MAAM;YAAE,OAAO,IAAI,CAAC;QAC1D,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;QAC9C,OAAO,GAAG,KAAK,EAAE,IAAI,EAAE,KAAK,GAAG,GAAG,IAAI,MAAM,EAAE,CAAC;IACjD,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,QAAQ,CAAC,EAAU,EAAE,WAAgC;IACnE,MAAM,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;IACnB,IAAI,IAAwB,CAAC;IAC7B,KAAK,MAAM,GAAG,IAAI,WAAW,EAAE,CAAC;QAC9B,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;QACpB,IAAI,GAAG,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;YAAE,SAAS;QACzE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;YAC9C,IAAI,IAAI,KAAK,SAAS,IAAI,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM;gBAAE,IAAI,GAAG,GAAG,CAAC,CAAC,2BAA2B;QACjG,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,gCAAgC,CAC9C,MAAyC;IAEzC,IAAI,QAAQ,GAAG,CAAC,EAAE,UAAU,GAAG,CAAC,EAAE,YAAY,GAAG,CAAC,EAAE,iBAAiB,GAAG,CAAC,EAAE,QAAQ,GAAG,CAAC,CAAC;IACxF,IAAI,cAAc,GAAG,CAAC,EAAE,iBAAiB,GAAG,CAAC,EAAE,OAAO,GAAG,CAAC,EAAE,YAAY,GAAG,CAAC,CAAC;IAC7E,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;QACjC,MAAM,KAAK,GAAG,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC;QAC9B,KAAK,MAAM,KAAK,IAAI,CAAC,CAAC,YAAY,CAAC,QAAQ,IAAI,EAAE,EAAE,CAAC;YAClD,QAAQ,EAAE,CAAC;YACX,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;gBAAC,iBAAiB,EAAE,CAAC;gBAAC,SAAS;YAAC,CAAC;YAC7E,MAAM,GAAG,GAAG,KAAK,CAAC,EAAE,CAAC;YACrB,6EAA6E;YAC7E,6EAA6E;YAC7E,MAAM,QAAQ,GAAG,KAAK,CAAC,SAAS,KAAK,SAAS,IAAI,MAAM,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAClF,IAAI,KAAK,CAAC,SAAS,KAAK,SAAS;gBAAE,QAAQ,EAAE,CAAC;YAC9C,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,UAAU,EAAE,CAAC;gBACb,IAAI,MAAM,CAAC,sBAAsB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;oBAC3C,cAAc,EAAE,CAAC;gBACnB,CAAC;qBAAM,IAAI,gBAAgB,CAAC,GAAG,EAAE,MAAM,CAAC,eAAe,CAAC,EAAE,CAAC;oBACzD,iBAAiB,EAAE,CAAC;oBACpB,MAAM,CAAC,QAAQ,CAAC,GAAG,CACjB,YAAY,EACZ,uBAAuB,KAAK,mBAAmB,GAAG,wPAAwP,CAC3S,CAAC;gBACJ,CAAC;qBAAM,CAAC;oBACN,OAAO,EAAE,CAAC;oBACV,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,sBAAsB,CAAC,CAAC;oBAC1D,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;wBACvB,MAAM,CAAC,QAAQ,CAAC,GAAG,CACjB,YAAY,EACZ,uBAAuB,KAAK,mBAAmB,GAAG,sDAAsD,IAAI,yDAAyD,CACtK,CAAC;oBACJ,CAAC;gBACH,CAAC;gBACD,SAAS;YACX,CAAC;YACD,MAAM,GAAG,GAAG,GAAG,KAAK,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;YACtF,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;gBAAC,YAAY,EAAE,CAAC;gBAAC,SAAS;YAAC,CAAC;YAChD,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACd,YAAY,EAAE,CAAC;QACjB,CAAC;IACH,CAAC;IACD,MAAM,IAAI,GAAG,MAAM,CAAC,qBAAqB,CAAC,MAAM,CAAC;IACjD,MAAM,QAAQ,GAAG,QAAQ,KAAK,IAAI,GAAG,UAAU,GAAG,YAAY,GAAG,iBAAiB,CAAC;IACnF,MAAM,CAAC,QAAQ,CAAC,GAAG,CACjB,QAAQ,EACR,gCAAgC,QAAQ,SAAS,IAAI,eAAe,UAAU,iBAAiB,YAAY,uBAAuB,iBAAiB,6BAA6B,QAAQ,2CAA2C,cAAc,uBAAuB,iBAAiB,YAAY,OAAO,EAAE,CAC/S,CAAC;IACF,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,CAAC,QAAQ,CAAC,GAAG,CACjB,UAAU,EACV,kEAAkE,QAAQ,WAAW,IAAI,iBAAiB,UAAU,mBAAmB,YAAY,yBAAyB,iBAAiB,sCAAsC,YAAY,0EAA0E,CAC1T,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,YAAY,EAAE,iBAAiB,EAAE,QAAQ,EAAE,cAAc,EAAE,iBAAiB,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC;AACzI,CAAC"}