@sdd-method/sdd-cli 1.41.0 → 1.42.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 (116) hide show
  1. package/dist/index.d.ts.map +1 -1
  2. package/dist/index.js +2 -0
  3. package/dist/index.js.map +1 -1
  4. package/dist/lib/api-surface/index.js +2 -2
  5. package/dist/lib/api-surface/index.js.map +1 -1
  6. package/dist/lib/catalogue/cli-version.d.ts +1 -1
  7. package/dist/lib/catalogue/cli-version.d.ts.map +1 -1
  8. package/dist/lib/catalogue/cli-version.js +3 -3
  9. package/dist/lib/catalogue/cli-version.js.map +1 -1
  10. package/dist/lib/catalogue/freshness.d.ts +26 -0
  11. package/dist/lib/catalogue/freshness.d.ts.map +1 -0
  12. package/dist/lib/catalogue/freshness.js +69 -0
  13. package/dist/lib/catalogue/freshness.js.map +1 -0
  14. package/dist/lib/catalogue/graph-run.js +1 -1
  15. package/dist/lib/catalogue/graph-run.js.map +1 -1
  16. package/dist/lib/ci-binding/index.d.ts +63 -0
  17. package/dist/lib/ci-binding/index.d.ts.map +1 -0
  18. package/dist/lib/ci-binding/index.js +220 -0
  19. package/dist/lib/ci-binding/index.js.map +1 -0
  20. package/dist/lib/ci-binding/module.d.ts +36 -0
  21. package/dist/lib/ci-binding/module.d.ts.map +1 -0
  22. package/dist/lib/ci-binding/module.js +204 -0
  23. package/dist/lib/ci-binding/module.js.map +1 -0
  24. package/dist/lib/context-pull/index.d.ts +39 -0
  25. package/dist/lib/context-pull/index.d.ts.map +1 -0
  26. package/dist/lib/context-pull/index.js +151 -0
  27. package/dist/lib/context-pull/index.js.map +1 -0
  28. package/dist/lib/context-pull/resolve.d.ts +46 -0
  29. package/dist/lib/context-pull/resolve.d.ts.map +1 -0
  30. package/dist/lib/context-pull/resolve.js +70 -0
  31. package/dist/lib/context-pull/resolve.js.map +1 -0
  32. package/dist/lib/init/app.d.ts.map +1 -1
  33. package/dist/lib/init/app.js +3 -0
  34. package/dist/lib/init/app.js.map +1 -1
  35. package/dist/lib/init/ci-workflow.d.ts +6 -8
  36. package/dist/lib/init/ci-workflow.d.ts.map +1 -1
  37. package/dist/lib/init/ci-workflow.js +57 -120
  38. package/dist/lib/init/ci-workflow.js.map +1 -1
  39. package/dist/lib/init/integration.d.ts.map +1 -1
  40. package/dist/lib/init/integration.js +3 -0
  41. package/dist/lib/init/integration.js.map +1 -1
  42. package/dist/lib/init/platform.d.ts.map +1 -1
  43. package/dist/lib/init/platform.js +6 -2
  44. package/dist/lib/init/platform.js.map +1 -1
  45. package/dist/lib/lock-file.d.ts +20 -0
  46. package/dist/lib/lock-file.d.ts.map +1 -1
  47. package/dist/lib/lock-file.js +25 -1
  48. package/dist/lib/lock-file.js.map +1 -1
  49. package/dist/lib/mcp/build-info.d.ts.map +1 -1
  50. package/dist/lib/mcp/build-info.js +3 -3
  51. package/dist/lib/mcp/build-info.js.map +1 -1
  52. package/dist/lib/pack/index.js +2 -2
  53. package/dist/lib/pack/index.js.map +1 -1
  54. package/dist/lib/pack/validate.js +2 -2
  55. package/dist/lib/pack/validate.js.map +1 -1
  56. package/dist/lib/package-version.d.ts +23 -0
  57. package/dist/lib/package-version.d.ts.map +1 -1
  58. package/dist/lib/package-version.js +47 -10
  59. package/dist/lib/package-version.js.map +1 -1
  60. package/dist/lib/sync/index.d.ts +13 -0
  61. package/dist/lib/sync/index.d.ts.map +1 -1
  62. package/dist/lib/sync/index.js +69 -46
  63. package/dist/lib/sync/index.js.map +1 -1
  64. package/dist/lib/validate/bundle-coherence.js +2 -2
  65. package/dist/lib/validate/bundle-coherence.js.map +1 -1
  66. package/dist/lib/validate/plan.d.ts +25 -0
  67. package/dist/lib/validate/plan.d.ts.map +1 -0
  68. package/dist/lib/validate/plan.js +54 -0
  69. package/dist/lib/validate/plan.js.map +1 -0
  70. package/dist/maintain-bin.d.ts +3 -0
  71. package/dist/maintain-bin.d.ts.map +1 -0
  72. package/dist/maintain-bin.js +8 -0
  73. package/dist/maintain-bin.js.map +1 -0
  74. package/dist/maintain-program.d.ts +8 -0
  75. package/dist/maintain-program.d.ts.map +1 -0
  76. package/dist/maintain-program.js +91 -0
  77. package/dist/maintain-program.js.map +1 -0
  78. package/dist/maintain-version.json +4 -0
  79. package/dist/verbs/catalogue-maintain.d.ts +6 -0
  80. package/dist/verbs/catalogue-maintain.d.ts.map +1 -0
  81. package/dist/verbs/catalogue-maintain.js +110 -0
  82. package/dist/verbs/catalogue-maintain.js.map +1 -0
  83. package/dist/verbs/catalogue.d.ts +5 -0
  84. package/dist/verbs/catalogue.d.ts.map +1 -1
  85. package/dist/verbs/catalogue.js +14 -80
  86. package/dist/verbs/catalogue.js.map +1 -1
  87. package/dist/verbs/context.d.ts +3 -0
  88. package/dist/verbs/context.d.ts.map +1 -0
  89. package/dist/verbs/context.js +39 -0
  90. package/dist/verbs/context.js.map +1 -0
  91. package/dist/verbs/pack-build.d.ts +3 -0
  92. package/dist/verbs/pack-build.d.ts.map +1 -0
  93. package/dist/verbs/pack-build.js +31 -0
  94. package/dist/verbs/pack-build.js.map +1 -0
  95. package/dist/verbs/pack.d.ts.map +1 -1
  96. package/dist/verbs/pack.js +2 -25
  97. package/dist/verbs/pack.js.map +1 -1
  98. package/dist/verbs/sync.d.ts.map +1 -1
  99. package/dist/verbs/sync.js +21 -0
  100. package/dist/verbs/sync.js.map +1 -1
  101. package/dist/verbs/validate.d.ts.map +1 -1
  102. package/dist/verbs/validate.js +26 -0
  103. package/dist/verbs/validate.js.map +1 -1
  104. package/dist/verify-program.d.ts +6 -1
  105. package/dist/verify-program.d.ts.map +1 -1
  106. package/dist/verify-program.js +11 -4
  107. package/dist/verify-program.js.map +1 -1
  108. package/dist/verify-version.json +2 -2
  109. package/package.json +5 -4
  110. package/scripts/{build-verify-package.mjs → build-persona-package.mjs} +112 -46
  111. package/scripts/copy-yaml-assets.mjs +4 -2
  112. package/scripts/dagger-parity.sh +74 -0
  113. package/scripts/maintain-acceptance.mjs +240 -0
  114. package/scripts/maintain-version.json +4 -0
  115. package/scripts/release-gate.mjs +9 -0
  116. package/scripts/verify-version.json +2 -2
