@sdd-method/sdd-cli 0.16.0 → 0.19.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 +23 -15
- package/dist/lib/catalogue/aggregate.js.map +1 -1
- package/dist/lib/catalogue/aggregation-manifest-loader.d.ts +2 -0
- package/dist/lib/catalogue/aggregation-manifest-loader.d.ts.map +1 -1
- package/dist/lib/catalogue/aggregation-manifest-loader.js +2 -0
- package/dist/lib/catalogue/aggregation-manifest-loader.js.map +1 -1
- package/dist/lib/catalogue/build.d.ts.map +1 -1
- package/dist/lib/catalogue/build.js +38 -2
- package/dist/lib/catalogue/build.js.map +1 -1
- package/dist/lib/catalogue/builders/feature-grounding-walker.d.ts +68 -0
- package/dist/lib/catalogue/builders/feature-grounding-walker.d.ts.map +1 -0
- package/dist/lib/catalogue/builders/feature-grounding-walker.js +254 -0
- package/dist/lib/catalogue/builders/feature-grounding-walker.js.map +1 -0
- package/dist/lib/catalogue/builders/feature-grounding.d.ts +53 -0
- package/dist/lib/catalogue/builders/feature-grounding.d.ts.map +1 -0
- package/dist/lib/catalogue/builders/feature-grounding.js +312 -0
- package/dist/lib/catalogue/builders/feature-grounding.js.map +1 -0
- package/dist/lib/catalogue/builders/index.d.ts +2 -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/integrations.d.ts.map +1 -1
- package/dist/lib/catalogue/builders/integrations.js +69 -14
- package/dist/lib/catalogue/builders/integrations.js.map +1 -1
- package/dist/lib/catalogue/canonical-schema.yaml +4 -4
- package/dist/lib/catalogue/feature-grounding-aliases-loader.d.ts +36 -0
- package/dist/lib/catalogue/feature-grounding-aliases-loader.d.ts.map +1 -0
- package/dist/lib/catalogue/feature-grounding-aliases-loader.js +65 -0
- package/dist/lib/catalogue/feature-grounding-aliases-loader.js.map +1 -0
- package/package.json +2 -2
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"feature-grounding-walker.js","sourceRoot":"","sources":["../../../../src/lib/catalogue/builders/feature-grounding-walker.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Feature-grounding extractor per ADR 0143 (schema 2.5.0).
|
|
3
|
+
*
|
|
4
|
+
* Walks `docs/domains/<dom>/design/<capability>/feature-grounding.md`
|
|
5
|
+
* (platform-profile) and `docs/design/integration/feature-grounding.md`
|
|
6
|
+
* (integration-product), parses the canonical markdown table, and
|
|
7
|
+
* emits four catalogue contributions:
|
|
8
|
+
*
|
|
9
|
+
* - `features.csv` rows with `source: feature-grounding`.
|
|
10
|
+
* - `capability_feature.csv` rows (1:1 with each feature row).
|
|
11
|
+
* - `feature_repo.csv` rows derived from file-path references in
|
|
12
|
+
* the Evidence column.
|
|
13
|
+
* - `feature_service.csv` rows derived from class names / file
|
|
14
|
+
* basenames / route fragments in API Routes / Backend Handlers
|
|
15
|
+
* / Evidence columns, resolved via `services.csv` + the optional
|
|
16
|
+
* per-SDD alias map.
|
|
17
|
+
*
|
|
18
|
+
* Resolution failures (unresolved capability, service, repo) emit
|
|
19
|
+
* findings but never break FK validation — only confidently-resolved
|
|
20
|
+
* rows are emitted.
|
|
21
|
+
*
|
|
22
|
+
* Precedence per ADR 0143 §4.4: feature-tree and feature-spec rows
|
|
23
|
+
* win on id collision; grounding rows are skipped with a divergence
|
|
24
|
+
* finding.
|
|
25
|
+
*/
|
|
26
|
+
import type { CatalogueRow } from "../csv-writer.js";
|
|
27
|
+
import type { FindingsLog } from "../findings.js";
|
|
28
|
+
import type { LoadedAliases } from "../feature-grounding-aliases-loader.js";
|
|
29
|
+
export interface FeatureGroundingInputs {
|
|
30
|
+
readonly sddPath: string;
|
|
31
|
+
readonly findings: FindingsLog;
|
|
32
|
+
readonly profile: string;
|
|
33
|
+
/** Product id, used for integration-product capability resolution. */
|
|
34
|
+
readonly productId: string;
|
|
35
|
+
/** Set of capability ids known from capabilities.csv (for path resolution). */
|
|
36
|
+
readonly knownCapabilityIds: ReadonlySet<string>;
|
|
37
|
+
/** Set of service ids known from services.csv (for service-edge resolution). */
|
|
38
|
+
readonly knownServiceIds: ReadonlySet<string>;
|
|
39
|
+
/** Set of canonical_repo_keys known from repositories.csv. */
|
|
40
|
+
readonly knownRepoKeys: ReadonlySet<string>;
|
|
41
|
+
/** Already-emitted feature ids from earlier sources — grounding rows lose on collision. */
|
|
42
|
+
readonly existingFeatureIds: ReadonlySet<string>;
|
|
43
|
+
/** Optional alias map for display-name → canonical-id translation. */
|
|
44
|
+
readonly aliases: LoadedAliases | null;
|
|
45
|
+
}
|
|
46
|
+
export interface FeatureGroundingResult {
|
|
47
|
+
readonly featureRows: CatalogueRow[];
|
|
48
|
+
readonly capabilityFeatureRows: CatalogueRow[];
|
|
49
|
+
readonly featureRepoRows: CatalogueRow[];
|
|
50
|
+
readonly featureServiceRows: CatalogueRow[];
|
|
51
|
+
}
|
|
52
|
+
export declare function buildFeatureGrounding(inputs: FeatureGroundingInputs): Promise<FeatureGroundingResult>;
|
|
53
|
+
//# sourceMappingURL=feature-grounding.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"feature-grounding.d.ts","sourceRoot":"","sources":["../../../../src/lib/catalogue/builders/feature-grounding.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAIH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wCAAwC,CAAC;AAsB5E,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAC;IAC/B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,sEAAsE;IACtE,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,+EAA+E;IAC/E,QAAQ,CAAC,kBAAkB,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACjD,gFAAgF;IAChF,QAAQ,CAAC,eAAe,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAC9C,8DAA8D;IAC9D,QAAQ,CAAC,aAAa,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAC5C,2FAA2F;IAC3F,QAAQ,CAAC,kBAAkB,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACjD,sEAAsE;IACtE,QAAQ,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI,CAAC;CACxC;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,WAAW,EAAE,YAAY,EAAE,CAAC;IACrC,QAAQ,CAAC,qBAAqB,EAAE,YAAY,EAAE,CAAC;IAC/C,QAAQ,CAAC,eAAe,EAAE,YAAY,EAAE,CAAC;IACzC,QAAQ,CAAC,kBAAkB,EAAE,YAAY,EAAE,CAAC;CAC7C;AAED,wBAAsB,qBAAqB,CACzC,MAAM,EAAE,sBAAsB,GAC7B,OAAO,CAAC,sBAAsB,CAAC,CAiIjC"}
|
|
@@ -0,0 +1,312 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Feature-grounding extractor per ADR 0143 (schema 2.5.0).
|
|
3
|
+
*
|
|
4
|
+
* Walks `docs/domains/<dom>/design/<capability>/feature-grounding.md`
|
|
5
|
+
* (platform-profile) and `docs/design/integration/feature-grounding.md`
|
|
6
|
+
* (integration-product), parses the canonical markdown table, and
|
|
7
|
+
* emits four catalogue contributions:
|
|
8
|
+
*
|
|
9
|
+
* - `features.csv` rows with `source: feature-grounding`.
|
|
10
|
+
* - `capability_feature.csv` rows (1:1 with each feature row).
|
|
11
|
+
* - `feature_repo.csv` rows derived from file-path references in
|
|
12
|
+
* the Evidence column.
|
|
13
|
+
* - `feature_service.csv` rows derived from class names / file
|
|
14
|
+
* basenames / route fragments in API Routes / Backend Handlers
|
|
15
|
+
* / Evidence columns, resolved via `services.csv` + the optional
|
|
16
|
+
* per-SDD alias map.
|
|
17
|
+
*
|
|
18
|
+
* Resolution failures (unresolved capability, service, repo) emit
|
|
19
|
+
* findings but never break FK validation — only confidently-resolved
|
|
20
|
+
* rows are emitted.
|
|
21
|
+
*
|
|
22
|
+
* Precedence per ADR 0143 §4.4: feature-tree and feature-spec rows
|
|
23
|
+
* win on id collision; grounding rows are skipped with a divergence
|
|
24
|
+
* finding.
|
|
25
|
+
*/
|
|
26
|
+
import { readFile } from "node:fs/promises";
|
|
27
|
+
import { relative } from "node:path";
|
|
28
|
+
import { capabilityIdFromPath, findIntegrationGroundingFile, findPlatformGroundingFiles, parseGroundingTable, } from "./feature-grounding-walker.js";
|
|
29
|
+
const DESCRIPTION_MAX = 500;
|
|
30
|
+
/** Columns the service-name resolver scans for class names / route fragments. */
|
|
31
|
+
const SERVICE_RESOLUTION_COLUMNS = [
|
|
32
|
+
"ui_components",
|
|
33
|
+
"api_routes",
|
|
34
|
+
"backend_handlers",
|
|
35
|
+
"evidence",
|
|
36
|
+
];
|
|
37
|
+
/** Columns the repo-name resolver scans for file-path references. */
|
|
38
|
+
const REPO_RESOLUTION_COLUMNS = ["evidence", "ui_components"];
|
|
39
|
+
export async function buildFeatureGrounding(inputs) {
|
|
40
|
+
const featureRows = [];
|
|
41
|
+
const capabilityFeatureRows = [];
|
|
42
|
+
const featureRepoRows = [];
|
|
43
|
+
const featureServiceRows = [];
|
|
44
|
+
const seenFeatureRepo = new Set();
|
|
45
|
+
const seenFeatureService = new Set();
|
|
46
|
+
const seenFeatures = new Set(inputs.existingFeatureIds);
|
|
47
|
+
const files = [];
|
|
48
|
+
if (inputs.profile === "platform-profile") {
|
|
49
|
+
for (const absPath of await findPlatformGroundingFiles(inputs.sddPath)) {
|
|
50
|
+
const capId = capabilityIdFromPath(absPath, inputs.sddPath);
|
|
51
|
+
files.push({ absPath, capabilityId: capId });
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
else if (inputs.profile === "integration-product") {
|
|
55
|
+
const absPath = await findIntegrationGroundingFile(inputs.sddPath);
|
|
56
|
+
if (absPath !== null) {
|
|
57
|
+
// For integration-product, the integration itself is the
|
|
58
|
+
// capability surface; use the SDD's product id.
|
|
59
|
+
files.push({ absPath, capabilityId: inputs.productId });
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
for (const { absPath, capabilityId } of files) {
|
|
63
|
+
const relPath = relative(inputs.sddPath, absPath);
|
|
64
|
+
if (capabilityId === "") {
|
|
65
|
+
inputs.findings.add("convention", `${relPath}: capability id could not be resolved from file path`);
|
|
66
|
+
continue;
|
|
67
|
+
}
|
|
68
|
+
if (!inputs.knownCapabilityIds.has(capabilityId)) {
|
|
69
|
+
inputs.findings.add("convention", `${relPath}: capability "${capabilityId}" from file path does not resolve against capabilities.csv`);
|
|
70
|
+
continue;
|
|
71
|
+
}
|
|
72
|
+
const text = await readFile(absPath, "utf-8");
|
|
73
|
+
const rows = parseGroundingTable(text);
|
|
74
|
+
if (rows.length === 0) {
|
|
75
|
+
inputs.findings.add("coverage", `${relPath}: feature-grounding.md found but no recognisable Feature-to-Code Mapping table`);
|
|
76
|
+
continue;
|
|
77
|
+
}
|
|
78
|
+
const slugsInThisFile = new Set();
|
|
79
|
+
for (const row of rows) {
|
|
80
|
+
if (slugsInThisFile.has(row.slug)) {
|
|
81
|
+
inputs.findings.add("divergence", `${relPath}:${row.lineNumber}: duplicate feature slug "${row.slug}" in same file (first occurrence wins)`);
|
|
82
|
+
continue;
|
|
83
|
+
}
|
|
84
|
+
slugsInThisFile.add(row.slug);
|
|
85
|
+
const featureId = `${capabilityId}-${row.slug}`;
|
|
86
|
+
if (seenFeatures.has(featureId)) {
|
|
87
|
+
inputs.findings.add("divergence", `${relPath}:${row.lineNumber}: feature id "${featureId}" already emitted by an earlier source (feature-tree / feature-spec wins)`);
|
|
88
|
+
continue;
|
|
89
|
+
}
|
|
90
|
+
seenFeatures.add(featureId);
|
|
91
|
+
featureRows.push({
|
|
92
|
+
id: featureId,
|
|
93
|
+
name: row.slug,
|
|
94
|
+
product_id: "",
|
|
95
|
+
capability_id: capabilityId,
|
|
96
|
+
parent_group_id: "",
|
|
97
|
+
parent_feature_id: "",
|
|
98
|
+
description: deriveDescription(row),
|
|
99
|
+
maturity: "",
|
|
100
|
+
status: "active",
|
|
101
|
+
source: "feature-grounding",
|
|
102
|
+
runway: "",
|
|
103
|
+
source_sdd_id: "",
|
|
104
|
+
});
|
|
105
|
+
const cfId = `${capabilityId}__${featureId}`;
|
|
106
|
+
capabilityFeatureRows.push({
|
|
107
|
+
id: cfId,
|
|
108
|
+
capability_id: capabilityId,
|
|
109
|
+
feature_id: featureId,
|
|
110
|
+
});
|
|
111
|
+
// feature_service edges
|
|
112
|
+
const services = resolveServices(row, inputs);
|
|
113
|
+
for (const serviceId of services) {
|
|
114
|
+
const edgeId = `${featureId}__${serviceId}`;
|
|
115
|
+
if (seenFeatureService.has(edgeId))
|
|
116
|
+
continue;
|
|
117
|
+
seenFeatureService.add(edgeId);
|
|
118
|
+
featureServiceRows.push({
|
|
119
|
+
id: edgeId,
|
|
120
|
+
feature_id: featureId,
|
|
121
|
+
service_id: serviceId,
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
// feature_repo edges
|
|
125
|
+
const repos = resolveRepos(row, inputs);
|
|
126
|
+
for (const repoKey of repos) {
|
|
127
|
+
const edgeId = `${featureId}__${repoKey}`;
|
|
128
|
+
if (seenFeatureRepo.has(edgeId))
|
|
129
|
+
continue;
|
|
130
|
+
seenFeatureRepo.add(edgeId);
|
|
131
|
+
featureRepoRows.push({
|
|
132
|
+
id: edgeId,
|
|
133
|
+
feature_id: featureId,
|
|
134
|
+
repo_id: repoKey,
|
|
135
|
+
});
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
return {
|
|
140
|
+
featureRows,
|
|
141
|
+
capabilityFeatureRows,
|
|
142
|
+
featureRepoRows,
|
|
143
|
+
featureServiceRows,
|
|
144
|
+
};
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* Build the description column by joining non-feature cells, capped at
|
|
148
|
+
* 500 chars to match the feature-tree bullet convention.
|
|
149
|
+
*/
|
|
150
|
+
function deriveDescription(row) {
|
|
151
|
+
const parts = [];
|
|
152
|
+
for (const [key, value] of row.cells) {
|
|
153
|
+
if (value === "")
|
|
154
|
+
continue;
|
|
155
|
+
parts.push(`${prettyHeader(key)}: ${value}`);
|
|
156
|
+
}
|
|
157
|
+
const joined = parts.join(" • ");
|
|
158
|
+
return joined.length > DESCRIPTION_MAX
|
|
159
|
+
? joined.slice(0, DESCRIPTION_MAX)
|
|
160
|
+
: joined;
|
|
161
|
+
}
|
|
162
|
+
function prettyHeader(key) {
|
|
163
|
+
return key
|
|
164
|
+
.split("_")
|
|
165
|
+
.map((p) => (p.length === 0 ? p : p[0].toUpperCase() + p.slice(1)))
|
|
166
|
+
.join(" ");
|
|
167
|
+
}
|
|
168
|
+
/**
|
|
169
|
+
* Resolve service ids referenced in a row's cells. Strategy:
|
|
170
|
+
* - Tokenize backtick-quoted identifiers + CamelCase / kebab-case tokens.
|
|
171
|
+
* - Strip extensions (.ts/.java/.yaml/.kt/.py) and trailing parens.
|
|
172
|
+
* - Try exact match against services.id (lowercased).
|
|
173
|
+
* - Try alias map (case-sensitive — display names often carry case).
|
|
174
|
+
*/
|
|
175
|
+
function resolveServices(row, inputs) {
|
|
176
|
+
const out = new Set();
|
|
177
|
+
for (const col of SERVICE_RESOLUTION_COLUMNS) {
|
|
178
|
+
const cell = row.cells.get(col) ?? "";
|
|
179
|
+
if (cell === "")
|
|
180
|
+
continue;
|
|
181
|
+
for (const token of tokenize(cell)) {
|
|
182
|
+
const resolved = resolveServiceToken(token, inputs);
|
|
183
|
+
if (resolved !== null)
|
|
184
|
+
out.add(resolved);
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
return [...out].sort();
|
|
188
|
+
}
|
|
189
|
+
function resolveServiceToken(rawToken, inputs) {
|
|
190
|
+
// Try alias first (case-sensitive).
|
|
191
|
+
if (inputs.aliases !== null) {
|
|
192
|
+
const aliased = inputs.aliases.serviceAliases.get(rawToken);
|
|
193
|
+
if (aliased !== undefined && inputs.knownServiceIds.has(aliased)) {
|
|
194
|
+
return aliased;
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
// Normalise + try exact match.
|
|
198
|
+
const normalised = normaliseToken(rawToken);
|
|
199
|
+
if (normalised === "")
|
|
200
|
+
return null;
|
|
201
|
+
if (inputs.knownServiceIds.has(normalised))
|
|
202
|
+
return normalised;
|
|
203
|
+
// Try alias on normalised form too.
|
|
204
|
+
if (inputs.aliases !== null) {
|
|
205
|
+
const aliased = inputs.aliases.serviceAliases.get(normalised);
|
|
206
|
+
if (aliased !== undefined && inputs.knownServiceIds.has(aliased)) {
|
|
207
|
+
return aliased;
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
return null;
|
|
211
|
+
}
|
|
212
|
+
/**
|
|
213
|
+
* Resolve repo ids from file-path references. Strategy:
|
|
214
|
+
* - Tokenize path-like spans (contain `/` or end in known extensions).
|
|
215
|
+
* - For each token: try longest-prefix match against
|
|
216
|
+
* `canonical_repo_key`s; e.g. `connect-app-shell-api-master@abc/src/...`
|
|
217
|
+
* → `connect-app-shell-api` (after stripping branch/sha suffix).
|
|
218
|
+
* - Also accept the alias map for display-name → canonical-key.
|
|
219
|
+
*/
|
|
220
|
+
function resolveRepos(row, inputs) {
|
|
221
|
+
const out = new Set();
|
|
222
|
+
for (const col of REPO_RESOLUTION_COLUMNS) {
|
|
223
|
+
const cell = row.cells.get(col) ?? "";
|
|
224
|
+
if (cell === "")
|
|
225
|
+
continue;
|
|
226
|
+
for (const token of tokenize(cell)) {
|
|
227
|
+
const resolved = resolveRepoToken(token, inputs);
|
|
228
|
+
if (resolved !== null)
|
|
229
|
+
out.add(resolved);
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
return [...out].sort();
|
|
233
|
+
}
|
|
234
|
+
function resolveRepoToken(rawToken, inputs) {
|
|
235
|
+
// Try alias first.
|
|
236
|
+
if (inputs.aliases !== null) {
|
|
237
|
+
const aliased = inputs.aliases.repoAliases.get(rawToken);
|
|
238
|
+
if (aliased !== undefined && inputs.knownRepoKeys.has(aliased)) {
|
|
239
|
+
return aliased;
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
// Direct match on the full token (rare).
|
|
243
|
+
if (inputs.knownRepoKeys.has(rawToken))
|
|
244
|
+
return rawToken;
|
|
245
|
+
// Walk every path segment and try to recover a repo key. Each
|
|
246
|
+
// segment may carry a `-master@<sha>` or `@<sha>` suffix; strip
|
|
247
|
+
// those before matching.
|
|
248
|
+
for (const segment of rawToken.split("/")) {
|
|
249
|
+
const stripped = segment
|
|
250
|
+
.replace(/-master@.*$/, "")
|
|
251
|
+
.replace(/@[^/]+$/, "");
|
|
252
|
+
if (stripped !== "" && inputs.knownRepoKeys.has(stripped)) {
|
|
253
|
+
return stripped;
|
|
254
|
+
}
|
|
255
|
+
// Also try the segment with the `-master` literal removed (no @sha).
|
|
256
|
+
const trailingMaster = stripped.replace(/-master$/, "");
|
|
257
|
+
if (trailingMaster !== stripped &&
|
|
258
|
+
inputs.knownRepoKeys.has(trailingMaster)) {
|
|
259
|
+
return trailingMaster;
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
return null;
|
|
263
|
+
}
|
|
264
|
+
/**
|
|
265
|
+
* Extract candidate identifier tokens from a markdown cell. Matches:
|
|
266
|
+
* - Backticked spans: `` `AuthHandler.handleLoginRequest()` ``
|
|
267
|
+
* - Bare identifiers: `MasternauthOauthService`
|
|
268
|
+
* - kebab-case identifiers: `connect-app-shell-api`
|
|
269
|
+
* - Path-like tokens with at least one `/`.
|
|
270
|
+
* Strips leading method names (e.g. `AuthHandler.foo()` → `AuthHandler`).
|
|
271
|
+
*/
|
|
272
|
+
function tokenize(cell) {
|
|
273
|
+
const out = new Set();
|
|
274
|
+
// Backticked spans.
|
|
275
|
+
for (const match of cell.matchAll(/`([^`]+)`/g)) {
|
|
276
|
+
const inner = match[1] ?? "";
|
|
277
|
+
addCandidatesFromToken(inner, out);
|
|
278
|
+
}
|
|
279
|
+
// Bare identifiers outside backticks — strip backtick spans first.
|
|
280
|
+
const stripped = cell.replace(/`[^`]+`/g, " ");
|
|
281
|
+
for (const match of stripped.matchAll(/[A-Za-z][A-Za-z0-9._@/-]*[A-Za-z0-9]/g)) {
|
|
282
|
+
addCandidatesFromToken(match[0], out);
|
|
283
|
+
}
|
|
284
|
+
return [...out];
|
|
285
|
+
}
|
|
286
|
+
function addCandidatesFromToken(token, out) {
|
|
287
|
+
if (token === "")
|
|
288
|
+
return;
|
|
289
|
+
// Path token: take first segment as a candidate AND keep the full path.
|
|
290
|
+
if (token.includes("/")) {
|
|
291
|
+
out.add(token);
|
|
292
|
+
const first = token.split("/")[0] ?? "";
|
|
293
|
+
if (first !== "" && first !== token)
|
|
294
|
+
out.add(first);
|
|
295
|
+
return;
|
|
296
|
+
}
|
|
297
|
+
// Method/class form: split on `.`, contribute each segment except (), [].
|
|
298
|
+
const head = token.split(/[(.[]/)[0] ?? "";
|
|
299
|
+
if (head !== "")
|
|
300
|
+
out.add(head);
|
|
301
|
+
// Also keep the full token for alias-map matching on exact display
|
|
302
|
+
// strings like `AuthHandler.handleLoginRequest`.
|
|
303
|
+
out.add(token);
|
|
304
|
+
}
|
|
305
|
+
function normaliseToken(token) {
|
|
306
|
+
return token
|
|
307
|
+
.toLowerCase()
|
|
308
|
+
.replace(/\.(ts|tsx|js|jsx|java|kt|kts|py|go|rs|yaml|yml|json|md)$/i, "")
|
|
309
|
+
.replace(/\(\)$/, "")
|
|
310
|
+
.trim();
|
|
311
|
+
}
|
|
312
|
+
//# sourceMappingURL=feature-grounding.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"feature-grounding.js","sourceRoot":"","sources":["../../../../src/lib/catalogue/builders/feature-grounding.ts"],"names":[],"mappings":"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"}
|
|
@@ -22,6 +22,8 @@ export { buildFeatures } from "./features.js";
|
|
|
22
22
|
export type { FeaturesBuildInputs, FeaturesBuildResult, } from "./features.js";
|
|
23
23
|
export { buildFeatureGroups } from "./feature-groups.js";
|
|
24
24
|
export type { FeatureGroupsBuildInputs } from "./feature-groups.js";
|
|
25
|
+
export { buildFeatureGrounding } from "./feature-grounding.js";
|
|
26
|
+
export type { FeatureGroundingInputs, FeatureGroundingResult, } from "./feature-grounding.js";
|
|
25
27
|
export { buildContracts } from "./contracts.js";
|
|
26
28
|
export type { ContractsBuildInputs, ContractsBuildResult, } from "./contracts.js";
|
|
27
29
|
export { buildRepoEdges } from "./repo-edges.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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"}
|
|
@@ -14,6 +14,7 @@ export { buildAdrs } from "./adrs.js";
|
|
|
14
14
|
export { buildAdrSupersedes } from "./adr-supersedes.js";
|
|
15
15
|
export { buildFeatures } from "./features.js";
|
|
16
16
|
export { buildFeatureGroups } from "./feature-groups.js";
|
|
17
|
+
export { buildFeatureGrounding } from "./feature-grounding.js";
|
|
17
18
|
export { buildContracts } from "./contracts.js";
|
|
18
19
|
export { buildRepoEdges } from "./repo-edges.js";
|
|
19
20
|
export { buildEvents } from "./events.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,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAKhD,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAKjD,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAM1C,OAAO,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAK3E,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAE7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAKnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAEvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAEtD,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAEvD,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAK9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAKvD,OAAO,EACL,mBAAmB,EACnB,mBAAmB,EACnB,mBAAmB,GACpB,MAAM,4BAA4B,CAAC;AAMpC,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAKvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAEtD,OAAO,EACL,sBAAsB,EACtB,kBAAkB,EAClB,sBAAsB,EACtB,uBAAuB,GACxB,MAAM,uBAAuB,CAAC;AAO/B,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAE7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAEvD,OAAO,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAC;AAE1E,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC"}
|
|
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,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAKhD,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAKjD,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAM1C,OAAO,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAK3E,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAE7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAKnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAEvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAEtD,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAEvD,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAK9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAKvD,OAAO,EACL,mBAAmB,EACnB,mBAAmB,EACnB,mBAAmB,GACpB,MAAM,4BAA4B,CAAC;AAMpC,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAKvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAEtD,OAAO,EACL,sBAAsB,EACtB,kBAAkB,EAClB,sBAAsB,EACtB,uBAAuB,GACxB,MAAM,uBAAuB,CAAC;AAO/B,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAE7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAEvD,OAAO,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAC;AAE1E,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"integrations.d.ts","sourceRoot":"","sources":["../../../../src/lib/catalogue/builders/integrations.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"integrations.d.ts","sourceRoot":"","sources":["../../../../src/lib/catalogue/builders/integrations.ts"],"names":[],"mappings":"AAqCA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAErD,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAC;IAC/B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAkBD,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,uBAAuB,GAC9B,OAAO,CAAC,YAAY,EAAE,CAAC,CAyGzB"}
|
|
@@ -1,33 +1,51 @@
|
|
|
1
|
-
// Integrations discoverer — emits
|
|
2
|
-
// integration-product SDD
|
|
3
|
-
// the SDD root.
|
|
1
|
+
// Integrations discoverer — emits `integrations.csv` rows from an
|
|
2
|
+
// integration-product SDD's `integration-manifest.yaml`.
|
|
4
3
|
//
|
|
5
4
|
// Per ADR 0134 federation: each integration-provider SDD owns one row
|
|
6
5
|
// in the granular integrations.csv. The aggregator merges siblings.
|
|
7
6
|
//
|
|
7
|
+
// Per ADR 0144 (schema 2.6.0): if the manifest declares an optional
|
|
8
|
+
// `sub_integrations:` array (multi-provider monolith pattern), emit
|
|
9
|
+
// one additional row per entry with parent_product_id set to the
|
|
10
|
+
// SDD's integrationId. The umbrella SDD row stays unchanged.
|
|
11
|
+
//
|
|
8
12
|
// Profile gating: only integration-product profile SDDs emit. Other
|
|
9
13
|
// profiles are no-ops.
|
|
10
14
|
//
|
|
11
|
-
//
|
|
12
|
-
//
|
|
13
|
-
//
|
|
14
|
-
//
|
|
15
|
-
//
|
|
16
|
-
//
|
|
17
|
-
//
|
|
18
|
-
//
|
|
19
|
-
//
|
|
20
|
-
//
|
|
15
|
+
// Umbrella row:
|
|
16
|
+
// id = integrationId from the manifest (or sdd_id as fallback).
|
|
17
|
+
// name = providerName (or title-cased id).
|
|
18
|
+
// category = profileType (open enum per schema description; ecosystems
|
|
19
|
+
// extend with values like saas-platform, oem, device, ...).
|
|
20
|
+
// parent_product_id = parentIntegrationProductId (typically empty).
|
|
21
|
+
// doc_path = "." (SDD root).
|
|
22
|
+
// repo_count = supplied by the orchestrator from discovered repos.
|
|
23
|
+
//
|
|
24
|
+
// Sub-integration rows (one per entry in sub_integrations:):
|
|
25
|
+
// id = entry.id (required; unique within SDD)
|
|
26
|
+
// name = entry.providerName (required)
|
|
27
|
+
// category = entry.category (required)
|
|
28
|
+
// parent_product_id = the SDD's integrationId (internal FK)
|
|
29
|
+
// doc_path = SDD's doc_path
|
|
30
|
+
// repo_count = 0 (repo ownership stays with the umbrella)
|
|
31
|
+
//
|
|
32
|
+
// domain_id is always empty per ADR 0136.
|
|
21
33
|
import { readFile } from "node:fs/promises";
|
|
22
34
|
import { join } from "node:path";
|
|
23
35
|
import { parse as parseYaml } from "yaml";
|
|
24
36
|
import { z } from "zod";
|
|
25
37
|
const REL_PATH = "integration-manifest.yaml";
|
|
38
|
+
const SubIntegrationSchema = z.object({
|
|
39
|
+
id: z.string().optional(),
|
|
40
|
+
providerName: z.string().optional(),
|
|
41
|
+
category: z.string().optional(),
|
|
42
|
+
});
|
|
26
43
|
const ManifestSchema = z.object({
|
|
27
44
|
integrationId: z.string().optional(),
|
|
28
45
|
providerName: z.string().optional(),
|
|
29
46
|
profileType: z.string().optional(),
|
|
30
47
|
parentIntegrationProductId: z.string().optional(),
|
|
48
|
+
sub_integrations: z.array(SubIntegrationSchema).optional(),
|
|
31
49
|
});
|
|
32
50
|
export async function buildIntegrations(inputs) {
|
|
33
51
|
if (inputs.profile !== "integration-product")
|
|
@@ -63,7 +81,7 @@ export async function buildIntegrations(inputs) {
|
|
|
63
81
|
if (category === "") {
|
|
64
82
|
inputs.findings.add("convention", `${REL_PATH}: missing required \`profileType\` (used as integrations.category)`);
|
|
65
83
|
}
|
|
66
|
-
|
|
84
|
+
const rows = [
|
|
67
85
|
{
|
|
68
86
|
id,
|
|
69
87
|
name,
|
|
@@ -75,6 +93,43 @@ export async function buildIntegrations(inputs) {
|
|
|
75
93
|
source_sdd_id: "",
|
|
76
94
|
},
|
|
77
95
|
];
|
|
96
|
+
// Per ADR 0144 (schema 2.6.0): emit one row per sub_integration with
|
|
97
|
+
// parent_product_id = the umbrella SDD's id.
|
|
98
|
+
const subs = parsed.data.sub_integrations ?? [];
|
|
99
|
+
const seenSubIds = new Set([id]); // umbrella id is reserved
|
|
100
|
+
for (let i = 0; i < subs.length; i++) {
|
|
101
|
+
const sub = subs[i];
|
|
102
|
+
const subId = (sub.id ?? "").trim();
|
|
103
|
+
const subName = (sub.providerName ?? "").trim();
|
|
104
|
+
const subCategory = (sub.category ?? "").trim();
|
|
105
|
+
const missing = [];
|
|
106
|
+
if (subId === "")
|
|
107
|
+
missing.push("id");
|
|
108
|
+
if (subName === "")
|
|
109
|
+
missing.push("providerName");
|
|
110
|
+
if (subCategory === "")
|
|
111
|
+
missing.push("category");
|
|
112
|
+
if (missing.length > 0) {
|
|
113
|
+
inputs.findings.add("convention", `${REL_PATH}: sub_integrations[${i}] missing required field(s): ${missing.join(", ")} — entry skipped`);
|
|
114
|
+
continue;
|
|
115
|
+
}
|
|
116
|
+
if (seenSubIds.has(subId)) {
|
|
117
|
+
inputs.findings.add("convention", `${REL_PATH}: sub_integrations[${i}] id "${subId}" duplicates an existing id within the SDD — entry skipped (first occurrence wins)`);
|
|
118
|
+
continue;
|
|
119
|
+
}
|
|
120
|
+
seenSubIds.add(subId);
|
|
121
|
+
rows.push({
|
|
122
|
+
id: subId,
|
|
123
|
+
name: subName,
|
|
124
|
+
domain_id: "",
|
|
125
|
+
parent_product_id: id,
|
|
126
|
+
category: subCategory,
|
|
127
|
+
doc_path: ".",
|
|
128
|
+
repo_count: 0,
|
|
129
|
+
source_sdd_id: "",
|
|
130
|
+
});
|
|
131
|
+
}
|
|
132
|
+
return rows;
|
|
78
133
|
}
|
|
79
134
|
function titleCase(slug) {
|
|
80
135
|
return slug
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"integrations.js","sourceRoot":"","sources":["../../../../src/lib/catalogue/builders/integrations.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"integrations.js","sourceRoot":"","sources":["../../../../src/lib/catalogue/builders/integrations.ts"],"names":[],"mappings":"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"}
|
|
@@ -45,7 +45,7 @@
|
|
|
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.6.0"
|
|
49
49
|
schema_owner: "sdd-method"
|
|
50
50
|
schema_status: "canonical"
|
|
51
51
|
|
|
@@ -134,7 +134,7 @@ catalogues:
|
|
|
134
134
|
|
|
135
135
|
integrations:
|
|
136
136
|
primary_key: id
|
|
137
|
-
description: "Granular provider adapters. Each row is one provider
|
|
137
|
+
description: "Granular provider adapters. Each row is either (a) an integration-product SDD's own row (one per SDD; parent_product_id empty), or (b) a manifest-declared sub-integration of a multi-provider monolith (parent_product_id = umbrella SDD's id). Per ADR 0144 (schema 2.6.0), sub-integrations are declared via the optional `sub_integrations:` array in `integration-manifest.yaml`."
|
|
138
138
|
foreign_keys:
|
|
139
139
|
- { column: domain_id, references: domains.id, nullable: true }
|
|
140
140
|
- { column: parent_product_id, references: products.id, nullable: true }
|
|
@@ -142,7 +142,7 @@ catalogues:
|
|
|
142
142
|
- { name: id, type: string, nullable: false, description: "Provider slug." }
|
|
143
143
|
- { name: name, type: string, nullable: false }
|
|
144
144
|
- { name: domain_id, type: string, nullable: true, description: "Provider adapters are federation nodes, not capability-domain members. Left empty per ADR 0136." }
|
|
145
|
-
- { name: parent_product_id, type: string, nullable: true, description: "Umbrella integration-product." }
|
|
145
|
+
- { name: parent_product_id, type: string, nullable: true, description: "Umbrella integration-product. Empty for an SDD's own row; set to the SDD's integrationId for sub-integration rows declared via integration-manifest.yaml `sub_integrations:` (per ADR 0144, schema 2.6.0)." }
|
|
146
146
|
- { name: category, type: string, nullable: false, description: "oem | device | fleet | camera | legacy | data-sharing | gateway-framework (extensible per ecosystem)." }
|
|
147
147
|
- { name: doc_path, type: string, nullable: false }
|
|
148
148
|
- { name: repo_count, type: int, nullable: false }
|
|
@@ -275,7 +275,7 @@ catalogues:
|
|
|
275
275
|
- { name: description, type: string, nullable: true }
|
|
276
276
|
- { name: maturity, type: string, nullable: true, description: "Standard: working | provisional | unknown | absent. Ecosystem-specific values may be added with parser awareness." }
|
|
277
277
|
- { name: status, type: string, nullable: false, description: "Default 'active'." }
|
|
278
|
-
- { name: source, type: string, nullable: false, description: "feature-tree | feature-set | capability-spec | feature-spec. NOTE: feature-tree-group source removed in 1.3.0 — groups are now first-class in feature_groups.csv. As of schema 2.2.0, source: feature-tree is emitted by the canonical builder for rows derived from feature-tree.md bullets." }
|
|
278
|
+
- { name: source, type: string, nullable: false, description: "feature-tree | feature-set | capability-spec | feature-spec | feature-grounding. NOTE: feature-tree-group source removed in 1.3.0 — groups are now first-class in feature_groups.csv. As of schema 2.2.0, source: feature-tree is emitted by the canonical builder for rows derived from feature-tree.md bullets. As of schema 2.5.0, source: feature-grounding is emitted for rows derived from `docs/domains/<dom>/design/<capability>/feature-grounding.md` markdown tables (per ADR 0143). Feature-grounding rows are capability-owned: product_id is empty; capability_id resolves from the file path." }
|
|
279
279
|
- { name: runway, type: string, nullable: true, description: "Optional adopter-owned lifecycle / migration marker. Free string at method level — the schema declares no enum and ships no controlled vocabulary. Adopters MAY declare a per-SDD `feature-runway-vocabulary.yaml` at their SDD root; when present, the canonical builder validates captured values against it and emits a `convention` finding for unknown values. Empty when the adopter does not track migration state. Comparability across SDDs requires ecosystem-level vocabulary alignment as an explicit pre-step. Added in schema 2.2.0." }
|
|
280
280
|
- { name: source_sdd_id, type: string, nullable: true, description: "Originating SDD slug. Populated by the aggregator per ADR 0134." }
|
|
281
281
|
|