@sdd-method/sdd-cli 1.6.0 → 1.8.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 (61) hide show
  1. package/dist/lib/catalogue/build.js +13 -0
  2. package/dist/lib/catalogue/build.js.map +1 -1
  3. package/dist/lib/catalogue/builders/capability-spec.d.ts.map +1 -1
  4. package/dist/lib/catalogue/builders/capability-spec.js +21 -10
  5. package/dist/lib/catalogue/builders/capability-spec.js.map +1 -1
  6. package/dist/lib/catalogue/builders/quality-scores.d.ts +9 -0
  7. package/dist/lib/catalogue/builders/quality-scores.d.ts.map +1 -1
  8. package/dist/lib/catalogue/builders/quality-scores.js +37 -2
  9. package/dist/lib/catalogue/builders/quality-scores.js.map +1 -1
  10. package/dist/lib/catalogue/canonical-schema.yaml +6 -5
  11. package/dist/lib/catalogue/coverage-render.d.ts.map +1 -1
  12. package/dist/lib/catalogue/coverage-render.js +9 -0
  13. package/dist/lib/catalogue/coverage-render.js.map +1 -1
  14. package/dist/lib/catalogue/coverage-run.d.ts.map +1 -1
  15. package/dist/lib/catalogue/coverage-run.js +6 -0
  16. package/dist/lib/catalogue/coverage-run.js.map +1 -1
  17. package/dist/lib/catalogue/scores-coverage.d.ts +8 -0
  18. package/dist/lib/catalogue/scores-coverage.d.ts.map +1 -1
  19. package/dist/lib/catalogue/scores-coverage.js +4 -1
  20. package/dist/lib/catalogue/scores-coverage.js.map +1 -1
  21. package/dist/lib/catalogue/staleness-verdicts.d.ts +27 -0
  22. package/dist/lib/catalogue/staleness-verdicts.d.ts.map +1 -0
  23. package/dist/lib/catalogue/staleness-verdicts.js +174 -0
  24. package/dist/lib/catalogue/staleness-verdicts.js.map +1 -0
  25. package/dist/lib/lock-file.d.ts +9 -0
  26. package/dist/lib/lock-file.d.ts.map +1 -1
  27. package/dist/lib/lock-file.js +16 -0
  28. package/dist/lib/lock-file.js.map +1 -1
  29. package/dist/lib/mcp/prompts/propose-adr.d.ts +1 -1
  30. package/dist/lib/mcp/prompts/propose-adr.js +3 -3
  31. package/dist/lib/mcp/prompts/propose-adr.js.map +1 -1
  32. package/dist/lib/pack/builder.d.ts +7 -0
  33. package/dist/lib/pack/builder.d.ts.map +1 -1
  34. package/dist/lib/pack/builder.js +6 -0
  35. package/dist/lib/pack/builder.js.map +1 -1
  36. package/dist/lib/pack/index.d.ts.map +1 -1
  37. package/dist/lib/pack/index.js +19 -0
  38. package/dist/lib/pack/index.js.map +1 -1
  39. package/dist/lib/pack/reference-closure.d.ts +44 -0
  40. package/dist/lib/pack/reference-closure.d.ts.map +1 -0
  41. package/dist/lib/pack/reference-closure.js +125 -0
  42. package/dist/lib/pack/reference-closure.js.map +1 -0
  43. package/dist/lib/sync/index.d.ts +11 -0
  44. package/dist/lib/sync/index.d.ts.map +1 -1
  45. package/dist/lib/sync/index.js +70 -11
  46. package/dist/lib/sync/index.js.map +1 -1
  47. package/dist/lib/validate/bundle-coherence.d.ts +10 -0
  48. package/dist/lib/validate/bundle-coherence.d.ts.map +1 -0
  49. package/dist/lib/validate/bundle-coherence.js +69 -0
  50. package/dist/lib/validate/bundle-coherence.js.map +1 -0
  51. package/dist/lib/validate/dispatch.d.ts +10 -0
  52. package/dist/lib/validate/dispatch.d.ts.map +1 -1
  53. package/dist/lib/validate/dispatch.js +25 -0
  54. package/dist/lib/validate/dispatch.js.map +1 -1
  55. package/dist/lib/validate/runner.d.ts.map +1 -1
  56. package/dist/lib/validate/runner.js +19 -0
  57. package/dist/lib/validate/runner.js.map +1 -1
  58. package/dist/verbs/sync.d.ts.map +1 -1
  59. package/dist/verbs/sync.js +8 -0
  60. package/dist/verbs/sync.js.map +1 -1
  61. package/package.json +1 -1
@@ -1,5 +1,6 @@
1
1
  import { relative } from "node:path";
2
2
  import { type LeakageResult } from "./leakage.js";