@@ -0,0 +1,54 @@
1
+ /**
2
+ * The method-managed validation job, as DATA (bead sdm-dd6.2; Dagger ruling sdm-s48, 2026-10-15).
3
+ *
4
+ * One ordered plan per profile: every default validator, the platform's script-only checks, then the
5
+ * advisory catalogue freshness check. Every executor renders or runs THIS: the GitHub workflow
6
+ * generator (ci-workflow.ts) and the Dagger module (via `sdd-verify validate --list`). The job list
7
+ * drifted once when CI kept a hand copy of the suite (2026-10-01: three validators never reached CI),
8
+ * so no executor may keep its own list.
9
+ */
10
+ import { validatorsForProfile } from "./dispatch.js";
11
+ /** Titles kept from the hand-kept list, so step names stay readable. */
12
+ const TITLES = {
13
+ "adr-structure": "Validate ADR metadata",
14
+ "spec-lifecycle": "Validate spec lifecycle",
15
+ "no-bare-adr": "Reject bare ADR references",
16
+ traceability: "Validate traceability",
17
+ "runway-classification": "Validate runway classification",
18
+ "corpus-consistency": "Validate corpus consistency",
19
+ config: "Validate configuration",
20
+ "app-docs": "Validate app documentation",
21
+ "integration-docs": "Validate integration documentation",
22
+ "yaml-parse": "Validate that tracked YAML parses",
23
+ "gate-readiness": "Validate gate readiness",
24
+ "bundle-coherence": "Report bundle coherence",
25
+ // CI has no platform checkout, so this step runs the app-only checks; the met gate needs the platform beside it.
26
+ "app-dependencies": "Validate app dependencies (app-only checks; no platform checkout in CI)",
27
+ };
28
+ export function methodValidationPlan(profile) {
29
+ const steps = validatorsForProfile(profile)
30
+ .filter((v) => v.optional !== true)
31
+ .map((v) => ({
32
+ id: v.name,
33
+ title: TITLES[v.name] ?? `Validate ${v.name}`,
34
+ tool: "sdd-verify",
35
+ args: ["validate", "--target-repo", ".", "--validator", v.name],
36
+ advisory: false,
37
+ }));
38
+ if (profile === "platform") {
39
+ steps.push({ id: "cascade-completeness", title: "Validate cascade completeness", tool: "bash", args: ["orchestration/scripts/validate-cascade-completeness.sh", "all"], advisory: false }, { id: "architecture-alignment", title: "Validate architecture alignment", tool: "bash", args: ["orchestration/scripts/validate-architecture-alignment.sh"], advisory: false });
40
+ }
41
+ steps.push({
42
+ id: "catalogue-freshness",
43
+ title: "Check catalogues reproduce from the specs (advisory)",
44
+ tool: "sdd-maintain",
45
+ args: ["catalogue", "build", "--check", "--sdd-path", "."],
46
+ advisory: true,
47
+ });
48
+ return steps;
49
+ }
50
+ /** The shell form of a step, as a CI host's `run:` line writes it. */
51
+ export function stepCommand(step) {
52
+ return [step.tool, ...step.args].join(" ");
53
+ }
54
+ //# sourceMappingURL=plan.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plan.js","sourceRoot":"","sources":["../../../src/lib/validate/plan.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAerD,wEAAwE;AACxE,MAAM,MAAM,GAAqC;IAC/C,eAAe,EAAE,uBAAuB;IACxC,gBAAgB,EAAE,yBAAyB;IAC3C,aAAa,EAAE,4BAA4B;IAC3C,YAAY,EAAE,uBAAuB;IACrC,uBAAuB,EAAE,gCAAgC;IACzD,oBAAoB,EAAE,6BAA6B;IACnD,MAAM,EAAE,wBAAwB;IAChC,UAAU,EAAE,4BAA4B;IACxC,kBAAkB,EAAE,oCAAoC;IACxD,YAAY,EAAE,mCAAmC;IACjD,gBAAgB,EAAE,yBAAyB;IAC3C,kBAAkB,EAAE,yBAAyB;IAC7C,iHAAiH;IACjH,kBAAkB,EAAE,yEAAyE;CAC9F,CAAC;AAEF,MAAM,UAAU,oBAAoB,CAAC,OAAgB;IACnD,MAAM,KAAK,GAAe,oBAAoB,CAAC,OAAO,CAAC;SACpD,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,IAAI,CAAC;SAClC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACX,EAAE,EAAE,CAAC,CAAC,IAAI;QACV,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,YAAY,CAAC,CAAC,IAAI,EAAE;QAC7C,IAAI,EAAE,YAAqB;QAC3B,IAAI,EAAE,CAAC,UAAU,EAAE,eAAe,EAAE,GAAG,EAAE,aAAa,EAAE,CAAC,CAAC,IAAI,CAAC;QAC/D,QAAQ,EAAE,KAAK;KAChB,CAAC,CAAC,CAAC;IACN,IAAI,OAAO,KAAK,UAAU,EAAE,CAAC;QAC3B,KAAK,CAAC,IAAI,CACR,EAAE,EAAE,EAAE,sBAAsB,EAAE,KAAK,EAAE,+BAA+B,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,wDAAwD,EAAE,KAAK,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,EAC9K,EAAE,EAAE,EAAE,wBAAwB,EAAE,KAAK,EAAE,iCAAiC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,0DAA0D,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAC9K,CAAC;IACJ,CAAC;IACD,KAAK,CAAC,IAAI,CAAC;QACT,EAAE,EAAE,qBAAqB;QACzB,KAAK,EAAE,sDAAsD;QAC7D,IAAI,EAAE,cAAc;QACpB,IAAI,EAAE,CAAC,WAAW,EAAE,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,GAAG,CAAC;QAC1D,QAAQ,EAAE,IAAI;KACf,CAAC,CAAC;IACH,OAAO,KAAK,CAAC;AACf,CAAC;AAED,sEAAsE;AACtE,MAAM,UAAU,WAAW,CAAC,IAAc;IACxC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC7C,CAAC"}
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=maintain-bin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"maintain-bin.d.ts","sourceRoot":"","sources":["../src/maintain-bin.ts"],"names":[],"mappings":""}
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env node
2
+ import { runMaintain } from "./maintain-program.js";
3
+ runMaintain(process.argv.slice(2)).catch((err) => {
4
+ const message = err instanceof Error ? err.message : String(err);
5
+ process.stderr.write(`sdd-maintain: ${message}\n`);
6
+ process.exit(1);
7
+ });
8
+ //# sourceMappingURL=maintain-bin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"maintain-bin.js","sourceRoot":"","sources":["../src/maintain-bin.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEpD,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE;IACxD,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,iBAAiB,OAAO,IAAI,CAAC,CAAC;IACnD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
@@ -0,0 +1,8 @@
1
+ import { Command } from "commander";
2
+ /** The verbs maintain adds to verify, as `<verb>` or `<verb> <subcommand>`. Asserted by test. */
3
+ export declare const MAINTAIN_ONLY_SURFACE: ReadonlyArray<string>;
4
+ /** The full surface: verify's, plus maintain's own. */
5
+ export declare const MAINTAIN_SURFACE: ReadonlyArray<string>;
6
+ export declare function runMaintain(argv: readonly string[]): Promise<void>;
7
+ export declare function buildMaintainProgram(): Command;
8
+ //# sourceMappingURL=maintain-program.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"maintain-program.d.ts","sourceRoot":"","sources":["../src/maintain-program.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,OAAO,EAAkB,MAAM,WAAW,CAAC;AAYpD,iGAAiG;AACjG,eAAO,MAAM,qBAAqB,EAAE,aAAa,CAAC,MAAM,CAUvD,CAAC;AAEF,uDAAuD;AACvD,eAAO,MAAM,gBAAgB,EAAE,aAAa,CAAC,MAAM,CAAiD,CAAC;AAMrG,wBAAsB,WAAW,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAiBxE;AAED,wBAAgB,oBAAoB,IAAI,OAAO,CAmC9C"}
@@ -0,0 +1,91 @@
1
+ // Fourth entrypoint: the MAINTAIN surface — M-ADR 0218.
2
+ //
3
+ // A binary that brings an SDD current and rebuilds its derived model, and cannot change
4
+ // what the SDD says. It is to unattended sync waves what sdd-verify is to CI.
5
+ //
6
+ // A verb is here when everything it writes is DERIVED or METHOD-MANAGED, deterministically
7
+ // (M-ADR 0218 §4.2–4.3): the method payload, lock, CI block and briefing (`sync`,
8
+ // `generate-briefing`), the derived model (`catalogue build | aggregate | graph | diff`), an
9
+ // output the caller names (`pack build`, `render screen`), and a code repository's briefing
10
+ // (`context pull`). Plus the whole verify surface, because the personas nest.
11
+ //
12
+ // ⚠ As with sdd-verify, the boundary is ABSENCE, not a menu: the package ships only the import
13
+ // closure of maintain-bin.js, so authoring verbs (init, scaffold, plan, mcp, conformance,
14
+ // contracts, api-surface, snapshot, metamodel, migration-map) are not present to be reached.
15
+ // That is why every registration below imports a per-subcommand registrar, never a barrel.
16
+ // Unclassified verbs default to AUTHOR (M-ADR 0218 §4.2) and stay out until classified.
17
+ import { Command, CommanderError } from "commander";
18
+ import { getPackageVersion } from "./lib/package-version.js";
19
+ import { registerVerifySurface, rejectOutsideSurface, VERIFY_SURFACE } from "./verify-program.js";
20
+ import { registerCatalogueAggregate, registerCatalogueBuild, registerCatalogueDiff, registerCatalogueGraph } from "./verbs/catalogue-maintain.js";
21
+ import { registerContext } from "./verbs/context.js";
22
+ import { registerGenerateBriefing } from "./verbs/generate-briefing.js";
23
+ import { registerPackBuild } from "./verbs/pack-build.js";
24
+ import { registerRender } from "./verbs/render.js";
25
+ import { registerSync } from "./verbs/sync.js";
26
+ const SPEC_URL = "https://github.com/tomfosteruk/sdd-method/blob/main/docs/method/cli/sdd-cli-specification.md";
27
+ /** The verbs maintain adds to verify, as `<verb>` or `<verb> <subcommand>`. Asserted by test. */
28
+ export const MAINTAIN_ONLY_SURFACE = [
29
+ "sync",
30
+ "generate-briefing",
31
+ "context pull",
32
+ "catalogue build",
33
+ "catalogue aggregate",
34
+ "catalogue graph",
35
+ "catalogue diff",
36
+ "pack build",
37
+ "render screen",
38
+ ];
39
+ /** The full surface: verify's, plus maintain's own. */
40
+ export const MAINTAIN_SURFACE = [...VERIFY_SURFACE, ...MAINTAIN_ONLY_SURFACE];
41
+ const OUTSIDE = "is not part of sdd-maintain, which can bring a repository current and rebuild its derived model but cannot author specification content. " +
42
+ "Authoring verbs are in @sdd-method/sdd-cli.";
43
+ export async function runMaintain(argv) {
44
+ const program = buildMaintainProgram();
45
+ if (argv.length === 0) {
46
+ program.outputHelp();
47
+ return;
48
+ }
49
+ rejectOutsideSurface(program, argv, OUTSIDE);
50
+ try {
51
+ await program.parseAsync([...argv], { from: "user" });
52
+ }
53
+ catch (err) {
54
+ if (err instanceof CommanderError) {
55
+ if (err.code === "commander.help" || err.code === "commander.helpDisplayed" || err.code === "commander.version") {
56
+ return;
57
+ }
58
+ }
59
+ throw err;
60
+ }
61
+ }
62
+ export function buildMaintainProgram() {
63
+ const program = new Command();
64
+ program
65
+ .name("sdd-maintain")
66
+ .description("Bring an SDD repository current and rebuild its derived model — sync, briefing, catalogue build and aggregate, pack build, context pull — plus every read-only verify verb. Cannot author specification content.")
67
+ .version(getPackageVersion(), "-v, --version")
68
+ .addHelpText("after", `\nSpec: ${SPEC_URL}\nAuthoring verbs (init, scaffold, plan, mcp, conformance, …) are in @sdd-method/sdd-cli.`)
69
+ .exitOverride()
70
+ .configureOutput({
71
+ writeOut: (str) => process.stdout.write(str),
72
+ writeErr: (str) => process.stderr.write(str),
73
+ });
74
+ // The verify surface first, from verify's own registration: the nesting is structural.
75
+ registerVerifySurface(program);
76
+ registerSync(program);
77
+ registerGenerateBriefing(program);
78
+ registerContext(program);
79
+ registerRender(program);
80
+ const catalogue = program.commands.find((c) => c.name() === "catalogue");
81
+ catalogue.description("Build, aggregate, validate and query per-SDD catalogues (ADR 0134) — the derived model");
82
+ registerCatalogueBuild(catalogue);
83
+ registerCatalogueAggregate(catalogue);
84
+ registerCatalogueGraph(catalogue);
85
+ registerCatalogueDiff(catalogue);
86
+ const pack = program.commands.find((c) => c.name() === "pack");
87
+ pack.description("Build and validate adopter-shipped context-pack bundles (ADR 0151)");
88
+ registerPackBuild(pack);
89
+ return program;
90
+ }
91
+ //# sourceMappingURL=maintain-program.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"maintain-program.js","sourceRoot":"","sources":["../src/maintain-program.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ {
2
+ "version": "0.1.0",
3
+ "built_against_sdd_cli": "1.42.0"
4
+ }
@@ -0,0 +1,6 @@
1
+ import type { Command } from "commander";
2
+ export declare function registerCatalogueBuild(catalogue: Command): void;
3
+ export declare function registerCatalogueAggregate(catalogue: Command): void;
4
+ export declare function registerCatalogueDiff(catalogue: Command): void;
5
+ export declare function registerCatalogueGraph(catalogue: Command): void;
6
+ //# sourceMappingURL=catalogue-maintain.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"catalogue-maintain.d.ts","sourceRoot":"","sources":["../../src/verbs/catalogue-maintain.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAuBzC,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,OAAO,GAAG,IAAI,CAiD/D;AAED,wBAAgB,0BAA0B,CAAC,SAAS,EAAE,OAAO,GAAG,IAAI,CAiCnE;AAED,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,OAAO,GAAG,IAAI,CAgB9D;AAED,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,OAAO,GAAG,IAAI,CAuD/D"}
@@ -0,0 +1,110 @@
1
+ // The catalogue subcommands that write the derived model — MAINTAIN under M-ADR 0218 §4.4:
2
+ // a deterministic function of the committed specs, written only under catalogues/,
3
+ // catalogues-aggregated/ and the graph projection beside them. One registrar per
4
+ // subcommand, importing each run* from its OWN module and never the catalogue barrel
5
+ // (which also re-exports migration-map), so the maintain package's import closure
6
+ // carries exactly these and no authoring module.
7
+ import { resolve } from "node:path";
8
+ import { runCatalogueBuild } from "../lib/catalogue/build.js";
9
+ import { runCatalogueAggregate } from "../lib/catalogue/aggregate.js";
10
+ import { runCatalogueGraph } from "../lib/catalogue/graph-run.js";
11
+ import { runCatalogueDiff } from "../lib/snapshot/catalogue-diff.js";
12
+ import { checkCataloguesFresh } from "../lib/catalogue/freshness.js";
13
+ export function registerCatalogueBuild(catalogue) {
14
+ catalogue
15
+ .command("build")
16
+ .description("Build catalogues for the current SDD repo from method-defined sources")
17
+ .option("--sdd-path <path>", "Path to the SDD repo root (defaults to cwd)")
18
+ .option("--out <path>", "Output directory for catalogues/ (defaults to <sdd-path>/catalogues)")
19
+ .option("--strict", "Treat findings as failures (default: only internal FK FAIL exits non-zero)")
20
+ .option("--snapshot-store <dir>", "Snapshot store root the binding's snapshot_area is relative to (default: $SDD_SNAPSHOT_STORE; M-ADR 0214)")
21
+ .option("--check", "Freshness check: build into a temporary directory, compare with the committed catalogues/, write nothing; exit 1 listing every stale file (M-ADR 0218 §5)")
22
+ .action(async (opts) => {
23
+ const snapshotStore = opts.snapshotStore ?? process.env.SDD_SNAPSHOT_STORE;
24
+ if (opts.check === true) {
25
+ if (opts.out !== undefined) {
26
+ process.stderr.write("--check builds into a temporary directory; it cannot be combined with --out\n");
27
+ process.exit(2);
28
+ }
29
+ const r = await checkCataloguesFresh(resolve(opts.sddPath ?? process.cwd()), {
30
+ ...(opts.strict !== undefined ? { strict: opts.strict } : {}),
31
+ ...(snapshotStore !== undefined ? { snapshotStore } : {}),
32
+ }, (s) => process.stdout.write(s));
33
+ if (r.exitCode !== 0)
34
+ process.exit(r.exitCode);
35
+ return;
36
+ }
37
+ const result = await runCatalogueBuild({
38
+ ...(opts.sddPath !== undefined ? { sddPath: opts.sddPath } : {}),
39
+ ...(opts.out !== undefined ? { outDir: opts.out } : {}),
40
+ ...(opts.strict !== undefined ? { strict: opts.strict } : {}),
41
+ ...(snapshotStore !== undefined ? { snapshotStore } : {}),
42
+ }, (s) => process.stdout.write(s));
43
+ if (result.exitCode !== 0)
44
+ process.exit(result.exitCode);
45
+ });
46
+ }
47
+ export function registerCatalogueAggregate(catalogue) {
48
+ catalogue
49
+ .command("aggregate")
50
+ .description("Aggregate sibling SDD catalogues into a single ecosystem catalogue")
51
+ .option("--sdd-path <path>", "Path to the ecosystem-root SDD repo (defaults to cwd)")
52
+ .option("--manifest <path>", "Path to the aggregation manifest (defaults to orchestration/aggregation-manifest.yaml)")
53
+ .option("--out <path>", "Output directory for aggregated catalogues/ (defaults to <sdd-path>/catalogues-aggregated)")
54
+ .option("--strict", "Treat findings as failures")
55
+ .action(async (opts) => {
56
+ const result = await runCatalogueAggregate({
57
+ ...(opts.sddPath !== undefined ? { sddPath: opts.sddPath } : {}),
58
+ ...(opts.manifest !== undefined
59
+ ? { manifestPath: opts.manifest }
60
+ : {}),
61
+ ...(opts.out !== undefined ? { outDir: opts.out } : {}),
62
+ ...(opts.strict !== undefined ? { strict: opts.strict } : {}),
63
+ }, (s) => process.stdout.write(s));
64
+ if (result.exitCode !== 0)
65
+ process.exit(result.exitCode);
66
+ });
67
+ }
68
+ export function registerCatalogueDiff(catalogue) {
69
+ catalogue
70
+ .command("diff")
71
+ .description("Build the catalogues at a git ref and at the working tree in ONE process (so one CLI), and attribute the change at file grain: every SDD source file changed since the ref must be a target of some delta.yaml finding. Exit 1 on any unattributed change. Writes nothing into the SDD.")
72
+ .requiredOption("--from <ref>", "the git ref of the SDD before the snapshot update")
73
+ .requiredOption("--attribute <delta.yaml>", "the snapshot's delta.yaml, whose findings' targets attribute the change")
74
+ .option("--sdd-path <path>", "Path to the SDD repo root (defaults to cwd)")
75
+ .action(async (opts) => {
76
+ const r = await runCatalogueDiff({ sddPath: resolve(opts.sddPath ?? process.cwd()), from: opts.from, attribute: resolve(opts.attribute) }, (s) => process.stdout.write(s));
77
+ if (r.exitCode !== 0)
78
+ process.exit(r.exitCode);
79
+ });
80
+ }
81
+ export function registerCatalogueGraph(catalogue) {
82
+ catalogue
83
+ .command("graph")
84
+ .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")
85
+ .option("--sdd-path <path>", "Path to the SDD repo root (defaults to cwd)")
86
+ .option("--catalogues-dir <dir>", "Catalogues directory relative to the SDD root (default: catalogues, or catalogues-aggregated at --tier aggregate)")
87
+ .option("--tier <tier>", "Tier, explicit never inferred (member | aggregate; default member)")
88
+ .option("--out <path>", "Output file (default <catalogues-dir>-graph.jsonl beside the catalogues directory)")
89
+ .action(async (opts) => {
90
+ if (opts.tier !== undefined &&
91
+ opts.tier !== "member" &&
92
+ opts.tier !== "aggregate") {
93
+ process.stderr.write(`--tier must be 'member' or 'aggregate' (got: ${opts.tier})\n`);
94
+ process.exit(2);
95
+ }
96
+ const result = await runCatalogueGraph({
97
+ ...(opts.sddPath !== undefined ? { sddPath: opts.sddPath } : {}),
98
+ ...(opts.cataloguesDir !== undefined
99
+ ? { cataloguesDir: opts.cataloguesDir }
100
+ : {}),
101
+ ...(opts.tier !== undefined
102
+ ? { tier: opts.tier }
103
+ : {}),
104
+ ...(opts.out !== undefined ? { out: opts.out } : {}),
105
+ }, (s) => process.stdout.write(s));
106
+ if (result.exitCode !== 0)
107
+ process.exit(result.exitCode);
108
+ });
109
+ }
110
+ //# sourceMappingURL=catalogue-maintain.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"catalogue-maintain.js","sourceRoot":"","sources":["../../src/verbs/catalogue-maintain.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,8 @@
1
1
  import type { Command } from "commander";
