@sdd-method/sdd-cli 1.29.1 → 1.29.2

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 (58) hide show
  1. package/dist/lib/catalogue/graph-run.d.ts +1 -28
  2. package/dist/lib/catalogue/graph-run.d.ts.map +1 -1
  3. package/dist/lib/catalogue/graph-run.js +3 -57
  4. package/dist/lib/catalogue/graph-run.js.map +1 -1
  5. package/dist/lib/catalogue/impact-run.d.ts +1 -1
  6. package/dist/lib/catalogue/impact-run.d.ts.map +1 -1
  7. package/dist/lib/catalogue/impact-run.js +1 -1
  8. package/dist/lib/catalogue/impact-run.js.map +1 -1
  9. package/dist/lib/catalogue/relationship-semantics.d.ts +29 -0
  10. package/dist/lib/catalogue/relationship-semantics.d.ts.map +1 -0
  11. package/dist/lib/catalogue/relationship-semantics.js +66 -0
  12. package/dist/lib/catalogue/relationship-semantics.js.map +1 -0
  13. package/dist/lib/pack/index.d.ts +1 -9
  14. package/dist/lib/pack/index.d.ts.map +1 -1
  15. package/dist/lib/pack/index.js +2 -53
  16. package/dist/lib/pack/index.js.map +1 -1
  17. package/dist/lib/pack/log.d.ts +6 -0
  18. package/dist/lib/pack/log.d.ts.map +1 -0
  19. package/dist/lib/pack/log.js +18 -0
  20. package/dist/lib/pack/log.js.map +1 -0
  21. package/dist/lib/pack/validate.d.ts +10 -0
  22. package/dist/lib/pack/validate.d.ts.map +1 -0
  23. package/dist/lib/pack/validate.js +49 -0
  24. package/dist/lib/pack/validate.js.map +1 -0
  25. package/dist/verbs/catalogue-verify.d.ts +6 -0
  26. package/dist/verbs/catalogue-verify.d.ts.map +1 -0
  27. package/dist/verbs/catalogue-verify.js +114 -0
  28. package/dist/verbs/catalogue-verify.js.map +1 -0
  29. package/dist/verbs/catalogue.d.ts.map +1 -1
  30. package/dist/verbs/catalogue.js +6 -94
  31. package/dist/verbs/catalogue.js.map +1 -1
  32. package/dist/verbs/pack-validate.d.ts +3 -0
  33. package/dist/verbs/pack-validate.d.ts.map +1 -0
  34. package/dist/verbs/pack-validate.js +17 -0
  35. package/dist/verbs/pack-validate.js.map +1 -0
  36. package/dist/verbs/pack.d.ts.map +1 -1
  37. package/dist/verbs/pack.js +3 -10
  38. package/dist/verbs/pack.js.map +1 -1
  39. package/dist/verify-bin.d.ts +3 -0
  40. package/dist/verify-bin.d.ts.map +1 -0
  41. package/dist/verify-bin.js +8 -0
  42. package/dist/verify-bin.js.map +1 -0
  43. package/dist/verify-program.d.ts +14 -0
  44. package/dist/verify-program.d.ts.map +1 -0
  45. package/dist/verify-program.js +115 -0
  46. package/dist/verify-program.js.map +1 -0
  47. package/package.json +3 -3
  48. package/scripts/build-verify-package.mjs +178 -0
  49. package/scripts/verify-acceptance.sh +141 -0
  50. package/dist/conformance-bin.d.ts +0 -3
  51. package/dist/conformance-bin.d.ts.map +0 -1
  52. package/dist/conformance-bin.js +0 -8
  53. package/dist/conformance-bin.js.map +0 -1
  54. package/dist/conformance-program.d.ts +0 -6
  55. package/dist/conformance-program.d.ts.map +0 -1
  56. package/dist/conformance-program.js +0 -59
  57. package/dist/conformance-program.js.map +0 -1
  58. package/scripts/build-conformance-package.mjs +0 -57
