@sdd-method/sdd-cli 2.5.0 → 3.0.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/behaviour-store/archive.d.ts +12 -0
- package/dist/lib/behaviour-store/archive.d.ts.map +1 -1
- package/dist/lib/behaviour-store/archive.js +13 -0
- package/dist/lib/behaviour-store/archive.js.map +1 -1
- package/dist/lib/catalogue/aggregate.d.ts.map +1 -1
- package/dist/lib/catalogue/aggregate.js +62 -0
- package/dist/lib/catalogue/aggregate.js.map +1 -1
- package/dist/lib/catalogue/build.d.ts.map +1 -1
- package/dist/lib/catalogue/build.js +12 -0
- package/dist/lib/catalogue/build.js.map +1 -1
- package/dist/lib/catalogue/builders/capability-spec.d.ts.map +1 -1
- package/dist/lib/catalogue/builders/capability-spec.js +1 -0
- package/dist/lib/catalogue/builders/capability-spec.js.map +1 -1
- package/dist/lib/catalogue/builders/feature-grounding.d.ts.map +1 -1
- package/dist/lib/catalogue/builders/feature-grounding.js +1 -0
- package/dist/lib/catalogue/builders/feature-grounding.js.map +1 -1
- package/dist/lib/catalogue/builders/features.d.ts +12 -0
- package/dist/lib/catalogue/builders/features.d.ts.map +1 -1
- package/dist/lib/catalogue/builders/features.js +23 -2
- package/dist/lib/catalogue/builders/features.js.map +1 -1
- package/dist/lib/catalogue/builders/journey-requirement.d.ts +22 -0
- package/dist/lib/catalogue/builders/journey-requirement.d.ts.map +1 -0
- package/dist/lib/catalogue/builders/journey-requirement.js +144 -0
- package/dist/lib/catalogue/builders/journey-requirement.js.map +1 -0
- package/dist/lib/catalogue/builders/requirements.d.ts +8 -2
- package/dist/lib/catalogue/builders/requirements.d.ts.map +1 -1
- package/dist/lib/catalogue/builders/requirements.js +43 -16
- package/dist/lib/catalogue/builders/requirements.js.map +1 -1
- package/dist/lib/catalogue/canonical-schema.yaml +81 -14
- package/dist/lib/catalogue/manifest-loader.d.ts +5 -0
- package/dist/lib/catalogue/manifest-loader.d.ts.map +1 -1
- package/dist/lib/catalogue/manifest-loader.js +13 -0
- package/dist/lib/catalogue/manifest-loader.js.map +1 -1
- package/dist/lib/catalogue/rubric-coverage-map.yaml +18 -0
- package/dist/lib/catalogue/schema-compat.d.ts +1 -1
- package/dist/lib/catalogue/schema-compat.js +1 -1
- package/dist/lib/intents/migrate.d.ts.map +1 -1
- package/dist/lib/intents/migrate.js +35 -9
- package/dist/lib/intents/migrate.js.map +1 -1
- package/dist/lib/metamodel/roundtrip-gate.d.ts.map +1 -1
- package/dist/lib/metamodel/roundtrip-gate.js +8 -2
- package/dist/lib/metamodel/roundtrip-gate.js.map +1 -1
- package/dist/lib/metamodel/schema-projection.d.ts.map +1 -1
- package/dist/lib/metamodel/schema-projection.js +13 -0
- package/dist/lib/metamodel/schema-projection.js.map +1 -1
- package/dist/lib/metamodel/tql-subset-parser.d.ts +6 -0
- package/dist/lib/metamodel/tql-subset-parser.d.ts.map +1 -1
- package/dist/lib/metamodel/tql-subset-parser.js +35 -2
- package/dist/lib/metamodel/tql-subset-parser.js.map +1 -1
- package/dist/lib/validate/agreement-evidence.d.ts +52 -0
- package/dist/lib/validate/agreement-evidence.d.ts.map +1 -0
- package/dist/lib/validate/agreement-evidence.js +204 -0
- package/dist/lib/validate/agreement-evidence.js.map +1 -0
- package/dist/lib/validate/behaviour-store.d.ts +17 -1
- package/dist/lib/validate/behaviour-store.d.ts.map +1 -1
- package/dist/lib/validate/behaviour-store.js +475 -28
- package/dist/lib/validate/behaviour-store.js.map +1 -1
- package/dist/lib/validate/dispatch.d.ts.map +1 -1
- package/dist/lib/validate/dispatch.js +14 -0
- package/dist/lib/validate/dispatch.js.map +1 -1
- package/dist/lib/validate/feature-spec-pointers.d.ts +12 -0
- package/dist/lib/validate/feature-spec-pointers.d.ts.map +1 -0
- package/dist/lib/validate/feature-spec-pointers.js +175 -0
- package/dist/lib/validate/feature-spec-pointers.js.map +1 -0
- package/dist/lib/validate/journey-impact.d.ts +10 -0
- package/dist/lib/validate/journey-impact.d.ts.map +1 -0
- package/dist/lib/validate/journey-impact.js +193 -0
- package/dist/lib/validate/journey-impact.js.map +1 -0
- package/dist/maintain-version.json +2 -2
- package/dist/verify-version.json +2 -2
- package/package.json +1 -1
- package/scripts/author-version.json +2 -2
- package/scripts/maintain-version.json +2 -2
- package/scripts/verify-version.json +2 -2
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
// journey-impact: the journeys a change can break, and whether its proposal names them (M-ADR 0229 §4.5, Proposed).
|
|
2
|
+
// Report only (M-ADR 0229 §4.5, Proposed): every finding is a [WARN] and the check exits 0. Gate 0 carries this report; nothing
|
|
3
|
+
// blocks on it, and the judge does not fail a change for it.
|
|
4
|
+
//
|
|
5
|
+
// For each open change in the behaviour store (openspec/changes/<change>/, not the archive):
|
|
6
|
+
// listed every journey whose journey_requirement rows name a requirement the change's deltas MODIFY, REMOVE
|
|
7
|
+
// or RENAME (by its former name), and every untraced journey (no journey_requirement row) whose
|
|
8
|
+
// journey_feature rows touch a feature the change has a delta for. The population is the catalogue's,
|
|
9
|
+
// never the proposal's.
|
|
10
|
+
// unnamed a listed journey the proposal's `## Affected Journeys` section does not name.
|
|
11
|
+
// unshown a journey named `altered` with nothing to show it: no delta in the change to a feature of kind journey
|
|
12
|
+
// whose id is the journey's id or ends with it (option B), and no task naming it (option A).
|
|
13
|
+
// A proposal line is `- <journey-id>: altered ...` or `- <journey-id>: unaffected, <reason>`; an unaffected line
|
|
14
|
+
// with no reason is reported too.
|
|
15
|
+
//
|
|
16
|
+
// Also reported: a journey citing a requirement of a feature its journey_feature rows do not name (one record or
|
|
17
|
+
// the other is wrong, M-ADR 0229 §4.4, Proposed); and an SDD with catalogued journeys whose manifest declares no journey master and that names no
|
|
18
|
+
// platform it inherits from (an unresolved root, M-ADR 0229 §4.2, Proposed). A member that names its platform inherits the
|
|
19
|
+
// root's declaration, which is checked at the root.
|
|
20
|
+
//
|
|
21
|
+
// Reads the aggregated catalogue (catalogues-aggregated/*.csv) where this SDD has one, since a root's changes can
|
|
22
|
+
// break journeys its members catalogue and only the aggregate joins the two; otherwise the SDD's own catalogues/.
|
|
23
|
+
// Without journey_requirement.csv the catalogue predates schema 4.4.0 and the check is unresolved, not passed. Without a store or open changes it reports [N/A] for the change
|
|
24
|
+
// part, an empty population.
|
|
25
|
+
import { readdir, readFile } from "node:fs/promises";
|
|
26
|
+
import { join } from "node:path";
|
|
27
|
+
import { parseDocument } from "yaml";
|
|
28
|
+
import { parseRequirements, renamedFrom } from "../behaviour-store/archive.js";
|
|
29
|
+
import { parseCatalogueCsv } from "../catalogue/csv-reader.js";
|
|
30
|
+
const CHANGES_DIR = join("openspec", "changes");
|
|
31
|
+
async function readText(p) {
|
|
32
|
+
try {
|
|
33
|
+
return await readFile(p, "utf8");
|
|
34
|
+
}
|
|
35
|
+
catch {
|
|
36
|
+
return null;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
async function subdirs(p) {
|
|
40
|
+
try {
|
|
41
|
+
return (await readdir(p, { withFileTypes: true })).filter((e) => e.isDirectory()).map((e) => e.name).sort();
|
|
42
|
+
}
|
|
43
|
+
catch {
|
|
44
|
+
return [];
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
async function catalogueDir(repo) {
|
|
48
|
+
return (await readText(join(repo, "catalogues-aggregated", "user_journeys.csv"))) !== null ? "catalogues-aggregated" : "catalogues";
|
|
49
|
+
}
|
|
50
|
+
async function csv(repo, name, dir = "catalogues") {
|
|
51
|
+
const text = await readText(join(repo, dir, `${name}.csv`));
|
|
52
|
+
return text === null ? null : parseCatalogueCsv(text).rows;
|
|
53
|
+
}
|
|
54
|
+
/** The `## Affected Journeys` section: journey id -> what the proposal says of it. */
|
|
55
|
+
export function parseAffectedJourneys(proposal) {
|
|
56
|
+
const out = new Map();
|
|
57
|
+
let inSection = false;
|
|
58
|
+
for (const line of proposal.split("\n")) {
|
|
59
|
+
const h = /^##\s+(.+?)\s*$/.exec(line);
|
|
60
|
+
if (h) {
|
|
61
|
+
inSection = /^affected journeys$/i.test(h[1].trim());
|
|
62
|
+
continue;
|
|
63
|
+
}
|
|
64
|
+
if (!inSection)
|
|
65
|
+
continue;
|
|
66
|
+
const m = /^\s*[-*]\s+`?([a-z0-9][a-z0-9-]*)`?\s*:\s*(altered|unaffected)?\b[\s,;:.—-]*(.*)$/i.exec(line);
|
|
67
|
+
if (!m)
|
|
68
|
+
continue;
|
|
69
|
+
const verdict = m[2]?.toLowerCase() ?? "other";
|
|
70
|
+
out.set(m[1], { verdict, rest: (m[3] ?? "").trim() });
|
|
71
|
+
}
|
|
72
|
+
return out;
|
|
73
|
+
}
|
|
74
|
+
export async function checkJourneyImpact(repo) {
|
|
75
|
+
const lines = [];
|
|
76
|
+
const warnings = [];
|
|
77
|
+
const dir = await catalogueDir(repo);
|
|
78
|
+
const journeys = await csv(repo, "user_journeys", dir);
|
|
79
|
+
if (journeys === null || journeys.length === 0) {
|
|
80
|
+
return { exitCode: 0, stdout: "[N/A] journey-impact: no catalogued user journeys (catalogues/ or catalogues-aggregated/ user_journeys.csv) in this repository\n" };
|
|
81
|
+
}
|
|
82
|
+
// The journey master (§4.2).
|
|
83
|
+
const manifest = (await readText(join(repo, ".sdd", "sdd-manifest.yaml"))) ?? "";
|
|
84
|
+
let declared = false;
|
|
85
|
+
let platform = "";
|
|
86
|
+
try {
|
|
87
|
+
const m = parseDocument(manifest).toJS();
|
|
88
|
+
declared = typeof m?.journeys?.master === "string";
|
|
89
|
+
platform = String(m?.platform_sdd_id ?? m?.ecosystem_root ?? "");
|
|
90
|
+
}
|
|
91
|
+
catch {
|
|
92
|
+
// an unparseable manifest is the manifest check's to report
|
|
93
|
+
}
|
|
94
|
+
if (declared)
|
|
95
|
+
lines.push("journey master: declared in this SDD's manifest");
|
|
96
|
+
else if (platform)
|
|
97
|
+
lines.push(`journey master: not declared here; inherited from platform ${platform}, where it is checked`);
|
|
98
|
+
else
|
|
99
|
+
warnings.push(`.sdd/sdd-manifest.yaml: ${journeys.length} catalogued journey(s) and no journey master (journeys.master: test-file or store), and no platform to inherit one from: unresolved (M-ADR 0229 §4.2, Proposed)`);
|
|
100
|
+
const jr = await csv(repo, "journey_requirement", dir);
|
|
101
|
+
const jf = (await csv(repo, "journey_feature", dir)) ?? [];
|
|
102
|
+
const featureKinds = new Map(((await csv(repo, "features", dir)) ?? []).map((f) => [f["id"], f["kind"] ?? ""]));
|
|
103
|
+
lines.push(`catalogue: ${dir}/`);
|
|
104
|
+
if (jr === null) {
|
|
105
|
+
warnings.push(`${dir}/journey_requirement.csv: missing, so the catalogue predates schema 4.4.0; rebuild it. The journeys a change can break are unresolved`);
|
|
106
|
+
}
|
|
107
|
+
const byRequirement = new Map();
|
|
108
|
+
const traced = new Set();
|
|
109
|
+
for (const r of jr ?? []) {
|
|
110
|
+
traced.add(r["journey_id"]);
|
|
111
|
+
const s = byRequirement.get(r["requirement_id"]) ?? new Set();
|
|
112
|
+
s.add(r["journey_id"]);
|
|
113
|
+
byRequirement.set(r["requirement_id"], s);
|
|
114
|
+
}
|
|
115
|
+
const untracedByFeature = new Map();
|
|
116
|
+
for (const r of jf) {
|
|
117
|
+
if (traced.has(r["journey_id"]))
|
|
118
|
+
continue;
|
|
119
|
+
const s = untracedByFeature.get(r["feature_id"]) ?? new Set();
|
|
120
|
+
s.add(r["journey_id"]);
|
|
121
|
+
untracedByFeature.set(r["feature_id"], s);
|
|
122
|
+
}
|
|
123
|
+
const touched = new Map();
|
|
124
|
+
for (const r of jf) {
|
|
125
|
+
const s = touched.get(r["journey_id"]) ?? new Set();
|
|
126
|
+
s.add(r["feature_id"]);
|
|
127
|
+
touched.set(r["journey_id"], s);
|
|
128
|
+
}
|
|
129
|
+
const mismatched = new Set();
|
|
130
|
+
for (const r of jr ?? []) {
|
|
131
|
+
const feature = r["requirement_id"].split("::")[0];
|
|
132
|
+
const key = `${r["journey_id"]}|${feature}`;
|
|
133
|
+
if (touched.get(r["journey_id"])?.has(feature) || mismatched.has(key))
|
|
134
|
+
continue;
|
|
135
|
+
mismatched.add(key);
|
|
136
|
+
warnings.push(`journey ${r["journey_id"]} cites requirements of ${feature}, which its journey_feature rows do not name: the journey's related features or its tags are wrong (M-ADR 0229 §4.4, Proposed)`);
|
|
137
|
+
}
|
|
138
|
+
const untracedCount = journeys.filter((j) => !traced.has(j["id"])).length;
|
|
139
|
+
lines.push(`journeys: ${journeys.length} catalogued, ${journeys.length - untracedCount} traced to requirements, ${untracedCount} untraced`);
|
|
140
|
+
const changes = (await subdirs(join(repo, CHANGES_DIR))).filter((c) => c !== "archive");
|
|
141
|
+
if (changes.length === 0)
|
|
142
|
+
lines.push("[N/A] changes: no open changes in openspec/changes/");
|
|
143
|
+
for (const change of changes) {
|
|
144
|
+
const dir = join(repo, CHANGES_DIR, change);
|
|
145
|
+
const listed = new Map(); // journey -> why
|
|
146
|
+
for (const feature of await subdirs(join(dir, "specs"))) {
|
|
147
|
+
const text = (await readText(join(dir, "specs", feature, "spec.md"))) ?? "";
|
|
148
|
+
const targets = new Set();
|
|
149
|
+
for (const r of parseRequirements(text))
|
|
150
|
+
if (r.operation === "MODIFIED" || r.operation === "REMOVED")
|
|
151
|
+
targets.add(r.name);
|
|
152
|
+
for (const from of renamedFrom(text))
|
|
153
|
+
targets.add(from);
|
|
154
|
+
for (const name of targets) {
|
|
155
|
+
for (const j of byRequirement.get(`${feature}::${name}`) ?? [])
|
|
156
|
+
if (!listed.has(j))
|
|
157
|
+
listed.set(j, `cites ${feature}::${name}`);
|
|
158
|
+
}
|
|
159
|
+
for (const j of untracedByFeature.get(feature) ?? [])
|
|
160
|
+
if (!listed.has(j))
|
|
161
|
+
listed.set(j, `untraced, touches ${feature}`);
|
|
162
|
+
}
|
|
163
|
+
if (listed.size === 0) {
|
|
164
|
+
lines.push(`${change}: no journey cites what it changes`);
|
|
165
|
+
continue;
|
|
166
|
+
}
|
|
167
|
+
const proposal = (await readText(join(dir, "proposal.md"))) ?? "";
|
|
168
|
+
const tasks = (await readText(join(dir, "tasks.md"))) ?? "";
|
|
169
|
+
const named = parseAffectedJourneys(proposal);
|
|
170
|
+
const deltaFeatures = new Set(await subdirs(join(dir, "specs")));
|
|
171
|
+
lines.push(`${change}: ${listed.size} journey(s) listed (${[...listed.entries()].map(([j, why]) => `${j}: ${why}`).join("; ")})`);
|
|
172
|
+
for (const [j, why] of listed) {
|
|
173
|
+
const n = named.get(j);
|
|
174
|
+
if (!n || n.verdict === "other") {
|
|
175
|
+
warnings.push(`${CHANGES_DIR}/${change}/proposal.md: journey ${j} is listed (${why}) and the proposal's ## Affected Journeys does not name it as altered or unaffected`);
|
|
176
|
+
continue;
|
|
177
|
+
}
|
|
178
|
+
if (n.verdict === "unaffected" && n.rest === "")
|
|
179
|
+
warnings.push(`${CHANGES_DIR}/${change}/proposal.md: journey ${j} is named unaffected without a reason`);
|
|
180
|
+
if (n.verdict === "altered") {
|
|
181
|
+
const journeyDelta = [...deltaFeatures].some((f) => featureKinds.get(f) === "journey" && (f === j || f.endsWith(`-${j}`)));
|
|
182
|
+
const shown = journeyDelta || tasks.includes(j);
|
|
183
|
+
if (!shown)
|
|
184
|
+
warnings.push(`${CHANGES_DIR}/${change}/proposal.md: journey ${j} is named altered, and the change shows nothing for it: no delta to its journey feature and no task naming it`);
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
const body = lines.map((l) => `${l}\n`).join("");
|
|
189
|
+
if (warnings.length === 0)
|
|
190
|
+
return { exitCode: 0, stdout: `journey-impact:\n${body}[PASS] journey-impact: every listed journey is named\n` };
|
|
191
|
+
return { exitCode: 0, stdout: `journey-impact:\n${body}${warnings.map((w) => `[WARN] ${w}\n`).join("")}[WARN] journey-impact: ${warnings.length} finding(s), report only (M-ADR 0229 §4.5, Proposed)\n` };
|
|
192
|
+
}
|
|
193
|
+
//# sourceMappingURL=journey-impact.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"journey-impact.js","sourceRoot":"","sources":["../../../src/lib/validate/journey-impact.ts"],"names":[],"mappings":"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"}
|
package/dist/verify-version.json
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sdd-method/sdd-cli",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "3.0.0",
|
|
4
4
|
"description": "The full SDD method CLI (sdd-cli): init, sync, validate, catalogue build and aggregate, scaffold, plan, pack build and every other method verb for spec-driven-development repositories. The verify-only, author and maintain personas ship as @sdd-method/verify-cli, @sdd-method/author-cli and @sdd-method/maintain-cli.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"sdd-method",
|