@sdd-method/sdd-cli 1.32.2 → 1.34.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.
@@ -141,8 +141,8 @@ export async function buildRepositories(inputs) {
141
141
  const locByRepo = configs.length > 0
142
142
  ? await loadLocReport(inputs.sddPath, inputs.findings)
143
143
  : new Map();
144
- const profileByRepo = configs.length > 0
145
- ? await loadRepoProfiles(inputs.sddPath, inputs.findings)
144
+ const repoMeta = configs.length > 0
145
+ ? await loadRepoProfiles(inputs.sddPath, inputs.findings, inputs.manifest.profile)
146
146
  : new Map();
147
147
  const rows = [];
148
148
  for (const cfg of configs) {
@@ -191,7 +191,10 @@ export async function buildRepositories(inputs) {
191
191
  // component — a wrong value in a populated column, which reads as
192
192
  // authoritative and makes a filter on it return the same set as no
193
193
  // filter at all.
194
- profile: profileByRepo.get(repoId) ?? inputs.manifest.profile,
194
+ profile: repoMeta.get(repoId)?.profile ?? inputs.manifest.profile,
195
+ // M-ADR 0213: whether the repository is inside this SDD's scope; empty when it has no reverse
196
+ // metadata (a forward SDD's generated components) or cannot be decided.
197
+ repo_scope: repoMeta.get(repoId)?.scope ?? "",
195
198
  group: cfg.data.group ?? "",
196
199
  category: cfg.data.category ?? "",
197
200
  tier: cfg.data.tier ?? "",
@@ -264,30 +267,20 @@ async function loadRepoConfigs(sddPath, findings) {
264
267
  configs.sort((a, b) => a.relPath.localeCompare(b.relPath));
265
268
  return configs;
266
269
  }
270
+ const REPO_SCOPES = ["component", "support"];
267
271
  /**
268
- * Load the `measure-loc` report and index it by repo slug.
269
- *
270
- * The report lives at `docs/platform/reference/loc-report.csv` and carries
271
- * one row per repo (`repo_name` == repositories.id) with cloc-style metrics.
272
- * It's produced out-of-band by the `measure-loc` skill and only the
273
- * platform-profile SDD carries one — absence is normal for federated SDDs
274
- * and leaves the LOC columns empty (logged once as a coverage finding).
275
- */
276
- /**
277
- * Per-repo `profile` from `repos/<slug>/reverse-metadata.yaml`, keyed by the
278
- * directory name (which equals `repositories.id`).
279
- *
280
- * ABSENCE is silent; MALFORMATION is not. An absent `repos/` directory or a
281
- * repo with no metadata file is normal — generated components are never
282
- * cloned and a forward SDD mirrors nothing — so those fall back to the SDD's
283
- * manifest profile without comment. A file that EXISTS but does not parse, or
284
- * parses without a usable `profile`, takes the same fallback but reports it:
285
- * the two are indistinguishable in the output row, and one of them is a
286
- * defect. Measured once at 1 of 431 (a duplicate YAML key), where a strict
287
- * parser threw and a lenient one had not, so the file read as absent and the
288
- * repo silently kept the wrong profile.
272
+ * The legacy per-repo `profile` recorded only a binary (M-ADR 0213 §1: 662 of 663
273
+ * measured repositories): the SDD's own profile means a component, `support-repo`
274
+ * means support. Any other value is not mapped — it needs a human (§4.5 step 3).
289
275
  */
290
- async function loadRepoProfiles(sddPath, findings) {
276
+ export function scopeFromLegacyProfile(profile, sddProfile) {
277
+ if (profile === "support-repo")
278
+ return "support";
279
+ if (profile === sddProfile)
280
+ return "component";
281
+ return undefined;
282
+ }
283
+ async function loadRepoProfiles(sddPath, findings, sddProfile) {
291
284
  const out = new Map();
292
285
  const root = join(sddPath, REPOS_DIR_REL);
293
286
  let entries;
@@ -320,12 +313,35 @@ async function loadRepoProfiles(sddPath, findings) {
320
313
  findings.add("convention", `${join(REPOS_DIR_REL, entry.name, REVERSE_METADATA_BASENAME)}: not parseable as YAML (${err.code ?? "parse error"}) — profile falls back to the SDD's, which may mistype this repo`);
321
314
  continue;
322
315
  }
323
- const profile = parsed?.profile;
324
- if (typeof profile === "string" && profile.trim() !== "") {
325
- out.set(entry.name, profile.trim());
316
+ const file = join(REPOS_DIR_REL, entry.name, REVERSE_METADATA_BASENAME);
317
+ const rawRole = parsed?.repo_scope;
318
+ const rawProfile = parsed?.profile;
319
+ const profile = typeof rawProfile === "string" && rawProfile.trim() !== "" ? rawProfile.trim() : undefined;
320
+ let scope;
321
+ if (typeof rawRole === "string" && rawRole.trim() !== "") {
322
+ if (REPO_SCOPES.includes(rawRole.trim())) {
323
+ scope = rawRole.trim();
324
+ }
325
+ else {
326
+ findings.add("convention", `${file}: repo_scope '${rawRole.trim()}' is not one of ${REPO_SCOPES.join(", ")} (M-ADR 0213 §4.2)`);
327
+ }
328
+ }
329
+ else if (profile !== undefined) {
330
+ scope = scopeFromLegacyProfile(profile, sddProfile);
331
+ if (scope === undefined) {
332
+ findings.add("convention", `${file}: legacy profile '${profile}' is neither this SDD's profile nor support-repo, so it maps to no repo_scope — decide component or support by hand (M-ADR 0213 §4.5)`);
333
+ }
334
+ }
335
+ if (profile === undefined && scope === undefined) {
336
+ findings.add("convention", `${file}: no usable \`repo_scope\` or legacy \`profile\` — profile falls back to the SDD's, which may mistype this repo`);
326
337
  continue;
327
338
  }
328
- findings.add("convention", `${join(REPOS_DIR_REL, entry.name, REVERSE_METADATA_BASENAME)}: no usable \`profile\` — profile falls back to the SDD's, which may mistype this repo`);
339
+ // A repository migrated to repo_scope keeps the deprecated column consistent
340
+ // until its removal: support reads support-repo, component the SDD's profile.
341
+ out.set(entry.name, {
342
+ profile: profile ?? (scope === "support" ? "support-repo" : sddProfile),
343
+ ...(scope ? { scope } : {}),
344
+ });
329
345
  }
330
346
  return out;
331
347
  }
@@ -1 +1 @@
1
- {"version":3,"file":"repositories.js","sourceRoot":"","sources":["../../../../src/lib/catalogue/builders/repositories.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"repositories.js","sourceRoot":"","sources":["../../../../src/lib/catalogue/builders/repositories.ts"],"names":[],"mappings":"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"}
@@ -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.13.0"
10
+ schema_version: "3.15.0"
11
11
  schema_owner: "sdd-method"
12
12
  schema_status: "generated"
13
13
  enums:
@@ -474,20 +474,81 @@ enums:
474
474
  - value: code-vs-contract
475
475
  - value: binding-vs-reality
476
476
  description: M-ADR 0194 conformance finding target. Bound at 3.13.0 from the column descriptions; measured against both reference estates before binding (M-ADR 0205 §4.4).
477
- conformance_role:
477
+ implementation_role:
478
478
  values:
479
479
  - value: as-is
480
+ description: The existing implementation.
480
481
  - value: to-be
481
- description: M-ADR 0194 conformance finding role. Bound at 3.13.0 from the column descriptions; measured against both reference estates before binding (M-ADR 0205 §4.4).
482
- conformance_lifecycle:
482
+ description: The target implementation the spec is migrating toward.
483
+ description: An implementation member's role against its spec (M-ADR 0181 §2.1). Bound at 3.13.0 on conformance_finding as conformance_role; renamed at 3.15.0, when implementation_members became its owner (M-ADR 0214 §4.2) — the values did not change.
484
+ implementation_lifecycle:
483
485
  values:
484
486
  - value: active
487
+ description: In service and the current implementation.
485
488
  - value: planned
489
+ description: "Not yet built: the repository may not exist yet."
486
490
  - value: deprecated
491
+ description: "Still running, scheduled for retirement (M-ADR 0214 §4.7: what some bindings called sunset)."
487
492
  - value: migrating
493
+ description: Being moved onto, or off, while both sides run.
488
494
  - value: legacy-active
495
+ description: The as-is implementation, still serving while a to-be replaces it.
489
496
  - value: decommissioned
490
- description: M-ADR 0194 conformance finding lifecycle. Bound at 3.13.0 from the column descriptions; measured against both reference estates before binding (M-ADR 0205 §4.4).
497
+ description: "Retired: no longer running."
498
+ description: An implementation member's lifecycle (M-ADR 0181 §2.1). Bound at 3.13.0 on conformance_finding as conformance_lifecycle; renamed at 3.15.0, when implementation_members became its owner (M-ADR 0214 §4.2) — the values did not change.
499
+ repo_scope:
500
+ values:
501
+ - value: component
502
+ description: "Part of what this SDD specifies: the SDD's artefact stack applies, and its capabilities or other services depend on it."
503
+ - value: support
504
+ description: "Supports a component without being one: its operational configuration, tooling, tests, collections, or a library it consumes."
505
+ description: Whether a mirrored repository is inside the scope of what its SDD specifies (M-ADR 0213). Deliberately neither a profile (profile is the SDD's) nor a role (role is M-ADR 0181's as-is | to-be); a repository's kind is component_type.
506
+ evidence_direction:
507
+ values:
508
+ - value: forward-authored
509
+ description: The spec came first and the code was built from it.
510
+ - value: seeding-reverse
511
+ description: A spec that never existed, recovered from pre-existing internal code.
512
+ - value: external-doc-reverse
513
+ description: The external surface a product consumes, grounded in a third party's published API or documentation.
514
+ - value: conformance-reverse
515
+ description: Own forward or maintained code, verified against its spec, with legitimate evolution fed back.
516
+ description: How an implementation member is evidenced (M-ADR 0180 §2.1; forward-authored added by M-ADR 0181 §2.1).
517
+ member_presence:
518
+ values:
519
+ - value: observed
520
+ description: Exported and observed in this baseline.
521
+ - value: carried
522
+ description: "Not re-exported: carried from an earlier baseline (carried_from), with its reason."
523
+ - value: removed
524
+ description: In the prior baseline and not in this one (members_removed), with its reason.
525
+ description: A snapshot member's presence in its baseline — the three states the snapshot conventions record (M-ADR 0214 §4.4).
526
+ conformance_disposition:
527
+ values:
528
+ - value: conformant
529
+ description: Code matches spec.
530
+ - value: conformant-open
531
+ description: "Both sides agree the item is deferred or absent: an open decision, not drift."
532
+ - value: code-defect
533
+ description: "The spec is authority: fix the code."
534
+ - value: spec-stale
535
+ description: "The code legitimately evolved: update the spec."
536
+ - value: divergence
537
+ description: "A genuine design question: triage, don't fail."
538
+ description: The triage outcome of a conformance-reverse delta (M-ADR 0180 §2.3). Bound so every file that records an outcome records one of these; the triage records are not yet catalogued (M-ADR 0214 §4.8).
539
+ delta_disposition:
540
+ values:
541
+ - value: capability-added
542
+ description: The code gained a capability the spec does not have.
543
+ - value: capability-removed
544
+ description: The code lost a capability the spec still has.
545
+ - value: spec-update
546
+ description: "The code legitimately evolved within a capability: the spec follows."
547
+ - value: refactor-only-no-spec-change
548
+ description: "The code changed and its behaviour did not: no spec change."
549
+ - value: ambiguous
550
+ description: "Cannot be classified from the delta alone: triage."
551
+ description: The classification of a delta-reverse finding between two snapshots (M-ADR 0180 §2.7). Bound so every file that records one records one of these; delta findings are not yet catalogued (M-ADR 0214 §4.8).
491
552
  catalogues:
492
553
  domains:
493
554
  primary_key: id
@@ -1670,6 +1731,7 @@ catalogues:
1670
1731
  - name: profile
1671
1732
  type: string
1672
1733
  nullable: false
1734
+ description: "DEPRECATED (removal at 4.0.0): not an SDD profile. The per-repo field reused sdd_profile's values to record only whether a mirrored repository is one of the SDD's own components or a supporting one — see repo_scope (M-ADR 0213)."
1673
1735
  - name: group
1674
1736
  type: string
1675
1737
  nullable: true
@@ -1713,6 +1775,10 @@ catalogues:
1713
1775
  type: string
1714
1776
  nullable: true
1715
1777
  description: The platform this row belongs to — sdd_id of its platform-root. Stamped by the aggregator per M-ADR 0208 §4.4 (preserve-if-set, fill rule by pull path); left empty by per-SDD builders. Added in 3.7.0.
1778
+ - name: repo_scope
1779
+ type: string
1780
+ nullable: true
1781
+ description: "Whether the repository is inside the scope of what THIS SDD specifies, from its reverse-metadata.yaml (M-ADR 0213 §4.2): component (part of what the SDD specifies) or support (supports a component without being one). Empty for a repository with no reverse metadata. Its kind is component_type; the SDD's profile is products/applications.profile."
1716
1782
  foreign_keys:
1717
1783
  - column: domain_id
1718
1784
  references: domains.id
@@ -1722,6 +1788,7 @@ catalogues:
1722
1788
  nullable: true
1723
1789
  column_enums:
1724
1790
  component_type: enums.service_type
1791
+ repo_scope: enums.repo_scope
1725
1792
  domain_models:
1726
1793
  primary_key: id
1727
1794
  columns:
@@ -3279,8 +3346,8 @@ catalogues:
3279
3346
  description: "Conformance-reverse drift summary, one row per check (method M-ADR 0180). NOT produced by `catalogue build` (it reads the spec repo) — produced by `sdd-cli conformance --emit-finding` (which has the code repo) and federated here by the aggregator. Each row is a run-dated snapshot of declared-vs-observed drift for an implementation member (M-ADR 0181 role/lifecycle), so estate-wide conformance is queryable (aggregate union) and trendable (snapshot diff across runs/commits). Verdicts are PROVISIONAL — disposition (code-defect | spec-stale | divergence) is triage, recorded elsewhere. No enforced FK on implementation_repo: the code repo is frequently cross-repo and not in this SDD's repositories.csv. Added in schema 2.25.0."
3280
3347
  column_enums:
3281
3348
  target: enums.conformance_target
3282
- role: enums.conformance_role
3283
- lifecycle: enums.conformance_lifecycle
3349
+ role: enums.implementation_role
3350
+ lifecycle: enums.implementation_lifecycle
3284
3351
  quality_scores:
3285
3352
  primary_key: id
3286
3353
  columns:
@@ -3555,3 +3622,168 @@ catalogues:
3555
3622
  column_enums:
3556
3623
  item_kind: enums.scaffold_item_kind
3557
3624
  state: enums.scaffold_item_state
3625
+ implementations:
3626
+ primary_key: id
3627
+ columns:
3628
+ - name: id
3629
+ type: string
3630
+ nullable: false
3631
+ description: The binding's implementation key — the same value every snapshot manifest of this implementation carries as implementation.
3632
+ - name: name
3633
+ type: string
3634
+ nullable: false
3635
+ description: The binding's name key, else the id.
3636
+ - name: spec
3637
+ type: string
3638
+ nullable: false
3639
+ description: The spec this implementation implements — the binding's spec key.
3640
+ - name: snapshot_area
3641
+ type: string
3642
+ nullable: true
3643
+ description: Store-relative path of this implementation's snapshot area (M-ADR 0214 §4.4), from the binding. Empty when the implementation has none.
3644
+ - name: doc_path
3645
+ type: string
3646
+ nullable: false
3647
+ description: Path of the binding file, relative to the SDD root.
3648
+ - name: source_sdd_id
3649
+ type: string
3650
+ nullable: true
3651
+ description: Originating SDD slug. Populated by the aggregator per M-ADR 0134.
3652
+ - name: platform_sdd_id
3653
+ type: string
3654
+ nullable: true
3655
+ description: The platform this row belongs to — sdd_id of its platform-root. Stamped by the aggregator per M-ADR 0208 §4.4.
3656
+ description: "An implementation of this SDD's spec: the durable system identity whose snapshots are its versions (M-ADR 0181 §2.5, M-ADR 0214 §4.1). One row per .sdd/implementation-binding.yaml that names its implementation; a binding without an implementation key emits nothing and a finding, because there is no identity to key on."
3657
+ implementation_members:
3658
+ primary_key: id
3659
+ columns:
3660
+ - name: id
3661
+ type: string
3662
+ nullable: false
3663
+ description: <implementation_id>::<repo_key>.
3664
+ - name: implementation_id
3665
+ type: string
3666
+ nullable: false
3667
+ - name: repo_id
3668
+ type: string
3669
+ nullable: true
3670
+ description: The member's repository when it resolves in this SDD's repositories. Empty for a planned member whose repository does not exist yet; a member of any other lifecycle that does not resolve is a builder finding.
3671
+ - name: repo_key
3672
+ type: string
3673
+ nullable: false
3674
+ description: The repository the binding names (its member repo key), resolved or not.
3675
+ - name: role
3676
+ type: string
3677
+ nullable: true
3678
+ - name: lifecycle
3679
+ type: string
3680
+ nullable: true
3681
+ - name: evidence_direction
3682
+ type: string
3683
+ nullable: true
3684
+ description: How this member is evidenced (M-ADR 0180 §2.1, placed on the member by M-ADR 0181 §2.1). Empty when the binding does not say.
3685
+ - name: source_sdd_id
3686
+ type: string
3687
+ nullable: true
3688
+ description: Originating SDD slug. Populated by the aggregator per M-ADR 0134.
3689
+ - name: platform_sdd_id
3690
+ type: string
3691
+ nullable: true
3692
+ description: The platform this row belongs to — sdd_id of its platform-root. Stamped by the aggregator per M-ADR 0208 §4.4.
3693
+ description: "Edge: a repository is a member of an implementation, with the member's role, lifecycle and evidence direction (M-ADR 0181 §2.1, M-ADR 0214 §4.2). Role and lifecycle live here once: repo_capability, repo_contract and feature_repo resolve their repository to this row rather than copying them (M-ADR 0214 §4.3). Membership is independent of the repository's repo_scope (M-ADR 0213): a shared library under conformance checks is a support member."
3694
+ foreign_keys:
3695
+ - column: implementation_id
3696
+ references: implementations.id
3697
+ nullable: false
3698
+ - column: repo_id
3699
+ references: repositories.id
3700
+ nullable: true
3701
+ column_enums:
3702
+ role: enums.implementation_role
3703
+ lifecycle: enums.implementation_lifecycle
3704
+ evidence_direction: enums.evidence_direction
3705
+ snapshots:
3706
+ primary_key: id
3707
+ columns:
3708
+ - name: id
3709
+ type: string
3710
+ nullable: false
3711
+ description: <implementation_id>@<baseline_id>.
3712
+ - name: implementation_id
3713
+ type: string
3714
+ nullable: false
3715
+ - name: baseline_id
3716
+ type: string
3717
+ nullable: false
3718
+ description: The observation date (YYYY-MM-DD) — the baseline folder and the manifest's snapshot_id.
3719
+ - name: prior_snapshot_id
3720
+ type: string
3721
+ nullable: true
3722
+ description: The snapshot this one was diffed from — <implementation_id>@<prior_snapshot>. Empty for the first.
3723
+ - name: credential_scan_result
3724
+ type: string
3725
+ nullable: true
3726
+ description: The manifest's credential_scan.result (clean, or what was found). Empty when no scan is recorded.
3727
+ - name: source_sdd_id
3728
+ type: string
3729
+ nullable: true
3730
+ description: Originating SDD slug. Populated by the aggregator per M-ADR 0134.
3731
+ - name: platform_sdd_id
3732
+ type: string
3733
+ nullable: true
3734
+ description: The platform this row belongs to — sdd_id of its platform-root. Stamped by the aggregator per M-ADR 0208 §4.4.
3735
+ description: One implementation's member set pinned at one observation (M-ADR 0181 §2.5, M-ADR 0214 §4.4). One row per dated baseline in the implementation's snapshot area whose snapshot.yaml names the same implementation. Needs the snapshot store root (build --snapshot-store or SDD_SNAPSHOT_STORE); without it the catalogue is empty and the build says so.
3736
+ foreign_keys:
3737
+ - column: implementation_id
3738
+ references: implementations.id
3739
+ nullable: false
3740
+ - column: prior_snapshot_id
3741
+ references: snapshots.id
3742
+ nullable: true
3743
+ snapshot_members:
3744
+ primary_key: id
3745
+ columns:
3746
+ - name: id
3747
+ type: string
3748
+ nullable: false
3749
+ description: <snapshot_id>::<repo_key>.
3750
+ - name: snapshot_id
3751
+ type: string
3752
+ nullable: false
3753
+ - name: repo_id
3754
+ type: string
3755
+ nullable: true
3756
+ description: The member's repository when it resolves in this SDD's repositories; empty otherwise (a removed member's repository may be gone).
3757
+ - name: repo_key
3758
+ type: string
3759
+ nullable: false
3760
+ description: The manifest's canonical_repo_key.
3761
+ - name: source_revision
3762
+ type: string
3763
+ nullable: false
3764
+ description: The revision observed (for a removed member, its last revision).
3765
+ - name: observed_at
3766
+ type: string
3767
+ nullable: true
3768
+ description: "The member's own observation date: the baseline's for an observed member, the earlier one for a carried member, the last observed for a removed one."
3769
+ - name: presence
3770
+ type: string
3771
+ nullable: false
3772
+ - name: source_sdd_id
3773
+ type: string
3774
+ nullable: true
3775
+ description: Originating SDD slug. Populated by the aggregator per M-ADR 0134.
3776
+ - name: platform_sdd_id
3777
+ type: string
3778
+ nullable: true
3779
+ description: The platform this row belongs to — sdd_id of its platform-root. Stamped by the aggregator per M-ADR 0208 §4.4.
3780
+ description: "Edge: a repository at one revision in one snapshot, with its presence — observed in this baseline, carried from an earlier one, or removed since the prior (M-ADR 0214 §4.4)."
3781
+ foreign_keys:
3782
+ - column: snapshot_id
3783
+ references: snapshots.id
3784
+ nullable: false
3785
+ - column: repo_id
3786
+ references: repositories.id
3787
+ nullable: true
3788
+ column_enums:
3789
+ presence: enums.member_presence
@@ -754,11 +754,58 @@ coverage:
754
754
  kind: enum
755
755
  scoring: not-applicable
756
756
  reason: closed vocabulary, not an artefact
757
- conformance_role:
757
+ implementation_role:
758
758
  kind: enum
759
759
  scoring: not-applicable
760
760
  reason: closed vocabulary, not an artefact
761
- conformance_lifecycle:
761
+ implementation_lifecycle:
762
+ kind: enum
763
+ scoring: not-applicable
764
+ reason: closed vocabulary, not an artefact
765
+ repo_scope:
766
+ kind: enum
767
+ scoring: not-applicable
768
+ reason: closed vocabulary, not an artefact
769
+ implementations:
770
+ kind: entity
771
+ scoring: scored-at-source
772
+ instrument: the binding is scored inside the integration SDD quality rubric (implementation-binding criteria); its identity against the snapshot manifests is a builder finding
773
+ implementation_members:
774
+ kind: edge
775
+ scoring: derived-edge
776
+ class: realisation
777
+ impact_flow: both
778
+ reason: derived from entity rows or manifest blocks scored at the owning entity
779
+ snapshots:
780
+ kind: entity
781
+ scoring: predicate
782
+ instrument: the snapshot record itself — scoring it with a rubric would be circular. Its integrity is sdd-cli snapshot verify (manifest shape, member folders, companion fields) and the builder's implementation-identity finding
783
+ relationships:
784
+ implementation_id:
785
+ class: membership
786
+ impact_flow: toward-target
787
+ prior_snapshot_id:
788
+ class: lineage
789
+ impact_flow: none
790
+ snapshot_members:
791
+ kind: edge
792
+ scoring: derived-edge
793
+ class: membership
794
+ impact_flow: none
795
+ reason: derived from entity rows or manifest blocks scored at the owning entity
796
+ evidence_direction:
797
+ kind: enum
798
+ scoring: not-applicable
799
+ reason: closed vocabulary, not an artefact
800
+ member_presence:
801
+ kind: enum
802
+ scoring: not-applicable
803
+ reason: closed vocabulary, not an artefact
804
+ conformance_disposition:
805
+ kind: enum
806
+ scoring: not-applicable
807
+ reason: closed vocabulary, not an artefact
808
+ delta_disposition:
762
809
  kind: enum
763
810
  scoring: not-applicable
764
811
  reason: closed vocabulary, not an artefact
@@ -1 +1 @@
1
- {"version":3,"file":"advance.d.ts","sourceRoot":"","sources":["../../../src/lib/snapshot/advance.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"advance.d.ts","sourceRoot":"","sources":["../../../src/lib/snapshot/advance.ts"],"names":[],"mappings":"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"}
@@ -28,6 +28,7 @@ import { parse, parseDocument, stringify } from "yaml";
28
28
  // reflows every long string in the file, so an evidence pin would arrive with
29
29
  // unrelated churn in lines the tool had no business touching.
30
30
  import { deltaPath } from "./diff.js";
31
+ import { loadCanonicalSchema } from "../catalogue/schema-loader.js";
31
32
  import { SnapshotError, credentialNotice, exists, isIsoDate, readManifest, splitFolder, } from "./manifest.js";
32
33
  export const REVERSE_STATUSES = ["classified", "reversed"];
33
34
  export const IMPACTS = ["none", "repo-minor", "repo-major", "product-major"];
@@ -173,6 +174,7 @@ export function repoint(sourcePath, newBaseline, newFolder) {
173
174
  export async function advance(inputs, write) {
174
175
  const { sddPath, areaRoot, to } = inputs;
175
176
  const t1 = await readManifest(areaRoot, to);
177
+ const dispositions = new Set(((await loadCanonicalSchema()).enums["delta_disposition"]?.values ?? []).map((v) => v.value));
176
178
  const dp = deltaPath(areaRoot, to);
177
179
  if (!(await exists(dp))) {
178
180
  throw new SnapshotError(`no ${dp}: the pin advances after the delta is recorded (run snapshot diff, then classify)`);
@@ -311,6 +313,13 @@ export async function advance(inputs, write) {
311
313
  problems.push(`${key}: ${unclassified.length} finding(s) not yet classified (${unclassified.join(", ")}) — classify before the pin advances (delta-reverse.md §5)`);
312
314
  continue;
313
315
  }
316
+ // A classification is one of the bound vocabulary (M-ADR 0214 §4.5), read from the
317
+ // schema rather than restated here: a typo is not a classification.
318
+ const outOfVocabulary = mine.filter((f) => !dispositions.has(String(f.classification)));
319
+ if (outOfVocabulary.length > 0) {
320
+ problems.push(`${key}: ${outOfVocabulary.map((f) => `${f.id} '${String(f.classification)}'`).join(", ")} — not a delta_disposition (${[...dispositions].join(", ")}; M-ADR 0214 §4.5)`);
321
+ continue;
322
+ }
314
323
  const findingNotes = mine.map((f) => `${f.id} [${f.classification}]${f.summary ? `: ${f.summary}` : ""}${f.spec_impact ? ` — spec: ${f.spec_impact}` : ""}`);
315
324
  const extra = inputs.notes?.get(key);
316
325
  const branch = splitFolder(m.exported_folder_name)?.stem.match(BRANCH)?.[1] ?? metadata.exported_branch;