@mitre/hdf-schema 3.3.2 → 3.4.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.
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "$schema": "https://json-schema.org/draft/2020-12/schema",
3
- "$id": "https://mitre.github.io/hdf-libs/schemas/hdf-comparison/v3.3.0",
3
+ "$id": "https://mitre.github.io/hdf-libs/schemas/hdf-comparison/v3.4.0",
4
4
  "type": "object",
5
5
  "unevaluatedProperties": false,
6
6
  "required": [
@@ -17,7 +17,7 @@
17
17
  "description": "Schema version for this comparison format."
18
18
  },
19
19
  "comparisonMode": {
20
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/comparison/v3.3.0#/$defs/Comparison_Mode",
20
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/comparison/v3.4.0#/$defs/Comparison_Mode",
21
21
  "description": "The mode of comparison being performed."
22
22
  },
23
23
  "timestamp": {
@@ -26,52 +26,52 @@
26
26
  "description": "When this comparison was performed."
27
27
  },
28
28
  "generator": {
29
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/extensions/v3.3.0#/$defs/Generator",
29
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/extensions/v3.4.0#/$defs/Generator",
30
30
  "description": "Information about the tool that generated this comparison."
31
31
  },
32
32
  "sources": {
33
33
  "type": "array",
34
34
  "minItems": 2,
35
35
  "items": {
36
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/comparison/v3.3.0#/$defs/Source"
36
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/comparison/v3.4.0#/$defs/Source"
37
37
  },
38
38
  "description": "The source documents being compared. At least two sources are required."
39
39
  },
40
40
  "matching": {
41
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/comparison/v3.3.0#/$defs/Matching_Config",
41
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/comparison/v3.4.0#/$defs/Matching_Config",
42
42
  "description": "Configuration for how requirements were matched across sources."
43
43
  },
44
44
  "summary": {
45
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/comparison/v3.3.0#/$defs/Comparison_Summary",
45
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/comparison/v3.4.0#/$defs/Comparison_Summary",
46
46
  "description": "Summary statistics for the overall comparison."
47
47
  },
48
48
  "baselineDiffs": {
49
49
  "type": "array",
50
50
  "items": {
51
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/comparison/v3.3.0#/$defs/Baseline_Diff"
51
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/comparison/v3.4.0#/$defs/Baseline_Diff"
52
52
  },
53
53
  "description": "Comparison of baselines between sources."
54
54
  },
55
55
  "requirementDiffs": {
56
56
  "type": "array",
57
57
  "items": {
58
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/comparison/v3.3.0#/$defs/Requirement_Diff"
58
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/comparison/v3.4.0#/$defs/Requirement_Diff"
59
59
  },
60
60
  "description": "Detailed comparison of individual requirements between sources."
61
61
  },
62
62
  "componentDiffs": {
63
63
  "type": "array",
64
64
  "items": {
65
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/comparison/v3.3.0#/$defs/Component_Diff"
65
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/comparison/v3.4.0#/$defs/Component_Diff"
66
66
  },
67
- "description": "Comparison of components between two system documents. Used in systemDrift mode."
67
+ "description": "Comparison of components between two system documents. Used in systemDrift mode. A component's BOM changes surface as a field change on its boms[] here."
68
68
  },
69
69
  "packageDiffs": {
70
70
  "type": "array",
71
71
  "items": {
72
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/comparison/v3.3.0#/$defs/Package_Diff"
72
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/comparison/v3.4.0#/$defs/Package_Diff"
73
73
  },
74
- "description": "Comparison of packages between two SBOMs. Used in systemDrift mode for SBOM comparison."
74
+ "description": "RESERVED — not emitted by the current systemDrift comparison. systemDrift now reports a component's BOM changes as a field change on its boms[] (see componentDiffs), and standalone SBOM package diffing is a separate `hdf diff <sbom> <sbom>` output shape. This field is retained for a future normalized package-level diff; consumers must not expect it from today's systemDrift output."
75
75
  },