2
+ /**
3
+ * M-ADR 0218 ruling 3 (2026-10-15): the 2.x → 3.0.0 migration it serves is finished in every
4
+ * known SDD and nothing calls it, so it warns on every use and goes at the next schema major.
5
+ */
6
+ export declare const MIGRATION_MAP_DEPRECATION = "[WARN] sdd-cli catalogue migration-map is deprecated and will be removed at the next catalogue schema major: it serves the 2.x \u2192 3.0.0 migration (M-ADR 0203), which every SDD has completed.";
2
7
  export declare function registerCatalogue(program: Command): void;
3
8
  //# sourceMappingURL=catalogue.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"catalogue.d.ts","sourceRoot":"","sources":["../../src/verbs/catalogue.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAmCzC,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAsKxD"}
1
+ {"version":3,"file":"catalogue.d.ts","sourceRoot":"","sources":["../../src/verbs/catalogue.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAoBzC;;;GAGG;AACH,eAAO,MAAM,yBAAyB,uMAC2J,CAAC;AAElM,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAyCxD"}
@@ -1,94 +1,28 @@
1
- import { resolve } from "node:path";
2
1
  import { registerCatalogueBaselineCheck, registerCatalogueImpact, registerCatalogueValidate, registerCatalogueVersion, } from "./catalogue-verify.js";
3
- import { runCatalogueBuild, runCatalogueAggregate, runCatalogueMigrationMap, } from "../lib/catalogue/index.js";
4
- import { runCatalogueGraph } from "../lib/catalogue/graph-run.js";
5
- import { runCatalogueDiff } from "../lib/snapshot/catalogue-diff.js";
2
+ import { runCatalogueMigrationMap } from "../lib/catalogue/migration-map.js";
3
+ import { registerCatalogueAggregate, registerCatalogueBuild, registerCatalogueDiff, registerCatalogueGraph, } from "./catalogue-maintain.js";
4
+ /**
5
+ * M-ADR 0218 ruling 3 (2026-10-15): the 2.x → 3.0.0 migration it serves is finished in every
6
+ * known SDD and nothing calls it, so it warns on every use and goes at the next schema major.
7
+ */
8
+ export const MIGRATION_MAP_DEPRECATION = "[WARN] sdd-cli catalogue migration-map is deprecated and will be removed at the next catalogue schema major: it serves the 2.x → 3.0.0 migration (M-ADR 0203), which every SDD has completed.";
6
9
  export function registerCatalogue(program) {
7
10
  const catalogue = program
8
11
  .command("catalogue")
9
12
  .description("Build, aggregate, and validate per-SDD catalogues per ADR 0134");
10
- catalogue
11
- .command("build")
12
- .description("Build catalogues for the current SDD repo from method-defined sources")
13
- .option("--sdd-path <path>", "Path to the SDD repo root (defaults to cwd)")
14
- .option("--out <path>", "Output directory for catalogues/ (defaults to <sdd-path>/catalogues)")
15
- .option("--strict", "Treat findings as failures (default: only internal FK FAIL exits non-zero)")
16
- .option("--snapshot-store <dir>", "Snapshot store root the binding's snapshot_area is relative to (default: $SDD_SNAPSHOT_STORE; M-ADR 0214)")
17
- .action(async (opts) => {
18
- const snapshotStore = opts.snapshotStore ?? process.env.SDD_SNAPSHOT_STORE;
19
- const result = await runCatalogueBuild({
20
- ...(opts.sddPath !== undefined ? { sddPath: opts.sddPath } : {}),
21
- ...(opts.out !== undefined ? { outDir: opts.out } : {}),
22
- ...(opts.strict !== undefined ? { strict: opts.strict } : {}),
23
- ...(snapshotStore !== undefined ? { snapshotStore } : {}),
24
- }, (s) => process.stdout.write(s));
25
- if (result.exitCode !== 0)
26
- process.exit(result.exitCode);
27
- });
28
- catalogue
29
- .command("aggregate")
30
- .description("Aggregate sibling SDD catalogues into a single ecosystem catalogue")
31
- .option("--sdd-path <path>", "Path to the ecosystem-root SDD repo (defaults to cwd)")
32
- .option("--manifest <path>", "Path to the aggregation manifest (defaults to orchestration/aggregation-manifest.yaml)")
33
- .option("--out <path>", "Output directory for aggregated catalogues/ (defaults to <sdd-path>/catalogues-aggregated)")
34
- .option("--strict", "Treat findings as failures")
35
- .action(async (opts) => {
36
- const result = await runCatalogueAggregate({
37
- ...(opts.sddPath !== undefined ? { sddPath: opts.sddPath } : {}),
38
- ...(opts.manifest !== undefined
39
- ? { manifestPath: opts.manifest }
40
- : {}),
41
- ...(opts.out !== undefined ? { outDir: opts.out } : {}),
42
- ...(opts.strict !== undefined ? { strict: opts.strict } : {}),
43
- }, (s) => process.stdout.write(s));
44
- if (result.exitCode !== 0)
45
- process.exit(result.exitCode);
46
- });
13
+ registerCatalogueBuild(catalogue);
14
+ registerCatalogueAggregate(catalogue);
47
15
  registerCatalogueValidate(catalogue);
48
- catalogue
49
- .command("diff")
50
- .description("Build the catalogues at a git ref and at the working tree in ONE process (so one CLI), and attribute the change at file grain: every SDD source file changed since the ref must be a target of some delta.yaml finding. Exit 1 on any unattributed change. Writes nothing into the SDD.")
51
- .requiredOption("--from <ref>", "the git ref of the SDD before the snapshot update")
52
- .requiredOption("--attribute <delta.yaml>", "the snapshot's delta.yaml, whose findings' targets attribute the change")
53
- .option("--sdd-path <path>", "Path to the SDD repo root (defaults to cwd)")
54
- .action(async (opts) => {
55
- const r = await runCatalogueDiff({ sddPath: resolve(opts.sddPath ?? process.cwd()), from: opts.from, attribute: resolve(opts.attribute) }, (s) => process.stdout.write(s));
56
- if (r.exitCode !== 0)
57
- process.exit(r.exitCode);
58
- });
59
- catalogue
60
- .command("graph")
61
- .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")
62
- .option("--sdd-path <path>", "Path to the SDD repo root (defaults to cwd)")
63
- .option("--catalogues-dir <dir>", "Catalogues directory relative to the SDD root (default: catalogues, or catalogues-aggregated at --tier aggregate)")
64
- .option("--tier <tier>", "Tier, explicit never inferred (member | aggregate; default member)")
65
- .option("--out <path>", "Output file (default <catalogues-dir>-graph.jsonl beside the catalogues directory)")
66
- .action(async (opts) => {
67
- if (opts.tier !== undefined &&
68
- opts.tier !== "member" &&
69
- opts.tier !== "aggregate") {
70
- process.stderr.write(`--tier must be 'member' or 'aggregate' (got: ${opts.tier})\n`);
71
- process.exit(2);
72
- }
73
- const result = await runCatalogueGraph({
74
- ...(opts.sddPath !== undefined ? { sddPath: opts.sddPath } : {}),
75
- ...(opts.cataloguesDir !== undefined
76
- ? { cataloguesDir: opts.cataloguesDir }
77
- : {}),
78
- ...(opts.tier !== undefined
79
- ? { tier: opts.tier }
80
- : {}),
81
- ...(opts.out !== undefined ? { out: opts.out } : {}),
82
- }, (s) => process.stdout.write(s));
83
- if (result.exitCode !== 0)
84
- process.exit(result.exitCode);
85
- });
16
+ registerCatalogueDiff(catalogue);
17
+ registerCatalogueGraph(catalogue);
86
18
  registerCatalogueImpact(catalogue);
87
19
  catalogue
88
20
  .command("migration-map")
89
- .description("Emit the 2.x → 3.0.0 id migration maps (external-system + contract ids) from existing catalogues/ (M-ADR 0203)")
21
+ .description("DEPRECATED, removed at the next schema major (M-ADR 0218 ruling 3). Emit the 2.x → 3.0.0 id migration maps (external-system + contract ids) from existing catalogues/ (M-ADR 0203)")
90
22
  .option("--sdd-path <path>", "Path to the SDD repo root (defaults to cwd)")
91
23
  .action(async (opts) => {
24
+ // On stderr, so the maps on stdout stay machine-readable for any script still piping them.
25
+ process.stderr.write(MIGRATION_MAP_DEPRECATION + "\n");
92
26
  const result = await runCatalogueMigrationMap({
93
27
  ...(opts.sddPath !== undefined ? { sddPath: opts.sddPath } : {}),
94
28
  }, (s) => process.stdout.write(s));
@@ -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":"AACA,OAAO,EACL,8BAA8B,EAC9B,uBAAuB,EACvB,yBAAyB,EACzB,wBAAwB,GACzB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,wBAAwB,EAAE,MAAM,mCAAmC,CAAC;AAC7E,OAAO,EACL,0BAA0B,EAC1B,sBAAsB,EACtB,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,yBAAyB,CAAC;AAOjC;;;GAGG;AACH,MAAM,CAAC,MAAM,yBAAyB,GACpC,+LAA+L,CAAC;AAElM,MAAM,UAAU,iBAAiB,CAAC,OAAgB;IAChD,MAAM,SAAS,GAAG,OAAO;SACtB,OAAO,CAAC,WAAW,CAAC;SACpB,WAAW,CACV,gEAAgE,CACjE,CAAC;IAEJ,sBAAsB,CAAC,SAAS,CAAC,CAAC;IAClC,0BAA0B,CAAC,SAAS,CAAC,CAAC;IAEtC,yBAAyB,CAAC,SAAS,CAAC,CAAC;IAErC,qBAAqB,CAAC,SAAS,CAAC,CAAC;IACjC,sBAAsB,CAAC,SAAS,CAAC,CAAC;IAElC,uBAAuB,CAAC,SAAS,CAAC,CAAC;IAEnC,SAAS;SACN,OAAO,CAAC,eAAe,CAAC;SACxB,WAAW,CACV,oLAAoL,CACrL;SACA,MAAM,CACL,mBAAmB,EACnB,6CAA6C,CAC9C;SACA,MAAM,CAAC,KAAK,EAAE,IAAqB,EAAE,EAAE;QACtC,2FAA2F;QAC3F,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,yBAAyB,GAAG,IAAI,CAAC,CAAC;QACvD,MAAM,MAAM,GAAG,MAAM,wBAAwB,CAC3C;YACE,GAAG,CAAC,IAAI,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACjE,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,CAAC,CAAC;IAEL,8BAA8B,CAAC,SAAS,CAAC,CAAC;IAE1C,wBAAwB,CAAC,SAAS,CAAC,CAAC;AACtC,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { Command } from "commander";
2
+ export declare function registerContext(program: Command): void;
3
+ //# sourceMappingURL=context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/verbs/context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAgBzC,wBAAgB,eAAe,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAkCtD"}
@@ -0,0 +1,39 @@
1
+ import { resolvePathOption } from "./path-option.js";
2
+ import { AGENT_HARNESSES, resolveAgentHarness } from "../lib/agent-harness.js";
3
+ import { runContextPull } from "../lib/context-pull/index.js";
4
+ const collect = (value, previous = []) => [...previous, resolvePathOption(value)];
5
+ export function registerContext(program) {
6
+ const context = program
7
+ .command("context")
8
+ .description("Briefing for a code repository an SDD specifies (M-ADR 0128 §1, M-ADR 0150 §4.4)");
9
+ context
10
+ .command("pull")
11
+ .description("Write agent-instructions.md, the harness wrapper's method-managed block and MCP_SETUP.md into this code repository, rendered from the templates its upstream SDD carries. The SDD is found by looking this repository up in the catalogues/repositories.csv of the SDDs beside it. Writes nothing else.")
12
+ .option("--target-repo <dir>", "the code repository to write into", resolvePathOption, process.cwd())
13
+ .option("--sdd <dir>", "the upstream SDD, skipping discovery", resolvePathOption)
14
+ .option("--repo <id>", "this repository's id in the SDD's catalogue (default: its git top-level directory name)")
15
+ .option("--search <dir>", "discover SDDs under this directory (repeatable; default: the code repository's parent)", collect)
16
+ .option("--agent-harness <name>", `target agent harness. Default: claude-code. Supported: ${AGENT_HARNESSES.join(", ")}`)
17
+ .option("--allow-overwrite", "replace a harness wrapper that has no method-managed markers")
18
+ .action(async (opts) => {
19
+ let agentHarness;
20
+ try {
21
+ agentHarness = resolveAgentHarness(opts.agentHarness);
22
+ }
23
+ catch (err) {
24
+ process.stderr.write(`[FAIL] ${err.message}\n`);
25
+ process.exit(1);
26
+ }
27
+ const { exitCode } = await runContextPull({
28
+ codeRepo: opts.targetRepo,
29
+ agentHarness,
30
+ allowOverwrite: opts.allowOverwrite === true,
31
+ sddPath: opts.sdd,
32
+ repoName: opts.repo,
33
+ searchRoots: opts.search,
34
+ });
35
+ if (exitCode !== 0)
36
+ process.exit(exitCode);
37
+ });
38
+ }
39
+ //# sourceMappingURL=context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/verbs/context.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC/E,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAW9D,MAAM,OAAO,GAAG,CAAC,KAAa,EAAE,WAAqB,EAAE,EAAY,EAAE,CAAC,CAAC,GAAG,QAAQ,EAAE,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAC;AAE9G,MAAM,UAAU,eAAe,CAAC,OAAgB;IAC9C,MAAM,OAAO,GAAG,OAAO;SACpB,OAAO,CAAC,SAAS,CAAC;SAClB,WAAW,CAAC,kFAAkF,CAAC,CAAC;IAEnG,OAAO;SACJ,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CACV,ySAAyS,CAC1S;SACA,MAAM,CAAC,qBAAqB,EAAE,mCAAmC,EAAE,iBAAiB,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC;SACpG,MAAM,CAAC,aAAa,EAAE,sCAAsC,EAAE,iBAAiB,CAAC;SAChF,MAAM,CAAC,aAAa,EAAE,yFAAyF,CAAC;SAChH,MAAM,CAAC,gBAAgB,EAAE,wFAAwF,EAAE,OAAO,CAAC;SAC3H,MAAM,CAAC,wBAAwB,EAAE,0DAA0D,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;SACxH,MAAM,CAAC,mBAAmB,EAAE,8DAA8D,CAAC;SAC3F,MAAM,CAAC,KAAK,EAAE,IAAiC,EAAE,EAAE;QAClD,IAAI,YAAY,CAAC;QACjB,IAAI,CAAC;YACH,YAAY,GAAG,mBAAmB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACxD,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,UAAW,GAAa,CAAC,OAAO,IAAI,CAAC,CAAC;YAC3D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,cAAc,CAAC;YACxC,QAAQ,EAAE,IAAI,CAAC,UAAU;YACzB,YAAY;YACZ,cAAc,EAAE,IAAI,CAAC,cAAc,KAAK,IAAI;YAC5C,OAAO,EAAE,IAAI,CAAC,GAAG;YACjB,QAAQ,EAAE,IAAI,CAAC,IAAI;YACnB,WAAW,EAAE,IAAI,CAAC,MAAM;SACzB,CAAC,CAAC;QACH,IAAI,QAAQ,KAAK,CAAC;YAAE,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { Command } from "commander";
2
+ export declare function registerPackBuild(pack: Command): void;
3
+ //# sourceMappingURL=pack-build.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pack-build.d.ts","sourceRoot":"","sources":["../../src/verbs/pack-build.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAazC,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CA6CrD"}
@@ -0,0 +1,31 @@
1
+ // `pack build` alone — MAINTAIN under M-ADR 0218 §4.4: it publishes a tarball to an output
2
+ // path, outside the producer's tracked content. Its own module, so the maintain package can
3
+ // carry it without the rest of the full CLI.
4
+ import { resolvePathOption } from "./path-option.js";
5
+ import { runPackBuild } from "../lib/pack/index.js";
6
+ export function registerPackBuild(pack) {
7
+ pack
8
+ .command("build")
9
+ .description("Build a context-pack tarball from a seed file. Runs producer-side leakage check before emit.")
10
+ .requiredOption("--seed <path>", "path to the seed file (orchestration/distribution/{name}-seed.yaml)")
11
+ .option("--producer-repo <dir>", "adopter repo root (managed_paths are resolved relative to this; defaults to cwd)", process.cwd())
12
+ .option("--out-dir <dir>", "output directory for the tarball (defaults to <producer-repo>/dist/<pack-name>/)", resolvePathOption)
13
+ .option("--forward-base-managed-paths <path>", "path to forward-base MANAGED_PATHS.txt for the leakage check (defaults to extracting from method-baseline.lock)")
14
+ .option("--publish-transform", "apply the point-in-time / producer-agnostic publish transform (ADR 0183/0184): drop non-Accepted ADRs, strip lineage + stripped-class fields, flatten cross-repo refs, fail closed on leaks. For producer-published bundles.")
15
+ .option("--origin-prefix", "with the publish transform, apply the range-aware origin prefix (ADR 0140 §4.1): 0NNN→M-ADR, 9NNN→RA-ADR, adopter 1NNN stays ADR; ADR files renamed to match. Implies --publish-transform. The RA-ADR bundle cutover switch.")
16
+ .action(async (opts) => {
17
+ const { exitCode } = await runPackBuild({
18
+ seedPath: opts.seed,
19
+ producerRepo: opts.producerRepo ?? process.cwd(),
20
+ ...(opts.outDir && { outDir: opts.outDir }),
21
+ ...(opts.forwardBaseManagedPaths && {
22
+ forwardBaseManagedPathsFile: opts.forwardBaseManagedPaths,
23
+ }),
24
+ ...(opts.publishTransform && { publishTransform: true }),
25
+ ...(opts.originPrefix && { originPrefix: true }),
26
+ });
27
+ if (exitCode !== 0)
28
+ process.exit(exitCode);
29
+ });
30
+ }
31
+ //# sourceMappingURL=pack-build.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pack-build.js","sourceRoot":"","sources":["../../src/verbs/pack-build.ts"],"names":[],"mappings":"AAAA,2FAA2F;AAC3F,4FAA4F;AAC5F,6CAA6C;AAG7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAWpD,MAAM,UAAU,iBAAiB,CAAC,IAAa;IAC7C,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;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;AAczC,wBAAgB,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAqDnD"}
1
+ {"version":3,"file":"pack.d.ts","sourceRoot":"","sources":["../../src/verbs/pack.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIzC,wBAAgB,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAUnD"}