@@ -0,0 +1,114 @@
1
+ // The read-only `catalogue` subcommands — validate (incl. --coverage), impact,
2
+ // baseline-check, version — split from `catalogue.ts` so a program can register
3
+ // them without importing the catalogue BUILD path. The verify-only CLI ships
4
+ // these and must not ship code that writes the derived model (M-ADR 0212 §4.3b).
5
+ // `registerCatalogue` calls each at its original position, so sdd-cli's
6
+ // `catalogue` surface and help order are unchanged.
7
+ //
8
+ // ⚠ Import each run* from its own module, NEVER from `../lib/catalogue/index.js`:
9
+ // that barrel re-exports the build and aggregate paths, and one convenience
10
+ // import from it would silently put authoring code back into the verify package.
11
+ import { runBaselineCheck } from "../lib/catalogue/baseline-check.js";
12
+ import { runCatalogueCoverage } from "../lib/catalogue/coverage-run.js";
13
+ import { runCatalogueImpact } from "../lib/catalogue/impact-run.js";
14
+ import { runCatalogueValidate } from "../lib/catalogue/validate.js";
15
+ import { runCatalogueVersion } from "../lib/catalogue/version.js";
16
+ export function registerCatalogueValidate(catalogue) {
17
+ catalogue
18
+ .command("validate")
19
+ .description("Re-run column-shape + FK validation against existing catalogues/ (no rebuild)")
20
+ .option("--sdd-path <path>", "Path to the SDD repo root (defaults to cwd)")
21
+ .option("--strict", "Treat findings as failures")
22
+ .option("--coverage", "Coverage mode: run the engine coverage predicates instead (same lines the gate scripts printed; exit 0 — gating stays the baseline's job)")
23
+ .option("--tier <tier>", "Coverage tier, explicit never inferred (member | aggregate; default member)")
24
+ .option("--catalogues-dir <dir>", "Coverage mode: catalogues directory relative to the SDD root (default catalogues)")
25
+ .action(async (opts) => {
26
+ if (opts.coverage === true) {
27
+ if (opts.tier !== undefined &&
28
+ opts.tier !== "member" &&
29
+ opts.tier !== "aggregate") {
30
+ process.stderr.write(`--tier must be 'member' or 'aggregate' (got: ${opts.tier})\n`);
31
+ process.exit(2);
32
+ }
33
+ const result = await runCatalogueCoverage({
34
+ ...(opts.sddPath !== undefined ? { sddPath: opts.sddPath } : {}),
35
+ ...(opts.cataloguesDir !== undefined
36
+ ? { cataloguesDir: opts.cataloguesDir }
37
+ : {}),
38
+ ...(opts.tier !== undefined
39
+ ? { tier: opts.tier }
40
+ : {}),
41
+ }, (s) => process.stdout.write(s));
42
+ if (result.exitCode !== 0)
43
+ process.exit(result.exitCode);
44
+ return;
45
+ }
46
+ const result = await runCatalogueValidate({
47
+ ...(opts.sddPath !== undefined ? { sddPath: opts.sddPath } : {}),
48
+ ...(opts.strict !== undefined ? { strict: opts.strict } : {}),
49
+ }, (s) => process.stdout.write(s));
50
+ if (result.exitCode !== 0)
51
+ process.exit(result.exitCode);
52
+ });
53
+ }
54
+ export function registerCatalogueImpact(catalogue) {
55
+ catalogue
56
+ .command("impact")
57
+ .description("Change-impact closure of a node (M-ADR 0206): each relationship is traversed per its declared impact-flow from the rubric-coverage-map — dependency edges reach their consumers, membership edges propagate part-to-whole only, xref/lineage records are inert — computed by recursive SQL on the embedded engine, with the co-directionality invariant asserted on every run")
58
+ .requiredOption("--of <node-id>", 'Node to compute impact of, in the projection\'s "<catalogue>/<id>" form (e.g. contracts/orders-api)')
59
+ .option("--sdd-path <path>", "Path to the SDD repo root (defaults to cwd)")
60
+ .option("--catalogues-dir <dir>", "Catalogues directory relative to the SDD root (default catalogues)")
61
+ .option("--tier <tier>", "Tier, explicit never inferred (member | aggregate; default member)")
62
+ .action(async (opts) => {
63
+ if (opts.tier !== undefined &&
64
+ opts.tier !== "member" &&
65
+ opts.tier !== "aggregate") {
66
+ process.stderr.write(`--tier must be 'member' or 'aggregate' (got: ${opts.tier})\n`);
67
+ process.exit(2);
68
+ }
69
+ const result = await runCatalogueImpact({
70
+ of: opts.of,
71
+ ...(opts.sddPath !== undefined ? { sddPath: opts.sddPath } : {}),
72
+ ...(opts.cataloguesDir !== undefined
73
+ ? { cataloguesDir: opts.cataloguesDir }
74
+ : {}),
75
+ ...(opts.tier !== undefined
76
+ ? { tier: opts.tier }
77
+ : {}),
78
+ }, (s) => process.stdout.write(s));
79
+ if (result.exitCode !== 0)
80
+ process.exit(result.exitCode);
81
+ });
82
+ }
83
+ export function registerCatalogueBaselineCheck(catalogue) {
84
+ catalogue
85
+ .command("baseline-check")
86
+ .description("Compare emitted findings against the repo's findings baseline BY IDENTITY (M-ADR 0132 §9) — a reworded finding reports as reworded, not as one closed and one new")
87
+ .option("--sdd-path <path>", "Path to the SDD repo root (defaults to cwd)")
88
+ .option("--findings <path>", "File of findings to compare (defaults to stdin, so it composes with `catalogue validate --coverage`)")
89
+ .option("--baseline <path>", "Baseline file (defaults to <sdd-path>/orchestration/catalogue-findings-baseline.txt)")
90
+ .action(async (opts) => {
91
+ const result = await runBaselineCheck({
92
+ ...(opts.sddPath !== undefined ? { sddPath: opts.sddPath } : {}),
93
+ ...(opts.findings !== undefined ? { findings: opts.findings } : {}),
94
+ ...(opts.baseline !== undefined ? { baseline: opts.baseline } : {}),
95
+ stdin: async () => {
96
+ const chunks = [];
97
+ for await (const c of process.stdin)
98
+ chunks.push(Buffer.from(c));
99
+ return Buffer.concat(chunks).toString("utf-8");
100
+ },
101
+ }, (s) => process.stdout.write(s));
102
+ if (result.exitCode !== 0)
103
+ process.exit(result.exitCode);
104
+ });
105
+ }
106
+ export function registerCatalogueVersion(catalogue) {
107
+ catalogue
108
+ .command("version")
109
+ .description("Print the catalogue schema version + sdd-cli version pin")
110
+ .action(async () => {
111
+ await runCatalogueVersion((s) => process.stdout.write(s));
112
+ });
113
+ }
114
+ //# sourceMappingURL=catalogue-verify.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"catalogue-verify.js","sourceRoot":"","sources":["../../src/verbs/catalogue-verify.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,gFAAgF;AAChF,6EAA6E;AAC7E,iFAAiF;AACjF,wEAAwE;AACxE,oDAAoD;AACpD,EAAE;AACF,kFAAkF;AAClF,4EAA4E;AAC5E,iFAAiF;AAGjF,OAAO,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAC;AACtE,OAAO,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AACxE,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAOlE,MAAM,UAAU,yBAAyB,CAAC,SAAkB;IAC1D,SAAS;SACN,OAAO,CAAC,UAAU,CAAC;SACnB,WAAW,CACV,+EAA+E,CAChF;SACA,MAAM,CACL,mBAAmB,EACnB,6CAA6C,CAC9C;SACA,MAAM,CAAC,UAAU,EAAE,4BAA4B,CAAC;SAChD,MAAM,CACL,YAAY,EACZ,2IAA2I,CAC5I;SACA,MAAM,CACL,eAAe,EACf,6EAA6E,CAC9E;SACA,MAAM,CACL,wBAAwB,EACxB,mFAAmF,CACpF;SACA,MAAM,CACL,KAAK,EACH,IAIC,EACD,EAAE;QACF,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,EAAE,CAAC;YAC3B,IACE,IAAI,CAAC,IAAI,KAAK,SAAS;gBACvB,IAAI,CAAC,IAAI,KAAK,QAAQ;gBACtB,IAAI,CAAC,IAAI,KAAK,WAAW,EACzB,CAAC;gBACD,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,gDAAgD,IAAI,CAAC,IAAI,KAAK,CAC/D,CAAC;gBACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YACD,MAAM,MAAM,GAAG,MAAM,oBAAoB,CACvC;gBACE,GAAG,CAAC,IAAI,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAChE,GAAG,CAAC,IAAI,CAAC,aAAa,KAAK,SAAS;oBAClC,CAAC,CAAC,EAAE,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE;oBACvC,CAAC,CAAC,EAAE,CAAC;gBACP,GAAG,CAAC,IAAI,CAAC,IAAI,KAAK,SAAS;oBACzB,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAA8B,EAAE;oBAC/C,CAAC,CAAC,EAAE,CAAC;aACR,EACD,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAC/B,CAAC;YACF,IAAI,MAAM,CAAC,QAAQ,KAAK,CAAC;gBAAE,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YACzD,OAAO;QACT,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,oBAAoB,CACvC;YACE,GAAG,CAAC,IAAI,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAChE,GAAG,CAAC,IAAI,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC9D,EACD,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAC/B,CAAC;QACF,IAAI,MAAM,CAAC,QAAQ,KAAK,CAAC;YAAE,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC3D,CAAC,CACF,CAAC;AACN,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,SAAkB;IACxD,SAAS;SACN,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CACV,+WAA+W,CAChX;SACA,cAAc,CACb,gBAAgB,EAChB,qGAAqG,CACtG;SACA,MAAM,CACL,mBAAmB,EACnB,6CAA6C,CAC9C;SACA,MAAM,CACL,wBAAwB,EACxB,oEAAoE,CACrE;SACA,MAAM,CACL,eAAe,EACf,oEAAoE,CACrE;SACA,MAAM,CACL,KAAK,EAAE,IAKN,EAAE,EAAE;QACH,IACE,IAAI,CAAC,IAAI,KAAK,SAAS;YACvB,IAAI,CAAC,IAAI,KAAK,QAAQ;YACtB,IAAI,CAAC,IAAI,KAAK,WAAW,EACzB,CAAC;YACD,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,gDAAgD,IAAI,CAAC,IAAI,KAAK,CAC/D,CAAC;YACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,kBAAkB,CACrC;YACE,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,GAAG,CAAC,IAAI,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAChE,GAAG,CAAC,IAAI,CAAC,aAAa,KAAK,SAAS;gBAClC,CAAC,CAAC,EAAE,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE;gBACvC,CAAC,CAAC,EAAE,CAAC;YACP,GAAG,CAAC,IAAI,CAAC,IAAI,KAAK,SAAS;gBACzB,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAA8B,EAAE;gBAC/C,CAAC,CAAC,EAAE,CAAC;SACR,EACD,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAC/B,CAAC;QACF,IAAI,MAAM,CAAC,QAAQ,KAAK,CAAC;YAAE,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC3D,CAAC,CACF,CAAC;AACN,CAAC;AAED,MAAM,UAAU,8BAA8B,CAAC,SAAkB;IAC/D,SAAS;SACN,OAAO,CAAC,gBAAgB,CAAC;SACzB,WAAW,CACV,mKAAmK,CACpK;SACA,MAAM,CAAC,mBAAmB,EAAE,6CAA6C,CAAC;SAC1E,MAAM,CACL,mBAAmB,EACnB,sGAAsG,CACvG;SACA,MAAM,CACL,mBAAmB,EACnB,sFAAsF,CACvF;SACA,MAAM,CACL,KAAK,EAAE,IAIN,EAAE,EAAE;QACH,MAAM,MAAM,GAAG,MAAM,gBAAgB,CACnC;YACE,GAAG,CAAC,IAAI,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAChE,GAAG,CAAC,IAAI,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACnE,GAAG,CAAC,IAAI,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACnE,KAAK,EAAE,KAAK,IAAI,EAAE;gBAChB,MAAM,MAAM,GAAa,EAAE,CAAC;gBAC5B,IAAI,KAAK,EAAE,MAAM,CAAC,IAAI,OAAO,CAAC,KAAK;oBAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;gBACjE,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YACjD,CAAC;SACF,EACD,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAC/B,CAAC;QACF,IAAI,MAAM,CAAC,QAAQ,KAAK,CAAC;YAAE,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC3D,CAAC,CACF,CAAC;AACN,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,SAAkB;IACzD,SAAS;SACN,OAAO,CAAC,SAAS,CAAC;SAClB,WAAW,CACV,0DAA0D,CAC3D;SACA,MAAM,CAAC,KAAK,IAAI,EAAE;QACjB,MAAM,mBAAmB,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5D,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"catalogue.d.ts","sourceRoot":"","sources":["../../src/verbs/catalogue.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA8BzC,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAgTxD"}
1
+ {"version":3,"file":"catalogue.d.ts","sourceRoot":"","sources":["../../src/verbs/catalogue.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAgCzC,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAgJxD"}
@@ -1,8 +1,6 @@
1
- import { runBaselineCheck } from "../lib/catalogue/baseline-check.js";
2
- import { runCatalogueBuild, runCatalogueAggregate, runCatalogueMigrationMap, runCatalogueValidate, runCatalogueVersion, } from "../lib/catalogue/index.js";
3
- import { runCatalogueCoverage } from "../lib/catalogue/coverage-run.js";
1
+ import { registerCatalogueBaselineCheck, registerCatalogueImpact, registerCatalogueValidate, registerCatalogueVersion, } from "./catalogue-verify.js";
2
+ import { runCatalogueBuild, runCatalogueAggregate, runCatalogueMigrationMap, } from "../lib/catalogue/index.js";
4
3
  import { runCatalogueGraph } from "../lib/catalogue/graph-run.js";
5
- import { runCatalogueImpact } from "../lib/catalogue/impact-run.js";
6
4
  export function registerCatalogue(program) {
7
5
  const catalogue = program
8
6
  .command("catalogue")
@@ -41,42 +39,7 @@ export function registerCatalogue(program) {
41
39
  if (result.exitCode !== 0)
42
40
  process.exit(result.exitCode);
43
41
  });
44
- catalogue
45
- .command("validate")
46
- .description("Re-run column-shape + FK validation against existing catalogues/ (no rebuild)")
47
- .option("--sdd-path <path>", "Path to the SDD repo root (defaults to cwd)")
48
- .option("--strict", "Treat findings as failures")
49
- .option("--coverage", "Coverage mode: run the engine coverage predicates instead (same lines the gate scripts printed; exit 0 — gating stays the baseline's job)")
50
- .option("--tier <tier>", "Coverage tier, explicit never inferred (member | aggregate; default member)")
51
- .option("--catalogues-dir <dir>", "Coverage mode: catalogues directory relative to the SDD root (default catalogues)")
52
- .action(async (opts) => {
53
- if (opts.coverage === true) {
54
- if (opts.tier !== undefined &&
55
- opts.tier !== "member" &&
56
- opts.tier !== "aggregate") {
57
- process.stderr.write(`--tier must be 'member' or 'aggregate' (got: ${opts.tier})\n`);
58
- process.exit(2);
59
- }
60
- const result = await runCatalogueCoverage({
61
- ...(opts.sddPath !== undefined ? { sddPath: opts.sddPath } : {}),
62
- ...(opts.cataloguesDir !== undefined
63
- ? { cataloguesDir: opts.cataloguesDir }
64
- : {}),
65
- ...(opts.tier !== undefined
66
- ? { tier: opts.tier }
67
- : {}),
68
- }, (s) => process.stdout.write(s));
69
- if (result.exitCode !== 0)
70
- process.exit(result.exitCode);
71
- return;
72
- }
73
- const result = await runCatalogueValidate({
74
- ...(opts.sddPath !== undefined ? { sddPath: opts.sddPath } : {}),
75
- ...(opts.strict !== undefined ? { strict: opts.strict } : {}),
76
- }, (s) => process.stdout.write(s));
77
- if (result.exitCode !== 0)
78
- process.exit(result.exitCode);
79
- });
42
+ registerCatalogueValidate(catalogue);
80
43
  catalogue
81
44
  .command("graph")
82
45
  .description("Emit the graph projection (typed node/edge JSON Lines) derived from built catalogues (M-ADR 0205 §4.6) — regenerated every run, digest-stamped, never committed")
@@ -104,33 +67,7 @@ export function registerCatalogue(program) {
104
67
  if (result.exitCode !== 0)
105
68
  process.exit(result.exitCode);
106
69
  });