76
76
  "systemRef": {
77
77
  "type": "string",
@@ -81,19 +81,19 @@
81
81
  "drift": {
82
82
  "type": "array",
83
83
  "items": {
84
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/comparison/v3.3.0#/$defs/Requirement_Diff"
84
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/comparison/v3.4.0#/$defs/Requirement_Diff"
85
85
  },
86
86
  "description": "External/metadata changes separate from status changes (Terraform pattern)."
87
87
  },
88
88
  "annotations": {
89
89
  "type": "object",
90
90
  "additionalProperties": {
91
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/comparison/v3.3.0#/$defs/Annotation"
91
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/comparison/v3.4.0#/$defs/Annotation"
92
92
  },
93
93
  "description": "Map of annotation IDs to annotation objects, providing context or action items for requirement diffs."
94
94
  },
95
95
  "integrity": {
96
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/extensions/v3.3.0#/$defs/Integrity",
96
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/extensions/v3.4.0#/$defs/Integrity",
97
97
  "description": "Cryptographic integrity information for verifying this comparison document."
98
98
  },
99
99
  "extensions": {
@@ -105,9 +105,9 @@
105
105
  "description": "Structured comparison between two or more HDF security assessment documents. Supports temporal, baseline, fleet, and multi-source comparison modes.",
106
106
  "title": "HDF Comparison",
107
107
  "$defs": {
108
- "https://mitre.github.io/hdf-libs/schemas/primitives/comparison/v3.3.0": {
108
+ "https://mitre.github.io/hdf-libs/schemas/primitives/comparison/v3.4.0": {
109
109
  "$schema": "https://json-schema.org/draft/2020-12/schema",
110
- "$id": "https://mitre.github.io/hdf-libs/schemas/primitives/comparison/v3.3.0",
110
+ "$id": "https://mitre.github.io/hdf-libs/schemas/primitives/comparison/v3.4.0",
111
111
  "title": "HDF Comparison Primitives",
112
112
  "description": "Types for representing structured comparisons between HDF security assessment documents.",
113
113
  "$defs": {
@@ -277,7 +277,7 @@
277
277
  "description": "The original format of the source document before conversion to HDF."
278
278
  },
279
279
  "checksum": {
280
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.3.0#/$defs/Checksum",
280
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.4.0#/$defs/Checksum",
281
281
  "description": "Cryptographic checksum of the source document for integrity verification."
282
282
  },
283
283
  "assessmentTimestamp": {
@@ -286,13 +286,13 @@
286
286
  "description": "When the source assessment was performed. ISO 8601 format."
287
287
  },
288
288
  "tool": {
289
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/extensions/v3.3.0#/$defs/Tool",
289
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/extensions/v3.4.0#/$defs/Tool",
290
290
  "description": "The security tool that produced the assessment data in this source."
291
291
  },
292
292
  "components": {
293
293
  "type": "array",
294
294
  "items": {
295
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/component/v3.3.0#/$defs/Component"
295
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/component/v3.4.0#/$defs/Component"
296
296
  },
297
297
  "description": "The components assessed in this source."
298
298
  },
@@ -644,7 +644,7 @@
644
644
  "before": {
645
645
  "oneOf": [
646
646
  {
647
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/component/v3.3.0#/$defs/Component"
647
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/component/v3.4.0#/$defs/Component"
648
648
  },
649
649
  {
650
650
  "type": "null"
@@ -655,7 +655,7 @@
655
655
  "after": {
656
656
  "oneOf": [
657
657
  {
658
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/component/v3.3.0#/$defs/Component"
658
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/component/v3.4.0#/$defs/Component"
659
659
  },
660
660
  {
661
661
  "type": "null"
@@ -678,17 +678,32 @@
678
678
  "type": "object",
679
679
  "unevaluatedProperties": false,
680
680
  "required": [
681
- "purl",
682
681
  "state"
683
682
  ],
683
+ "anyOf": [
684
+ {
685
+ "required": [
686
+ "purl"
687
+ ]
688
+ },
689
+ {
690
+ "required": [
691
+ "identifier"
692
+ ]
693
+ }
694
+ ],
684
695
  "properties": {
685
696
  "purl": {
686
697
  "type": "string",
687
- "description": "Package URL (purl) used as the identity key for matching across SBOMs."
698
+ "description": "Package URL (purl) — the preferred identity key for matching software packages across BOMs. Optional: BOM nodes without a purl (AI models, datasets, hardware parts, crypto algorithms) key on identifier instead."
699
+ },
700
+ "identifier": {
701
+ "type": "string",
702
+ "description": "Generic identity key for matching a BOM node across versions when no purl applies — e.g. a Hugging Face model ref, dataset uniqueId, crypto algorithm OID, or hardware part number. At least one of purl or identifier is required."
688
703
  },
689
704
  "name": {
690
705
  "type": "string",
691
- "description": "Human-readable package name."
706
+ "description": "Human-readable node name."
692
707
  },
693
708
  "state": {
694
709
  "type": "string",
@@ -717,7 +732,24 @@
717
732
  "description": "License identifiers for this package."
718
733
  }
719
734
  },
720
- "description": "Comparison of a single package between two SBOM versions, matched by purl.",
735
+ "examples": [
736
+ {
737
+ "$comment": "Software package diff keyed by purl (the SBOM case).",
738
+ "purl": "pkg:npm/express@4.18.2",
739
+ "name": "express",
740
+ "state": "updated",
741
+ "oldVersion": "4.18.1",
742
+ "newVersion": "4.18.2"
743
+ },
744
+ {
745
+ "$comment": "AI-model node diff keyed by identifier when no purl applies.",
746
+ "identifier": "acme/llama-2-7b-chat-support",
747
+ "name": "Llama-2-7b-chat (finetuned)",
748
+ "state": "added",
749
+ "newVersion": "1.2.0"
750
+ }
751
+ ],
752
+ "description": "Comparison of a single BOM node between two BOM versions, matched by purl (software) or identifier (models, datasets, hardware, crypto).",
721
753
  "title": "Package Diff"
722
754
  },
723
755
  "Scanner_Conflict": {
@@ -829,7 +861,7 @@
829
861
  "before": {
830
862
  "oneOf": [
831
863
  {
832
- "$ref": "https://mitre.github.io/hdf-libs/schemas/hdf-results/v3.3.0#/$defs/Evaluated_Requirement"
864
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/hdf-results/v3.4.0#/$defs/Evaluated_Requirement"
833
865
  },
834
866
  {
835
867
  "type": "null"
@@ -840,7 +872,7 @@
840
872
  "after": {
841
873
  "oneOf": [
842
874
  {
843
- "$ref": "https://mitre.github.io/hdf-libs/schemas/hdf-results/v3.3.0#/$defs/Evaluated_Requirement"
875
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/hdf-results/v3.4.0#/$defs/Evaluated_Requirement"
844
876
  },
845
877
  {
846
878
  "type": "null"
@@ -936,9 +968,9 @@
936
968
  }
937
969
  }
938
970
  },
939
- "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.3.0": {
971
+ "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.4.0": {
940
972
  "$schema": "https://json-schema.org/draft/2020-12/schema",
941
- "$id": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.3.0",
973
+ "$id": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.4.0",
942
974
  "title": "HDF Common Primitives",
943
975
  "description": "Shared building blocks used by hdf-results and hdf-baseline schemas.",
944
976
  "$defs": {
@@ -947,9 +979,10 @@
947
979
  "enum": [
948
980
  "sha256",
949
981
  "sha384",
950
- "sha512"
982
+ "sha512",
983
+ "blake3"
951
984
  ],
952
- "description": "Supported cryptographic hash algorithms for checksums and integrity verification.",
985
+ "description": "Supported cryptographic hash algorithms for checksums and integrity verification. blake3 covers container-image and other artifact digests that use it.",
953
986
  "title": "Hash Algorithm"
954
987
  },
955
988
  "Requirement_Group": {
@@ -1210,10 +1243,11 @@
1210
1243
  "email",
1211
1244
  "username",
1212
1245
  "system",
1246
+ "agent",
1213
1247
  "simple",
1214
1248
  "other"
1215
1249
  ],
1216
- "description": "The type of identifier. Use 'email' for email addresses, 'username' for user accounts, 'system' for automated systems, 'simple' for basic string identifiers without additional classification, or 'other' for custom identity systems."
1250
+ "description": "The type of identifier. Use 'email' for email addresses, 'username' for user accounts, 'system' for deterministic non-interactive automation (CI jobs, cron, scanners), 'agent' for an AI/LLM agent acting with autonomy — kept distinct from 'system' so auditors can apply AI-specific scrutiny (e.g. 'an LLM proposed this' vs a deterministic job) and satisfy AI-source disclosure under frameworks like the EU AI Act and NIST AI RMF, 'simple' for basic string identifiers without additional classification, or 'other' for custom identity systems."
1217
1251
  },
1218
1252
  "description": {
1219
1253
  "type": "string",
@@ -1234,6 +1268,11 @@
1234
1268
  "type": "system",
1235
1269
  "identifier": "automated-scanner-01",
1236
1270
  "description": "Nightly compliance scan pipeline"
1271
+ },
1272
+ {
1273
+ "type": "agent",
1274
+ "identifier": "cve-enrichment-bot/v0.4.2",
1275
+ "description": "OpenAI GPT-4 via internal CVE-enrichment tool; proposes environmental CVSS for human review"
1237
1276
  }
1238
1277
  ],
1239
1278
  "description": "Represents an identity that performed an action, such as capturing evidence or applying an override.",
@@ -1721,7 +1760,7 @@
1721
1760
  },
1722
1761
  "examples": [
1723
1762
  {
1724
- "$comment": "v3.1.x-style requirement: classification fields omitted. Consumers must continue to handle this shape under v3.3.0 (backward compatibility).",
1763
+ "$comment": "v3.1.x-style requirement: classification fields omitted. Consumers must continue to handle this shape under v3.4.0 (backward compatibility).",
1725
1764
  "id": "SV-238196",
1726
1765
  "title": "The Ubuntu operating system must enforce password complexity",
1727
1766
  "impact": 0.5,
@@ -1858,9 +1897,9 @@
1858
1897
  }
1859
1898
  }
1860
1899
  },
1861
- "https://mitre.github.io/hdf-libs/schemas/primitives/extensions/v3.3.0": {
1900
+ "https://mitre.github.io/hdf-libs/schemas/primitives/extensions/v3.4.0": {
1862
1901
  "$schema": "https://json-schema.org/draft/2020-12/schema",
1863
- "$id": "https://mitre.github.io/hdf-libs/schemas/primitives/extensions/v3.3.0",
1902
+ "$id": "https://mitre.github.io/hdf-libs/schemas/primitives/extensions/v3.4.0",
1864
1903
  "title": "HDF Extension Primitives",
1865
1904
  "description": "Extension types for waivers, attestations, generators, and integrity.",
1866
1905
  "$defs": {
@@ -1888,15 +1927,15 @@
1888
1927
  ],
1889
1928
  "properties": {
1890
1929
  "type": {
1891
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/amendments/v3.3.0#/$defs/Override_Type",
1930
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/amendments/v3.4.0#/$defs/Override_Type",
1892
1931
  "description": "The type of override applied to this requirement."
1893
1932
  },
1894
1933
  "status": {
1895
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/result/v3.3.0#/$defs/Result_Status",
1934
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/result/v3.4.0#/$defs/Result_Status",
1896
1935
  "description": "The new status this override sets for the requirement. Optional when only impact is being overridden."
1897
1936
  },
1898
1937
  "impact": {
1899
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/amendments/v3.3.0#/$defs/Impact_Override",
1938
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/amendments/v3.4.0#/$defs/Impact_Override",
1900
1939
  "description": "Override to the requirement's impact score. At least one of status or impact must be set."
1901
1940
  },
1902
1941
  "reason": {
@@ -1904,7 +1943,7 @@
1904
1943
  "description": "Explanation for why this override was applied."
1905
1944
  },
1906
1945
  "appliedBy": {
1907
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.3.0#/$defs/Identity",
1946
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.4.0#/$defs/Identity",
1908
1947
  "description": "Identity of who applied this override. For simple cases, use type 'simple' with just an identifier."
1909
1948
  },
1910
1949
  "appliedAt": {
@@ -1918,27 +1957,27 @@
1918
1957
  "description": "Timestamp when this override expires and must be reviewed/renewed. REQUIRED - no permanent overrides allowed. ISO 8601 format."
1919
1958
  },
1920
1959
  "signature": {
1921
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.3.0#/$defs/Signature",
1960
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.4.0#/$defs/Signature",
1922
1961
  "description": "Optional digital signature for enhanced trust and non-repudiation. Supports hardware security tokens (PKCS#11/PKCS#12), Yubikeys, GPG keys, passkeys, and other signing methods."
1923
1962
  },
1924
1963
  "evidence": {
1925
1964
  "type": "array",
1926
1965
  "items": {
1927
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.3.0#/$defs/Evidence"
1966
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.4.0#/$defs/Evidence"
1928
1967
  },
1929
1968
  "description": "Supporting evidence for this override, such as screenshots demonstrating manual verification for attestations."
1930
1969
  },
1931
1970
  "previousChecksum": {
1932
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.3.0#/$defs/Checksum",
1971
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.4.0#/$defs/Checksum",
1933
1972
  "description": "SHA-256 checksum of the previous amendment in chronological order. Creates a tamper-evident chain of amendments (similar to blockchain). Null for the first amendment on a requirement."
1934
1973
  },
1935
1974
  "cvss": {
1936
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/cvss/v3.3.0#/$defs/Cvss",
1975
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/cvss/v3.4.0#/$defs/Cvss",
1937
1976
  "$comment": "When present alongside impact.value on a riskAdjustment override, impact.value should be approximately cvss.computedScore / 10.0. Soft consistency rule — validators may warn but should not error. The cvss block makes Environmental/Threat enrichment auditable.",
1938
1977
  "description": "Structured CVSS scoring data backing this override. Captures the rubric (which Environmental/Threat metrics the consumer modified, the recomputed score) used to justify a riskAdjustment. For other override types this is optional context."
1939
1978
  },
1940
1979
  "justification": {
1941
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/amendments/v3.3.0#/$defs/Justification",
1980
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/amendments/v3.4.0#/$defs/Justification",
1942
1981
  "description": "Structured controlled-vocabulary classification for why this override applies. Complements (does not replace) the free-text 'reason' field. Most useful on falsePositive and attestation overrides where the structured category enables filtering and lossless round-trip with VEX / OSCAL / FedRAMP DR. See the Justification primitive for the precedent vocabulary and rationale."
1943
1982
  }
1944
1983
  },
@@ -2045,7 +2084,7 @@
2045
2084
  "description": "Detailed explanation of the plan, including what actions will be taken."
2046
2085
  },
2047
2086
  "appliedBy": {
2048
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.3.0#/$defs/Identity",
2087
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.4.0#/$defs/Identity",
2049
2088
  "description": "Identity of who created this POA&M. For simple cases, use type 'simple' with just an identifier."
2050
2089
  },
2051
2090
  "appliedAt": {
@@ -2061,23 +2100,23 @@
2061
2100
  "milestones": {
2062
2101
  "type": "array",
2063
2102
  "items": {
2064
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.3.0#/$defs/Milestone"
2103
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.4.0#/$defs/Milestone"
2065
2104
  },
2066
2105
  "description": "Optional array of milestones tracking progress toward completion."
2067
2106
  },
2068
2107
  "signature": {
2069
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.3.0#/$defs/Signature",
2108
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.4.0#/$defs/Signature",
2070
2109
  "description": "Optional digital signature for enhanced trust and non-repudiation."
2071
2110
  },
2072
2111
  "evidence": {
2073
2112
  "type": "array",
2074
2113
  "items": {
2075
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.3.0#/$defs/Evidence"
2114
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.4.0#/$defs/Evidence"
2076
2115
  },
2077
2116
  "description": "Supporting evidence for this POA&M, such as documentation of compensating controls or mitigation implementation."
2078
2117
  },
2079
2118
  "previousChecksum": {
2080
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.3.0#/$defs/Checksum",
2119
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.4.0#/$defs/Checksum",
2081
2120
  "description": "SHA-256 checksum of the previous amendment in chronological order. Creates a tamper-evident chain of amendments (similar to blockchain). Null for the first amendment on a requirement."
2082
2121
  }
2083
2122
  },
@@ -2228,7 +2267,7 @@
2228
2267
  },
2229
2268
  "properties": {
2230
2269
  "algorithm": {
2231
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.3.0#/$defs/Hash_Algorithm",
2270
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.4.0#/$defs/Hash_Algorithm",
2232
2271
  "description": "The hash algorithm used for the checksum."
2233
2272
  },
2234
2273
  "checksum": {
@@ -2261,9 +2300,9 @@
2261
2300
  }
2262
2301
  }
2263
2302
  },
2264
- "https://mitre.github.io/hdf-libs/schemas/primitives/amendments/v3.3.0": {
2303
+ "https://mitre.github.io/hdf-libs/schemas/primitives/amendments/v3.4.0": {
2265
2304
  "$schema": "https://json-schema.org/draft/2020-12/schema",
2266
- "$id": "https://mitre.github.io/hdf-libs/schemas/primitives/amendments/v3.3.0",
2305
+ "$id": "https://mitre.github.io/hdf-libs/schemas/primitives/amendments/v3.4.0",
2267
2306
  "title": "HDF Amendment Primitives",
2268
2307
  "description": "Types for waivers, attestations, and POA&Ms that modify requirement compliance status.",
2269
2308
  "$defs": {
@@ -2384,7 +2423,7 @@
2384
2423
  "description": "Name of the baseline containing the requirement. Required when the system has multiple baselines with potentially overlapping requirement IDs."
2385
2424
  },
2386
2425
  "status": {
2387
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/result/v3.3.0#/$defs/Result_Status",
2426
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/result/v3.4.0#/$defs/Result_Status",
2388
2427
  "description": "The new status this amendment sets. Optional when only impact is being overridden."
2389
2428
  },
2390
2429
  "impact": {
@@ -2396,7 +2435,7 @@
2396
2435
  "description": "Justification for this amendment."
2397
2436
  },
2398
2437
  "appliedBy": {
2399
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.3.0#/$defs/Identity",
2438
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.4.0#/$defs/Identity",
2400
2439
  "description": "Identity of who applied this amendment."
2401
2440
  },
2402
2441
  "appliedAt": {
@@ -2412,20 +2451,20 @@
2412
2451
  "evidence": {
2413
2452
  "type": "array",
2414
2453
  "items": {
2415
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.3.0#/$defs/Evidence"
2454
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.4.0#/$defs/Evidence"
2416
2455
  },
2417
2456
  "description": "Supporting evidence (screenshots, logs, URLs, documents)."
2418
2457
  },
2419
2458
  "signature": {
2420
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.3.0#/$defs/Signature",
2459
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.4.0#/$defs/Signature",
2421
2460
  "description": "Digital signature for non-repudiation."
2422
2461
  },
2423
2462
  "previousChecksum": {
2424
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.3.0#/$defs/Checksum",
2463
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.4.0#/$defs/Checksum",
2425
2464
  "description": "Checksum of the prior amendment in the chain. Creates a tamper-evident linked list. Null for the first amendment."
2426
2465
  },
2427
2466
  "cvss": {
2428
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/cvss/v3.3.0#/$defs/Cvss",
2467
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/cvss/v3.4.0#/$defs/Cvss",
2429
2468
  "$comment": "When present alongside impact.value on a riskAdjustment override, impact.value should be approximately cvss.computedScore / 10.0. Soft consistency rule — validators may warn but should not error. The cvss block makes Environmental/Threat enrichment auditable.",
2430
2469
  "description": "Structured CVSS scoring data backing this override. Captures the rubric (which Environmental/Threat metrics the consumer modified, the recomputed score) used to justify a riskAdjustment. For other override types this is optional context."
2431
2470
  },
@@ -2436,7 +2475,7 @@
2436
2475
  "milestones": {
2437
2476
  "type": "array",
2438
2477
  "items": {
2439
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.3.0#/$defs/Milestone"
2478
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.4.0#/$defs/Milestone"
2440
2479
  },
2441
2480
  "description": "Remediation milestones (primarily for POA&M type amendments)."
2442
2481
  },
@@ -2453,7 +2492,7 @@
2453
2492
  "affectedPackages": {
2454
2493
  "type": "array",
2455
2494
  "items": {
2456
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/affected-package/v3.3.0#/$defs/Affected_Package"
2495
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/affected-package/v3.4.0#/$defs/Affected_Package"
2457
2496
  },
2458
2497
  "description": "Software packages this amendment is scoped to, distinct from componentRef (which scopes to an HDF-internal Component by UUID). Use when the source amendment format references packages by purl/cpe/name+version — e.g., VEX `affects[]` / `products[]`, OSCAL POA&M `subjects[]`, FedRAMP component-aware amendments. Symmetric with Evaluated_Requirement.affectedPackages, which scopes findings to the same package vocabulary. When omitted, the amendment applies system-wide (or only to componentRef when that is set)."
2459
2498
  }
@@ -2586,9 +2625,9 @@
2586
2625
  }
2587
2626
  }
2588
2627
  },
2589
- "https://mitre.github.io/hdf-libs/schemas/primitives/result/v3.3.0": {
2628
+ "https://mitre.github.io/hdf-libs/schemas/primitives/result/v3.4.0": {
2590
2629
  "$schema": "https://json-schema.org/draft/2020-12/schema",
2591
- "$id": "https://mitre.github.io/hdf-libs/schemas/primitives/result/v3.3.0",
2630
+ "$id": "https://mitre.github.io/hdf-libs/schemas/primitives/result/v3.4.0",
2592
2631
  "title": "HDF Result Primitives",
2593
2632
  "description": "Types for representing assessment results and statuses.",
2594
2633
  "$defs": {
@@ -2719,9 +2758,9 @@
2719
2758
  }
2720
2759
  }
2721
2760
  },
2722
- "https://mitre.github.io/hdf-libs/schemas/primitives/cvss/v3.3.0": {
2761
+ "https://mitre.github.io/hdf-libs/schemas/primitives/cvss/v3.4.0": {
2723
2762
  "$schema": "https://json-schema.org/draft/2020-12/schema",
2724
- "$id": "https://mitre.github.io/hdf-libs/schemas/primitives/cvss/v3.3.0",
2763
+ "$id": "https://mitre.github.io/hdf-libs/schemas/primitives/cvss/v3.4.0",
2725
2764
  "title": "HDF CVSS Primitives",
2726
2765
  "description": "Types for representing CVSS (Common Vulnerability Scoring System) data attached to assessment findings. Supports CVSS v2.0, v3.0, v3.1, and v4.0 metric groups (Base, Threat, Environmental, Supplemental).",
2727
2766
  "$defs": {
@@ -2923,9 +2962,9 @@
2923
2962
  }
2924
2963
  }
2925
2964
  },
2926
- "https://mitre.github.io/hdf-libs/schemas/primitives/affected-package/v3.3.0": {
2965
+ "https://mitre.github.io/hdf-libs/schemas/primitives/affected-package/v3.4.0": {
2927
2966
  "$schema": "https://json-schema.org/draft/2020-12/schema",
2928
- "$id": "https://mitre.github.io/hdf-libs/schemas/primitives/affected-package/v3.3.0",
2967
+ "$id": "https://mitre.github.io/hdf-libs/schemas/primitives/affected-package/v3.4.0",
2929
2968
  "title": "HDF Affected Package Primitives",
2930
2969
  "description": "Types for representing the software package(s) affected by a vulnerability finding.",
2931
2970
  "$defs": {
@@ -3038,11 +3077,11 @@
3038
3077
  }
3039
3078
  }
3040
3079
  },
3041
- "https://mitre.github.io/hdf-libs/schemas/primitives/component/v3.3.0": {
3080
+ "https://mitre.github.io/hdf-libs/schemas/primitives/component/v3.4.0": {
3042
3081
  "$schema": "https://json-schema.org/draft/2020-12/schema",
3043
- "$id": "https://mitre.github.io/hdf-libs/schemas/primitives/component/v3.3.0",
3082
+ "$id": "https://mitre.github.io/hdf-libs/schemas/primitives/component/v3.4.0",
3044
3083
  "title": "HDF Component Primitives",
3045
- "description": "First-class system component with identity, polymorphic type, SBOM embedding, and system-binding properties. Components are the successor to Targets, adding stable identity (componentId), external system cross-references, and software inventory.",
3084
+ "description": "First-class system component with identity, polymorphic type, generalized BOM attachment (boms[]), and system-binding properties. Components are the successor to Targets, adding stable identity (componentId), external system cross-references, and manifest inventory (SBOM, AI model/dataset, and reserved future BOM kinds).",
3046
3085
  "$defs": {
3047
3086
  "Base_Component": {
3048
3087
  "type": "object",
@@ -3066,9 +3105,11 @@
3066
3105
  "application",
3067
3106
  "artifact",
3068
3107
  "network",
3069
- "database"
3108
+ "database",
3109
+ "aiModel",
3110
+ "dataset"
3070
3111
  ],
3071
- "description": "Component type discriminator. Same values as Target types."
3112
+ "description": "Component type discriminator. Same values as Target types, plus aiModel and dataset (thin AI subject components whose detail lives in an attached ai-model / dataset BOM)."
3072
3113
  },
3073
3114
  "name": {
3074
3115
  "type": "string",
@@ -3084,7 +3125,7 @@
3084
3125
  "description": "Description of this component's role or purpose."
3085
3126
  },
3086
3127
  "owner": {
3087
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.3.0#/$defs/Identity",
3128
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.4.0#/$defs/Identity",
3088
3129
  "description": "Team or individual responsible for this component. Enables per-component ownership when different teams manage different parts of a system."
3089
3130
  },
3090
3131
  "externalIds": {
@@ -3101,23 +3142,19 @@
3101
3142
  },
3102
3143
  "description": "Optional key-value labels for flexible grouping. Well-known keys: system, component, environment, region, team. Values must be strings."
3103
3144
  },
3104
- "sbom": {
3105
- "description": "Embedded CycloneDX or SPDX SBOM document representing this component's software inventory. The sbomFormat field determines which format constraints apply.",
3106
- "$comment": "Validated conditionally: CycloneDX requires bomFormat='CycloneDX' + specVersion; SPDX requires spdxVersion + SPDXID. Full SBOM schema validation is a tool-level concern."
3107
- },
3108
- "sbomRef": {
3109
- "type": "string",
3110
- "format": "uri-reference",
3111
- "description": "URI reference to an external CycloneDX or SPDX SBOM document for this component. May be a relative path, absolute URI, or fragment identifier."
3145
+ "boms": {
3146
+ "type": "array",
3147
+ "items": {
3148
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/bom/v3.4.0#/$defs/Bom"
3149
+ },
3150
+ "description": "Component-scoped Bills of Materials (SBOM, ai-model, dataset, or any reserved bomType), each carried by passthrough (ref/document) or normalized. Replaces the former sbom/sbomRef/sbomFormat trio; a component may carry several BOMs (e.g. an SBOM plus an ai-model BOM). See primitives/bom.schema.json."
3112
3151
  },
3113
- "sbomFormat": {
3114
- "type": "string",
3115
- "title": "SBOM Format",
3116
- "enum": [
3117
- "cyclonedx",
3118
- "spdx"
3119
- ],
3120
- "description": "Format of the SBOM (embedded or referenced). Required when sbom or sbomRef is present."
3152
+ "integrity": {
3153
+ "type": "array",
3154
+ "items": {
3155
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.4.0#/$defs/Checksum"
3156
+ },
3157
+ "description": "Cryptographic integrity of this component's underlying artifact — model weights or shards, dataset archive, container image, or package bytes. An array supports multi-file/sharded artifacts. This is the single, generic home for artifact/subject integrity across all component types (it replaced the former per-type Container_Image digest and Artifact checksum fields). Distinct from BOM-document integrity (Bom.hashes[]) and from the document tamper-evidence Integrity type."
3121
3158
  },
3122
3159
  "baselineRefs": {
3123
3160
  "type": "array",
@@ -3129,115 +3166,42 @@
3129
3166
  "inputOverrides": {
3130
3167
  "type": "array",
3131
3168
  "items": {
3132
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/system/v3.3.0#/$defs/Input_Override"
3169
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/system/v3.4.0#/$defs/Input_Override"
3133
3170
  },
3134
3171
  "description": "System-specific overrides for baseline input values."
3135
3172
  },
3136
3173
  "targetSelector": {
3137
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/system/v3.3.0#/$defs/Target_Selector",
3174
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/system/v3.4.0#/$defs/Target_Selector",
3138
3175
  "description": "Label selector to match targets belonging to this component during migration. Targets with matching labels are automatically included."
3139
3176
  }
3140
3177
  },
3141
- "allOf": [
3178
+ "examples": [
3142
3179
  {
3143
- "if": {
3144
- "allOf": [
3145
- {
3146
- "properties": {
3147
- "sbomFormat": {
3148
- "const": "cyclonedx"
3149
- }
3150
- },
3151
- "required": [
3152
- "sbomFormat"
3153
- ]
3154
- },
3155
- {
3156
- "properties": {
3157
- "sbom": {
3158
- "type": "object"
3159
- }
3160
- },
3161
- "required": [
3162
- "sbom"
3163
- ]
3164
- }
3165
- ]
3180
+ "type": "aiModel",
3181
+ "name": "Llama-2-7b-chat (finetuned)",
3182
+ "componentId": "b7c8d9e0-1a2b-4c3d-8e4f-5a6b7c8d9e0f",
3183
+ "owner": {
3184
+ "type": "email",
3185
+ "identifier": "ml-platform@agency.gov"
3166
3186
  },
3167
- "then": {
3168
- "properties": {
3169
- "sbom": {
3170
- "type": "object",
3171
- "required": [
3172
- "bomFormat",
3173
- "specVersion"
3174
- ],
3175
- "properties": {
3176
- "bomFormat": {
3177
- "type": "string",
3178
- "const": "CycloneDX",
3179
- "description": "Must be 'CycloneDX' for CycloneDX SBOM documents."
3180
- },
3181
- "specVersion": {
3182
- "type": "string",
3183
- "description": "CycloneDX specification version (e.g., '1.4', '1.5', '1.6')."
3184
- }
3185
- },
3186
- "additionalProperties": true
3187
- }
3187
+ "integrity": [
3188
+ {
3189
+ "algorithm": "sha256",
3190
+ "value": "d1f2e3a4b5c6978869504132a1b2c3d4e5f6071829304152637485960a1b2c3d"
3188
3191
  }
3189
- }
3190
- },
3191
- {
3192
- "if": {
3193
- "allOf": [
3194
- {
3195
- "properties": {
3196
- "sbomFormat": {
3197
- "const": "spdx"
3198
- }
3199
- },
3200
- "required": [
3201
- "sbomFormat"
3202
- ]
3203
- },
3204
- {
3205
- "properties": {
3206
- "sbom": {
3207
- "type": "object"
3208
- }
3209
- },
3210
- "required": [
3211
- "sbom"
3212
- ]
3213
- }
3214
- ]
3215
- },
3216
- "then": {
3217
- "properties": {
3218
- "sbom": {
3219
- "type": "object",
3220
- "required": [
3221
- "spdxVersion",
3222
- "SPDXID"
3223
- ],
3224
- "properties": {
3225
- "spdxVersion": {
3226
- "type": "string",
3227
- "description": "SPDX specification version (e.g., 'SPDX-2.3')."
3228
- },
3229
- "SPDXID": {
3230
- "type": "string",
3231
- "description": "SPDX document identifier (e.g., 'SPDXRef-DOCUMENT')."
3232
- }
3233
- },
3234
- "additionalProperties": true
3192
+ ],
3193
+ "boms": [
3194
+ {
3195
+ "bomType": "ai-model",
3196
+ "format": "cyclonedx-ml",
3197
+ "model": {
3198
+ "adaptationType": "finetune"
3235
3199
  }
3236
3200
  }
3237
- }
3201
+ ]
3238
3202
  }
3239
3203
  ],
3240
- "description": "Base properties shared by all component types. Extends the Target concept with stable identity, external references, and SBOM embedding.",
3204
+ "description": "Base properties shared by all component types. Extends the Target concept with stable identity, external references, generalized BOM attachment (boms[]), and unified artifact integrity (integrity[]).",
3241
3205
  "title": "Base Component"
3242
3206
  },
3243
3207
  "Component": {
@@ -3276,6 +3240,12 @@
3276
3240
  },
3277
3241
  {
3278
3242
  "$ref": "#/$defs/Database_Component"
3243
+ },
3244
+ {
3245
+ "$ref": "#/$defs/AI_Model_Component"
3246
+ },
3247
+ {
3248
+ "$ref": "#/$defs/Dataset_Component"
3279
3249
  }
3280
3250
  ]
3281
3251
  },
@@ -3290,10 +3260,18 @@
3290
3260
  "type": {
3291
3261
  "const": "host"
3292
3262
  },
3263
+ "hostname": {
3264
+ "type": "string",
3265
+ "description": "Short, OS-reported host name (the unqualified machine name, e.g. 'web01'). Kept distinct from 'fqdn' because an FQDN is not reliably decomposable into hostname + domain (standalone/workgroup hosts have no domain; a directory domain is not the FQDN's DNS suffix). Aligns with ECS host.hostname and DISA STIG CKL HOST_NAME. Store the short name the source reports; do not derive it from the FQDN."
3266
+ },
3293
3267
  "fqdn": {
3294
3268
  "type": "string",
3295
3269
  "format": "hostname",
3296
- "description": "Fully qualified domain name."
3270
+ "description": "Fully qualified domain name (e.g. 'web01.prod.example.com'). Distinct from 'hostname' (short) and 'domain' (directory domain). ECS recommends storing this lowercase; the schema does not enforce case so source fidelity is preserved on round-trip."
3271
+ },
3272
+ "domain": {
3273
+ "type": "string",
3274
+ "description": "Directory domain the host is a member of — Active Directory / NetBIOS / LDAP domain (ECS host.domain semantics), NOT necessarily the DNS suffix of the FQDN. A standalone or workgroup host has a hostname but no domain. Not derivable from the FQDN; populate only from a source that carries directory membership."
3297
3275
  },
3298
3276
  "ipAddress": {
3299
3277
  "anyOf": [
@@ -3326,10 +3304,13 @@
3326
3304
  ],
3327
3305
  "examples": [
3328
3306
  {
3307
+ "$comment": "Domain-joined host carrying all three identity fields separately: short hostname, FQDN, and the (distinct) directory domain. HOST_NAME and HOST_FQDN from a STIG checklist map here; note the AD domain differs from the FQDN's DNS suffix.",
3329
3308
  "type": "host",
3330
3309
  "name": "web-server-prod-01",
3331
3310
  "componentId": "a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d",
3311
+ "hostname": "web01",
3332
3312
  "fqdn": "web01.prod.example.com",
3313
+ "domain": "CORP",
3333
3314
  "ipAddress": "10.0.1.50",
3334
3315
  "osName": "Ubuntu",
3335
3316
  "osVersion": "22.04 LTS",
@@ -3337,6 +3318,16 @@
3337
3318
  "cmdb": "ASSET-12345",
3338
3319
  "aws": "i-0abc123def456789"
3339
3320
  }
3321
+ },
3322
+ {
3323
+ "$comment": "Standalone/workgroup host: has a short hostname but no directory domain — 'domain' is omitted rather than fabricated from the FQDN suffix.",
3324
+ "type": "host",
3325
+ "name": "kiosk-lab-07",
3326
+ "hostname": "kiosk-lab-07",
3327
+ "fqdn": "kiosk-lab-07.lab.example.com",
3328
+ "ipAddress": "192.168.4.7",
3329
+ "osName": "Windows",
3330
+ "osVersion": "11 23H2"
3340
3331
  }
3341
3332
  ],
3342
3333
  "description": "A physical or virtual server, workstation, or network device.",
@@ -3368,16 +3359,26 @@
3368
3359
  "tag": {
3369
3360
  "type": "string",
3370
3361
  "description": "Image tag. Example: '1.25'."
3371
- },
3372
- "digest": {
3373
- "type": "string",
3374
- "pattern": "^(sha256:[a-f0-9]{64}|sha512:[a-f0-9]{128}|blake3:[a-f0-9]{64})$",
3375
- "description": "Image digest for immutable reference."
3376
3362
  }
3377
3363
  }
3378
3364
  }
3379
3365
  ],
3380
- "description": "A static container image (not running).",
3366
+ "examples": [
3367
+ {
3368
+ "type": "containerImage",
3369
+ "name": "nginx",
3370
+ "registry": "docker.io",
3371
+ "repository": "library/nginx",
3372
+ "tag": "1.25-alpine",
3373
+ "integrity": [
3374
+ {
3375
+ "algorithm": "sha256",
3376
+ "value": "a9286defaba7b3a519d585ba0e37d0b2cbee74ebfe590960b0b1d6a5e97d1e1d"
3377
+ }
3378
+ ]
3379
+ }
3380
+ ],
3381
+ "description": "A static container image (not running). Image integrity — formerly the 'digest' field — is expressed via the shared Base_Component.integrity array.",
3381
3382
  "title": "Container Image Component"
3382
3383
  },
3383
3384
  "Container_Instance_Component": {
@@ -3454,7 +3455,7 @@
3454
3455
  "const": "cloudAccount"
3455
3456
  },
3456
3457
  "provider": {
3457
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.3.0#/$defs/Cloud_Provider",
3458
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.4.0#/$defs/Cloud_Provider",
3458
3459
  "description": "Cloud provider."
3459
3460
  },
3460
3461
  "accountId": {
@@ -3493,7 +3494,7 @@
3493
3494
  "const": "cloudResource"
3494
3495
  },
3495
3496
  "provider": {
3496
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.3.0#/$defs/Cloud_Provider",
3497
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.4.0#/$defs/Cloud_Provider",
3497
3498
  "description": "Cloud provider."
3498
3499
  },
3499
3500
  "resourceType": {
@@ -3600,15 +3601,26 @@
3600
3601
  "version": {
3601
3602
  "type": "string",
3602
3603
  "description": "Package version."
3603
- },
3604
- "checksum": {
3605
- "type": "string",
3606
- "description": "Package checksum for verification."
3607
3604
  }
3608
3605
  }
3609
3606
  }
3610
3607
  ],
3611
- "description": "A software artifact or dependency (for SCA tools).",
3608
+ "examples": [
3609
+ {
3610
+ "type": "artifact",
3611
+ "name": "express",
3612
+ "packageManager": "npm",
3613
+ "packageName": "express",
3614
+ "version": "4.18.2",
3615
+ "integrity": [
3616
+ {
3617
+ "algorithm": "sha512",
3618
+ "value": "cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e"
3619
+ }
3620
+ ]
3621
+ }
3622
+ ],
3623
+ "description": "A software artifact or dependency (for SCA tools). Package integrity — formerly the 'checksum' field — is expressed via the shared Base_Component.integrity array.",
3612
3624
  "title": "Artifact Component"
3613
3625
  },
3614
3626
  "Network_Component": {
@@ -3670,12 +3682,593 @@
3670
3682
  ],
3671
3683
  "description": "A database instance.",
3672
3684
  "title": "Database Component"
3685
+ },
3686
+ "AI_Model_Component": {
3687
+ "allOf": [
3688
+ {
3689
+ "$ref": "#/$defs/Base_Component"
3690
+ },
3691
+ {
3692
+ "type": "object",
3693
+ "properties": {
3694
+ "type": {
3695
+ "const": "aiModel"
3696
+ },
3697
+ "modelId": {
3698
+ "type": "string",
3699
+ "description": "Provider/registry identifier for the model. Examples: a Hugging Face repo id ('meta-llama/Llama-2-7b-hf') or a model purl. Correlates the component to its ai-model BOM(s) and to lineage references from other models."
3700
+ },
3701
+ "version": {
3702
+ "type": "string",
3703
+ "description": "Model version, revision, or checkpoint tag."
3704
+ }
3705
+ }
3706
+ }
3707
+ ],
3708
+ "examples": [
3709
+ {
3710
+ "type": "aiModel",
3711
+ "name": "Llama-2-7b-chat (finetuned)",
3712
+ "componentId": "b7c8d9e0-1a2b-4c3d-8e4f-5a6b7c8d9e0f",
3713
+ "modelId": "acme/llama-2-7b-chat-support",
3714
+ "version": "1.2.0",
3715
+ "integrity": [
3716
+ {
3717
+ "algorithm": "sha256",
3718
+ "value": "d1f2e3a4b5c6978869504132a1b2c3d4e5f6071829304152637485960a1b2c3d"
3719
+ }
3720
+ ],
3721
+ "boms": [
3722
+ {
3723
+ "bomType": "ai-model",
3724
+ "format": "cyclonedx-ml",
3725
+ "model": {
3726
+ "modelArchitecture": "transformer",
3727
+ "parameterCount": 6738415616,
3728
+ "serializationFormat": "safetensors",
3729
+ "adaptationType": "finetune",
3730
+ "baseModelRef": "meta-llama/Llama-2-7b-hf"
3731
+ }
3732
+ }
3733
+ ]
3734
+ }
3735
+ ],
3736
+ "description": "A thin AI-model component: identity and correlation only (parallel to Host_Component's fqdn/ip). All model detail — architecture, parameter count, serialization format, lineage — lives in an attached ai-model BOM (boms[]), never on the component itself.",
3737
+ "title": "AI Model Component"
3738
+ },
3739
+ "Dataset_Component": {
3740
+ "allOf": [
3741
+ {
3742
+ "$ref": "#/$defs/Base_Component"
3743
+ },
3744
+ {
3745
+ "type": "object",
3746
+ "properties": {
3747
+ "type": {
3748
+ "const": "dataset"
3749
+ },
3750
+ "datasetId": {
3751
+ "type": "string",
3752
+ "description": "Provider/registry identifier for the dataset. Examples: a Hugging Face dataset repo id ('HuggingFaceH4/ultrachat_200k'), a DOI, or a dataset purl. Correlates the component to its dataset BOM(s) and to datasetRefs from ai-model components."
3753
+ },
3754
+ "version": {
3755
+ "type": "string",
3756
+ "description": "Dataset version, release identifier, or — for highly dynamic datasets — a timestamped release marker."
3757
+ }
3758
+ }
3759
+ }
3760
+ ],
3761
+ "examples": [
3762
+ {
3763
+ "type": "dataset",
3764
+ "name": "UltraChat-200k (filtered)",
3765
+ "componentId": "c1d2e3f4-a5b6-4c7d-8e9f-0a1b2c3d4e5f",
3766
+ "datasetId": "acme/ultrachat-200k-filtered",
3767
+ "version": "2026-06-01",
3768
+ "integrity": [
3769
+ {
3770
+ "algorithm": "sha256",
3771
+ "value": "9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08"
3772
+ }
3773
+ ],
3774
+ "boms": [
3775
+ {
3776
+ "bomType": "dataset",
3777
+ "format": "croissant",
3778
+ "dataset": {
3779
+ "recordCount": 180000,
3780
+ "datasetFormat": "parquet",
3781
+ "dataClassification": "public",
3782
+ "baseDatasetRefs": [
3783
+ "HuggingFaceH4/ultrachat_200k"
3784
+ ],
3785
+ "derivation": "filtered"
3786
+ }
3787
+ }
3788
+ ]
3789
+ }
3790
+ ],
3791
+ "description": "A thin dataset component: identity and correlation only, symmetric with AI_Model_Component. All dataset detail — record count, format, classification, lineage — lives in an attached dataset BOM (boms[]), never on the component itself.",
3792
+ "title": "Dataset Component"
3793
+ }
3794
+ }
3795
+ },
3796
+ "https://mitre.github.io/hdf-libs/schemas/primitives/bom/v3.4.0": {
3797
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3798
+ "$id": "https://mitre.github.io/hdf-libs/schemas/primitives/bom/v3.4.0",
3799
+ "title": "HDF BOM Primitives",
3800
+ "description": "Generalized Bill-of-Materials / manifest representation. One extensible Bom shape, discriminated by bomType, carries any manifest kind (SBOM, AI model/dataset, and reserved future kinds) either by passthrough (opaque ref/embed of the native document) or normalized (converted into HDF's queryable shape). Subject identity (name, version, componentId) is inherited from the host component or system — the BOM never re-owns it. See ADR-0001.",
3801
+ "$defs": {
3802
+ "Bom_Type": {
3803
+ "type": "string",
3804
+ "title": "BOM Type",
3805
+ "anyOf": [
3806
+ {
3807
+ "enum": [
3808
+ "sbom",
3809
+ "ai-model",
3810
+ "dataset",
3811
+ "hbom",
3812
+ "cbom",
3813
+ "saasbom",
3814
+ "obom",
3815
+ "mbom",
3816
+ "kbom"
3817
+ ]
3818
+ },
3819
+ {
3820
+ "pattern": "^x-[a-z0-9]+(-[a-z0-9]+)*$"
3821
+ }
3822
+ ],
3823
+ "description": "Discriminator for the manifest kind. Reserved, CycloneDX-aligned set: sbom (software), ai-model, dataset, hbom (hardware), cbom (cryptography), saasbom (services), obom (operations), mbom (manufacturing), kbom (Kubernetes). Normalized now: sbom, ai-model, dataset; reserved + passthrough-capable now, normalized in later releases: the rest. Custom or experimental kinds MUST use an 'x-' prefix (e.g. 'x-threat-model') so they cannot collide with a value later promoted into the reserved set; a non-'x-' value outside the reserved set is invalid. Adding a reserved value is a schema version bump. VEX/VDR/SecurityProfile are vulnerability assertions, not BOMs, and are intentionally excluded."
3824
+ },
3825
+ "Bom": {
3826
+ "type": "object",
3827
+ "title": "Bill of Materials",
3828
+ "additionalProperties": false,
3829
+ "required": [
3830
+ "bomType",
3831
+ "format"
3832
+ ],
3833
+ "properties": {
3834
+ "bomType": {
3835
+ "$ref": "#/$defs/Bom_Type",
3836
+ "description": "The manifest kind. Determines which normalized type-extension (model/dataset/packages) may appear."
3837
+ },
3838
+ "format": {
3839
+ "type": "string",
3840
+ "description": "Source manifest format the BOM was produced from or references. Examples: cyclonedx, cyclonedx-ml, spdx, spdx-ai, huggingface, croissant. Free-form so new formats need no schema change; the converter that emits the BOM owns the value."
3841
+ },
3842
+ "ref": {
3843
+ "type": "string",
3844
+ "format": "uri-reference",
3845
+ "description": "Passthrough by reference: URI (relative path, absolute URI, or fragment) to the native manifest document. Present for externally-hosted BOMs."
3846
+ },
3847
+ "document": {
3848
+ "type": "object",
3849
+ "description": "Passthrough by embedding: the native manifest carried opaquely (e.g. a raw CycloneDX or SPDX object). HDF does not constrain its internal shape — full manifest validation is a tool-level concern."
3850
+ },
3851
+ "hashes": {
3852
+ "type": "array",
3853
+ "items": {
3854
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.4.0#/$defs/Checksum"
3855
+ },
3856
+ "description": "Integrity of the carried BOM *document* itself (the referenced/embedded manifest file), NOT the integrity of the BOM's subject artifact. Subject/artifact integrity (model weights, dataset archive) is a component-level concern, not carried here. Subject identity is inherited from the host component/system; per-node identity lives in the type-extension."
3857
+ },
3858
+ "uniqueId": {
3859
+ "type": "string",
3860
+ "description": "Optional stable identifier for this BOM document (e.g. CycloneDX serialNumber, SPDX documentNamespace). Correlates the same BOM across evidence packages."
3861
+ },
3862
+ "license": {
3863
+ "type": [
3864
+ "string",
3865
+ "null"
3866
+ ],
3867
+ "description": "Optional license of the BOM document as a whole (SPDX license expression). Nullable and often meaningless (CBOM algorithms, many HBOM parts have no license); per-node licenses live in the type-extension, not here."
3868
+ },
3869
+ "model": {
3870
+ "$ref": "#/$defs/AI_Model_Extension",
3871
+ "description": "Normalized ai-model extension. Permitted only when bomType is ai-model."
3872
+ },
3873
+ "dataset": {
3874
+ "$ref": "#/$defs/Dataset_Extension",
3875
+ "description": "Normalized dataset extension. Permitted only when bomType is dataset."
3876
+ },
3877
+ "packages": {
3878
+ "type": "array",
3879
+ "items": {
3880
+ "$ref": "#/$defs/SBOM_Package"
3881
+ },
3882
+ "description": "Normalized sbom extension: the flattened software package inventory. Permitted only when bomType is sbom."
3883
+ }
3884
+ },
3885
+ "allOf": [
3886
+ {
3887
+ "$comment": "Three-tier discipline: the ai-model extension may appear only on an ai-model BOM.",
3888
+ "if": {
3889
+ "properties": {
3890
+ "bomType": {
3891
+ "const": "ai-model"
3892
+ }
3893
+ },
3894
+ "required": [
3895
+ "bomType"
3896
+ ]
3897
+ },
3898
+ "else": {
3899
+ "properties": {
3900
+ "model": false
3901
+ }
3902
+ }
3903
+ },
3904
+ {
3905
+ "$comment": "The dataset extension may appear only on a dataset BOM.",
3906
+ "if": {
3907
+ "properties": {
3908
+ "bomType": {
3909
+ "const": "dataset"
3910
+ }
3911
+ },
3912
+ "required": [
3913
+ "bomType"
3914
+ ]
3915
+ },
3916
+ "else": {
3917
+ "properties": {
3918
+ "dataset": false
3919
+ }
3920
+ }
3921
+ },
3922
+ {
3923
+ "$comment": "The normalized packages extension may appear only on an sbom BOM.",
3924
+ "if": {
3925
+ "properties": {
3926
+ "bomType": {
3927
+ "const": "sbom"
3928
+ }
3929
+ },
3930
+ "required": [
3931
+ "bomType"
3932
+ ]
3933
+ },
3934
+ "else": {
3935
+ "properties": {
3936
+ "packages": false
3937
+ }
3938
+ }
3939
+ },
3940
+ {
3941
+ "$comment": "A BOM must carry at least one of ref/document/packages/model/dataset. This intentionally checks PRESENCE, not non-emptiness: under the partial-fidelity design a converter MAY emit an empty normalized extension (e.g. model:{}) alongside a raw `document` passthrough when a source has no cleanly-mappable fields, so this constraint deliberately does not require minProperties/minItems on the extension. A bare {bomType, format} carrying none of these keys is unusable and invalid.",
3942
+ "anyOf": [
3943
+ {
3944
+ "required": [
3945
+ "ref"
3946
+ ]
3947
+ },
3948
+ {
3949
+ "required": [
3950
+ "document"
3951
+ ]
3952
+ },
3953
+ {
3954
+ "required": [
3955
+ "packages"
3956
+ ]
3957
+ },
3958
+ {
3959
+ "required": [
3960
+ "model"
3961
+ ]
3962
+ },
3963
+ {
3964
+ "required": [
3965
+ "dataset"
3966
+ ]
3967
+ }
3968
+ ]
3969
+ }
3970
+ ],
3971
+ "examples": [
3972
+ {
3973
+ "$comment": "Passthrough SBOM by external reference — the universal escape hatch, available to every bomType.",
3974
+ "bomType": "sbom",
3975
+ "format": "cyclonedx",
3976
+ "ref": "https://artifacts.agency.gov/sbom/webtier.cdx.json",
3977
+ "hashes": [
3978
+ {
3979
+ "algorithm": "sha256",
3980
+ "value": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
3981
+ }
3982
+ ]
3983
+ },
3984
+ {
3985
+ "$comment": "Passthrough for a reserved-but-not-yet-normalized type (cbom) — carried opaquely until a normalized extension ships.",
3986
+ "bomType": "cbom",
3987
+ "format": "cyclonedx",
3988
+ "document": {
3989
+ "bomFormat": "CycloneDX",
3990
+ "specVersion": "1.6"
3991
+ }
3992
+ },
3993
+ {
3994
+ "$comment": "Normalized ai-model BOM: CISA/G7-aligned fields live in the model extension, never at the component root or shared base.",
3995
+ "bomType": "ai-model",
3996
+ "format": "cyclonedx-ml",
3997
+ "model": {
3998
+ "modelArchitecture": "transformer",
3999
+ "parameterCount": 6738415616,
4000
+ "serializationFormat": "safetensors",
4001
+ "adaptationType": "finetune",
4002
+ "baseModelRef": "meta-llama/Llama-2-7b-hf",
4003
+ "learningApproach": "supervised",
4004
+ "task": "text-generation",
4005
+ "performanceMetrics": [
4006
+ {
4007
+ "name": "MMLU",
4008
+ "value": "0.457"
4009
+ }
4010
+ ],
4011
+ "hyperparameters": [
4012
+ {
4013
+ "name": "epochs",
4014
+ "value": "3"
4015
+ },
4016
+ {
4017
+ "name": "learning-rate",
4018
+ "value": "2e-5"
4019
+ }
4020
+ ],
4021
+ "inputOutput": {
4022
+ "dataTypes": [
4023
+ "string"
4024
+ ],
4025
+ "modality": [
4026
+ "text"
4027
+ ],
4028
+ "contextLength": 4096,
4029
+ "tokenizer": "llama-bpe"
4030
+ }
4031
+ }
4032
+ },
4033
+ {
4034
+ "$comment": "Normalized dataset BOM with lineage — a filtered derivative of a base dataset, referenced by an ai-model via datasetRefs.",
4035
+ "bomType": "dataset",
4036
+ "format": "croissant",
4037
+ "dataset": {
4038
+ "recordCount": 2500000,
4039
+ "datasetFormat": "parquet",
4040
+ "dataClassification": "public",
4041
+ "intendedUse": "instruction fine-tuning",
4042
+ "modality": "text",
4043
+ "provenance": "Filtered from the public UltraChat corpus; low-quality and duplicate turns removed.",
4044
+ "statisticalProperties": "Mean 512 tokens/record; 61% single-turn, 39% multi-turn; English-dominant (~92%).",
4045
+ "baseDatasetRefs": [
4046
+ "HuggingFaceH4/ultrachat_200k"
4047
+ ],
4048
+ "derivation": "filtered"
4049
+ }
4050
+ }
4051
+ ]
4052
+ },
4053
+ "AI_Model_Extension": {
4054
+ "type": "object",
4055
+ "additionalProperties": true,
4056
+ "description": "Normalized AI-model fields, aligned to the CISA/G7 'SBOM for AI' minimum elements. All fields optional (standards-correct; only the EU AI Act makes a subset binding for high-risk/GPAI). Left open (additionalProperties: true) so a converter can carry unmapped native fields opaquely (partial-fidelity pattern). Subject name/version are inherited from the host aiModel component, not repeated here.",
4057
+ "title": "AI Model BOM Extension",
4058
+ "properties": {
4059
+ "modelArchitecture": {
4060
+ "type": "string",
4061
+ "description": "Model architecture family. Examples: transformer, cnn, diffusion, mixture-of-experts."
4062
+ },
4063
+ "parameterCount": {
4064
+ "type": "integer",
4065
+ "minimum": 0,
4066
+ "description": "Total trainable parameter count. No native CycloneDX/SPDX field exists; first-class here because the EU AI Act keys GPAI obligations off model scale."
4067
+ },
4068
+ "serializationFormat": {
4069
+ "type": "string",
4070
+ "description": "On-disk weight serialization format. Security-critical yet under-modeled by BOM specs: pickle/pytorch permits arbitrary code execution on load; safetensors does not. Examples: safetensors, pytorch, gguf, onnx, tensorflow."
4071
+ },
4072
+ "adaptationType": {
4073
+ "type": "string",
4074
+ "title": "Model Adaptation Type",
4075
+ "enum": [
4076
+ "finetune",
4077
+ "adapter",
4078
+ "quantized",
4079
+ "merge"
4080
+ ],
4081
+ "description": "Lineage relationship to baseModelRef, adopting Hugging Face's base_model_relation vocabulary (the only typed lineage enum in the ecosystem)."
4082
+ },
4083
+ "baseModelRef": {
4084
+ "type": "string",
4085
+ "description": "Reference to the base model this one was adapted from (e.g. a Hugging Face repo id or purl). Correlates the lineage edge; the base model itself may carry its own ai-model BOM."
4086
+ },
4087
+ "datasetRefs": {
4088
+ "type": "array",
4089
+ "items": {
4090
+ "type": "string"
4091
+ },
4092
+ "description": "References to the training/evaluation datasets this model was produced from — preferably a dataset component's componentId (correlating to a first-class dataset subject rather than duplicating dataset detail, per ADR §10), or a dataset BOM uniqueId/URI when no component exists."
4093
+ },
4094
+ "intendedUse": {
4095
+ "type": "string",
4096
+ "description": "Free-text statement of intended use and out-of-scope uses (CISA/G7 minimum element)."
4097
+ },
4098
+ "learningApproach": {
4099
+ "type": "string",
4100
+ "description": "Model's learning/training paradigm. Free-text because the value set varies across standards. Examples: supervised, self-supervised, semi-supervised, reinforcement. Cross-standard intersection: SPDX 3.0 ai_typeOfModel ∩ CycloneDX modelParameters.approach.type ∩ CISA/G7 learning type."
4101
+ },
4102
+ "task": {
4103
+ "type": "string",
4104
+ "description": "The ML task the model performs. Free-text. Examples: text-classification, sentiment-analysis, object-detection, translation. Sourced from CycloneDX modelParameters.task (SPDX 3.0 ai_domain is domain-level/adjacent, not the task); CISA/G7 intended-application."
4105
+ },
4106
+ "performanceMetrics": {
4107
+ "type": "array",
4108
+ "items": {
4109
+ "type": "object",
4110
+ "additionalProperties": true,
4111
+ "properties": {
4112
+ "name": {
4113
+ "type": "string",
4114
+ "description": "Metric name. Examples: accuracy, f1, BLEU, latency."
4115
+ },
4116
+ "value": {
4117
+ "type": "string",
4118
+ "description": "Reported metric value, free-text because metrics are heterogeneous (percentages, scores, milliseconds)."
4119
+ }
4120
+ }
4121
+ },
4122
+ "description": "Reported evaluation metrics as name/value pairs. Values are free-text because metrics are heterogeneous (accuracy, f1, BLEU, latency). The item stays open (additionalProperties: true) to carry native CycloneDX slice/confidenceInterval detail opaquely. Cross-standard intersection: SPDX 3.0 ai_metric ∩ CycloneDX quantitativeAnalysis.performanceMetrics ∩ CISA/G7 KPI cluster."
4123
+ },
4124
+ "hyperparameters": {
4125
+ "type": "array",
4126
+ "items": {
4127
+ "type": "object",
4128
+ "properties": {
4129
+ "name": {
4130
+ "type": "string",
4131
+ "description": "Hyper-parameter name. Examples: epochs, learning-rate, batch-size."
4132
+ },
4133
+ "value": {
4134
+ "type": "string",
4135
+ "description": "Hyper-parameter value (free-text)."
4136
+ }
4137
+ }
4138
+ },
4139
+ "description": "Training hyper-parameters as name/value pairs (epochs, learning-rate, batch-size). This is the set of training knobs, NOT the model's trainable parameterCount — the two are routinely conflated. CISA/G7 'Model properties: hyper-parameters'; SPDX 3.0 ai_hyperparameter."
4140
+ },
4141
+ "inputOutput": {
4142
+ "type": "object",
4143
+ "additionalProperties": true,
4144
+ "description": "Model input/output properties (CISA/G7 minimum element): I/O data types, modality, context/sequence length, and tokenizer. Sourced from CycloneDX modelParameters.inputs[].format / outputs[].format. All sub-fields optional.",
4145
+ "properties": {
4146
+ "dataTypes": {
4147
+ "type": "array",
4148
+ "items": {
4149
+ "type": "string"
4150
+ },
4151
+ "description": "Input/output data types. Examples: string, byte[], float32, image."
4152
+ },
4153
+ "modality": {
4154
+ "type": [
4155
+ "string",
4156
+ "array"
4157
+ ],
4158
+ "items": {
4159
+ "type": "string"
4160
+ },
4161
+ "description": "Input/output modalities. String or array of strings. Examples: text, image, audio. Symmetric with Dataset_Extension.modality."
4162
+ },
4163
+ "contextLength": {
4164
+ "type": "integer",
4165
+ "minimum": 0,
4166
+ "description": "Maximum context/sequence length the model accepts, in tokens."
4167
+ },
4168
+ "tokenizer": {
4169
+ "type": "string",
4170
+ "description": "Tokenizer used for the model's input encoding. Examples: BPE, SentencePiece, tiktoken."
4171
+ }
4172
+ }
4173
+ }
4174
+ }
4175
+ },
4176
+ "Dataset_Extension": {
4177
+ "type": "object",
4178
+ "additionalProperties": true,
4179
+ "description": "Normalized dataset fields (SPDX 3.0 Dataset profile / MLCommons Croissant aligned). All optional; open for partial-fidelity passthrough of unmapped native fields. Symmetric with AI_Model_Extension: carries the dataset's own lineage (baseDatasetRefs/derivation) just as the model extension carries baseModelRef/adaptationType.",
4180
+ "title": "Dataset BOM Extension",
4181
+ "properties": {
4182
+ "recordCount": {
4183
+ "type": "integer",
4184
+ "minimum": 0,
4185
+ "description": "Number of records/examples in the dataset."
4186
+ },
4187
+ "datasetFormat": {
4188
+ "type": "string",
4189
+ "description": "Physical format of the dataset. Examples: parquet, csv, jsonl, tfrecord, webdataset."
4190
+ },
4191
+ "dataClassification": {
4192
+ "type": "string",
4193
+ "description": "Sensitivity/classification of the data. Examples: public, internal, confidential, pii, phi."
4194
+ },
4195
+ "intendedUse": {
4196
+ "type": "string",
4197
+ "description": "Free-text statement of the dataset's intended use (CISA/G7 minimum element)."
4198
+ },
4199
+ "modality": {
4200
+ "type": [
4201
+ "string",
4202
+ "array"
4203
+ ],
4204
+ "items": {
4205
+ "type": "string"
4206
+ },
4207
+ "description": "Content modality/kind of the data (CISA/G7 'Dataset content: modality'). Examples: text, image, tabular, timeseries, audio. DISTINCT from datasetFormat, which is the physical encoding (parquet/csv). Resolves SPDX 3.0 dataset_datasetType, which is content-kind, not physical format. String or array of strings."
4208
+ },
4209
+ "provenance": {
4210
+ "type": "string",
4211
+ "description": "Free-text description of the dataset's origin and collection process (CISA/G7 'Dataset provenance'; SPDX 3.0 dataset_dataCollectionProcess)."
4212
+ },
4213
+ "statisticalProperties": {
4214
+ "type": "string",
4215
+ "description": "Free-text summary of the dataset's statistical properties (CISA/G7 minimum element; open-ended by design). Intentionally free-text and will remain so permanently: recordCount is the one structured statistic, and restructuring this into an object later would break existing consumers, so it stays a string (additive-only)."
4216
+ },
4217
+ "baseDatasetRefs": {
4218
+ "type": "array",
4219
+ "items": {
4220
+ "type": "string"
4221
+ },
4222
+ "description": "References to the source dataset(s) this one was derived from — a dataset componentId, or a dataset BOM uniqueId/URI when no component exists. The lineage edge parallel to ai-model's baseModelRef; the base dataset may carry its own dataset BOM."
4223
+ },
4224
+ "derivation": {
4225
+ "type": "string",
4226
+ "title": "Dataset Derivation Type",
4227
+ "enum": [
4228
+ "filtered",
4229
+ "augmented",
4230
+ "merged",
4231
+ "sampled"
4232
+ ],
4233
+ "description": "Relationship of this dataset to baseDatasetRefs, parallel to the model extension's adaptationType. Minimal + extensible: filtered (subset by rule), augmented (added/synthesized records), merged (union of sources), sampled (statistical draw)."
4234
+ }
4235
+ }
4236
+ },
4237
+ "SBOM_Package": {
4238
+ "type": "object",
4239
+ "additionalProperties": true,
4240
+ "description": "A single normalized software package entry within an sbom BOM. Minimal identity + version for querying/diffing; the full native record remains available via passthrough (document/ref).",
4241
+ "title": "SBOM Package",
4242
+ "required": [
4243
+ "name"
4244
+ ],
4245
+ "properties": {
4246
+ "name": {
4247
+ "type": "string",
4248
+ "description": "Package name."
4249
+ },
4250
+ "version": {
4251
+ "type": "string",
4252
+ "description": "Package version."
4253
+ },
4254
+ "purl": {
4255
+ "type": "string",
4256
+ "description": "Package URL (purl) — the preferred cross-BOM identity key when present."
4257
+ },
4258
+ "licenses": {
4259
+ "type": "array",
4260
+ "items": {
4261
+ "type": "string"
4262
+ },
4263
+ "description": "SPDX license identifiers/expressions for this package."
4264
+ }
4265
+ }
3673
4266
  }
3674
4267
  }
3675
4268
  },
3676
- "https://mitre.github.io/hdf-libs/schemas/primitives/system/v3.3.0": {
4269
+ "https://mitre.github.io/hdf-libs/schemas/primitives/system/v3.4.0": {
3677
4270
  "$schema": "https://json-schema.org/draft/2020-12/schema",
3678
- "$id": "https://mitre.github.io/hdf-libs/schemas/primitives/system/v3.3.0",
4271
+ "$id": "https://mitre.github.io/hdf-libs/schemas/primitives/system/v3.4.0",
3679
4272
  "title": "HDF System Primitives",
3680
4273
  "description": "Types for describing system architecture, authorization boundaries, and components.",
3681
4274
  "$defs": {
@@ -3726,7 +4319,7 @@
3726
4319
  "description": "Rationale for why this override is needed."
3727
4320
  },
3728
4321
  "approvedBy": {
3729
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.3.0#/$defs/Identity",
4322
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.4.0#/$defs/Identity",
3730
4323
  "description": "Identity of the person or system that approved this override."
3731
4324
  }
3732
4325
  },
@@ -3808,9 +4401,9 @@
3808
4401
  }
3809
4402
  }
3810
4403
  },
3811
- "https://mitre.github.io/hdf-libs/schemas/hdf-results/v3.3.0": {
4404
+ "https://mitre.github.io/hdf-libs/schemas/hdf-results/v3.4.0": {
3812
4405
  "$schema": "https://json-schema.org/draft/2020-12/schema",
3813
- "$id": "https://mitre.github.io/hdf-libs/schemas/hdf-results/v3.3.0",
4406
+ "$id": "https://mitre.github.io/hdf-libs/schemas/hdf-results/v3.4.0",
3814
4407
  "type": "object",
3815
4408
  "unevaluatedProperties": false,
3816
4409
  "required": [
@@ -3830,7 +4423,7 @@
3830
4423
  "components": {
3831
4424
  "type": "array",
3832
4425
  "items": {
3833
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/component/v3.3.0#/$defs/Component"
4426
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/component/v3.4.0#/$defs/Component"
3834
4427
  },
3835
4428
  "description": "The components that were assessed. Each component describes a system element (host, container, cloud resource, application, etc.) with optional identity, SBOM, and external references."
3836
4429
  },
@@ -3842,27 +4435,27 @@
3842
4435
  "description": "Information on the baselines that were evaluated, including findings."
3843
4436
  },
3844
4437
  "statistics": {
3845
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/statistics/v3.3.0#/$defs/Statistics",
4438
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/statistics/v3.4.0#/$defs/Statistics",
3846
4439
  "description": "Statistics for the assessment run, including duration and result counts."
3847
4440
  },
3848
4441
  "generator": {
3849
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/extensions/v3.3.0#/$defs/Generator",
4442
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/extensions/v3.4.0#/$defs/Generator",
3850
4443
  "description": "Information about the tool that generated this file."
3851
4444
  },
3852
4445
  "tool": {
3853
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/extensions/v3.3.0#/$defs/Tool",
4446
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/extensions/v3.4.0#/$defs/Tool",
3854
4447
  "description": "The security tool that produced the assessment data in this file."
3855
4448
  },
3856
4449
  "integrity": {
3857
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/extensions/v3.3.0#/$defs/Integrity",
4450
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/extensions/v3.4.0#/$defs/Integrity",
3858
4451
  "description": "Cryptographic integrity information for verifying this file."
3859
4452
  },
3860
4453
  "runner": {
3861
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/runner/v3.3.0#/$defs/Runner",
4454
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/runner/v3.4.0#/$defs/Runner",
3862
4455
  "description": "Information about the test execution environment where the security tool was run. Distinct from targets (what is being tested)."
3863
4456
  },
3864
4457
  "remediation": {
3865
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.3.0#/$defs/Remediation",
4458
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.4.0#/$defs/Remediation",
3866
4459
  "description": "Optional reference to automated remediation resources (Ansible playbooks, Terraform scripts, etc.) for fixing failing requirements found in this assessment."
3867
4460
  },
3868
4461
  "systemRef": {
@@ -3970,14 +4563,14 @@
3970
4563
  ],
3971
4564
  "allOf": [
3972
4565
  {
3973
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.3.0#/$defs/Baseline_Metadata"
4566
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.4.0#/$defs/Baseline_Metadata"
3974
4567
  }
3975
4568
  ],
3976
4569
  "properties": {
3977
4570
  "depends": {
3978
4571
  "type": "array",
3979
4572
  "items": {
3980
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.3.0#/$defs/Dependency"
4573
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.4.0#/$defs/Dependency"
3981
4574
  },
3982
4575
  "description": "The set of dependencies this baseline depends on."
3983
4576
  },
@@ -3990,15 +4583,15 @@
3990
4583
  "description": "The description - should be more detailed than the summary."
3991
4584
  },
3992
4585
  "integrity": {
3993
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/extensions/v3.3.0#/$defs/Integrity",
4586
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/extensions/v3.4.0#/$defs/Integrity",
3994
4587
  "description": "Cryptographic integrity information for verifying this baseline has not been tampered with."
3995
4588
  },
3996
4589
  "originalChecksum": {
3997
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.3.0#/$defs/Checksum",
4590
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.4.0#/$defs/Checksum",
3998
4591
  "description": "SHA-256 checksum of the original baseline definition file (before execution). This is an immutable reference to the baseline as defined, used to detect tampering with baseline requirements or metadata."
3999
4592
  },
4000
4593
  "resultsChecksum": {
4001
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.3.0#/$defs/Checksum",
4594
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.4.0#/$defs/Checksum",
4002
4595
  "description": "SHA-256 checksum of the raw results before any amendments (statusOverrides or POAMs). Used to detect tampering with test results. Compare with currentChecksum to verify amendment integrity."
4003
4596
  },
4004
4597
  "statusMessage": {
@@ -4016,14 +4609,14 @@
4016
4609
  "groups": {
4017
4610
  "type": "array",
4018
4611
  "items": {
4019
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.3.0#/$defs/Requirement_Group"
4612
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.4.0#/$defs/Requirement_Group"
4020
4613
  },
4021
4614
  "description": "A set of descriptions for the requirement groups."
4022
4615
  },
4023
4616
  "inputs": {
4024
4617
  "type": "array",
4025
4618
  "items": {
4026
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/parameter/v3.3.0#/$defs/Input"
4619
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/parameter/v3.4.0#/$defs/Input"
4027
4620
  },
4028
4621
  "description": "Typed inputs used to parameterize this baseline at execution time. See the Input primitive for the full schema."
4029
4622
  },
@@ -4048,7 +4641,7 @@
4048
4641
  ],
4049
4642
  "allOf": [
4050
4643
  {
4051
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.3.0#/$defs/Requirement_Core"
4644
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.4.0#/$defs/Requirement_Core"
4052
4645
  }
4053
4646
  ],
4054
4647
  "properties": {
@@ -4056,7 +4649,7 @@
4056
4649
  "type": "array",
4057
4650
  "minItems": 1,
4058
4651
  "items": {
4059
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/result/v3.3.0#/$defs/Requirement_Description"
4652
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/result/v3.4.0#/$defs/Requirement_Description"
4060
4653
  },
4061
4654
  "contains": {
4062
4655
  "type": "object",
@@ -4072,37 +4665,37 @@
4072
4665
  "description": "Array of labeled descriptions. At least one description with label 'default' must be present. Convention: place default description first. Common labels: 'default', 'check', 'fix', 'rationale'."
4073
4666
  },
4074
4667
  "severity": {
4075
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.3.0#/$defs/Severity",
4668
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.4.0#/$defs/Severity",
4076
4669
  "description": "Explicit severity rating. Typically derived from impact score but provided explicitly for clarity."
4077
4670
  },
4078
4671
  "sourceLocation": {
4079
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.3.0#/$defs/Source_Location",
4672
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.4.0#/$defs/Source_Location",
4080
4673
  "description": "The explicit location of the requirement within the source code."
4081
4674
  },
4082
4675
  "results": {
4083
4676
  "type": "array",
4084
4677
  "minItems": 1,
4085
4678
  "items": {
4086
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/result/v3.3.0#/$defs/Requirement_Result"
4679
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/result/v3.4.0#/$defs/Requirement_Result"
4087
4680
  },
4088
4681
  "description": "The set of all tests within the requirement and their results."
4089
4682
  },
4090
4683
  "statusOverrides": {
4091
4684
  "type": "array",
4092
4685
  "items": {
4093
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/extensions/v3.3.0#/$defs/Status_Override"
4686
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/extensions/v3.4.0#/$defs/Status_Override"
4094
4687
  },
4095
4688
  "description": "Chronological history of all overrides applied to this requirement. Overrides are intentional changes to the compliance status and/or impact score (waivers, attestations, false positives, risk adjustments). Most recent override should be first in array. Preserves full audit trail."
4096
4689
  },
4097
4690
  "poams": {
4098
4691
  "type": "array",
4099
4692
  "items": {
4100
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/extensions/v3.3.0#/$defs/POAM"
4693
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/extensions/v3.4.0#/$defs/POAM"
4101
4694
  },
4102
4695
  "description": "Plan of Action and Milestones for tracking remediation, mitigation, or risk acceptance. POAMs do NOT change effectiveStatus - they track the work being done to address a failure. Separate from statusOverrides which DO change status."
4103
4696
  },
4104
4697
  "effectiveStatus": {
4105
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/result/v3.3.0#/$defs/Result_Status",
4698
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/result/v3.4.0#/$defs/Result_Status",
4106
4699
  "description": "The current effective compliance status of this requirement after applying the most recent non-expired override with a status field, or computed from results (worst-wins) if no status-bearing overrides exist."
4107
4700
  },
4108
4701
  "effectiveImpact": {
@@ -4112,29 +4705,29 @@
4112
4705
  "description": "The current effective impact score (0.0–1.0) after applying the most recent non-expired override with an impact field. Absent when no impact overrides apply; consumers should use the requirement's impact field in that case."
4113
4706
  },
4114
4707
  "disposition": {
4115
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/amendments/v3.3.0#/$defs/Override_Type",
4708
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/amendments/v3.4.0#/$defs/Override_Type",
4116
4709
  "description": "The type of the most recent non-expired override or POAM governing this requirement. Indicates why the requirement is in its current state (e.g., waiver, falsePositive, riskAdjustment) or what remediation is being tracked (poam). Absent when no overrides or POAMs apply."
4117
4710
  },
4118
4711
  "evidence": {
4119
4712
  "type": "array",
4120
4713
  "items": {
4121
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.3.0#/$defs/Evidence"
4714
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.4.0#/$defs/Evidence"
4122
4715
  },
4123
4716
  "description": "Supporting evidence for this requirement's findings, such as screenshots, code samples, or log excerpts."
4124
4717
  },
4125
4718
  "cvss": {
4126
4719
  "type": "array",
4127
4720
  "items": {
4128
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/cvss/v3.3.0#/$defs/Cvss"
4721
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/cvss/v3.4.0#/$defs/Cvss"
4129
4722
  },
4130
4723
  "description": "Structured CVSS scoring data for vulnerability findings. One entry per CVE — a finding may match multiple CVEs (common in vulnerability scanners). Captures vendor-supplied Base metrics plus optional consumer-owned Threat / Environmental / Supplemental groups for risk adjustment. See cvss.schema.json."
4131
4724
  },
4132
4725
  "epss": {
4133
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/epss/v3.3.0#/$defs/Epss",
4726
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/epss/v3.4.0#/$defs/Epss",
4134
4727
  "description": "FIRST.org EPSS (Exploit Prediction Scoring System) score for this CVE finding. Used alongside CVSS for prioritization — captures the probability the vulnerability will be exploited."
4135
4728
  },
4136
4729
  "kev": {
4137
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/kev/v3.3.0#/$defs/Kev",
4730
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/kev/v3.4.0#/$defs/Kev",
4138
4731
  "description": "CISA Known Exploited Vulnerabilities (KEV) catalog status. When inKev=true, dateAdded and dueDate carry the federal patching deadline."
4139
4732
  },
4140
4733
  "cwe": {
@@ -4148,7 +4741,7 @@
4148
4741
  "affectedPackages": {
4149
4742
  "type": "array",
4150
4743
  "items": {
4151
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/affected-package/v3.3.0#/$defs/Affected_Package"
4744
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/affected-package/v3.4.0#/$defs/Affected_Package"
4152
4745
  },
4153
4746
  "description": "Packages affected by this vulnerability finding. Vulnerability-finding-scoped — see components[] on hdf-system for component-level package inventories. One entry per matched package signature (scanners often report multiple CPE variations per CVE)."
4154
4747
  }
@@ -4438,9 +5031,9 @@
4438
5031
  }
4439
5032
  }
4440
5033
  },
4441
- "https://mitre.github.io/hdf-libs/schemas/primitives/statistics/v3.3.0": {
5034
+ "https://mitre.github.io/hdf-libs/schemas/primitives/statistics/v3.4.0": {
4442
5035
  "$schema": "https://json-schema.org/draft/2020-12/schema",
4443
- "$id": "https://mitre.github.io/hdf-libs/schemas/primitives/statistics/v3.3.0",
5036
+ "$id": "https://mitre.github.io/hdf-libs/schemas/primitives/statistics/v3.4.0",
4444
5037
  "title": "HDF Statistics Primitives",
4445
5038
  "description": "Statistics types for tracking assessment run metrics.",
4446
5039
  "$defs": {
@@ -4509,9 +5102,9 @@
4509
5102
  }
4510
5103
  }
4511
5104
  },
4512
- "https://mitre.github.io/hdf-libs/schemas/primitives/runner/v3.3.0": {
5105
+ "https://mitre.github.io/hdf-libs/schemas/primitives/runner/v3.4.0": {
4513
5106
  "$schema": "https://json-schema.org/draft/2020-12/schema",
4514
- "$id": "https://mitre.github.io/hdf-libs/schemas/primitives/runner/v3.3.0",
5107
+ "$id": "https://mitre.github.io/hdf-libs/schemas/primitives/runner/v3.4.0",
4515
5108
  "title": "HDF Runner Primitive",
4516
5109
  "description": "Information about the test execution environment where the security tool/scanner was executed.",
4517
5110
  "$defs": {
@@ -4536,7 +5129,15 @@
4536
5129
  },
4537
5130
  "hostname": {
4538
5131
  "type": "string",
4539
- "description": "The hostname of the runner system. Example: 'ci-runner-01', 'jenkins-agent-03', 'k8s-node-worker-03'."
5132
+ "description": "The short hostname of the runner system. Example: 'ci-runner-01', 'jenkins-agent-03', 'k8s-node-worker-03'."
5133
+ },
5134
+ "fqdn": {
5135
+ "type": "string",
5136
+ "description": "The fully qualified domain name of the runner system, when known. Distinct from the short 'hostname'; kept separate for the same reason as on host components (an FQDN is not reliably decomposable). Example: 'ci-runner-01.build.example.com'."
5137
+ },
5138
+ "domain": {
5139
+ "type": "string",
5140
+ "description": "The directory domain the runner system belongs to (Active Directory / NetBIOS / LDAP), NOT the DNS suffix of the FQDN. Example: 'CORP'."
4540
5141
  },
4541
5142
  "containerImage": {
4542
5143
  "type": "string",
@@ -4547,7 +5148,7 @@
4547
5148
  "description": "The container instance identifier. Example: 'a1b2c3d4e5f6', 'security-scan-job-xyz123'. Can be a Docker container ID, Kubernetes pod name, or other container runtime identifier."
4548
5149
  },
4549
5150
  "operator": {
4550
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.3.0#/$defs/Identity",
5151
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.4.0#/$defs/Identity",
4551
5152
  "description": "The identity of the person or system responsible for executing the test. This could be a human auditor manually completing a checklist, an automated CI/CD system, or a security tool. Optional field to support both automated and manual HDF generation."
4552
5153
  }
4553
5154
  },
@@ -4557,6 +5158,8 @@
4557
5158
  "release": "20.04",
4558
5159
  "architecture": "x86_64",
4559
5160
  "hostname": "github-runner-prod-01",
5161
+ "fqdn": "github-runner-prod-01.build.example.com",
5162
+ "domain": "CORP",
4560
5163
  "containerImage": "ghcr.io/inspec/inspec:5.22.3",
4561
5164
  "containerId": "security-scan-job-a1b2c3d4",
4562
5165
  "operator": {
@@ -4594,9 +5197,9 @@
4594
5197
  }
4595
5198
  }
4596
5199
  },
4597
- "https://mitre.github.io/hdf-libs/schemas/primitives/parameter/v3.3.0": {
5200
+ "https://mitre.github.io/hdf-libs/schemas/primitives/parameter/v3.4.0": {
4598
5201
  "$schema": "https://json-schema.org/draft/2020-12/schema",
4599
- "$id": "https://mitre.github.io/hdf-libs/schemas/primitives/parameter/v3.3.0",
5202
+ "$id": "https://mitre.github.io/hdf-libs/schemas/primitives/parameter/v3.4.0",
4600
5203
  "title": "HDF Parameter Primitives",
4601
5204
  "description": "Input/parameter type definitions for typed, traceable configuration values that bridge governance prose and scanner automation.",
4602
5205
  "$defs": {
@@ -4727,9 +5330,9 @@
4727
5330
  }
4728
5331
  }
4729
5332
  },
4730
- "https://mitre.github.io/hdf-libs/schemas/primitives/epss/v3.3.0": {
5333
+ "https://mitre.github.io/hdf-libs/schemas/primitives/epss/v3.4.0": {
4731
5334
  "$schema": "https://json-schema.org/draft/2020-12/schema",
4732
- "$id": "https://mitre.github.io/hdf-libs/schemas/primitives/epss/v3.3.0",
5335
+ "$id": "https://mitre.github.io/hdf-libs/schemas/primitives/epss/v3.4.0",
4733
5336
  "title": "HDF EPSS Primitive",
4734
5337
  "description": "Type for representing FIRST.org's Exploit Prediction Scoring System (EPSS) data for a vulnerability. EPSS estimates the probability that a CVE will be exploited in the wild in the next 30 days. See https://www.first.org/epss/ for the underlying model and methodology.",
4735
5338
  "$defs": {
@@ -4786,9 +5389,9 @@
4786
5389
  }
4787
5390
  }
4788
5391
  },
4789
- "https://mitre.github.io/hdf-libs/schemas/primitives/kev/v3.3.0": {
5392
+ "https://mitre.github.io/hdf-libs/schemas/primitives/kev/v3.4.0": {
4790
5393
  "$schema": "https://json-schema.org/draft/2020-12/schema",
4791
- "$id": "https://mitre.github.io/hdf-libs/schemas/primitives/kev/v3.3.0",
5394
+ "$id": "https://mitre.github.io/hdf-libs/schemas/primitives/kev/v3.4.0",
4792
5395
  "title": "HDF Kev Primitives",
4793
5396
  "description": "Types for representing CISA Known Exploited Vulnerabilities (KEV) catalog membership. The KEV catalog (https://www.cisa.gov/known-exploited-vulnerabilities-catalog) flags CVEs that are confirmed actively exploited in the wild and drives federal patching urgency under CISA Binding Operational Directive 22-01.",
4794
5397
  "$defs": {