@sdd-method/verify-cli 4.0.1 → 5.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/catalogue/canonical-schema.yaml +10 -10
- package/dist/lib/catalogue/manifest-loader.js +1 -1
- package/dist/lib/catalogue/schema-compat.js +1 -1
- package/dist/lib/validate/dispatch.js +1 -1
- package/dist/lib/validate/journey-impact.js +7 -7
- package/dist/maintain-version.json +2 -2
- package/dist/verify-version.json +2 -2
- package/package.json +2 -2
|
@@ -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: "
|
|
10
|
+
schema_version: "7.0.0"
|
|
11
11
|
schema_owner: "sdd-method"
|
|
12
12
|
schema_status: "generated"
|
|
13
13
|
enums:
|
|
@@ -685,15 +685,15 @@ enums:
|
|
|
685
685
|
- value: obligation
|
|
686
686
|
description: Behaviour every feature in a population depends on, owned as a feature of its own (M-ADR 0226, Proposed).
|
|
687
687
|
- value: journey
|
|
688
|
-
description: A user journey's joint behaviour, held in the behaviour store (M-ADR 0229 §4.2, option B
|
|
689
|
-
description: What a catalogued feature is (M-ADR 0226 and M-ADR 0229
|
|
688
|
+
description: A user journey's joint behaviour, held in the behaviour store (M-ADR 0229 §4.2, option B).
|
|
689
|
+
description: What a catalogued feature is (M-ADR 0226, Proposed, and M-ADR 0229).
|
|
690
690
|
journey_requirement_basis:
|
|
691
691
|
values:
|
|
692
692
|
- value: tag
|
|
693
693
|
description: A @req tag in the journey's end-to-end test file (option A).
|
|
694
694
|
- value: citation
|
|
695
695
|
description: A citation in the journey feature's living spec (option B).
|
|
696
|
-
description: Where a journey's citation of a requirement was read (M-ADR 0229 §4.4
|
|
696
|
+
description: Where a journey's citation of a requirement was read (M-ADR 0229 §4.4).
|
|
697
697
|
source_of_truth:
|
|
698
698
|
values:
|
|
699
699
|
- value: structure
|
|
@@ -1318,7 +1318,7 @@ catalogues:
|
|
|
1318
1318
|
- name: relation
|
|
1319
1319
|
type: string
|
|
1320
1320
|
nullable: false
|
|
1321
|
-
description: alias-of | conflicts-with | references | supersedes (extended in schema 2.12.0 per M-ADR 0158).
|
|
1321
|
+
description: "alias-of | conflicts-with | references | supersedes (extended in schema 2.12.0 per M-ADR 0158). Read as source, relation, target: for supersedes the successor is the source and the superseded term the target."
|
|
1322
1322
|
description: "Edge: cross-domain glossary relationships from glossary-alignment-manifest.yaml. Per M-ADR 0158, four walkers ingest into this catalogue: (a) forward declared pair-form {source, target} entries under aliases/conflicts, (b) reverse-method cross_domain_terms (emits references edges per referencer→owner), (c) reverse-method multi-domain conflicts (pair-wise expansion across domains[]), (d) forward-method supersedes (status: superseded entries with superseded_by back-link)."
|
|
1323
1323
|
natural_key:
|
|
1324
1324
|
- source_id
|
|
@@ -1646,7 +1646,7 @@ catalogues:
|
|
|
1646
1646
|
- name: kind
|
|
1647
1647
|
type: string
|
|
1648
1648
|
nullable: false
|
|
1649
|
-
description: "Bound to feature_kind: feature (the default), obligation (M-ADR 0226, Proposed) or journey (M-ADR 0229 §4.2
|
|
1649
|
+
description: "Bound to feature_kind: feature (the default), obligation (M-ADR 0226, Proposed) or journey (M-ADR 0229 §4.2), from the feature spec's **Kind:** line."
|
|
1650
1650
|
- name: source_sdd_id
|
|
1651
1651
|
type: string
|
|
1652
1652
|
nullable: true
|
|
@@ -1760,7 +1760,7 @@ catalogues:
|
|
|
1760
1760
|
- name: id
|
|
1761
1761
|
type: string
|
|
1762
1762
|
nullable: false
|
|
1763
|
-
description: "{domain}-{stem}-{kind} — the kind component joined the id at schema 3.0.0 (M-ADR 0203 §4.4), ending the kindless collision class where one service published as two contract families (openapi + proto) minted one id (measured cost: 1 row + 2 edges permanently unrepresentable, plus legitimate shared-contract citation flagged as divergence). Mechanical migration: new id = old id + '-' + kind; `sdd-cli catalogue migration-map` emits the pairs, and authored alias targets (M-ADR 0147) re-key automatically during the cut window."
|
|
1763
|
+
description: "{domain}-{stem}-{kind} — the kind component joined the id at schema 3.0.0 (M-ADR 0203 §4.4), ending the kindless collision class where one service published as two contract families (openapi + proto) minted one id (measured cost: 1 row + 2 edges permanently unrepresentable, plus legitimate shared-contract citation flagged as divergence). Mechanical migration: new id = old id + '-' + kind; `sdd-cli catalogue migration-map` emits the pairs, and authored alias targets (M-ADR 0147) re-key automatically during the cut window. From schema 7.0.0 the stem is split at its CamelCase boundaries as an entity name is (`OrderPlaced` → `order-placed`), and references to the unsplit form re-key the same way, from id, kind and spec_path."
|
|
1764
1764
|
- name: name
|
|
1765
1765
|
type: string
|
|
1766
1766
|
nullable: false
|
|
@@ -1946,7 +1946,7 @@ catalogues:
|
|
|
1946
1946
|
- name: service_id
|
|
1947
1947
|
type: string
|
|
1948
1948
|
nullable: true
|
|
1949
|
-
description: Matched by container name
|
|
1949
|
+
description: Matched to a service id by the container's diagram id or display-name slug, then by its display name through docs/platform/reference/service-name-aliases.yaml.
|
|
1950
1950
|
- name: type
|
|
1951
1951
|
type: string
|
|
1952
1952
|
nullable: true
|
|
@@ -2211,7 +2211,7 @@ catalogues:
|
|
|
2211
2211
|
- name: id
|
|
2212
2212
|
type: string
|
|
2213
2213
|
nullable: false
|
|
2214
|
-
description: "Slugged PK: {domain_id}-{entitySlug(name)}.
|
|
2214
|
+
description: "Slugged PK: {domain_id}-{entitySlug(name)}. A glossary-manifest entry with domain=platform-wide is the domain entity its slug names when exactly one does, and adds no row of its own; one naming none, or several, is kept as `_platform-wide-{entitySlug(name)}` with a finding. A superseded manifest entry is no entity: glossary_xref holds its supersedes edge."
|
|
2215
2215
|
- name: name
|
|
2216
2216
|
type: string
|
|
2217
2217
|
nullable: false
|
|
@@ -4904,7 +4904,7 @@ catalogues:
|
|
|
4904
4904
|
nullable: true
|
|
4905
4905
|
description: The platform SDD the row belongs to (stamped at aggregation).
|
|
4906
4906
|
source_of_truth: execution
|
|
4907
|
-
description: "Edge: a requirement a user journey cites for one of its steps (M-ADR 0229 §4.4
|
|
4907
|
+
description: "Edge: a requirement a user journey cites for one of its steps (M-ADR 0229 §4.4). Derived, never authored: from the @req tags in the journey's end-to-end test file, or from the citations in its journey feature's living spec. A journey with no row is untraced."
|
|
4908
4908
|
foreign_keys:
|
|
4909
4909
|
- column: journey_id
|
|
4910
4910
|
references: user_journeys.id
|
|
@@ -218,7 +218,7 @@ const ManifestSchema = z.object({
|
|
|
218
218
|
// Shared-library trait (sdd-manifest-schema 1.12.0, M-ADR 0217 §4.4). Profile-agnostic,
|
|
219
219
|
// like `exemplar`; absent is the unmarked norm, no finding.
|
|
220
220
|
shared_library: z.boolean().optional(),
|
|
221
|
-
// Where this estate's journey behaviour is mastered (sdd-manifest-schema 1.13.0, M-ADR 0229 §4.2
|
|
221
|
+
// Where this estate's journey behaviour is mastered (sdd-manifest-schema 1.13.0, M-ADR 0229 §4.2).
|
|
222
222
|
// `master` is declared at the root, and journey-impact treats a member naming its platform as inheriting it.
|
|
223
223
|
// `test_paths` is never inherited: it is relative to this SDD, so an SDD that holds end-to-end files declares
|
|
224
224
|
// its own block, with the master and its paths. Unknown values fail at load.
|
|
@@ -37,7 +37,7 @@ const BEHAVIOUR_STORE_VALIDATORS = [
|
|
|
37
37
|
source: { kind: "native", run: async (ctx) => checkFeatureSpecPointers(ctx.targetRepo) },
|
|
38
38
|
build: () => ({ status: "run", args: [] }),
|
|
39
39
|
},
|
|
40
|
-
// The journeys a change can break, and whether its proposal names them (M-ADR 0229 §4.5
|
|
40
|
+
// The journeys a change can break, and whether its proposal names them (M-ADR 0229 §4.5). Report only; [N/A] without journeys.
|
|
41
41
|
{
|
|
42
42
|
name: "journey-impact",
|
|
43
43
|
source: { kind: "native", run: async (ctx) => checkJourneyImpact(ctx.targetRepo) },
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
// journey-impact: the journeys a change can break, and whether its proposal names them (M-ADR 0229 §4.5
|
|
2
|
-
// Report only (M-ADR 0229 §4.5
|
|
1
|
+
// journey-impact: the journeys a change can break, and whether its proposal names them (M-ADR 0229 §4.5).
|
|
2
|
+
// Report only (M-ADR 0229 §4.5): every finding is a [WARN] and the check exits 0. Gate 0 carries this report; nothing
|
|
3
3
|
// blocks on it, and the judge does not fail a change for it.
|
|
4
4
|
//
|
|
5
5
|
// For each open change in the behaviour store (openspec/changes/<change>/, not the archive):
|
|
@@ -14,8 +14,8 @@
|
|
|
14
14
|
// with no reason is reported too.
|
|
15
15
|
//
|
|
16
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
|
|
18
|
-
// platform it inherits from (an unresolved root, M-ADR 0229 §4.2
|
|
17
|
+
// the other is wrong, M-ADR 0229 §4.4); 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). A member that names its platform inherits the
|
|
19
19
|
// root's declaration, which is checked at the root.
|
|
20
20
|
//
|
|
21
21
|
// Reads the aggregated catalogue (catalogues-aggregated/*.csv) where this SDD has one, since a root's changes can
|
|
@@ -100,7 +100,7 @@ export async function checkJourneyImpact(repo) {
|
|
|
100
100
|
else if (platform)
|
|
101
101
|
lines.push(`journey master: not declared here; inherited from platform ${platform}, where it is checked`);
|
|
102
102
|
else
|
|
103
|
-
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
|
|
103
|
+
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)`);
|
|
104
104
|
const jr = await csv(repo, "journey_requirement", dir);
|
|
105
105
|
const jf = (await csv(repo, "journey_feature", dir)) ?? [];
|
|
106
106
|
const featureKinds = new Map(((await csv(repo, "features", dir)) ?? []).map((f) => [f["id"], f["kind"] ?? ""]));
|
|
@@ -137,7 +137,7 @@ export async function checkJourneyImpact(repo) {
|
|
|
137
137
|
if (touched.get(r["journey_id"])?.has(feature) || mismatched.has(key))
|
|
138
138
|
continue;
|
|
139
139
|
mismatched.add(key);
|
|
140
|
-
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
|
|
140
|
+
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)`);
|
|
141
141
|
}
|
|
142
142
|
const untracedCount = journeys.filter((j) => !traced.has(j["id"])).length;
|
|
143
143
|
lines.push(`journeys: ${journeys.length} catalogued, ${journeys.length - untracedCount} traced to requirements, ${untracedCount} untraced`);
|
|
@@ -203,6 +203,6 @@ export async function checkJourneyImpact(repo) {
|
|
|
203
203
|
const body = lines.map((l) => `${l}\n`).join("");
|
|
204
204
|
if (warnings.length === 0)
|
|
205
205
|
return { exitCode: 0, stdout: `journey-impact:\n${body}[PASS] journey-impact: every listed journey is named\n` };
|
|
206
|
-
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
|
|
206
|
+
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)\n` };
|
|
207
207
|
}
|
|
208
208
|
//# sourceMappingURL=journey-impact.js.map
|
package/dist/verify-version.json
CHANGED
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sdd-method/verify-cli",
|
|
3
|
-
"version": "
|
|
4
|
-
"sddCliVersion": "
|
|
3
|
+
"version": "5.0.0",
|
|
4
|
+
"sddCliVersion": "5.0.0",
|
|
5
5
|
"description": "Verify an SDD repository without changing it — validate, list, and read-only catalogue and pack checks. Ships only the code those verbs reach; it cannot write to the repository it is pointed at. Authoring and maintenance are in @sdd-method/sdd-cli.",
|
|
6
6
|
"license": "UNLICENSED",
|
|
7
7
|
"type": "module",
|