107
- catalogue
108
- .command("impact")
109
- .description("Change-impact closure of a node (M-ADR 0206): each relationship is traversed per its declared impact-flow from the rubric-coverage-map — dependency edges reach their consumers, membership edges propagate part-to-whole only, xref/lineage records are inert — computed by recursive SQL on the embedded engine, with the co-directionality invariant asserted on every run")
110
- .requiredOption("--of <node-id>", 'Node to compute impact of, in the projection\'s "<catalogue>/<id>" form (e.g. contracts/orders-api)')
111
- .option("--sdd-path <path>", "Path to the SDD repo root (defaults to cwd)")
112
- .option("--catalogues-dir <dir>", "Catalogues directory relative to the SDD root (default catalogues)")
113
- .option("--tier <tier>", "Tier, explicit never inferred (member | aggregate; default member)")
114
- .action(async (opts) => {
115
- if (opts.tier !== undefined &&
116
- opts.tier !== "member" &&
117
- opts.tier !== "aggregate") {
118
- process.stderr.write(`--tier must be 'member' or 'aggregate' (got: ${opts.tier})\n`);
119
- process.exit(2);
120
- }
121
- const result = await runCatalogueImpact({
122
- of: opts.of,
123
- ...(opts.sddPath !== undefined ? { sddPath: opts.sddPath } : {}),
124
- ...(opts.cataloguesDir !== undefined
125
- ? { cataloguesDir: opts.cataloguesDir }
126
- : {}),
127
- ...(opts.tier !== undefined
128
- ? { tier: opts.tier }
129
- : {}),
130
- }, (s) => process.stdout.write(s));
131
- if (result.exitCode !== 0)
132
- process.exit(result.exitCode);
133
- });
70
+ registerCatalogueImpact(catalogue);
134
71
  catalogue
