@sdd-method/sdd-cli 1.38.0 → 1.39.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/lib/catalogue/build.d.ts +3 -0
- package/dist/lib/catalogue/build.d.ts.map +1 -1
- package/dist/lib/catalogue/build.js +11 -3
- package/dist/lib/catalogue/build.js.map +1 -1
- package/dist/lib/catalogue/builders/evidence-target-repo.d.ts +4 -0
- package/dist/lib/catalogue/builders/evidence-target-repo.d.ts.map +1 -0
- package/dist/lib/catalogue/builders/evidence-target-repo.js +67 -0
- package/dist/lib/catalogue/builders/evidence-target-repo.js.map +1 -0
- package/dist/lib/catalogue/builders/quality-scores.d.ts +13 -0
- package/dist/lib/catalogue/builders/quality-scores.d.ts.map +1 -1
- package/dist/lib/catalogue/builders/quality-scores.js +39 -0
- package/dist/lib/catalogue/builders/quality-scores.js.map +1 -1
- package/dist/lib/catalogue/canonical-schema.yaml +30 -1
- package/dist/lib/catalogue/rubric-coverage-map.yaml +8 -0
- package/dist/lib/mcp/workspace.d.ts +7 -1
- package/dist/lib/mcp/workspace.d.ts.map +1 -1
- package/dist/lib/mcp/workspace.js +19 -2
- package/dist/lib/mcp/workspace.js.map +1 -1
- package/dist/lib/sync/settings-merge.d.ts.map +1 -1
- package/dist/lib/sync/settings-merge.js +19 -29
- package/dist/lib/sync/settings-merge.js.map +1 -1
- package/package.json +2 -2
- package/scripts/build-verify-package.mjs +8 -1
- package/scripts/verify-version.json +4 -0
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
# Emitted by sdd-cli's YAML emitter with no line folding; the three header scalars are quoted for the
|
|
8
8
|
# textual readers downstream. The one deliberate difference from the authored form is schema_status:
|
|
9
9
|
# the authored form says canonical; a projection never does.
|
|
10
|
-
schema_version: "3.
|
|
10
|
+
schema_version: "3.19.0"
|
|
11
11
|
schema_owner: "sdd-method"
|
|
12
12
|
schema_status: "generated"
|
|
13
13
|
enums:
|
|
@@ -4021,3 +4021,32 @@ catalogues:
|
|
|
4021
4021
|
column_enums:
|
|
4022
4022
|
verdict: enums.support_verdict
|
|
4023
4023
|
limiting_reason: enums.limiting_reason
|
|
4024
|
+
evidence_target_repo:
|
|
4025
|
+
primary_key: id
|
|
4026
|
+
columns:
|
|
4027
|
+
- name: id
|
|
4028
|
+
type: string
|
|
4029
|
+
nullable: false
|
|
4030
|
+
description: <evidence_path>::<repo_id>.
|
|
4031
|
+
- name: evidence_path
|
|
4032
|
+
type: string
|
|
4033
|
+
nullable: false
|
|
4034
|
+
description: The evidence file, relative to the SDD root.
|
|
4035
|
+
- name: repo_id
|
|
4036
|
+
type: string
|
|
4037
|
+
nullable: false
|
|
4038
|
+
description: The repository the evidence concerns. Another SDD's by definition, so external at build; it must resolve at aggregation.
|
|
4039
|
+
- name: source_sdd_id
|
|
4040
|
+
type: string
|
|
4041
|
+
nullable: true
|
|
4042
|
+
description: Originating SDD slug. Populated by the aggregator per M-ADR 0134.
|
|
4043
|
+
- name: platform_sdd_id
|
|
4044
|
+
type: string
|
|
4045
|
+
nullable: true
|
|
4046
|
+
description: The platform this row belongs to — sdd_id of its platform-root. Stamped by the aggregator (M-ADR 0208 §4.4).
|
|
4047
|
+
description: "A reverse evidence file names a repository another SDD owns, through its top-level target_repo (M-ADR 0214 §4.10). A reference, never a claim: the repository is described by exactly one SDD, elsewhere."
|
|
4048
|
+
foreign_keys:
|
|
4049
|
+
- column: repo_id
|
|
4050
|
+
references: repositories.id
|
|
4051
|
+
nullable: false
|
|
4052
|
+
external: true
|
|
@@ -851,3 +851,11 @@ coverage:
|
|
|
851
851
|
kind: enum
|
|
852
852
|
scoring: not-applicable
|
|
853
853
|
reason: closed vocabulary, not an artefact
|
|
854
|
+
evidence_target_repo:
|
|
855
|
+
kind: entity
|
|
856
|
+
scoring: predicate
|
|
857
|
+
instrument: "FK resolution against repositories at aggregation: a reference that names no repository fails like any other foreign key (M-ADR 0214 §4.10)"
|
|
858
|
+
relationships:
|
|
859
|
+
repo_id:
|
|
860
|
+
class: xref
|
|
861
|
+
impact_flow: toward-source
|
|
@@ -5,7 +5,13 @@
|
|
|
5
5
|
* Precedence:
|
|
6
6
|
* 1. SDD_REPO_PATH env var
|
|
7
7
|
* 2. --sdd-repo CLI flag (passed in by the caller)
|
|
8
|
-
* 3.
|
|
8
|
+
* 3. A PLATFORM SDD serves itself: when the git root's own marker reads
|
|
9
|
+
* `platform-product`, it is the SDD — whatever its siblings carry
|
|
10
|
+
* (ruled 2026-10-01). This is what let platform repos drop the
|
|
11
|
+
* machine-specific SDD_REPO_PATH their committed settings carried.
|
|
12
|
+
* An app/integration repo's MCP serves its sibling PLATFORM SDD, so
|
|
13
|
+
* its own marker does not short-circuit.
|
|
14
|
+
* 4. Otherwise walk up to git root; scan siblings for the .sdd-repo-kind
|
|
9
15
|
* marker; fall through to the nested case (cwd IS the SDD)
|
|
10
16
|
*
|
|
11
17
|
* Ambiguous and missing cases surface structured errors — no guessing.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workspace.d.ts","sourceRoot":"","sources":["../../../src/lib/mcp/workspace.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"workspace.d.ts","sourceRoot":"","sources":["../../../src/lib/mcp/workspace.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAMH,eAAO,MAAM,eAAe,mBAAmB,CAAC;AAEhD,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,UAAU,CAAC;IAChC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,KAAK,GAAG,MAAM,GAAG,SAAS,GAAG,QAAQ,CAAC;CACxD;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,cAAc,GAAG,WAAW,CAkEhE;AA8BD,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAUpE"}
|
|
@@ -5,12 +5,18 @@
|
|
|
5
5
|
* Precedence:
|
|
6
6
|
* 1. SDD_REPO_PATH env var
|
|
7
7
|
* 2. --sdd-repo CLI flag (passed in by the caller)
|
|
8
|
-
* 3.
|
|
8
|
+
* 3. A PLATFORM SDD serves itself: when the git root's own marker reads
|
|
9
|
+
* `platform-product`, it is the SDD — whatever its siblings carry
|
|
10
|
+
* (ruled 2026-10-01). This is what let platform repos drop the
|
|
11
|
+
* machine-specific SDD_REPO_PATH their committed settings carried.
|
|
12
|
+
* An app/integration repo's MCP serves its sibling PLATFORM SDD, so
|
|
13
|
+
* its own marker does not short-circuit.
|
|
14
|
+
* 4. Otherwise walk up to git root; scan siblings for the .sdd-repo-kind
|
|
9
15
|
* marker; fall through to the nested case (cwd IS the SDD)
|
|
10
16
|
*
|
|
11
17
|
* Ambiguous and missing cases surface structured errors — no guessing.
|
|
12
18
|
*/
|
|
13
|
-
import { existsSync, readdirSync, statSync } from "node:fs";
|
|
19
|
+
import { existsSync, readFileSync, readdirSync, statSync } from "node:fs";
|
|
14
20
|
import { dirname, join, resolve } from "node:path";
|
|
15
21
|
import { McpEnvelopeError } from "./errors.js";
|
|
16
22
|
export const SDD_MARKER_FILE = ".sdd-repo-kind";
|
|
@@ -35,6 +41,9 @@ export function resolveSddRepo(opts) {
|
|
|
35
41
|
context: { cwd: opts.cwd },
|
|
36
42
|
});
|
|
37
43
|
}
|
|
44
|
+
if (readMarker(codeRepoRoot) === "platform-product") {
|
|
45
|
+
return { path: codeRepoRoot, source: "nested" };
|
|
46
|
+
}
|
|
38
47
|
const candidates = findSiblingCandidates(codeRepoRoot);
|
|
39
48
|
if (existsSync(join(codeRepoRoot, SDD_MARKER_FILE))) {
|
|
40
49
|
candidates.push(codeRepoRoot);
|
|
@@ -66,6 +75,14 @@ export function resolveSddRepo(opts) {
|
|
|
66
75
|
const source = only === codeRepoRoot ? "nested" : "sibling";
|
|
67
76
|
return { path: only, source };
|
|
68
77
|
}
|
|
78
|
+
function readMarker(dir) {
|
|
79
|
+
try {
|
|
80
|
+
return readFileSync(join(dir, SDD_MARKER_FILE), "utf8").trim();
|
|
81
|
+
}
|
|
82
|
+
catch {
|
|
83
|
+
return "";
|
|
84
|
+
}
|
|
85
|
+
}
|
|
69
86
|
function assertMarker(path, sourceLabel) {
|
|
70
87
|
if (!existsSync(path) || !statSync(path).isDirectory()) {
|
|
71
88
|
throw new McpEnvelopeError({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workspace.js","sourceRoot":"","sources":["../../../src/lib/mcp/workspace.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"workspace.js","sourceRoot":"","sources":["../../../src/lib/mcp/workspace.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC1E,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAE/C,MAAM,CAAC,MAAM,eAAe,GAAG,gBAAgB,CAAC;AAahD,MAAM,UAAU,cAAc,CAAC,IAAoB;IACjD,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;IAC1C,IAAI,OAAO,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACzC,MAAM,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;QAC7B,YAAY,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QACzB,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;IACtC,CAAC;IAED,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACrD,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACnC,YAAY,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QAC1B,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;IACvC,CAAC;IAED,MAAM,YAAY,GAAG,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC/C,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,MAAM,IAAI,gBAAgB,CAAC;YACzB,IAAI,EAAE,aAAa;YACnB,OAAO,EAAE,qDAAqD,IAAI,CAAC,GAAG,IAAI;YAC1E,WAAW,EACT,6HAA6H;YAC/H,OAAO,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE;SAC3B,CAAC,CAAC;IACL,CAAC;IAED,IAAI,UAAU,CAAC,YAAY,CAAC,KAAK,kBAAkB,EAAE,CAAC;QACpD,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;IAClD,CAAC;IAED,MAAM,UAAU,GAAG,qBAAqB,CAAC,YAAY,CAAC,CAAC;IAEvD,IAAI,UAAU,CAAC,IAAI,CAAC,YAAY,EAAE,eAAe,CAAC,CAAC,EAAE,CAAC;QACpD,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAChC,CAAC;IAED,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5B,MAAM,IAAI,gBAAgB,CAAC;YACzB,IAAI,EAAE,cAAc;YACpB,OAAO,EAAE,yDAAyD,YAAY,YAAY,eAAe,UAAU;YACnH,WAAW,EAAE,6EAA6E,OAAO,CAAC,YAAY,CAAC,gFAAgF;YAC/L,OAAO,EAAE,EAAE,YAAY,EAAE,cAAc,EAAE,OAAO,CAAC,YAAY,CAAC,EAAE;SACjE,CAAC,CAAC;IACL,CAAC;IAED,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1B,MAAM,IAAI,gBAAgB,CAAC;YACzB,IAAI,EAAE,qBAAqB;YAC3B,OAAO,EAAE,oEAAoE;YAC7E,WAAW,EACT,6GAA6G;YAC/G,OAAO,EAAE,EAAE,UAAU,EAAE;SACxB,CAAC,CAAC;IACL,CAAC;IAED,MAAM,IAAI,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;IAC3B,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACvB,MAAM,IAAI,gBAAgB,CAAC;YACzB,IAAI,EAAE,cAAc;YACpB,OAAO,EAAE,uDAAuD;YAChE,WAAW,EACT,2EAA2E;SAC9E,CAAC,CAAC;IACL,CAAC;IACD,MAAM,MAAM,GACV,IAAI,KAAK,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;IAC/C,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;AAChC,CAAC;AAED,SAAS,UAAU,CAAC,GAAW;IAC7B,IAAI,CAAC;QACH,OAAO,YAAY,CAAC,IAAI,CAAC,GAAG,EAAE,eAAe,CAAC,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;IACjE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,SAAS,YAAY,CAAC,IAAY,EAAE,WAAmB;IACrD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;QACvD,MAAM,IAAI,gBAAgB,CAAC;YACzB,IAAI,EAAE,kBAAkB;YACxB,OAAO,EAAE,YAAY,IAAI,aAAa,WAAW,yCAAyC;YAC1F,WAAW,EACT,4EAA4E;YAC9E,OAAO,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE;SACvC,CAAC,CAAC;IACL,CAAC;IACD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC,EAAE,CAAC;QAC7C,MAAM,IAAI,gBAAgB,CAAC;YACzB,IAAI,EAAE,oBAAoB;YAC1B,OAAO,EAAE,YAAY,IAAI,aAAa,WAAW,oBAAoB,eAAe,eAAe;YACnG,WAAW,EAAE,gDAAgD,eAAe,oHAAoH;YAChM,OAAO,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,eAAe,EAAE,eAAe,EAAE;SACzE,CAAC,CAAC;IACL,CAAC;AACH,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,QAAgB;IAC9C,IAAI,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IAChC,4DAA4D;IAC5D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;QAC5B,IAAI,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;YAAE,OAAO,OAAO,CAAC;QACtD,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;QAChC,IAAI,MAAM,KAAK,OAAO;YAAE,OAAO,SAAS,CAAC;QACzC,OAAO,GAAG,MAAM,CAAC;IACnB,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,qBAAqB,CAAC,YAAoB;IACjD,MAAM,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;IACrC,IAAI,MAAM,KAAK,YAAY;QAAE,OAAO,EAAE,CAAC;IACvC,IAAI,OAAiB,CAAC;IACtB,IAAI,CAAC;QACH,OAAO,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;IAChC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,MAAM,UAAU,GAAa,EAAE,CAAC;IAChC,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QAChC,IAAI,GAAG,KAAK,YAAY;YAAE,SAAS;QACnC,IAAI,CAAC;YACH,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE;gBAAE,SAAS;QAC7C,CAAC;QAAC,MAAM,CAAC;YACP,SAAS;QACX,CAAC;QACD,IAAI,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,eAAe,CAAC,CAAC,EAAE,CAAC;YAC3C,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACvB,CAAC;IACH,CAAC;IACD,OAAO,UAAU,CAAC;AACpB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"settings-merge.d.ts","sourceRoot":"","sources":["../../../src/lib/sync/settings-merge.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAeH,OAAO,KAAK,EAAE,aAAa,EAAqB,MAAM,wBAAwB,CAAC;AAC/E,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAE/C,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC;IACjC,iEAAiE;IACjE,QAAQ,CAAC,YAAY,CAAC,EAAE,aAAa,CAAC;IACtC;;;;;OAKG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;IAC7B;;;;;;;;;OASG;IACH,QAAQ,CAAC,eAAe,CAAC,EAAE,OAAO,CAAC;CACpC;AAED,MAAM,WAAW,mBAAmB;IAClC,iEAAiE;IACjE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,sEAAsE;IACtE,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,sDAAsD;IACtD,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC;;;;;;;;;;;;;;;;OAgBG;IACH,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,kEAAkE;IAClE,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,qBAAqB;IACrB,QAAQ,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;IACtC,wEAAwE;IACxE,QAAQ,CAAC,kBAAkB,EAAE,SAAS,aAAa,EAAE,CAAC;IACtD,oDAAoD;IACpD,QAAQ,CAAC,YAAY,EAAE,SAAS,aAAa,EAAE,CAAC;IAChD,oCAAoC;IACpC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,kEAAkE;IAClE,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;CAC3B;AAED,eAAO,MAAM,iBAAiB,0BAA0B,CAAC;AAEzD,wBAAsB,yBAAyB,CAC7C,IAAI,EAAE,oBAAoB,GACzB,OAAO,CAAC,mBAAmB,CAAC,
|
|
1
|
+
{"version":3,"file":"settings-merge.d.ts","sourceRoot":"","sources":["../../../src/lib/sync/settings-merge.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAeH,OAAO,KAAK,EAAE,aAAa,EAAqB,MAAM,wBAAwB,CAAC;AAC/E,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAE/C,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC;IACjC,iEAAiE;IACjE,QAAQ,CAAC,YAAY,CAAC,EAAE,aAAa,CAAC;IACtC;;;;;OAKG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;IAC7B;;;;;;;;;OASG;IACH,QAAQ,CAAC,eAAe,CAAC,EAAE,OAAO,CAAC;CACpC;AAED,MAAM,WAAW,mBAAmB;IAClC,iEAAiE;IACjE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,sEAAsE;IACtE,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,sDAAsD;IACtD,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC;;;;;;;;;;;;;;;;OAgBG;IACH,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,kEAAkE;IAClE,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,qBAAqB;IACrB,QAAQ,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;IACtC,wEAAwE;IACxE,QAAQ,CAAC,kBAAkB,EAAE,SAAS,aAAa,EAAE,CAAC;IACtD,oDAAoD;IACpD,QAAQ,CAAC,YAAY,EAAE,SAAS,aAAa,EAAE,CAAC;IAChD,oCAAoC;IACpC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,kEAAkE;IAClE,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;CAC3B;AAED,eAAO,MAAM,iBAAiB,0BAA0B,CAAC;AAEzD,wBAAsB,yBAAyB,CAC7C,IAAI,EAAE,oBAAoB,GACzB,OAAO,CAAC,mBAAmB,CAAC,CA2H9B"}
|
|
@@ -19,35 +19,15 @@ export const SETTINGS_REL_PATH = ".claude/settings.json";
|
|
|
19
19
|
export async function syncMethodManagedSettings(opts) {
|
|
20
20
|
const absPath = join(opts.targetRepo, SETTINGS_REL_PATH);
|
|
21
21
|
const existing = await readSettings(absPath);
|
|
22
|
-
|
|
23
|
-
//
|
|
24
|
-
//
|
|
25
|
-
//
|
|
26
|
-
//
|
|
27
|
-
//
|
|
28
|
-
//
|
|
29
|
-
//
|
|
30
|
-
|
|
31
|
-
// an operator who ran `sync --target-repo .` from inside the repo
|
|
32
|
-
// committed the literal string ".", while every other repo in the same
|
|
33
|
-
// estate carried an absolute path. Same repo, same command, two
|
|
34
|
-
// operators, different committed content — and the "." form only
|
|
35
|
-
// resolves for a process whose cwd happens to be the repo root. Nothing
|
|
36
|
-
// warned, nothing normalised, exit 0. Found by an adopter audit.
|
|
37
|
-
//
|
|
38
|
-
// ⚠ RESIDUAL, deliberately not fixed here: an absolute path in a
|
|
39
|
-
// committed file is still machine-specific and churns per workstation.
|
|
40
|
-
// The principled fix is for the MCP resolver to stop needing this at
|
|
41
|
-
// all — see mcp/workspace.ts, where a repo carrying the marker ITSELF
|
|
42
|
-
// is only one candidate among its siblings, so a platform repo whose
|
|
43
|
-
// siblings are also SDDs hits MULTIPLE_SDDS_FOUND. Measured: the
|
|
44
|
-
// reverse estate's 4 platform repos need this env var (3 marker-bearing
|
|
45
|
-
// siblings each), the forward estate's 1 does not (0 siblings). So the
|
|
46
|
-
// real dependency is ESTATE LAYOUT, not profile — which is why the
|
|
47
|
-
// comment on SddMcpEntryOptions.sddRepoPath ("omit for platform
|
|
48
|
-
// profiles") and this one are each correct for one layout and neither
|
|
49
|
-
// states its condition.
|
|
50
|
-
opts.profile === "platform" ? { sddRepoPath: resolve(opts.targetRepo) } : {});
|
|
22
|
+
// No profile gets an SDD_REPO_PATH any more (ruled 2026-10-01). It was written for platform
|
|
23
|
+
// repos only because the resolver treated a marker-bearing repo as one candidate among its
|
|
24
|
+
// marker-bearing siblings (MULTIPLE_SDDS_FOUND in the reverse estate's layout). The resolver now
|
|
25
|
+
// lets a platform-product repo serve itself, so the env var, an absolute, machine-specific
|
|
26
|
+
// path in a COMMITTED file, is no longer needed. A value left by an older sync that points at
|
|
27
|
+
// the repo itself is this tool's own output and is removed (normaliseSddRepoPathForDrift); a
|
|
28
|
+
// value pointing anywhere else is the adopter's and is still drift. App/integration repos
|
|
29
|
+
// configure their sibling platform SDD as before.
|
|
30
|
+
const owned = buildMethodManagedServers({});
|
|
51
31
|
// Drift is detected against a PATH-NORMALISED view of the existing file,
|
|
52
32
|
// not the raw bytes. Reason, measured on a live estate: the F27 defect
|
|
53
33
|
// wrote the literal CLI argument (".") as SDD_REPO_PATH. Once the
|
|
@@ -211,6 +191,16 @@ function normaliseSddRepoPathForDrift(existing, owned, targetRepo) {
|
|
|
211
191
|
const existingPath = entry?.env?.["SDD_REPO_PATH"];
|
|
212
192
|
const ownedPath = owned[id]?.env?.["SDD_REPO_PATH"];
|
|
213
193
|
if (typeof existingPath === "string" &&
|
|
194
|
+
ownedPath === undefined &&
|
|
195
|
+
resolve(targetRepo, existingPath) === resolve(targetRepo)) {
|
|
196
|
+
// The retired platform SDD_REPO_PATH, pointing at the repo itself: regenerable, so the
|
|
197
|
+
// drift view drops it and the write (which replaces the entry whole) removes it.
|
|
198
|
+
const { SDD_REPO_PATH: _dropped, ...rest } = entry.env ?? {};
|
|
199
|
+
const { env: _env, ...bare } = entry;
|
|
200
|
+
out[id] = Object.keys(rest).length > 0 ? { ...bare, env: rest } : bare;
|
|
201
|
+
touched = true;
|
|
202
|
+
}
|
|
203
|
+
else if (typeof existingPath === "string" &&
|
|
214
204
|
typeof ownedPath === "string" &&
|
|
215
205
|
existingPath !== ownedPath &&
|
|
216
206
|
resolve(targetRepo, existingPath) === resolve(ownedPath)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"settings-merge.js","sourceRoot":"","sources":["../../../src/lib/sync/settings-merge.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACtE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACnD,OAAO,EACL,yBAAyB,EACzB,kBAAkB,EAClB,0BAA0B,GAC3B,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,uBAAuB,EACvB,gBAAgB,EAChB,wBAAwB,GACzB,MAAM,wBAAwB,CAAC;AAqEhC,MAAM,CAAC,MAAM,iBAAiB,GAAG,uBAAuB,CAAC;AAEzD,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAC7C,IAA0B;IAE1B,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,iBAAiB,CAAC,CAAC;IACzD,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,OAAO,CAAC,CAAC;IAE7C,
|
|
1
|
+
{"version":3,"file":"settings-merge.js","sourceRoot":"","sources":["../../../src/lib/sync/settings-merge.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACtE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACnD,OAAO,EACL,yBAAyB,EACzB,kBAAkB,EAClB,0BAA0B,GAC3B,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,uBAAuB,EACvB,gBAAgB,EAChB,wBAAwB,GACzB,MAAM,wBAAwB,CAAC;AAqEhC,MAAM,CAAC,MAAM,iBAAiB,GAAG,uBAAuB,CAAC;AAEzD,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAC7C,IAA0B;IAE1B,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,iBAAiB,CAAC,CAAC;IACzD,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,OAAO,CAAC,CAAC;IAE7C,4FAA4F;IAC5F,2FAA2F;IAC3F,iGAAiG;IACjG,2FAA2F;IAC3F,8FAA8F;IAC9F,6FAA6F;IAC7F,0FAA0F;IAC1F,kDAAkD;IAClD,MAAM,KAAK,GAAG,yBAAyB,CAAC,EAAE,CAAC,CAAC;IAE5C,yEAAyE;IACzE,uEAAuE;IACvE,kEAAkE;IAClE,qEAAqE;IACrE,8DAA8D;IAC9D,0EAA0E;IAC1E,uEAAuE;IACvE,0EAA0E;IAC1E,0EAA0E;IAC1E,sEAAsE;IACtE,wEAAwE;IACxE,0EAA0E;IAC1E,mEAAmE;IACnE,4DAA4D;IAC5D,MAAM,OAAO,GAAG,kBAAkB,CAChC,4BAA4B,CAAC,QAAQ,EAAE,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,EAC9D,KAAK,CACN,CAAC;IAEF,+EAA+E;IAC/E,6EAA6E;IAC7E,2EAA2E;IAC3E,+EAA+E;IAC/E,iBAAiB;IACjB,MAAM,YAAY,GAAG,gBAAgB,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IACvD,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,KAAK,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC;IAEnE,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY,KAAK,aAAa,CAAC;IACxD,MAAM,UAAU,GAAG,WAAW,CAAC,CAAC,CAAC,uBAAuB,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;IACvE,MAAM,YAAY,GAChB,WAAW,IAAI,UAAU;QACvB,CAAC,CAAC,gBAAgB,CAAC,QAA6B,EAAE,UAAU,CAAC;QAC7D,CAAC,CAAC,EAAE,CAAC;IAET,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;QAC5E,OAAO;YACL,IAAI,EAAE,iBAAiB;YACvB,OAAO;YACP,KAAK,EAAE,EAAE;YACT,uEAAuE;YACvE,sEAAsE;YACtE,qEAAqE;YACrE,QAAQ;YACR,OAAO,EAAE,EAAE;YACX,SAAS,EAAE,EAAE;YACb,kBAAkB,EAAE,EAAE;YACtB,YAAY;YACZ,SAAS,EAAE,KAAK;YAChB,OAAO,EAAE,IAAI;SACd,CAAC;IACJ,CAAC;IAED,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;QACnB,OAAO;YACL,IAAI,EAAE,iBAAiB;YACvB,OAAO;YACP,KAAK,EAAE,EAAE;YACT,QAAQ;YACR,OAAO,EAAE,EAAE;YACX,SAAS,EAAE,EAAE;YACb,kBAAkB,EAAE,EAAE;YACtB,YAAY;YACZ,SAAS,EAAE,KAAK;YAChB,OAAO,EAAE,KAAK;SACf,CAAC;IACJ,CAAC;IAED,MAAM,SAAS,GAAG,0BAA0B,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IAC9D,IAAI,YAAY,GAAmB,SAAS,CAAC,QAAQ,CAAC;IACtD,IAAI,kBAAkB,GAAoB,EAAE,CAAC;IAC7C,IAAI,WAAW,IAAI,UAAU,EAAE,CAAC;QAC9B,MAAM,WAAW,GAAG,wBAAwB,CAC1C,YAAiC,EACjC,UAAU,CACX,CAAC;QACF,YAAY,GAAG,WAAW,CAAC,QAA0B,CAAC;QACtD,kBAAkB,GAAG,CAAC,GAAG,WAAW,CAAC,aAAa,CAAC,CAAC;IACtD,CAAC;IAED,MAAM,OAAO,GAAG,SAAS,CAAC,OAAO,IAAI,kBAAkB,CAAC,MAAM,GAAG,CAAC,CAAC;IACnE,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO;YACL,IAAI,EAAE,iBAAiB;YACvB,OAAO;YACP,KAAK,EAAE,SAAS,CAAC,KAAK;YACtB,QAAQ;YACR,OAAO,EAAE,SAAS,CAAC,OAAO;YAC1B,SAAS,EAAE,SAAS,CAAC,SAAS;YAC9B,kBAAkB,EAAE,EAAE;YACtB,YAAY;YACZ,SAAS,EAAE,KAAK;YAChB,OAAO,EAAE,KAAK;SACf,CAAC;IACJ,CAAC;IAED,MAAM,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACnD,MAAM,SAAS,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,MAAM,CAAC,CAAC;IAC/E,OAAO;QACL,IAAI,EAAE,iBAAiB;QACvB,OAAO;QACP,KAAK,EAAE,SAAS,CAAC,KAAK;QACtB,QAAQ;QACR,OAAO,EAAE,SAAS,CAAC,OAAO;QAC1B,SAAS,EAAE,SAAS,CAAC,SAAS;QAC9B,kBAAkB;QAClB,YAAY;QACZ,SAAS,EAAE,IAAI;QACf,OAAO,EAAE,KAAK;KACf,CAAC;AACJ,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,gBAAgB,CACvB,QAAwB,EACxB,KAA+C;IAE/C,MAAM,OAAO,GAAG,QAAQ,CAAC,YAAY,CAAC,CAAC;IACvC,MAAM,OAAO,GACX,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;QAC/D,CAAC,CAAE,OAA0C;QAC7C,CAAC,CAAC,EAAE,CAAC;IACT,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;SACtB,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,OAAO,CAAC,CAAC;SAChC,IAAI,EAAE,CAAC;AACZ,CAAC;AAED,KAAK,UAAU,YAAY,CAAC,OAAe;IACzC,IAAI,CAAC,CAAC,MAAM,UAAU,CAAC,OAAO,CAAC,CAAC;QAAE,OAAO,EAAE,CAAC;IAC5C,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAC5C,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IACvC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAY,CAAC;QAC1C,IAAI,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YACnE,OAAO,MAAwB,CAAC;QAClC,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,gFAAgF;IAClF,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,KAAK,UAAU,UAAU,CAAC,IAAY;IACpC,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC;QACnB,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;;;;;;;;;;GAWG;AACH,SAAS,4BAA4B,CACnC,QAAwB,EACxB,KAA+C,EAC/C,UAAkB;IAElB,MAAM,OAAO,GAAG,QAAQ,CAAC,YAAY,CAAC,CAAC;IACvC,IAAI,CAAC,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QACtE,OAAO,QAAQ,CAAC;IAClB,CAAC;IACD,MAAM,OAAO,GAAG,OAAyC,CAAC;IAC1D,MAAM,GAAG,GAAmC,EAAE,CAAC;IAC/C,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,KAAK,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QAClD,MAAM,YAAY,GAAG,KAAK,EAAE,GAAG,EAAE,CAAC,eAAe,CAAC,CAAC;QACnD,MAAM,SAAS,GAAG,KAAK,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,eAAe,CAAC,CAAC;QACpD,IACE,OAAO,YAAY,KAAK,QAAQ;YAChC,SAAS,KAAK,SAAS;YACvB,OAAO,CAAC,UAAU,EAAE,YAAY,CAAC,KAAK,OAAO,CAAC,UAAU,CAAC,EACzD,CAAC;YACD,uFAAuF;YACvF,iFAAiF;YACjF,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,GAAG,IAAI,EAAE,GAAG,KAAK,CAAC,GAAG,IAAI,EAAE,CAAC;YAC7D,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,KAAK,CAAC;YACrC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;YACvE,OAAO,GAAG,IAAI,CAAC;QACjB,CAAC;aAAM,IACL,OAAO,YAAY,KAAK,QAAQ;YAChC,OAAO,SAAS,KAAK,QAAQ;YAC7B,YAAY,KAAK,SAAS;YAC1B,OAAO,CAAC,UAAU,EAAE,YAAY,CAAC,KAAK,OAAO,CAAC,SAAS,CAAC,EACxD,CAAC;YACD,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,EAAE,GAAG,EAAE,EAAE,GAAG,KAAK,CAAC,GAAG,EAAE,aAAa,EAAE,SAAS,EAAE,EAAE,CAAC;YACxE,OAAO,GAAG,IAAI,CAAC;QACjB,CAAC;aAAM,CAAC;YACN,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC;QAClB,CAAC;IACH,CAAC;IACD,OAAO,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,QAAQ,EAAE,UAAU,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC;AAC/D,CAAC"}
|