@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.
@@ -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: "6.0.0"
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; Proposed).
689
- description: What a catalogued feature is (M-ADR 0226 and M-ADR 0229, both Proposed).
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, Proposed).
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, Proposed), from the feature spec's **Kind:** line."
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 ↔ service name/repo where possible.
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)}. For manifest-sourced rows with domain=platform-wide, the leading domain segment is empty (`-{entitySlug(name)}`) and the row carries a [finding] convention."
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, Proposed). 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."
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, Proposed).
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.
@@ -27,7 +27,7 @@
27
27
  * M-ADR 0134 §4.6 (canonical builder + aggregator).
28
28
  */
29
29
  export const SCHEMA_COMPAT = {
30
- catalogue_schema: "^6.0.0",
30
+ catalogue_schema: "^7.0.0",
31
31
  sdd_manifest: "^1.0.0",
32
32
  aggregation_manifest: "^1.0.0",
33
33
  };
@@ -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, Proposed). Report only; [N/A] without journeys.
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, 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
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, 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
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, Proposed)`);
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, Proposed)`);
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, Proposed)\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)\n` };
207
207
  }
208
208
  //# sourceMappingURL=journey-impact.js.map
@@ -1,4 +1,4 @@
1
1
  {
2
- "version": "0.13.1",
3
- "built_against_sdd_cli": "4.0.1"
2
+ "version": "0.14.0",
3
+ "built_against_sdd_cli": "5.0.0"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
- "version": "4.0.1",
3
- "built_against_sdd_cli": "4.0.1"
2
+ "version": "5.0.0",
3
+ "built_against_sdd_cli": "5.0.0"
4
4
  }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@sdd-method/verify-cli",
3
- "version": "4.0.1",
4
- "sddCliVersion": "4.0.1",
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",