135
72
  .command("migration-map")
136
73
  .description("Emit the 2.x → 3.0.0 id migration maps (external-system + contract ids) from existing catalogues/ (M-ADR 0203)")
@@ -142,32 +79,7 @@ export function registerCatalogue(program) {
142
79
  if (result.exitCode !== 0)
143
80
  process.exit(result.exitCode);
144
81
  });
145
- catalogue
146
- .command("baseline-check")
147
- .description("Compare emitted findings against the repo's findings baseline BY IDENTITY (M-ADR 0132 §9) — a reworded finding reports as reworded, not as one closed and one new")
148
- .option("--sdd-path <path>", "Path to the SDD repo root (defaults to cwd)")
149
- .option("--findings <path>", "File of findings to compare (defaults to stdin, so it composes with `catalogue validate --coverage`)")
150
- .option("--baseline <path>", "Baseline file (defaults to <sdd-path>/orchestration/catalogue-findings-baseline.txt)")
151
- .action(async (opts) => {
152
- const result = await runBaselineCheck({
153
- ...(opts.sddPath !== undefined ? { sddPath: opts.sddPath } : {}),
154
- ...(opts.findings !== undefined ? { findings: opts.findings } : {}),
155
- ...(opts.baseline !== undefined ? { baseline: opts.baseline } : {}),
156
- stdin: async () => {
157
- const chunks = [];
158
- for await (const c of process.stdin)
159
- chunks.push(Buffer.from(c));
160
- return Buffer.concat(chunks).toString("utf-8");
161
- },
162
- }, (s) => process.stdout.write(s));
163
- if (result.exitCode !== 0)
164
- process.exit(result.exitCode);
165
- });
166
- catalogue
167
- .command("version")
168
- .description("Print the catalogue schema version + sdd-cli version pin")
169
- .action(async () => {
170
- await runCatalogueVersion((s) => process.stdout.write(s));
171
- });
82
+ registerCatalogueBaselineCheck(catalogue);
83
+ registerCatalogueVersion(catalogue);
172
84
  }