3
+ import { type ReferenceClosureResult } from "./reference-closure.js";
3
4
  import type { PackSeed } from "./seed.js";
4
5
  /**
5
6
  * Produces an adopter-pack tarball from a seed. Per ADR 0151 + the
@@ -65,6 +66,12 @@ export interface BuildResult {
65
66
  * On leakage violation the builder throws before producing a tarball.
66
67
  */
67
68
  leakage: LeakageResult;
69
+ /**
70
+ * Reference closure over the published payload (M-ADR 0151 §4.6).
71
+ * Reporting-only: a subset pack declares its unresolvable-reference
72
+ * count rather than gating on it.
73
+ */
74
+ referenceClosure: ReferenceClosureResult;
68
75
  }
69
76
  export declare function buildPack(opts: BuildOptions): Promise<BuildResult>;
70
77
  export { relative as relativePath };
@@ -1 +1 @@
1
- {"version":3,"file":"builder.d.ts","sourceRoot":"","sources":["../../../src/lib/pack/builder.ts"],"names":[],"mappings":"AAaA,OAAO,EAAiB,QAAQ,EAAE,MAAM,WAAW,CAAC;AAEpD,OAAO,EAAgB,KAAK,aAAa,EAAE,MAAM,cAAc,CAAC;AAEhE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAI1C;;;;;;;;;;;;GAYG;AAEH,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,QAAQ,CAAC;IACf;;;;OAIG;IACH,YAAY,EAAE,MAAM,CAAC;IACrB;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;OAIG;IACH,2BAA2B,CAAC,EAAE,MAAM,CAAC;IACrC;;;;;;;OAOG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B;;;;;OAKG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,WAAW;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,gBAAgB,EAAE,MAAM,CAAC;IACzB;;;OAGG;IACH,OAAO,EAAE,aAAa,CAAC;CACxB;AAED,wBAAsB,SAAS,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC,CAiHxE;AA6ND,OAAO,EAAE,QAAQ,IAAI,YAAY,EAAE,CAAC"}
1
+ {"version":3,"file":"builder.d.ts","sourceRoot":"","sources":["../../../src/lib/pack/builder.ts"],"names":[],"mappings":"AAaA,OAAO,EAAiB,QAAQ,EAAE,MAAM,WAAW,CAAC;AAEpD,OAAO,EAAgB,KAAK,aAAa,EAAE,MAAM,cAAc,CAAC;AAEhE,OAAO,EAEL,KAAK,sBAAsB,EAC5B,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAI1C;;;;;;;;;;;;GAYG;AAEH,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,QAAQ,CAAC;IACf;;;;OAIG;IACH,YAAY,EAAE,MAAM,CAAC;IACrB;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;OAIG;IACH,2BAA2B,CAAC,EAAE,MAAM,CAAC;IACrC;;;;;;;OAOG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B;;;;;OAKG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,WAAW;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,gBAAgB,EAAE,MAAM,CAAC;IACzB;;;OAGG;IACH,OAAO,EAAE,aAAa,CAAC;IACvB;;;;OAIG;IACH,gBAAgB,EAAE,sBAAsB,CAAC;CAC1C;AAED,wBAAsB,SAAS,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC,CAuHxE;AA6ND,OAAO,EAAE,QAAQ,IAAI,YAAY,EAAE,CAAC"}
@@ -6,6 +6,7 @@ import { dirname, join, relative } from "node:path";
6
6
  import { promisify } from "node:util";
7
7
  import { checkLeakage } from "./leakage.js";
8
8
  import { applyPublishTransform } from "./publish-transform.js";
9
+ import { checkReferenceClosure, } from "./reference-closure.js";
9
10
  const execFile = promisify(execFileCb);
10
11
  export async function buildPack(opts) {
11
12
  const packName = opts.packName ?? derivePackName(opts.seed.sourcePath);
@@ -61,6 +62,10 @@ export async function buildPack(opts) {
61
62
  }
62
63
  publishedPaths = transform.keptPaths;
63
64
  }
65
+ // 3c. Reference closure (M-ADR 0151 §4.6) — reporting-only, by design:
66
+ // a subset pack cannot satisfy closure without ceasing to be a subset,
67
+ // so it declares its unresolvable-reference count instead of gating.
68
+ const referenceClosure = await checkReferenceClosure(payload, publishedPaths);
64
69
  // 4. Checksums (over the published payload)
65
70
  const checksums = await computeChecksums(payload, publishedPaths);
66
71
  // 5. Manifest + managed_paths + checksums files
@@ -92,6 +97,7 @@ export async function buildPack(opts) {
92
97
  bundleVersion: `v${opts.seed.version}`,
93
98
  managedPathCount: publishedPaths.length,
94
99
  leakage,
100
+ referenceClosure,
95
101
  };
96
102
  }
