@sdd-method/sdd-cli 1.0.0 → 1.1.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 +111 -4
- package/dist/lib/catalogue/aggregate.js.map +1 -1
- package/dist/lib/catalogue/builders/external-system-exemption.d.ts.map +1 -1
- package/dist/lib/catalogue/builders/external-system-exemption.js +32 -3
- package/dist/lib/catalogue/builders/external-system-exemption.js.map +1 -1
- package/dist/lib/catalogue/builders/product-edges.d.ts.map +1 -1
- package/dist/lib/catalogue/builders/product-edges.js +9 -0
- package/dist/lib/catalogue/builders/product-edges.js.map +1 -1
- package/dist/lib/catalogue/builders/product-platform-dependencies.d.ts +12 -0
- package/dist/lib/catalogue/builders/product-platform-dependencies.d.ts.map +1 -1
- package/dist/lib/catalogue/builders/product-platform-dependencies.js +99 -0
- package/dist/lib/catalogue/builders/product-platform-dependencies.js.map +1 -1
- package/dist/lib/catalogue/canonical-schema.yaml +8 -6
- package/dist/lib/catalogue/contract-path-resolution.d.ts +55 -0
- package/dist/lib/catalogue/contract-path-resolution.d.ts.map +1 -0
- package/dist/lib/catalogue/contract-path-resolution.js +149 -0
- package/dist/lib/catalogue/contract-path-resolution.js.map +1 -0
- package/dist/lib/init/ci-workflow.js +16 -7
- package/dist/lib/init/ci-workflow.js.map +1 -1
- package/dist/lib/sync/apply.d.ts +29 -1
- package/dist/lib/sync/apply.d.ts.map +1 -1
- package/dist/lib/sync/apply.js +77 -2
- package/dist/lib/sync/apply.js.map +1 -1
- package/dist/lib/sync/index.d.ts.map +1 -1
- package/dist/lib/sync/index.js +23 -1
- package/dist/lib/sync/index.js.map +1 -1
- package/dist/lib/sync/settings-merge.d.ts +29 -0
- package/dist/lib/sync/settings-merge.d.ts.map +1 -1
- package/dist/lib/sync/settings-merge.js +31 -0
- package/dist/lib/sync/settings-merge.js.map +1 -1
- package/dist/lib/validate/dispatch.d.ts.map +1 -1
- package/dist/lib/validate/dispatch.js +19 -17
- package/dist/lib/validate/dispatch.js.map +1 -1
- package/dist/lib/validate/index.d.ts.map +1 -1
- package/dist/lib/validate/index.js +23 -4
- package/dist/lib/validate/index.js.map +1 -1
- package/dist/verbs/conformance.d.ts.map +1 -1
- package/dist/verbs/conformance.js +3 -2
- package/dist/verbs/conformance.js.map +1 -1
- package/dist/verbs/contracts.d.ts.map +1 -1
- package/dist/verbs/contracts.js +3 -2
- package/dist/verbs/contracts.js.map +1 -1
- package/dist/verbs/generate-briefing.d.ts.map +1 -1
- package/dist/verbs/generate-briefing.js +2 -1
- package/dist/verbs/generate-briefing.js.map +1 -1
- package/dist/verbs/init.d.ts.map +1 -1
- package/dist/verbs/init.js +3 -2
- package/dist/verbs/init.js.map +1 -1
- package/dist/verbs/pack.d.ts.map +1 -1
- package/dist/verbs/pack.js +2 -1
- package/dist/verbs/pack.js.map +1 -1
- package/dist/verbs/path-option.d.ts +22 -0
- package/dist/verbs/path-option.d.ts.map +1 -0
- package/dist/verbs/path-option.js +25 -0
- package/dist/verbs/path-option.js.map +1 -0
- package/dist/verbs/plan.d.ts.map +1 -1
- package/dist/verbs/plan.js +2 -1
- package/dist/verbs/plan.js.map +1 -1
- package/dist/verbs/scaffold.d.ts.map +1 -1
- package/dist/verbs/scaffold.js +2 -1
- package/dist/verbs/scaffold.js.map +1 -1
- package/dist/verbs/sync.d.ts.map +1 -1
- package/dist/verbs/sync.js +2 -1
- package/dist/verbs/sync.js.map +1 -1
- package/dist/verbs/validate.d.ts.map +1 -1
- package/dist/verbs/validate.js +3 -2
- package/dist/verbs/validate.js.map +1 -1
- package/package.json +1 -1
- package/scripts/validate-app-dependencies.sh +378 -58
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"product-edges.js","sourceRoot":"","sources":["../../../../src/lib/catalogue/builders/product-edges.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"product-edges.js","sourceRoot":"","sources":["../../../../src/lib/catalogue/builders/product-edges.ts"],"names":[],"mappings":"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"}
|
|
@@ -16,5 +16,17 @@ export interface ProductPlatformDependenciesBuildInputs {
|
|
|
16
16
|
export declare const ASYNC_CONTRACT_TYPES: ReadonlySet<string>;
|
|
17
17
|
/** True when `contractType` denotes an async shared-stream dependency (M-ADR 0192). */
|
|
18
18
|
export declare function isAsyncContractType(contractType: string): boolean;
|
|
19
|
+
export declare const TARGET_LOCUS_VALUES: ReadonlySet<string>;
|
|
20
|
+
export type TargetLocus = "platform" | "external" | "legacy";
|
|
21
|
+
/**
|
|
22
|
+
* Resolve an entry's target_locus. Invalid values are reported and treated as
|
|
23
|
+
* `platform` — the SAFEST reading, because a platform row is fully validated
|
|
24
|
+
* (FKs, resolution, realiser join); treating an unknown locus as off-platform
|
|
25
|
+
* would silently exempt the row from every check, which is the failure mode
|
|
26
|
+
* this whole field exists to end.
|
|
27
|
+
*/
|
|
28
|
+
export declare function resolveTargetLocus(raw: unknown, findings: {
|
|
29
|
+
add(cat: string, summary: string): void;
|
|
30
|
+
}, where: string): TargetLocus;
|
|
19
31
|
export declare function buildProductPlatformDependencies(inputs: ProductPlatformDependenciesBuildInputs): Promise<CatalogueRow[]>;
|
|
20
32
|
//# sourceMappingURL=product-platform-dependencies.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"product-platform-dependencies.d.ts","sourceRoot":"","sources":["../../../../src/lib/catalogue/builders/product-platform-dependencies.ts"],"names":[],"mappings":"AA4DA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAElD,MAAM,WAAW,sCAAsC;IACrD,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAC;IAC/B,gDAAgD;IAChD,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAID;;;;;;GAMG;AACH,eAAO,MAAM,oBAAoB,EAAE,WAAW,CAAC,MAAM,CAInD,CAAC;AAEH,uFAAuF;AACvF,wBAAgB,mBAAmB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAEjE;
|
|
1
|
+
{"version":3,"file":"product-platform-dependencies.d.ts","sourceRoot":"","sources":["../../../../src/lib/catalogue/builders/product-platform-dependencies.ts"],"names":[],"mappings":"AA4DA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAElD,MAAM,WAAW,sCAAsC;IACrD,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAC;IAC/B,gDAAgD;IAChD,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAID;;;;;;GAMG;AACH,eAAO,MAAM,oBAAoB,EAAE,WAAW,CAAC,MAAM,CAInD,CAAC;AAEH,uFAAuF;AACvF,wBAAgB,mBAAmB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAEjE;AAKD,eAAO,MAAM,mBAAmB,EAAE,WAAW,CAAC,MAAM,CAIlD,CAAC;AAEH,MAAM,MAAM,WAAW,GAAG,UAAU,GAAG,UAAU,GAAG,QAAQ,CAAC;AAE7D;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAChC,GAAG,EAAE,OAAO,EACZ,QAAQ,EAAE;IAAE,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,EACrD,KAAK,EAAE,MAAM,GACZ,WAAW,CASb;AAsFD,wBAAsB,gCAAgC,CACpD,MAAM,EAAE,sCAAsC,GAC7C,OAAO,CAAC,YAAY,EAAE,CAAC,CAgIzB"}
|
|
@@ -74,6 +74,72 @@ export const ASYNC_CONTRACT_TYPES = new Set([
|
|
|
74
74
|
export function isAsyncContractType(contractType) {
|
|
75
75
|
return ASYNC_CONTRACT_TYPES.has(contractType.trim().toLowerCase());
|
|
76
76
|
}
|
|
77
|
+
// M-ADR 0204: closed three-value enum. `platform` (or absent) keeps every
|
|
78
|
+
// pre-0204 behaviour; external/legacy rows target something OFF-platform, carry
|
|
79
|
+
// empty FK columns, and name their target in target_external_system_id instead.
|
|
80
|
+
export const TARGET_LOCUS_VALUES = new Set([
|
|
81
|
+
"platform",
|
|
82
|
+
"external",
|
|
83
|
+
"legacy",
|
|
84
|
+
]);
|
|
85
|
+
/**
|
|
86
|
+
* Resolve an entry's target_locus. Invalid values are reported and treated as
|
|
87
|
+
* `platform` — the SAFEST reading, because a platform row is fully validated
|
|
88
|
+
* (FKs, resolution, realiser join); treating an unknown locus as off-platform
|
|
89
|
+
* would silently exempt the row from every check, which is the failure mode
|
|
90
|
+
* this whole field exists to end.
|
|
91
|
+
*/
|
|
92
|
+
export function resolveTargetLocus(raw, findings, where) {
|
|
93
|
+
const v = String(raw ?? "").trim().toLowerCase();
|
|
94
|
+
if (v === "")
|
|
95
|
+
return "platform";
|
|
96
|
+
if (TARGET_LOCUS_VALUES.has(v))
|
|
97
|
+
return v;
|
|
98
|
+
findings.add("convention", `${where}: invalid target_locus "${v}" (allowed: platform | external | legacy) — treated as platform, so the row stays fully validated`);
|
|
99
|
+
return "platform";
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Emit an off-platform (M-ADR 0204 external|legacy) row. FK columns stay
|
|
103
|
+
* EMPTY — the target is not the platform, so nothing may join or FK-validate
|
|
104
|
+
* against it; the target's identity goes to target_external_system_id (the
|
|
105
|
+
* authored service_id slot, routed). A capability_id present on such an entry
|
|
106
|
+
* is reported and dropped rather than carried: §4.3, and the measured instance
|
|
107
|
+
* where that slot held the product's own feature slug is why.
|
|
108
|
+
* Returns the row id, or null (with a finding) when the entry binds to nothing.
|
|
109
|
+
*/
|
|
110
|
+
function buildOffPlatformRow(inputs, locus, dep, where) {
|
|
111
|
+
const capabilityId = String(dep["capability_id"] ?? "").trim();
|
|
112
|
+
const externalId = String(dep["service_id"] ?? "").trim();
|
|
113
|
+
const contractPath = optString(dep["contract_path"]);
|
|
114
|
+
if (capabilityId !== "") {
|
|
115
|
+
inputs.findings.add("convention", `${where}: target_locus="${locus}" entry carries capability_id="${capabilityId}" — an off-platform target has no platform capability (M-ADR 0204 §4.3); dropped from the row, keep the intent in notes`);
|
|
116
|
+
}
|
|
117
|
+
const keyLeg = externalId !== "" ? externalId : contractPath;
|
|
118
|
+
if (keyLeg === "") {
|
|
119
|
+
inputs.findings.add("convention", `${where}: target_locus="${locus}" entry names neither an external-system id (service_id) nor a contract_path — it binds to nothing and cannot be recorded`);
|
|
120
|
+
return null;
|
|
121
|
+
}
|
|
122
|
+
const consumedBy = dep["consumed_by"];
|
|
123
|
+
const consumedByJoined = Array.isArray(consumedBy)
|
|
124
|
+
? consumedBy.map((v) => String(v).trim()).filter((v) => v !== "").join(",")
|
|
125
|
+
: typeof consumedBy === "string"
|
|
126
|
+
? consumedBy.trim()
|
|
127
|
+
: "";
|
|
128
|
+
return {
|
|
129
|
+
id: `${inputs.productId}__${locus}__${keyLeg}`,
|
|
130
|
+
product_id: inputs.productId,
|
|
131
|
+
target_capability_id: "",
|
|
132
|
+
target_locus: locus,
|
|
133
|
+
target_external_system_id: externalId,
|
|
134
|
+
target_service_id: "",
|
|
135
|
+
target_domain: optString(dep["domain"]),
|
|
136
|
+
contract_type: optString(dep["contract_type"]),
|
|
137
|
+
required_stability: optString(dep["required_stability"]),
|
|
138
|
+
contract_path: contractPath,
|
|
139
|
+
consumed_by_services: consumedByJoined,
|
|
140
|
+
source_sdd_id: "",
|
|
141
|
+
};
|
|
142
|
+
}
|
|
77
143
|
function resolveKeyLeg(serviceId, contractType, contractPath) {
|
|
78
144
|
if (serviceId !== "")
|
|
79
145
|
return { ok: true, keyLeg: serviceId };
|
|
@@ -126,6 +192,21 @@ export async function buildProductPlatformDependencies(inputs) {
|
|
|
126
192
|
if (!d || typeof d !== "object")
|
|
127
193
|
continue;
|
|
128
194
|
const dep = d;
|
|
195
|
+
const locus = resolveTargetLocus(dep["target_locus"], inputs.findings, relPath);
|
|
196
|
+
if (locus !== "platform") {
|
|
197
|
+
const offRow = buildOffPlatformRow(inputs, locus, dep, relPath);
|
|
198
|
+
if (offRow !== null) {
|
|
199
|
+
const claimed = seen.get(String(offRow.id));
|
|
200
|
+
if (claimed !== undefined) {
|
|
201
|
+
inputs.findings.add("divergence", `${relPath}: duplicate platform_dependencies row id="${offRow.id}"`);
|
|
202
|
+
}
|
|
203
|
+
else {
|
|
204
|
+
seen.set(String(offRow.id), "reverse");
|
|
205
|
+
rows.push(offRow);
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
continue;
|
|
209
|
+
}
|
|
129
210
|
const capabilityId = String(dep["capability_id"] ?? "").trim();
|
|
130
211
|
const serviceId = String(dep["service_id"] ?? "").trim();
|
|
131
212
|
const contractType = optString(dep["contract_type"]);
|
|
@@ -167,6 +248,8 @@ export async function buildProductPlatformDependencies(inputs) {
|
|
|
167
248
|
id: rowId,
|
|
168
249
|
product_id: inputs.productId,
|
|
169
250
|
target_capability_id: capabilityId,
|
|
251
|
+
target_locus: "platform",
|
|
252
|
+
target_external_system_id: "",
|
|
170
253
|
target_service_id: serviceId,
|
|
171
254
|
target_domain: optString(dep["domain"]),
|
|
172
255
|
contract_type: contractType,
|
|
@@ -218,6 +301,20 @@ async function readForwardSource(inputs, rows, seen) {
|
|
|
218
301
|
if (!d || typeof d !== "object")
|
|
219
302
|
continue;
|
|
220
303
|
const dep = d;
|
|
304
|
+
const locus = resolveTargetLocus(dep["target_locus"], inputs.findings, FORWARD_REL_PATH);
|
|
305
|
+
if (locus !== "platform") {
|
|
306
|
+
const offRow = buildOffPlatformRow(inputs, locus, dep, FORWARD_REL_PATH);
|
|
307
|
+
if (offRow !== null) {
|
|
308
|
+
if (seen.has(String(offRow.id))) {
|
|
309
|
+
inputs.findings.add("divergence", `${FORWARD_REL_PATH}: duplicate platform_dependencies row id="${offRow.id}"`);
|
|
310
|
+
}
|
|
311
|
+
else {
|
|
312
|
+
seen.set(String(offRow.id), "forward");
|
|
313
|
+
rows.push(offRow);
|
|
314
|
+
}
|
|
315
|
+
}
|
|
316
|
+
continue;
|
|
317
|
+
}
|
|
221
318
|
const capabilityId = String(dep["capability_id"] ?? "").trim();
|
|
222
319
|
const serviceId = String(dep["service_id"] ?? "").trim();
|
|
223
320
|
const contractType = optString(dep["contract_type"]);
|
|
@@ -248,6 +345,8 @@ async function readForwardSource(inputs, rows, seen) {
|
|
|
248
345
|
id: rowId,
|
|
249
346
|
product_id: inputs.productId,
|
|
250
347
|
target_capability_id: capabilityId,
|
|
348
|
+
target_locus: "platform",
|
|
349
|
+
target_external_system_id: "",
|
|
251
350
|
target_service_id: serviceId,
|
|
252
351
|
target_domain: optString(dep["domain"]),
|
|
253
352
|
contract_type: contractType,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"product-platform-dependencies.js","sourceRoot":"","sources":["../../../../src/lib/catalogue/builders/product-platform-dependencies.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"product-platform-dependencies.js","sourceRoot":"","sources":["../../../../src/lib/catalogue/builders/product-platform-dependencies.ts"],"names":[],"mappings":"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"}
|
|
@@ -62,7 +62,7 @@
|
|
|
62
62
|
# Builder contract: see docs/method/methods/catalogue-builder-specification.md.
|
|
63
63
|
# Category taxonomy: see docs/method/methods/product-category-taxonomy.md.
|
|
64
64
|
|
|
65
|
-
schema_version: "3.
|
|
65
|
+
schema_version: "3.1.0"
|
|
66
66
|
schema_owner: "sdd-method"
|
|
67
67
|
schema_status: "canonical"
|
|
68
68
|
# Bump rationale (3.0.0 — BREAKING major, 2026-07-29, per M-ADR 0203): the 2.x line's
|
|
@@ -1255,7 +1255,7 @@ catalogues:
|
|
|
1255
1255
|
- { name: product_id, type: string, nullable: false }
|
|
1256
1256
|
- { name: service_id, type: string, nullable: false }
|
|
1257
1257
|
- { name: role, type: string, nullable: false, description: "consumes." }
|
|
1258
|
-
- { name: required_stability, type: string, nullable: true, description: "provisional | locked." }
|
|
1258
|
+
- { name: required_stability, type: string, nullable: true, description: "provisional | locked | unknown. The consuming SDD's expectation of contract stability, carried verbatim from app-platform-dependencies.yaml. Not a bound enum: an out-of-vocabulary value is carried, not rejected, and is reported by validate-app-dependencies.sh." }
|
|
1259
1259
|
|
|
1260
1260
|
service_contract:
|
|
1261
1261
|
primary_key: id
|
|
@@ -1639,16 +1639,18 @@ catalogues:
|
|
|
1639
1639
|
§"Cross-SDD platform-capability-edge".
|
|
1640
1640
|
foreign_keys:
|
|
1641
1641
|
- { column: product_id, references: products.id, nullable: false }
|
|
1642
|
-
- { column: target_capability_id, references: capabilities.id, nullable:
|
|
1642
|
+
- { column: target_capability_id, references: capabilities.id, nullable: true, external: true }
|
|
1643
1643
|
- { column: target_service_id, references: services.id, nullable: true, external: true }
|
|
1644
1644
|
columns:
|
|
1645
|
-
- { name: id, type: string, nullable: false, description: "{product_id}__{target_capability_id}__{target_service_id}, EXCEPT for async shared-stream rows (M-ADR 0192) where there is no realiser service: the third component falls back to the stream contract_path, i.e. {product_id}__{target_capability_id}__{contract_path}. This keeps the PK stable and collision-free when a product depends on the same capability via two distinct streams." }
|
|
1645
|
+
- { name: id, type: string, nullable: false, description: "{product_id}__{target_capability_id}__{target_service_id}, EXCEPT for async shared-stream rows (M-ADR 0192) where there is no realiser service: the third component falls back to the stream contract_path, i.e. {product_id}__{target_capability_id}__{contract_path}. For OFF-PLATFORM rows (M-ADR 0204, target_locus external|legacy) there is no platform capability either: id = {product_id}__{target_locus}__{target_external_system_id}, falling back to contract_path as the third component when no external-system id is named. This keeps the PK stable and collision-free when a product depends on the same capability via two distinct streams." }
|
|
1646
1646
|
- { name: product_id, type: string, nullable: false, description: "Consuming product (this SDD's product id)." }
|
|
1647
|
-
- { name: target_capability_id, type: string, nullable:
|
|
1647
|
+
- { name: target_capability_id, type: string, nullable: true, description: "Capability the consuming product depends on. Resolves at aggregation against a sibling SDD's capabilities.id; external by definition. Conditionally nullable (M-ADR 0204 §4.3): EMPTY when target_locus is external|legacy — there is no platform capability to name on an off-platform row, and demanding a value is what put a product's own feature slug in this column. A platform-locus row still requires it." }
|
|
1648
|
+
- { name: target_locus, type: string, nullable: true, description: "platform | external | legacy (M-ADR 0204; closed enum, absent/empty = platform). A statement about the TARGET only — never about the consuming product, and never a stability, lifecycle or quality claim. platform rows behave exactly as before this column existed. external/legacy rows carry empty target_capability_id and target_service_id and name their target in target_external_system_id; they skip platform resolution and the F18 realiser-join, with every skip named." }
|
|
1649
|
+
- { name: target_external_system_id, type: string, nullable: true, description: "For target_locus external|legacy rows only: the M-ADR 0189 external-system entry id the dependency targets (authored in the source file's service_id slot; the builder routes it here so the FK columns stay clean). Deliberately NOT a declared FK: corroboration against c4_external_systems is WARNING-severity at aggregation (M-ADR 0204 §4.2), because the C4 surface may legitimately lag discovery, and a declared FK can only fail." }
|
|
1648
1650
|
- { name: target_service_id, type: string, nullable: true, description: "Service identifier the consuming product depends on. Resolves at aggregation against a sibling SDD's services.id; external by definition. The join key the aggregator uses to derive cross_sdd_platform_capability for SYNCHRONOUS dependencies. Conditionally nullable (M-ADR 0192): for an async shared-stream dependency (contract_type in the async set — `event`/`event-stream`/`stream`) there is no single realiser service, so this is empty and the dependency binds to the stream contract_path + target_capability_id instead. A synchronous contract_type still requires it. Made nullable in schema 2.36.0." }
|
|
1649
1651
|
- { name: target_domain, type: string, nullable: true, description: "Domain hint as declared in the consuming SDD's evidence (free-form; reviewer-facing annotation). May be a comma-separated list when the target spans multiple domains." }
|
|
1650
1652
|
- { name: contract_type, type: string, nullable: true, description: "rest | graphql | openapi | grpc | event | event-stream | stream | other. Optional; reflects what the consuming SDD declares. The async set (`event`/`event-stream`/`stream`) marks a shared-stream subscription that binds to a stream contract rather than a realiser service (M-ADR 0192) — such rows skip the F18 synchronous realiser-join at aggregation." }
|
|
1651
|
-
- { name: required_stability, type: string, nullable: true, description: "
|
|
1653
|
+
- { name: required_stability, type: string, nullable: true, description: "provisional | locked | unknown. Optional; the consuming SDD's expectation of contract stability — and only that: where the target lives and what lifecycle its implementation is in are separate concerns that do not belong in this field. Not a bound enum: an out-of-vocabulary value is carried, not rejected, and is reported by validate-app-dependencies.sh." }
|
|
1652
1654
|
- { name: contract_path, type: string, nullable: true, description: "Path to the contract file the dependency is against, as declared in the consuming SDD's evidence. External — resolution happens at aggregation if it happens at all." }
|
|
1653
1655
|
- { name: consumed_by_services, type: string, nullable: true, description: "Comma-separated list of service names within the consuming product that consume the dependency. Free-text; not FK-validated (services are within-product and resolution is owner-side concern)." }
|
|
1654
1656
|
- { name: source_sdd_id, type: string, nullable: true, description: "Originating SDD slug. Populated by the aggregator per M-ADR 0134." }
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import type { FindingsLog } from "./findings.js";
|
|
2
|
+
import type { CatalogueRow } from "./csv-writer.js";
|
|
3
|
+
/** Absolute SDD repo roots by sdd_id — the ecosystem root plus every sibling. */
|
|
4
|
+
export type SddRoots = ReadonlyMap<string, string>;
|
|
5
|
+
export interface ContractPathResolutionSummary {
|
|
6
|
+
/** Declared, path-shaped, and found under exactly one SDD root. */
|
|
7
|
+
readonly resolved: number;
|
|
8
|
+
/** Path-shaped but found under no SDD root — a reference to a missing file. */
|
|
9
|
+
readonly missing: number;
|
|
10
|
+
/** Path-shaped and found under more than one SDD root — never guessed. */
|
|
11
|
+
readonly ambiguous: number;
|
|
12
|
+
/** Declared but not a path at all (`n/a`, prose, a bracketed note). */
|
|
13
|
+
readonly nonPath: number;
|
|
14
|
+
/** No contract_path declared. Not a defect here; check 3a owns that rule. */
|
|
15
|
+
readonly absent: number;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* True when the declared value is shaped like a repo-relative path, as opposed to
|
|
19
|
+
* a sentinel or a prose note.
|
|
20
|
+
*
|
|
21
|
+
* The reverse template types this field `<platform-relative-path-or-unknown>`,
|
|
22
|
+
* which openly admits a non-path value — so `n/a` is the template being followed
|
|
23
|
+
* and free text is that licence stretched. Both are reported, neither is treated
|
|
24
|
+
* as a path, and NEITHER is silently ignored: an unresolvable declaration that
|
|
25
|
+
* nothing mentions is indistinguishable from a resolved one in the output.
|
|
26
|
+
*/
|
|
27
|
+
export declare function isPathShaped(value: string): boolean;
|
|
28
|
+
/**
|
|
29
|
+
* Strip a leading `platform/<name>/` when `<name>` identifies a known SDD — by its
|
|
30
|
+
* sdd_id OR by its directory basename, and the distinction is not cosmetic: an
|
|
31
|
+
* author writing this prefix is reading it off the filesystem, so it is the
|
|
32
|
+
* DIRECTORY they write. In one measured estate every such prefix is
|
|
33
|
+
* `platform/sdd-experience-platform/` while that SDD's declared sdd_id is
|
|
34
|
+
* `experience-platform` — matching on sdd_id alone therefore split nothing and
|
|
35
|
+
* reported 13 existing contracts as missing. Both keys are accepted.
|
|
36
|
+
*
|
|
37
|
+
* That prefix
|
|
38
|
+
* is the estate-relative form authors reached for when the declared
|
|
39
|
+
* platform-root-relative base could not name a sibling's contract. Returns the
|
|
40
|
+
* owning SDD id and the path relative to ITS root, or null when the value carries
|
|
41
|
+
* no such prefix.
|
|
42
|
+
*/
|
|
43
|
+
export declare function splitEstateRelative(value: string, roots: SddRoots): {
|
|
44
|
+
readonly sddId: string;
|
|
45
|
+
readonly relPath: string;
|
|
46
|
+
} | null;
|
|
47
|
+
/**
|
|
48
|
+
* Resolve every declared contract_path against the SDD roots present in this
|
|
49
|
+
* aggregation, emitting one finding per unresolved declaration.
|
|
50
|
+
*
|
|
51
|
+
* `exists` is injected so this is testable without a filesystem, and so the
|
|
52
|
+
* caller owns the stat strategy.
|
|
53
|
+
*/
|
|
54
|
+
export declare function resolveContractPaths(productPlatformDeps: readonly CatalogueRow[], roots: SddRoots, aliases: SddRoots, exists: (absPath: string) => Promise<boolean>, findings: FindingsLog): Promise<ContractPathResolutionSummary>;
|
|
55
|
+
//# sourceMappingURL=contract-path-resolution.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contract-path-resolution.d.ts","sourceRoot":"","sources":["../../../src/lib/catalogue/contract-path-resolution.ts"],"names":[],"mappings":"AA0BA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAEpD,iFAAiF;AACjF,MAAM,MAAM,QAAQ,GAAG,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAEnD,MAAM,WAAW,6BAA6B;IAC5C,mEAAmE;IACnE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,+EAA+E;IAC/E,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,0EAA0E;IAC1E,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,uEAAuE;IACvE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,6EAA6E;IAC7E,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED;;;;;;;;;GASG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAWnD;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,QAAQ,GACd;IAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAO7D;AAED;;;;;;GAMG;AACH,wBAAsB,oBAAoB,CACxC,mBAAmB,EAAE,SAAS,YAAY,EAAE,EAC5C,KAAK,EAAE,QAAQ,EACf,OAAO,EAAE,QAAQ,EACjB,MAAM,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,EAC7C,QAAQ,EAAE,WAAW,GACpB,OAAO,CAAC,6BAA6B,CAAC,CA+ExC"}
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
// Contract-path resolution at aggregation tier (post-3.0.0-followons.md A2 step 5).
|
|
2
|
+
//
|
|
3
|
+
// WHY THIS LIVES AT AGGREGATE TIER AND NOWHERE ELSE
|
|
4
|
+
// `app-platform-dependencies.yaml` declares, per dependency, the contract the
|
|
5
|
+
// consuming app binds to. Both distributed templates say that path is relative
|
|
6
|
+
// to the platform repo root — and in a federation that rule cannot express the
|
|
7
|
+
// truth, because one app's dependencies span several platform SDDs. Measured in
|
|
8
|
+
// a 67-SDD reverse estate: 21 of 152 declared paths name a contract owned by a
|
|
9
|
+
// DIFFERENT platform SDD than the one the app would be validated against, and
|
|
10
|
+
// their authors compensated by prefixing `platform/<sdd-id>/` — writing the
|
|
11
|
+
// truth against a rule that could not hold it.
|
|
12
|
+
//
|
|
13
|
+
// The app-tier gate therefore cannot resolve these at all: given one
|
|
14
|
+
// --platform-root it reports LOCKED UNMET for a contract that exists. That is a
|
|
15
|
+
// false failure of the instrument, and no amount of app-tier cleverness fixes it
|
|
16
|
+
// — the file is in a sibling the app repo cannot see. At aggregate tier every
|
|
17
|
+
// SDD root IS visible, so resolution becomes possible for the first time.
|
|
18
|
+
// Same argument as M-ADR 0198: a join that can span SDDs belongs where the SDDs
|
|
19
|
+
// are all present.
|
|
20
|
+
//
|
|
21
|
+
// WHAT IT DOES NOT DO
|
|
22
|
+
// It does not rewrite anything or pick a winner when a path is ambiguous. An
|
|
23
|
+
// ambiguous path is reported as a divergence and left alone, because guessing
|
|
24
|
+
// which sibling a contract came from is exactly the silent-wrong-answer this
|
|
25
|
+
// whole arc has been removing.
|
|
26
|
+
/**
|
|
27
|
+
* True when the declared value is shaped like a repo-relative path, as opposed to
|
|
28
|
+
* a sentinel or a prose note.
|
|
29
|
+
*
|
|
30
|
+
* The reverse template types this field `<platform-relative-path-or-unknown>`,
|
|
31
|
+
* which openly admits a non-path value — so `n/a` is the template being followed
|
|
32
|
+
* and free text is that licence stretched. Both are reported, neither is treated
|
|
33
|
+
* as a path, and NEITHER is silently ignored: an unresolvable declaration that
|
|
34
|
+
* nothing mentions is indistinguishable from a resolved one in the output.
|
|
35
|
+
*/
|
|
36
|
+
export function isPathShaped(value) {
|
|
37
|
+
const v = value.trim();
|
|
38
|
+
if (v === "" || v === "null")
|
|
39
|
+
return false;
|
|
40
|
+
if (v.toLowerCase().startsWith("n/a"))
|
|
41
|
+
return false;
|
|
42
|
+
if (v.startsWith("["))
|
|
43
|
+
return false;
|
|
44
|
+
// Prose gives itself away with whitespace before the first separator
|
|
45
|
+
// ("Kafka (<vendor> bus): topic-a / topic-b", "Kinesis: <stream-name>").
|
|
46
|
+
const firstSegment = v.split("/")[0] ?? "";
|
|
47
|
+
if (/\s/.test(firstSegment))
|
|
48
|
+
return false;
|
|
49
|
+
// A path must actually have a directory part; a bare token is not a contract path.
|
|
50
|
+
return v.includes("/");
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Strip a leading `platform/<name>/` when `<name>` identifies a known SDD — by its
|
|
54
|
+
* sdd_id OR by its directory basename, and the distinction is not cosmetic: an
|
|
55
|
+
* author writing this prefix is reading it off the filesystem, so it is the
|
|
56
|
+
* DIRECTORY they write. In one measured estate every such prefix is
|
|
57
|
+
* `platform/sdd-experience-platform/` while that SDD's declared sdd_id is
|
|
58
|
+
* `experience-platform` — matching on sdd_id alone therefore split nothing and
|
|
59
|
+
* reported 13 existing contracts as missing. Both keys are accepted.
|
|
60
|
+
*
|
|
61
|
+
* That prefix
|
|
62
|
+
* is the estate-relative form authors reached for when the declared
|
|
63
|
+
* platform-root-relative base could not name a sibling's contract. Returns the
|
|
64
|
+
* owning SDD id and the path relative to ITS root, or null when the value carries
|
|
65
|
+
* no such prefix.
|
|
66
|
+
*/
|
|
67
|
+
export function splitEstateRelative(value, roots) {
|
|
68
|
+
const parts = value.trim().split("/");
|
|
69
|
+
if (parts.length < 3)
|
|
70
|
+
return null;
|
|
71
|
+
if (parts[0] !== "platform")
|
|
72
|
+
return null;
|
|
73
|
+
const sddId = parts[1] ?? "";
|
|
74
|
+
if (!roots.has(sddId))
|
|
75
|
+
return null;
|
|
76
|
+
return { sddId, relPath: parts.slice(2).join("/") };
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Resolve every declared contract_path against the SDD roots present in this
|
|
80
|
+
* aggregation, emitting one finding per unresolved declaration.
|
|
81
|
+
*
|
|
82
|
+
* `exists` is injected so this is testable without a filesystem, and so the
|
|
83
|
+
* caller owns the stat strategy.
|
|
84
|
+
*/
|
|
85
|
+
export async function resolveContractPaths(productPlatformDeps, roots, aliases, exists, findings) {
|
|
86
|
+
let resolved = 0;
|
|
87
|
+
let missing = 0;
|
|
88
|
+
let ambiguous = 0;
|
|
89
|
+
let nonPath = 0;
|
|
90
|
+
let absent = 0;
|
|
91
|
+
// One stat per (root, path) pair at worst. Cached because a shared platform
|
|
92
|
+
// contract is declared by many consumers — in the measured estate the same
|
|
93
|
+
// embedding contract is named by 21 dependencies.
|
|
94
|
+
const cache = new Map();
|
|
95
|
+
const existsCached = async (abs) => {
|
|
96
|
+
const hit = cache.get(abs);
|
|
97
|
+
if (hit !== undefined)
|
|
98
|
+
return hit;
|
|
99
|
+
const got = await exists(abs);
|
|
100
|
+
cache.set(abs, got);
|
|
101
|
+
return got;
|
|
102
|
+
};
|
|
103
|
+
for (const dep of productPlatformDeps) {
|
|
104
|
+
const declared = String(dep["contract_path"] ?? "").trim();
|
|
105
|
+
const who = `${String(dep["source_sdd_id"] ?? "")}/${String(dep["product_id"] ?? "")}`;
|
|
106
|
+
const target = String(dep["target_service_id"] ?? "") ||
|
|
107
|
+
String(dep["target_capability_id"] ?? "") ||
|
|
108
|
+
"(unnamed target)";
|
|
109
|
+
if (declared === "" || declared === "null") {
|
|
110
|
+
absent++;
|
|
111
|
+
continue;
|
|
112
|
+
}
|
|
113
|
+
if (!isPathShaped(declared)) {
|
|
114
|
+
nonPath++;
|
|
115
|
+
findings.add("convention", `contract_path: ${who} → ${target} declares contract_path="${declared}", which is not a path — it cannot be resolved, and the dependency has no verifiable contract`);
|
|
116
|
+
continue;
|
|
117
|
+
}
|
|
118
|
+
const estate = splitEstateRelative(declared, aliases);
|
|
119
|
+
if (estate !== null) {
|
|
120
|
+
const abs = `${aliases.get(estate.sddId)}/${estate.relPath}`;
|
|
121
|
+
if (await existsCached(abs)) {
|
|
122
|
+
resolved++;
|
|
123
|
+
}
|
|
124
|
+
else {
|
|
125
|
+
missing++;
|
|
126
|
+
findings.add("orphan", `contract_path: ${who} → ${target} declares contract_path="${declared}", naming SDD "${estate.sddId}", but no file exists there`);
|
|
127
|
+
}
|
|
128
|
+
continue;
|
|
129
|
+
}
|
|
130
|
+
const hits = [];
|
|
131
|
+
for (const [sddId, root] of roots) {
|
|
132
|
+
if (await existsCached(`${root}/${declared}`))
|
|
133
|
+
hits.push(sddId);
|
|
134
|
+
}
|
|
135
|
+
if (hits.length === 1) {
|
|
136
|
+
resolved++;
|
|
137
|
+
}
|
|
138
|
+
else if (hits.length === 0) {
|
|
139
|
+
missing++;
|
|
140
|
+
findings.add("orphan", `contract_path: ${who} → ${target} declares contract_path="${declared}" but it resolves under none of the ${roots.size} SDD root(s) in this aggregation`);
|
|
141
|
+
}
|
|
142
|
+
else {
|
|
143
|
+
ambiguous++;
|
|
144
|
+
findings.add("divergence", `contract_path: ${who} → ${target} declares contract_path="${declared}", which resolves under ${hits.length} SDD roots (${hits.join(", ")}) — not guessed; qualify the path or name the owning SDD`);
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
return { resolved, missing, ambiguous, nonPath, absent };
|
|
148
|
+
}
|
|
149
|
+
//# sourceMappingURL=contract-path-resolution.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contract-path-resolution.js","sourceRoot":"","sources":["../../../src/lib/catalogue/contract-path-resolution.ts"],"names":[],"mappings":"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"}
|
|
@@ -79,18 +79,27 @@ function renderSddCliJob(jobName, stepDescription, validatorName) {
|
|
|
79
79
|
` node-version: "20"`,
|
|
80
80
|
` - name: Install sdd-cli`,
|
|
81
81
|
// CEILING-PINNED, deliberately. Release policy: a breaking catalogue-schema
|
|
82
|
-
// major ships as a CLI major
|
|
83
|
-
//
|
|
84
|
-
//
|
|
85
|
-
//
|
|
86
|
-
//
|
|
82
|
+
// major ships as a CLI major, so the ceiling blocks exactly one event --
|
|
83
|
+
// the NEXT breaking major reaching every adopter's CI the hour it
|
|
84
|
+
// publishes (measured motivation: 436 unpinned installs across 112
|
|
85
|
+
// workflow files and zero pinned) -- while letting every additive minor
|
|
86
|
+
// and patch through, so it needs no per-release maintenance between
|
|
87
|
+
// majors.
|
|
88
|
+
//
|
|
89
|
+
// The ceiling is one major above THIS CLI, and the render is how an
|
|
90
|
+
// adopter's ceiling moves: syncing with the new major during their own
|
|
91
|
+
// migration window rewrites the workflow with the new ceiling — the
|
|
92
|
+
// deliberate, per-estate move the release notes describe, coupled to the
|
|
93
|
+
// estate's own migration act. (The 3.0.0 cut nearly shipped this line
|
|
94
|
+
// still reading `<1.0.0` FROM the 1.0.0 CLI — a CI pinned below the tool
|
|
95
|
+
// that wrote it, permanently red on the floor check.)
|
|
87
96
|
//
|
|
88
97
|
// The FLOOR is deliberately not pinned here: `minimum_sdd_cli_version` in the
|
|
89
98
|
// baseline manifest owns it, and duplicating it would create a second source
|
|
90
|
-
// of truth that drifts. npm resolves this to the newest
|
|
99
|
+
// of truth that drifts. npm resolves this to the newest 1.x.
|
|
91
100
|
//
|
|
92
101
|
// Quotes are load-bearing -- an unquoted `<` is shell redirection.
|
|
93
|
-
` run: npm install -g "@sdd-method/sdd-cli@<
|
|
102
|
+
` run: npm install -g "@sdd-method/sdd-cli@<2.0.0"`,
|
|
94
103
|
` - name: ${stepDescription}`,
|
|
95
104
|
` run: sdd-cli validate --target-repo . --validator ${validatorName}`,
|
|
96
105
|
];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ci-workflow.js","sourceRoot":"","sources":["../../../src/lib/init/ci-workflow.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAIH,MAAM,CAAC,MAAM,iBAAiB,GAAG,yCAAyC,CAAC;AAC3E,MAAM,CAAC,MAAM,WAAW,GAAG,yBAAyB,CAAC;AACrD,MAAM,CAAC,MAAM,SAAS,GAAG,uBAAuB,CAAC;AAEjD;;;GAGG;AACH,MAAM,UAAU,8BAA8B,CAAC,OAAgB;IAC7D,MAAM,WAAW,GAAG,uBAAuB,CAAC,OAAO,CAAC,CAAC;IACrD,OAAO,WAAW,GAAG,oKAAoK,CAAC;AAC5L,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,gCAAgC,CAAC,OAAgB;IAC/D,OAAO,uBAAuB,CAAC,OAAO,CAAC,CAAC;AAC1C,CAAC;AAED,SAAS,uBAAuB,CAAC,OAAgB;IAC/C,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACxB,KAAK,CAAC,IAAI,CACR,wDAAwD,EACxD,kEAAkE,EAClE,6EAA6E,EAC7E,cAAc,OAAO,EAAE,EACvB,EAAE,EACF,yBAAyB,EACzB,EAAE,EACF,KAAK,EACL,iBAAiB,EACjB,SAAS,EACT,8BAA8B,EAC9B,sBAAsB,EACtB,EAAE,EACF,OAAO,CACR,CAAC;IAEF,8EAA8E;IAC9E,KAAK,CAAC,IAAI,CACR,GAAG,eAAe,CAAC,wBAAwB,EAAE,uBAAuB,EAAE,eAAe,CAAC,EACtF,GAAG,eAAe,CAAC,yBAAyB,EAAE,yBAAyB,EAAE,gBAAgB,CAAC,EAC1F,GAAG,eAAe,CAAC,sBAAsB,EAAE,4BAA4B,EAAE,aAAa,CAAC,CACxF,CAAC;IAEF,IAAI,OAAO,KAAK,UAAU,EAAE,CAAC;QAC3B,KAAK,CAAC,IAAI,CACR,GAAG,eAAe,CAAC,uBAAuB,EAAE,uBAAuB,EAAE,cAAc,CAAC,EACpF,GAAG,eAAe,CAAC,gCAAgC,EAAE,gCAAgC,EAAE,uBAAuB,CAAC,EAC/G,GAAG,eAAe,CAAC,6BAA6B,EAAE,6BAA6B,EAAE,oBAAoB,CAAC,EACtG,GAAG,eAAe,CAAC,iBAAiB,EAAE,wBAAwB,EAAE,QAAQ,CAAC,EACzE,GAAG,aAAa,CACd,+BAA+B,EAC/B,+BAA+B,EAC/B,iEAAiE,CAClE,EACD,GAAG,aAAa,CACd,iCAAiC,EACjC,iCAAiC,EACjC,+DAA+D,CAChE,CACF,CAAC;IACJ,CAAC;SAAM,IAAI,OAAO,KAAK,aAAa,EAAE,CAAC;QACrC,KAAK,CAAC,IAAI,CACR,GAAG,eAAe,CAAC,mBAAmB,EAAE,4BAA4B,EAAE,UAAU,CAAC,CAClF,CAAC;IACJ,CAAC;SAAM,IAAI,OAAO,KAAK,aAAa,EAAE,CAAC;QACrC,KAAK,CAAC,IAAI,CACR,GAAG,eAAe,CAAC,2BAA2B,EAAE,oCAAoC,EAAE,kBAAkB,CAAC,CAC1G,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAEtB,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,YAAY,GAAsB;IACtC,+BAA+B;IAC/B,6EAA6E;CAC9E,CAAC;AAEF,SAAS,eAAe,CACtB,OAAe,EACf,eAAuB,EACvB,aAAqB;IAErB,OAAO;QACL,EAAE;QACF,KAAK,OAAO,GAAG;QACf,4BAA4B;QAC5B,YAAY;QACZ,mCAAmC;QACnC,GAAG,YAAY;QACf,qCAAqC;QACrC,eAAe;QACf,8BAA8B;QAC9B,+BAA+B;QAC/B,4EAA4E;QAC5E,
|
|
1
|
+
{"version":3,"file":"ci-workflow.js","sourceRoot":"","sources":["../../../src/lib/init/ci-workflow.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/sync/apply.d.ts
CHANGED
|
@@ -1,3 +1,31 @@
|
|
|
1
1
|
export declare function copyManagedFiles(incomingPaths: readonly string[], payloadDir: string, targetRepo: string): Promise<void>;
|
|
2
|
-
|
|
2
|
+
/**
|
|
3
|
+
* Withdraw method-managed files, then remove the directories the withdrawal
|
|
4
|
+
* itself emptied.
|
|
5
|
+
*
|
|
6
|
+
* Without the second half, `sync` left the skeleton of everything it had ever
|
|
7
|
+
* shipped behind: measured 156 empty directories across 13 reverse-estate repos
|
|
8
|
+
* (12 `docs/method/methods/skills/reverse-*` dirs each, from the v2.3.0 wave
|
|
9
|
+
* moving reverse skills out of the forward bases). Git does not track empty
|
|
10
|
+
* directories, so no commit ever carries them and no diff ever shows them —
|
|
11
|
+
* they are invisible to review and live only in working copies, which is exactly
|
|
12
|
+
* why they accumulated unnoticed.
|
|
13
|
+
*
|
|
14
|
+
* TWO CONDITIONS, and the second is the one that matters. A directory is pruned
|
|
15
|
+
* only if it is (1) empty, and (2) DERIVED FROM THE WITHDRAWAL SET — that is, it
|
|
16
|
+
* is an ancestor directory of a path this call actually removed. Emptiness alone
|
|
17
|
+
* is not sufficient: an adopter's own empty directory that happens to sit beside
|
|
18
|
+
* the withdrawal tree is not ours to delete, and deleting it would be an
|
|
19
|
+
* unrecoverable side effect of a sync that was asked only to withdraw files.
|
|
20
|
+
* The walk stops at the first directory failing either condition, so a parent
|
|
21
|
+
* that still holds adopter content survives with its remaining entries intact —
|
|
22
|
+
* the real-world shape being 12 emptied `reverse-*` dirs beside 3 populated
|
|
23
|
+
* non-reverse skills under one `skills/` parent, where the walk must stop at
|
|
24
|
+
* `skills/`.
|
|
25
|
+
*
|
|
26
|
+
* Returns the pruned directories, repo-relative and deepest-first, so the caller
|
|
27
|
+
* reports each one. A pruned directory is an action taken on an adopter's tree,
|
|
28
|
+
* and this codebase does not take silent actions.
|
|
29
|
+
*/
|
|
30
|
+
export declare function removeManagedFiles(paths: readonly string[], targetRepo: string): Promise<readonly string[]>;
|
|
3
31
|
//# sourceMappingURL=apply.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"apply.d.ts","sourceRoot":"","sources":["../../../src/lib/sync/apply.ts"],"names":[],"mappings":"AAGA,wBAAsB,gBAAgB,CACpC,aAAa,EAAE,SAAS,MAAM,EAAE,EAChC,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,IAAI,CAAC,CAOf;AAED,wBAAsB,kBAAkB,CACtC,KAAK,EAAE,SAAS,MAAM,EAAE,EACxB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,
|
|
1
|
+
{"version":3,"file":"apply.d.ts","sourceRoot":"","sources":["../../../src/lib/sync/apply.ts"],"names":[],"mappings":"AAGA,wBAAsB,gBAAgB,CACpC,aAAa,EAAE,SAAS,MAAM,EAAE,EAChC,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,IAAI,CAAC,CAOf;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAsB,kBAAkB,CACtC,KAAK,EAAE,SAAS,MAAM,EAAE,EACxB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,SAAS,MAAM,EAAE,CAAC,CAsD5B"}
|