173
85
  //# sourceMappingURL=catalogue.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"catalogue.js","sourceRoot":"","sources":["../../src/verbs/catalogue.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"catalogue.js","sourceRoot":"","sources":["../../src/verbs/catalogue.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { Command } from "commander";
2
+ export declare function registerPackValidate(pack: Command): void;
3
+ //# sourceMappingURL=pack-validate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pack-validate.d.ts","sourceRoot":"","sources":["../../src/verbs/pack-validate.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAOzC,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAcxD"}
@@ -0,0 +1,17 @@
1
+ // `pack validate` registration, split from `pack.ts` so a program can register
2
+ // it without importing `runPackBuild` — the verify-only CLI must not ship the
3
+ // code that writes a pack (M-ADR 0212 §4.3b). `registerPack` calls this, so
4
+ // sdd-cli's `pack` surface and help order are unchanged.
5
+ import { runPackValidate } from "../lib/pack/validate.js";
6
+ export function registerPackValidate(pack) {
7
+ pack
8
+ .command("validate")
9
+ .description("Validate a context-pack seed file against the canonical schema. Fast feedback for authoring.")
10
+ .requiredOption("--seed <path>", "path to the seed file (orchestration/distribution/{name}-seed.yaml)")
11
+ .action(async (opts) => {
12
+ const { exitCode } = await runPackValidate({ seedPath: opts.seed });
13
+ if (exitCode !== 0)
14
+ process.exit(exitCode);
15
+ });
16
+ }
17
+ //# sourceMappingURL=pack-validate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pack-validate.js","sourceRoot":"","sources":["../../src/verbs/pack-validate.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,8EAA8E;AAC9E,4EAA4E;AAC5E,yDAAyD;AAGzD,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAM1D,MAAM,UAAU,oBAAoB,CAAC,IAAa;IAChD,IAAI;SACD,OAAO,CAAC,UAAU,CAAC;SACnB,WAAW,CACV,8FAA8F,CAC/F;SACA,cAAc,CACb,eAAe,EACf,qEAAqE,CACtE;SACA,MAAM,CAAC,KAAK,EAAE,IAAqB,EAAE,EAAE;QACtC,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,eAAe,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QACpE,IAAI,QAAQ,KAAK,CAAC;YAAE,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"pack.d.ts","sourceRoot":"","sources":["../../src/verbs/pack.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAiBzC,wBAAgB,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAiEnD"}
1
+ {"version":3,"file":"pack.d.ts","sourceRoot":"","sources":["../../src/verbs/pack.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAczC,wBAAgB,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAqDnD"}
@@ -1,5 +1,6 @@
1
1
  import { resolvePathOption } from "./path-option.js";
2
- import { runPackBuild, runPackValidate } from "../lib/pack/index.js";
2
+ import { runPackBuild } from "../lib/pack/index.js";
3
+ import { registerPackValidate } from "./pack-validate.js";
3
4
  export function registerPack(program) {
4
5
  const pack = program
5
6
  .command("pack")
@@ -27,14 +28,6 @@ export function registerPack(program) {
27
28
  if (exitCode !== 0)
28
29
  process.exit(exitCode);
29
30
  });
30
- pack
31
- .command("validate")
32
- .description("Validate a context-pack seed file against the canonical schema. Fast feedback for authoring.")
33
- .requiredOption("--seed <path>", "path to the seed file (orchestration/distribution/{name}-seed.yaml)")
34
- .action(async (opts) => {
35
- const { exitCode } = await runPackValidate({ seedPath: opts.seed });
36
- if (exitCode !== 0)
37
- process.exit(exitCode);
38
- });
31
+ registerPackValidate(pack);
39
32
  }