97
103
  finally {
@@ -1 +1 @@
1
- {"version":3,"file":"builder.js","sourceRoot":"","sources":["../../../src/lib/pack/builder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"builder.js","sourceRoot":"","sources":["../../../src/lib/pack/builder.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/pack/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,KAAK,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3D,OAAO,EAAgB,KAAK,eAAe,EAAE,MAAM,aAAa,CAAC;AAIjE;;;GAGG;AAEH,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,2BAA2B,CAAC,EAAE,MAAM,CAAC;IACrC;;;;;;OAMG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B;;;;;OAKG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,WAAW,CAAC;CACrB;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,eAAe,EAAE,CAAC;CAC3B;AAID,wBAAsB,YAAY,CAChC,IAAI,EAAE,gBAAgB,EACtB,MAAM,GAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAqC,GAC3D,OAAO,CAAC,eAAe,CAAC,CA6E1B;AAED,wBAAsB,eAAe,CACnC,IAAI,EAAE,mBAAmB,EACzB,MAAM,GAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAqC,GAC3D,OAAO,CAAC,kBAAkB,CAAC,CAkD7B"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/pack/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,KAAK,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3D,OAAO,EAAgB,KAAK,eAAe,EAAE,MAAM,aAAa,CAAC;AAIjE;;;GAGG;AAEH,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,2BAA2B,CAAC,EAAE,MAAM,CAAC;IACrC;;;;;;OAMG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B;;;;;OAKG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,WAAW,CAAC;CACrB;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,eAAe,EAAE,CAAC;CAC3B;AAID,wBAAsB,YAAY,CAChC,IAAI,EAAE,gBAAgB,EACtB,MAAM,GAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAqC,GAC3D,OAAO,CAAC,eAAe,CAAC,CAuG1B;AAED,wBAAsB,eAAe,CACnC,IAAI,EAAE,mBAAmB,EACzB,MAAM,GAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAqC,GAC3D,OAAO,CAAC,kBAAkB,CAAC,CAkD7B"}
@@ -62,6 +62,25 @@ export async function runPackBuild(opts, stdout = (s) => process.stdout.write(s)
62
62
  stdout(info(`Tarball: ${result.tarballPath}`));
63
63
  stdout(info(`Checksum: ${result.checksumPath}`));
64
64
  stdout(info(`Managed paths in bundle: ${result.managedPathCount}`));
65
+ // Reference closure (M-ADR 0151 §4.6): stated at every cut so the pack
66
+ // DECLARES what resolves only in the producer, instead of a consumer
67
+ // discovering it by resolving the corpus after distribution.
68
+ const rc = result.referenceClosure;
69
+ if (rc.unresolvable === 0) {
70
+ stdout(pass(`Reference closure: all ${rc.totalReferences} payload reference(s) resolve within the pack`));
71
+ }
72
+ else {
73
+ stdout(info(`Reference closure (M-ADR 0151 §4.6): ${rc.unresolvable} of ${rc.totalReferences} ` +
74
+ `payload reference(s) resolve only in the producer, across ${rc.unresolvableTargets.length} ` +
75
+ `distinct target(s) — informational in member repos by policy, not a defect. ` +
76
+ `Expand the seeds to shrink this figure.`));
77
+ for (const t of rc.unresolvableTargets.slice(0, 10)) {
78
+ stdout(info(` → ${t}`));
79
+ }
80
+ if (rc.unresolvableTargets.length > 10) {
81
+ stdout(info(` … and ${rc.unresolvableTargets.length - 10} more`));
82
+ }
83
+ }
65
84
  return { exitCode: 0, build: result };
66
85
  }
67
86
  export async function runPackValidate(opts, stdout = (s) => process.stdout.write(s)) {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/pack/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/pack/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,44 @@
1
+ /**
2
+ * Reference-closure reporter — M-ADR 0151 §4.6.
3
+ *
4
+ * A context pack ships a SUBSET of its producer's corpus, so payload
5
+ * documents may reference files the pack does not carry. Policy: a link
6
+ * resolves in the repository that OWNS the document; a distributed copy
7
+ * referencing the wider corpus is informational. This reporter makes the
8
+ * property VISIBLE at cut time — the pack declares "ships N references
9
+ * that resolve only in the producer" instead of a consumer discovering it
10
+ * by resolving the whole corpus after distribution.
11
+ *
12
+ * Reporting-only, by design: the deliberate asymmetry with method-baseline
13
+ * bundles, whose seed lists ship whole corpora and therefore carry closure
14
+ * ENFORCEMENT (validate-link-closure.sh). A subset cannot satisfy closure
15
+ * without ceasing to be a subset.
16
+ *
17
+ * Parser hardening comes from the estate that measured this problem — the
18
+ * four traps their link audit hit are this module's controls: markdown
19
+ * targets containing SPACES (unencoded paths must not truncate at the first
20
+ * space), targets containing PARENTHESES (balance them; "…(ReBAC).md" broke
21
+ * every naive regex), URL-ENCODED targets (%20, %3A… decode before
22
+ * resolving), and never scanning outside the payload set (no cache dirs —
23
+ * guaranteed here by construction, since only staged payload paths are read).
24
+ */
25
+ export interface ReferenceClosureResult {
26
+ /** Total link occurrences examined (internal targets only). */
27
+ readonly totalReferences: number;
28
+ /** Occurrences whose target is not in the payload. */
29
+ readonly unresolvable: number;
30
+ /** Distinct payload-relative targets that failed to resolve, sorted. */
31
+ readonly unresolvableTargets: readonly string[];
32
+ }
33
+ /**
34
+ * Extract markdown link targets from one document. Handles `[text](target)`
35
+ * and `![alt](target)` with BALANCED parentheses inside the target, the
36
+ * `](<target>)` angle form, and `](target "title")` suffixes.
37
+ */
38
+ export declare function extractLinkTargets(content: string): string[];
39
+ /**
40
+ * Resolve every markdown link in the payload's .md files against the
41
+ * payload's own file set.
42
+ */
43
+ export declare function checkReferenceClosure(payloadRoot: string, payloadPaths: readonly string[]): Promise<ReferenceClosureResult>;
44
+ //# sourceMappingURL=reference-closure.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reference-closure.d.ts","sourceRoot":"","sources":["../../../src/lib/pack/reference-closure.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAMH,MAAM,WAAW,sBAAsB;IACrC,+DAA+D;IAC/D,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,sDAAsD;IACtD,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,wEAAwE;IACxE,QAAQ,CAAC,mBAAmB,EAAE,SAAS,MAAM,EAAE,CAAC;CACjD;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAgC5D;AAUD;;;GAGG;AACH,wBAAsB,qBAAqB,CACzC,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE,SAAS,MAAM,EAAE,GAC9B,OAAO,CAAC,sBAAsB,CAAC,CAqCjC"}
@@ -0,0 +1,125 @@
1
+ /**
2
+ * Reference-closure reporter — M-ADR 0151 §4.6.
3
+ *
4
+ * A context pack ships a SUBSET of its producer's corpus, so payload
5
+ * documents may reference files the pack does not carry. Policy: a link
6
+ * resolves in the repository that OWNS the document; a distributed copy
7
+ * referencing the wider corpus is informational. This reporter makes the
8
+ * property VISIBLE at cut time — the pack declares "ships N references
9
+ * that resolve only in the producer" instead of a consumer discovering it
10
+ * by resolving the whole corpus after distribution.
11
+ *
12
+ * Reporting-only, by design: the deliberate asymmetry with method-baseline
13
+ * bundles, whose seed lists ship whole corpora and therefore carry closure
14
+ * ENFORCEMENT (validate-link-closure.sh). A subset cannot satisfy closure
15
+ * without ceasing to be a subset.
16
+ *
17
+ * Parser hardening comes from the estate that measured this problem — the
18
+ * four traps their link audit hit are this module's controls: markdown
19
+ * targets containing SPACES (unencoded paths must not truncate at the first
20
+ * space), targets containing PARENTHESES (balance them; "…(ReBAC).md" broke
21
+ * every naive regex), URL-ENCODED targets (%20, %3A… decode before
22
+ * resolving), and never scanning outside the payload set (no cache dirs —
23
+ * guaranteed here by construction, since only staged payload paths are read).
24
+ */
25
+ import { readFile } from "node:fs/promises";
26
+ import { join } from "node:path";
27
+ import { posix } from "node:path";
28
+ /**
29
+ * Extract markdown link targets from one document. Handles `[text](target)`
30
+ * and `![alt](target)` with BALANCED parentheses inside the target, the
31
+ * `](<target>)` angle form, and `](target "title")` suffixes.
32
+ */
33
+ export function extractLinkTargets(content) {
34
+ const targets = [];
35
+ let i = 0;
36
+ for (;;) {
37
+ const at = content.indexOf("](", i);
38
+ if (at === -1)
39
+ break;
40
+ let j = at + 2;
41
+ let target;
42
+ if (content[j] === "<") {
43
+ const close = content.indexOf(">", j + 1);
44
+ if (close === -1)
45
+ break;
46
+ target = content.slice(j + 1, close);
47
+ i = close + 1;
48
+ }
49
+ else {
50
+ let depth = 1;
51
+ const start = j;
52
+ while (j < content.length && depth > 0) {
53
+ const c = content[j];
54
+ if (c === "(")
55
+ depth += 1;
56
+ else if (c === ")")
57
+ depth -= 1;
58
+ if (depth > 0)
59
+ j += 1;
60
+ }
61
+ if (depth !== 0)
62
+ break;
63
+ target = content.slice(start, j);
64
+ i = j + 1;
65
+ }
66
+ // Strip a `"title"` suffix (markdown allows `](url "title")`).
67
+ const title = target.match(/^(.*\S)\s+"[^"]*"$/s);
68
+ if (title)
69
+ target = title[1];
70
+ targets.push(target.trim());
71
+ }
72
+ return targets;
73
+ }
74
+ function decodeTarget(raw) {
75
+ try {
76
+ return decodeURIComponent(raw);
77
+ }
78
+ catch {
79
+ return undefined; // malformed escape — count as unresolvable via caller
80
+ }
81
+ }
82
+ /**
83
+ * Resolve every markdown link in the payload's .md files against the
84
+ * payload's own file set.
85
+ */
86
+ export async function checkReferenceClosure(payloadRoot, payloadPaths) {
87
+ const inPayload = new Set(payloadPaths.map((p) => posix.normalize(p)));
88
+ let total = 0;
89
+ let unresolvable = 0;
90
+ const misses = new Set();
91
+ for (const p of payloadPaths) {
92
+ if (!p.endsWith(".md"))
93
+ continue;
94
+ const content = await readFile(join(payloadRoot, p), "utf-8");
95
+ const dir = posix.dirname(p);
96
+ for (const rawTarget of extractLinkTargets(content)) {
97
+ // External and non-file targets are out of scope.
98
+ if (/^[a-z][a-z0-9+.-]*:/i.test(rawTarget))
99
+ continue; // http:, mailto:, …
100
+ const withoutAnchor = rawTarget.split("#")[0];
101
+ if (withoutAnchor === "")
102
+ continue; // pure anchor
103
+ const decoded = decodeTarget(withoutAnchor);
104
+ total += 1;
105
+ if (decoded === undefined) {
106
+ unresolvable += 1;
107
+ misses.add(rawTarget);
108
+ continue;
109
+ }
110
+ const resolved = decoded.startsWith("/")
111
+ ? posix.normalize(decoded.slice(1))
112
+ : posix.normalize(posix.join(dir, decoded));
113
+ if (!inPayload.has(resolved)) {
114
+ unresolvable += 1;
115
+ misses.add(resolved);
116
+ }
117
+ }
118
+ }
119
+ return {
120
+ totalReferences: total,
121
+ unresolvable,
122
+ unresolvableTargets: [...misses].sort(),
123
+ };
124
+ }
125
+ //# sourceMappingURL=reference-closure.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reference-closure.js","sourceRoot":"","sources":["../../../src/lib/pack/reference-closure.ts"],"names":[],"mappings":"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"}
@@ -16,6 +16,17 @@ export interface SyncOptions {
16
16
  * resolve the default (`claude-code`) before calling in.
17
17
  */
18
18
  agentHarness?: AgentHarness;
19
+ /**
20
+ * Bundle MIGRATION (M-ADR 0151 §4.4's sanctioned inverse): the named
21
+ * bundle's lock block is dropped and its paths released to the incoming
22
+ * bundle in the same lock write. Paths the old bundle managed that the
23
+ * incoming bundle does not claim are removed as orphans (respecting
24
+ * `delete: false`). Requires `yes` outside dry-run — the three-way
25
+ * split (shared / arriving / orphaned) is always printed first.
26
+ */
27
+ replaceBundle?: string;
28
+ /** Confirmation for `replaceBundle` outside dry-run. */
29
+ yes?: boolean;
19
30
  }
20
31
  export interface SyncResult {
21
32
  exitCode: number;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/sync/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAc,KAAK,cAAc,EAAE,MAAM,cAAc,CAAC;AAE/D,OAAO,EAUL,KAAK,QAAQ,EACd,MAAM,iBAAiB,CAAC;AAiCzB,OAAO,EAAyB,KAAK,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAmB/E,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,OAAO,CAAC;IAChB,cAAc,EAAE,OAAO,CAAC;IACxB,MAAM,EAAE,OAAO,CAAC;IAChB;;;;;;;OAOG;IACH,YAAY,CAAC,EAAE,YAAY,CAAC;CAC7B;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAgDD,wBAAsB,OAAO,CAC3B,IAAI,EAAE,WAAW,EACjB,MAAM,GAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAA2C,GACpE,OAAO,CAAC,UAAU,CAAC,CAglBrB;AA2BD;;;;;;;;;GASG;AACH,wBAAgB,yBAAyB,CACvC,QAAQ,EAAE,cAAc,EACxB,iBAAiB,CAAC,EAAE,MAAM,GACzB,MAAM,GAAG,IAAI,CAUf;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,QAAQ,GAAG,IAAI,EACzB,QAAQ,EAAE;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,cAAc,EAAE,MAAM,CAAA;CAAE,EACpD,kBAAkB,EAAE,MAAM,GACzB,MAAM,GAAG,IAAI,CAqBf;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,QAAQ,GAAG,IAAI,EACzB,QAAQ,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,EAC3C,kBAAkB,EAAE,MAAM,GACzB,MAAM,GAAG,IAAI,CAef;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAkCtE"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/sync/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAc,KAAK,cAAc,EAAE,MAAM,cAAc,CAAC;AAE/D,OAAO,EAWL,KAAK,QAAQ,EACd,MAAM,iBAAiB,CAAC;AAiCzB,OAAO,EAAyB,KAAK,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAmB/E,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,OAAO,CAAC;IAChB,cAAc,EAAE,OAAO,CAAC;IACxB,MAAM,EAAE,OAAO,CAAC;IAChB;;;;;;;OAOG;IACH,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B;;;;;;;OAOG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,wDAAwD;IACxD,GAAG,CAAC,EAAE,OAAO,CAAC;CACf;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAgDD,wBAAsB,OAAO,CAC3B,IAAI,EAAE,WAAW,EACjB,MAAM,GAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAA2C,GACpE,OAAO,CAAC,UAAU,CAAC,CA6qBrB;AA2BD;;;;;;;;;GASG;AACH,wBAAgB,yBAAyB,CACvC,QAAQ,EAAE,cAAc,EACxB,iBAAiB,CAAC,EAAE,MAAM,GACzB,MAAM,GAAG,IAAI,CAUf;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,QAAQ,GAAG,IAAI,EACzB,QAAQ,EAAE;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,cAAc,EAAE,MAAM,CAAA;CAAE,EACpD,kBAAkB,EAAE,MAAM,GACzB,MAAM,GAAG,IAAI,CAqBf;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,QAAQ,GAAG,IAAI,EACzB,QAAQ,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,EAC3C,kBAAkB,EAAE,MAAM,GACzB,MAAM,GAAG,IAAI,CAef;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAkCtE"}
@@ -2,7 +2,7 @@ import { createHash } from "node:crypto";
2
2
  import { access, readFile } from "node:fs/promises";
3
3
  import { loadBundle } from "../bundle.js";
4
4
  import { getPackageVersion } from "../package-version.js";
5
- import { LOCK_VERSION, findBundle, findForwardBase, hasForwardBase, pathToBundleMap, readLockFile, upsertBundle, writeLockFile, } from "../lock-file.js";
5
+ import { LOCK_VERSION, findBundle, findForwardBase, hasForwardBase, pathToBundleMap, readLockFile, removeBundle, upsertBundle, writeLockFile, } from "../lock-file.js";
6
6
  import { REPO_KIND_FILE, profileFromBundleName, repoKindFromProfile, writeRepoKind, } from "../repo-kind.js";
7
7
  import { join } from "node:path";
8
8
  import { copyManagedFiles, removeManagedFiles } from "./apply.js";
@@ -128,6 +128,25 @@ export async function runSync(opts, stdout = (line) => process.stdout.write(line
128
128
  stdout(fail(`Forward bases: platform-baseline, app-baseline, integration-baseline, reverse-baseline.`));
129
129
  return { exitCode: 1 };
130
130
  }
131
+ // Bundle migration (--replace-bundle): validate the request before any
132
+ // gate that would misread the overlap as a defect.
133
+ const migrateFrom = opts.replaceBundle
134
+ ? findBundle(prevLock, opts.replaceBundle)
135
+ : null;
136
+ if (opts.replaceBundle) {
137
+ if (opts.replaceBundle === incomingBundleName) {
138
+ stdout(fail(`--replace-bundle ${opts.replaceBundle}: replacing a bundle with itself is a plain sync — drop the flag.`));
139
+ return { exitCode: 1 };
140
+ }
141
+ if (!migrateFrom) {
142
+ stdout(fail(`--replace-bundle ${opts.replaceBundle}: the lock has no bundle of that name. Nothing to migrate.`));
143
+ return { exitCode: 1 };
144
+ }
145
+ if (migrateFrom.isForwardBase !== incomingIsForward) {
146
+ stdout(fail(`--replace-bundle: '${opts.replaceBundle}' (forward base: ${migrateFrom.isForwardBase}) and '${incomingBundleName}' (forward base: ${incomingIsForward}) are different layer kinds — a migration swaps like for like.`));
147
+ return { exitCode: 1 };
148
+ }
149
+ }
131
150
  // Adopter pack requires_forward_base check: the named forward base
132
151
  // must be in the lock at a compatible version. Per ADR 0151 §4.2.
133
152
  if (!incomingIsForward && bundle.manifest.requiresForwardBase) {
@@ -147,8 +166,17 @@ export async function runSync(opts, stdout = (line) => process.stdout.write(line
147
166
  }
148
167
  }
149
168
  // Cross-bundle ownership: a path managed by another bundle in the
150
- // lock cannot also be claimed by this bundle.
169
+ // lock cannot also be claimed by this bundle. Under --replace-bundle the
170
+ // outgoing bundle's claims are released — migration is the overlap
171
+ // guard's sanctioned inverse, not its removal: a path owned by any THIRD
172
+ // bundle still refuses below.
151
173
  const otherBundlePaths = pathToBundleMap(prevLock, incomingBundleName);
174
+ if (migrateFrom) {
175
+ for (const p of migrateFrom.managedPaths) {
176
+ if (otherBundlePaths.get(p) === migrateFrom.name)
177
+ otherBundlePaths.delete(p);
178
+ }
179
+ }
152
180
  for (const p of bundle.managedPaths) {
153
181
  const owner = otherBundlePaths.get(p);
154
182
  if (owner !== undefined) {
@@ -162,9 +190,15 @@ export async function runSync(opts, stdout = (line) => process.stdout.write(line
162
190
  // file is preserved and reported rather than deleted — and removal-by-omission
163
191
  // would otherwise sweep it, since a withdrawn ADR is no longer in the bundle.
164
192
  const adrTransitions = await planAdrTransitions(bundle.rootDir, opts.targetRepo, prevEntry?.bundleVersion);
165
- // Removals are scoped to THIS bundle's previously-managed paths.
193
+ // Removals are scoped to THIS bundle's previously-managed paths — plus,
194
+ // under --replace-bundle, the outgoing bundle's paths, so its orphans
195
+ // (old-only, unclaimed by the incoming bundle) are removed in the same
196
+ // pass rather than left as untracked strays.
166
197
  const prevBundleEntry = findBundle(prevLock, incomingBundleName);
167
- const prevPaths = prevBundleEntry?.managedPaths ?? [];
198
+ const prevPaths = [
199
+ ...(prevBundleEntry?.managedPaths ?? []),
200
+ ...(migrateFrom?.managedPaths ?? []),
201
+ ];
168
202
  const withdrawnKeep = new Set(adrTransitions.protectedFromRemoval);
169
203
  const removals = computeRemovals(prevPaths, materialisePaths, {
170
204
  noDelete: !opts.delete,
@@ -184,6 +218,25 @@ export async function runSync(opts, stdout = (line) => process.stdout.write(line
184
218
  stdout(` ! ${w}\n`);
185
219
  }
186
220
  stdout(info(`Protected ownership prefixes: ${PROTECTED_PREFIXES.join(" ")}`));
221
+ // Migration three-way split — always printed, dry-run or not, so the
222
+ // figures a reviewer approves are the figures the real run states.
223
+ if (migrateFrom) {
224
+ const incomingSet = new Set(bundle.managedPaths);
225
+ const shared = migrateFrom.managedPaths.filter((p) => incomingSet.has(p));
226
+ const arriving = bundle.managedPaths.filter((p) => !migrateFrom.managedPaths.includes(p));
227
+ const orphaned = migrateFrom.managedPaths.filter((p) => !incomingSet.has(p));
228
+ stdout(info(`Migration ${migrateFrom.name} → ${incomingBundleName}:`));
229
+ stdout(info(` shared (ownership transfers): ${shared.length}`));
230
+ stdout(info(` arriving (new to this repo): ${arriving.length}`));
231
+ stdout(info(` orphaned (removed unless --no-delete): ${orphaned.length}`));
232
+ for (const p of orphaned)
233
+ stdout(` - ${p}\n`);
234
+ if (!opts.dryRun && opts.yes !== true) {
235
+ stdout(fail(`--replace-bundle is destructive (drops the '${migrateFrom.name}' lock block). ` +
236
+ `Review the split above (use --dry-run first), then re-run with --yes.`));
237
+ return { exitCode: 1 };
238
+ }
239
+ }
187
240
  if (opts.dryRun) {
188
241
  stdout(info("Dry run enabled. No files modified."));
189
242
  if (conflicts.length > 0) {
@@ -208,7 +261,13 @@ export async function runSync(opts, stdout = (line) => process.stdout.write(line
208
261
  // that anything had been written. The checks here are read-only and
209
262
  // mirror the real gates exactly; those stay in place as defence in
210
263
  // depth. All of them no-op under --allow-overwrite, hence the guard.
211
- if (incomingIsForward && !opts.allowOverwrite) {
264
+ // Under --replace-bundle the method-managed settings/workflow blocks were
265
+ // rendered for the OUTGOING bundle's profile; the incoming profile renders
266
+ // different blocks, so drift against them is EXPECTED, not adopter edits.
267
+ // The merges below re-render method-managed content only — adopter entries
268
+ // outside the markers are preserved either way — so migration overrides
269
+ // this gate without touching --allow-overwrite's file-conflict semantics.
270
+ if (incomingIsForward && !opts.allowOverwrite && !migrateFrom) {
212
271
  const preflightProfile = profileFromBundleName(incomingBundleName);
213
272
  if (preflightProfile) {
214
273
  const failures = [];
@@ -339,7 +398,7 @@ export async function runSync(opts, stdout = (line) => process.stdout.write(line
339
398
  // .claude/settings.json, or rewrite the CI workflow — the forward
340
399
  // base owns those.
341
400
  if (!incomingIsForward) {
342
- await writeLockFile(opts.targetRepo, upsertBundle(prevLock, newEntry));
401
+ await writeLockFile(opts.targetRepo, upsertBundle(migrateFrom ? removeBundle(prevLock, migrateFrom.name) : prevLock, newEntry));
343
402
  stdout(pass(`Method baseline synced to: ${opts.targetRepo}`));
344
403
  stdout(info(`Updated lock file: method-baseline.lock (lock_version: ${LOCK_VERSION})`));
345
404
  stdout(info("Additive layer applied; .sdd-repo-kind unchanged."));
@@ -360,7 +419,7 @@ export async function runSync(opts, stdout = (line) => process.stdout.write(line
360
419
  if (opts.agentHarness === "github-copilot-cli") {
361
420
  const copilotResult = await syncMethodManagedCopilotHooks({
362
421
  targetRepo: opts.targetRepo,
363
- allowOverwrite: opts.allowOverwrite,
422
+ allowOverwrite: opts.allowOverwrite || migrateFrom !== null,
364
423
  });
365
424
  if (copilotResult.refused) {
366
425
  stdout(fail(`.github/hooks/*.json has adopter-modified method entries (${copilotResult.driftedRefused.join(", ")}). Re-run with --allow-overwrite to rewrite them.`));
@@ -375,7 +434,7 @@ export async function runSync(opts, stdout = (line) => process.stdout.write(line
375
434
  const settingsResult = await syncMethodManagedSettings({
376
435
  targetRepo: opts.targetRepo,
377
436
  profile,
378
- allowOverwrite: opts.allowOverwrite,
437
+ allowOverwrite: opts.allowOverwrite || migrateFrom !== null,
379
438
  // A lock is the only sound evidence the managed entries were seeded
380
439
  // before, which is what makes a re-seed distinguishable from a first
381
440
  // sync into an adopter's own settings file.
@@ -418,7 +477,7 @@ export async function runSync(opts, stdout = (line) => process.stdout.write(line
418
477
  begin: BLOCK_BEGIN,
419
478
  end: BLOCK_END,
420
479
  });
421
- if (blockDrifted && !opts.allowOverwrite) {
480
+ if (blockDrifted && !opts.allowOverwrite && !migrateFrom) {
422
481
  stdout(fail(`${WORKFLOW_REL_PATH}: the method-managed block differs from what this sdd-cli renders. Either the generator changed since the last sync (expected after a CLI upgrade) or the block was hand-edited. Re-run with --allow-overwrite to re-render it; adopter content outside the markers is preserved either way.`));
423
482
  return { exitCode: 1 };
424
483
  }
@@ -446,7 +505,7 @@ export async function runSync(opts, stdout = (line) => process.stdout.write(line
446
505
  repoKind: repoKindFromProfile(profile),
447
506
  baselineVersion: bundle.manifest.bundleVersion,
448
507
  agentHarness: opts.agentHarness ?? DEFAULT_AGENT_HARNESS,
449
- allowOverwrite: opts.allowOverwrite,
508
+ allowOverwrite: opts.allowOverwrite || migrateFrom !== null,
450
509
  });
451
510
  if (briefingResult.refused) {
452
511
  stdout(fail(`${briefingResult.refused} has adopter edits outside the method-managed markers. Re-run with --allow-overwrite to replace the file.`));
@@ -454,7 +513,7 @@ export async function runSync(opts, stdout = (line) => process.stdout.write(line
454
513
  }
455
514
  for (const line of briefingResult.log)
456
515
  stdout(info(line));
457
- await writeLockFile(opts.targetRepo, upsertBundle(prevLock, newEntry));
516
+ await writeLockFile(opts.targetRepo, upsertBundle(migrateFrom ? removeBundle(prevLock, migrateFrom.name) : prevLock, newEntry));
458
517
  stdout(pass(`Method baseline synced to: ${opts.targetRepo}`));
459
518
  stdout(info(`Updated lock file: method-baseline.lock (lock_version: ${LOCK_VERSION})`));
460
519
  stdout(info(`Set repo kind marker: ${REPO_KIND_FILE} = ${repoKind}`));