40
33
  //# sourceMappingURL=pack.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"pack.js","sourceRoot":"","sources":["../../src/verbs/pack.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAerE,MAAM,UAAU,YAAY,CAAC,OAAgB;IAC3C,MAAM,IAAI,GAAG,OAAO;SACjB,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CACV,wEAAwE,CACzE,CAAC;IAEJ,IAAI;SACD,OAAO,CAAC,OAAO,CAAC;SAChB,WAAW,CACV,8FAA8F,CAC/F;SACA,cAAc,CACb,eAAe,EACf,qEAAqE,CACtE;SACA,MAAM,CACL,uBAAuB,EACvB,kFAAkF,EAClF,OAAO,CAAC,GAAG,EAAE,CACd;SACA,MAAM,CACL,iBAAiB,EACjB,kFAAkF,EAClF,iBAAiB,CAClB;SACA,MAAM,CACL,qCAAqC,EACrC,iHAAiH,CAClH;SACA,MAAM,CACL,qBAAqB,EACrB,8NAA8N,CAC/N;SACA,MAAM,CACL,iBAAiB,EACjB,8NAA8N,CAC/N;SACA,MAAM,CAAC,KAAK,EAAE,IAAkB,EAAE,EAAE;QACnC,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,YAAY,CAAC;YACtC,QAAQ,EAAE,IAAI,CAAC,IAAI;YACnB,YAAY,EAAE,IAAI,CAAC,YAAY,IAAI,OAAO,CAAC,GAAG,EAAE;YAChD,GAAG,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;YAC3C,GAAG,CAAC,IAAI,CAAC,uBAAuB,IAAI;gBAClC,2BAA2B,EAAE,IAAI,CAAC,uBAAuB;aAC1D,CAAC;YACF,GAAG,CAAC,IAAI,CAAC,gBAAgB,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,CAAC;YACxD,GAAG,CAAC,IAAI,CAAC,YAAY,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;SACjD,CAAC,CAAC;QACH,IAAI,QAAQ,KAAK,CAAC;YAAE,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;IAEL,IAAI;SACD,OAAO,CAAC,UAAU,CAAC;SACnB,WAAW,CACV,8FAA8F,CAC/F;SACA,cAAc,CACb,eAAe,EACf,qEAAqE,CACtE;SACA,MAAM,CAAC,KAAK,EAAE,IAAqB,EAAE,EAAE;QACtC,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,eAAe,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QACpE,IAAI,QAAQ,KAAK,CAAC;YAAE,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;AACP,CAAC"}
1
+ {"version":3,"file":"pack.js","sourceRoot":"","sources":["../../src/verbs/pack.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAW1D,MAAM,UAAU,YAAY,CAAC,OAAgB;IAC3C,MAAM,IAAI,GAAG,OAAO;SACjB,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CACV,wEAAwE,CACzE,CAAC;IAEJ,IAAI;SACD,OAAO,CAAC,OAAO,CAAC;SAChB,WAAW,CACV,8FAA8F,CAC/F;SACA,cAAc,CACb,eAAe,EACf,qEAAqE,CACtE;SACA,MAAM,CACL,uBAAuB,EACvB,kFAAkF,EAClF,OAAO,CAAC,GAAG,EAAE,CACd;SACA,MAAM,CACL,iBAAiB,EACjB,kFAAkF,EAClF,iBAAiB,CAClB;SACA,MAAM,CACL,qCAAqC,EACrC,iHAAiH,CAClH;SACA,MAAM,CACL,qBAAqB,EACrB,8NAA8N,CAC/N;SACA,MAAM,CACL,iBAAiB,EACjB,8NAA8N,CAC/N;SACA,MAAM,CAAC,KAAK,EAAE,IAAkB,EAAE,EAAE;QACnC,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,YAAY,CAAC;YACtC,QAAQ,EAAE,IAAI,CAAC,IAAI;YACnB,YAAY,EAAE,IAAI,CAAC,YAAY,IAAI,OAAO,CAAC,GAAG,EAAE;YAChD,GAAG,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;YAC3C,GAAG,CAAC,IAAI,CAAC,uBAAuB,IAAI;gBAClC,2BAA2B,EAAE,IAAI,CAAC,uBAAuB;aAC1D,CAAC;YACF,GAAG,CAAC,IAAI,CAAC,gBAAgB,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,CAAC;YACxD,GAAG,CAAC,IAAI,CAAC,YAAY,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;SACjD,CAAC,CAAC;QACH,IAAI,QAAQ,KAAK,CAAC;YAAE,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;IAEL,oBAAoB,CAAC,IAAI,CAAC,CAAC;AAC7B,CAAC"}
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=verify-bin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"verify-bin.d.ts","sourceRoot":"","sources":["../src/verify-bin.ts"],"names":[],"mappings":""}
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env node
2
+ import { runVerify } from "./verify-program.js";
3
+ runVerify(process.argv.slice(2)).catch((err) => {
4
+ const message = err instanceof Error ? err.message : String(err);
5
+ process.stderr.write(`sdd-verify: ${message}\n`);
6
+ process.exit(1);
7
+ });
8
+ //# sourceMappingURL=verify-bin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"verify-bin.js","sourceRoot":"","sources":["../src/verify-bin.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAEhD,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE;IACtD,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACjE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,eAAe,OAAO,IAAI,CAAC,CAAC;IACjD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
@@ -0,0 +1,14 @@
1
+ import { Command } from "commander";
2
+ /** The full surface, as `<verb>` or `<verb> <subcommand>`. Asserted by test. */
3
+ export declare const VERIFY_SURFACE: ReadonlyArray<string>;
4
+ /**
5
+ * Refuse anything outside the surface BEFORE commander parses it. Left to
6
+ * commander, `sdd-verify sync --help` prints top-level usage and exits 0 — in a
7
+ * pipeline that is a step that runs nothing and passes, which is the failure
8
+ * this binary exists to prevent. So an excluded verb fails, loudly, whatever
9
+ * flags accompany it.
10
+ */
11
+ export declare function rejectOutsideSurface(program: Command, argv: readonly string[]): void;
12
+ export declare function runVerify(argv: readonly string[]): Promise<void>;
13
+ export declare function buildVerifyProgram(): Command;
14
+ //# sourceMappingURL=verify-program.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"verify-program.d.ts","sourceRoot":"","sources":["../src/verify-program.ts"],"names":[],"mappings":"AA0BA,OAAO,EAAE,OAAO,EAAkB,MAAM,WAAW,CAAC;AAepD,gFAAgF;AAChF,eAAO,MAAM,cAAc,EAAE,aAAa,CAAC,MAAM,CAQhD,CAAC;AAMF;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI,CAWpF;AAED,wBAAsB,SAAS,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAqBtE;AAED,wBAAgB,kBAAkB,IAAI,OAAO,CAoC5C"}
@@ -0,0 +1,115 @@
1
+ // Third entrypoint: the VERIFY surface — M-ADR 0212 §4.3b.
2
+ //
3
+ // A binary that CANNOT WRITE to the repository it is pointed at. That is the
4
+ // whole property, and it is the one a pipeline can rely on: whatever runs
5
+ // `sdd-verify` in CI can judge a repository and cannot change it.
6
+ //
7
+ // Two criteria admit a verb here, and both are required:
8
+ // 1. it does not write to the target repository — TESTED, not read from a
9
+ // description: the package acceptance check runs every verb in every mode
10
+ // against a clean checkout and requires `git status --porcelain` to be
11
+ // empty. Reading help text misfiled four verbs before that test existed
12
+ // (`sync`, `render`, `catalogue graph`, `metamodel roundtrip`).
13
+ // 2. it has something to act on in an adopter repository today. A read-only
14
+ // verb can fail this and pass (1): `metamodel roundtrip` is producer-only,
15
+ // `catalogue migration-map` serves a finished migration. Neither is here.
16
+ //
17
+ // ⚠ The boundary is ABSENCE, not a menu. The package ships only the import
18
+ // closure of this file, so an excluded verb's code is not present to be reached
19
+ // by any path — including `mcp serve`, which exposes the SDD as tools and would
20
+ // hand authoring back through a second door. That is why registration imports
21
+ // per-subcommand registrars (`catalogue-verify.ts`, `pack-validate.ts`) and never
22
+ // a barrel that re-exports a build path.
23
+ //
24
+ // Verbs are the SAME registrars the full CLI uses: one implementation, two
25
+ // surfaces, so behaviour cannot drift between them.
26
+ import { Command, CommanderError } from "commander";
27
+ import { getPackageVersion } from "./lib/package-version.js";
28
+ import { registerCatalogueBaselineCheck, registerCatalogueImpact, registerCatalogueValidate, registerCatalogueVersion, } from "./verbs/catalogue-verify.js";
29
+ import { registerList } from "./verbs/list.js";
30
+ import { registerPackValidate } from "./verbs/pack-validate.js";
31
+ import { registerValidate } from "./verbs/validate.js";
32
+ const SPEC_URL = "https://github.com/tomfosteruk/sdd-method/blob/main/docs/method/cli/sdd-cli-specification.md";
33
+ /** The full surface, as `<verb>` or `<verb> <subcommand>`. Asserted by test. */
34
+ export const VERIFY_SURFACE = [
35
+ "validate",
36
+ "list",
37
+ "pack validate",
38
+ "catalogue validate",
39
+ "catalogue impact",
40
+ "catalogue baseline-check",
41
+ "catalogue version",
42
+ ];
43
+ const OUTSIDE = "is not part of sdd-verify, which cannot write to the repository it is pointed at. " +
44
+ "Authoring and maintenance verbs are in @sdd-method/sdd-cli.";
45
+ /**
46
+ * Refuse anything outside the surface BEFORE commander parses it. Left to
47
+ * commander, `sdd-verify sync --help` prints top-level usage and exits 0 — in a
48
+ * pipeline that is a step that runs nothing and passes, which is the failure
49
+ * this binary exists to prevent. So an excluded verb fails, loudly, whatever
50
+ * flags accompany it.
51
+ */
52
+ export function rejectOutsideSurface(program, argv) {
53
+ const words = argv.filter((a) => !a.startsWith("-"));
54
+ if (words.length === 0)
55
+ return;
56
+ const [verb, sub] = words;
57
+ if (verb === "help")
58
+ return;
59
+ const cmd = program.commands.find((c) => c.name() === verb);
60
+ if (!cmd)
61
+ throw new Error(`'${verb}' ${OUTSIDE}`);
62
+ const subs = cmd.commands.map((c) => c.name()).filter((n) => n !== "help");
63
+ if (subs.length > 0 && sub !== undefined && sub !== "help" && !subs.includes(sub)) {
64
+ throw new Error(`'${verb} ${sub}' ${OUTSIDE}`);
65
+ }
66
+ }
67
+ export async function runVerify(argv) {
68
+ const program = buildVerifyProgram();
69
+ if (argv.length === 0) {
70
+ program.outputHelp();
71
+ return;
72
+ }
73
+ rejectOutsideSurface(program, argv);
74
+ try {
75
+ await program.parseAsync([...argv], { from: "user" });
76
+ }
77
+ catch (err) {
78
+ if (err instanceof CommanderError) {
79
+ if (err.code === "commander.help" ||
80
+ err.code === "commander.helpDisplayed" ||
81
+ err.code === "commander.version") {
82
+ return;
83
+ }
84
+ }
85
+ throw err;
86
+ }
87
+ }
88
+ export function buildVerifyProgram() {
89
+ const program = new Command();
90
+ program
91
+ .name("sdd-verify")
92
+ .description("Verify an SDD repository without changing it — validate, list, and read-only catalogue and pack checks. Cannot write to the repository it is pointed at.")
93
+ .version(getPackageVersion(), "-v, --version")
94
+ .addHelpText("after", `\nSpec: ${SPEC_URL}\nAuthoring and maintenance verbs (sync, catalogue build, init, scaffold, mcp, …) are in @sdd-method/sdd-cli.`)
95
+ .exitOverride()
96
+ .configureOutput({
97
+ writeOut: (str) => process.stdout.write(str),
98
+ writeErr: (str) => process.stderr.write(str),
99
+ });
100
+ registerValidate(program);
101
+ registerList(program);
102
+ const pack = program
103
+ .command("pack")
104
+ .description("Validate adopter-shipped context-pack seeds (ADR 0151) — read-only");
105
+ registerPackValidate(pack);
106
+ const catalogue = program
107
+ .command("catalogue")
108
+ .description("Validate and query per-SDD catalogues (ADR 0134) — read-only, never rebuilds");
109
+ registerCatalogueValidate(catalogue);
110
+ registerCatalogueImpact(catalogue);
111
+ registerCatalogueBaselineCheck(catalogue);
112
+ registerCatalogueVersion(catalogue);
113
+ return program;
114
+ }
115
+ //# sourceMappingURL=verify-program.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"verify-program.js","sourceRoot":"","sources":["../src/verify-program.ts"],"names":[],"mappings":"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"}